mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 14:16:07 -06:00
94 lines
No EOL
2.4 KiB
C++
94 lines
No EOL
2.4 KiB
C++
#include "ide.h"
|
|
|
|
void Ide::UpgradeTheIDE()
|
|
{
|
|
String idepath, newpath, bakpath;
|
|
#ifdef PLATFORM_COCOA
|
|
idepath = GetAppFolder();
|
|
String name = GetFileTitle(idepath);
|
|
idepath = GetFileFolder(idepath);
|
|
String target_dir = idepath + "/" + name + ".new";
|
|
DeleteFolderDeep(target_dir);
|
|
RealizeDirectory(target_dir);
|
|
|
|
newpath = target_dir + "/" + name + ".app";
|
|
bakpath = idepath + "/" + name + ".bak.app";
|
|
idepath << "/" << name << ".app";
|
|
#else
|
|
idepath = GetExeFilePath();
|
|
newpath = idepath + ".new";
|
|
bakpath = String(~idepath, GetFileExtPos(idepath));
|
|
bakpath << ".bak" << GetExeExt();
|
|
#endif
|
|
|
|
mainconfiglist.GoBegin();
|
|
|
|
int tbak = targetmode;
|
|
String tmbak = StoreAsString(release);
|
|
|
|
release.target_override = true;
|
|
release.target = newpath;
|
|
#ifdef PLATFORM_WIN32
|
|
release.linkmode = 0;
|
|
#else
|
|
release.linkmode = 1;
|
|
#endif
|
|
release.createmap = false;
|
|
release.version.Clear();
|
|
release.def.debug = false;
|
|
release.def.blitz = MapFlag(GetMethodVars(method), "RELEASE_BLITZ");
|
|
|
|
targetmode = 1;
|
|
|
|
if(!GetCtrl())
|
|
Clean();
|
|
|
|
if(Build()) {
|
|
#ifdef PLATFORM_COCOA
|
|
DeleteFolderDeep(bakpath);
|
|
#else
|
|
FileDelete(bakpath);
|
|
#endif
|
|
if(FileExists(bakpath))
|
|
Exclamation("Unable to delete&" + bakpath);
|
|
else {
|
|
PutVerbose("Moving " + idepath + " to " + bakpath);
|
|
FileMove(idepath, bakpath);
|
|
PutVerbose("Moving " + newpath + " to " + idepath);
|
|
FileMove(newpath, idepath);
|
|
#ifdef PLATFORM_COCOA
|
|
DeleteFolderDeep(target_dir);
|
|
#endif
|
|
PutConsole("Upgrade finished, please restart theide.");
|
|
}
|
|
}
|
|
|
|
LoadFromString(release, tmbak);
|
|
targetmode = tbak;
|
|
}
|
|
|
|
void Ide::InstallDesktop()
|
|
{
|
|
String apps = GetHomeDirFile(".local/share/applications");
|
|
if(PromptYesNo("Write theide.desktop to&[* \1" + apps + "\1]?&"
|
|
"That should make theide available through desktop menu.")) {
|
|
String icon = ConfigFile("theide.png");
|
|
PNGEncoder().SaveFile(icon, IdeImg::Icon256());
|
|
String path = apps + "/theide.desktop";
|
|
RealizePath(path);
|
|
Upp::SaveFile(path,
|
|
"[Desktop Entry]\n"
|
|
"Encoding=UTF-8\n"
|
|
"Name=TheIDE\n"
|
|
"GenericName=TheIDE\n"
|
|
"Comment=U++ IDE\n"
|
|
"MimeType=application/x-upp;\n"
|
|
"Exec=" + GetExeFilePath() + "\n"
|
|
"Icon=" + icon + "\n"
|
|
"Terminal=false\n"
|
|
"Type=Application\n"
|
|
"Categories=Development;IDE\n"
|
|
"StartupNotify=false\n"
|
|
);
|
|
}
|
|
} |