bool BaseSetupDlg::Run(String& vars) { upp <<= GetVar("UPP"); output <<= GetVar("OUTPUT"); base <<= vars; new_base = IsNull(vars); while(TopWindow::Run() == IDOK) { String varname = ~base; String varfile = VarFilePath(varname); if(varname != vars) { if(FileExists(varfile) && !PromptOKCancel(NFormat("Overwrite existing assembly [* \1%s\1]?", varfile))) continue; if(!SaveVars(varname)) { Exclamation(NFormat("Error writing assmbly [* \1%s\1].", VarFilePath(varname))); continue; } } SetVar("UPP", ~upp); SetVar("OUTPUT", ~output); Vector<String> paths = SplitDirs(upp.GetText().ToString()); for(int i = 0; i < paths.GetCount(); i++) RealizeDirectory(paths[i]); RealizeDirectory(output); vars = varname; return true; } return false; }
bool SaveVars(const char *name) { if(!MainNest().Save(VarFilePath(name))) return false; varsname = name; return true; }
void SelectPackageDlg::OnBaseEdit() { if(!base.IsCursor()) return; String vars = base.Get(0), oldvars = vars; if(BaseSetup(vars)) { if(vars != oldvars) DeleteFile(VarFilePath(oldvars)); DeleteFile(CachePath(vars)); SyncBase(vars); } }
void SelectPackageDlg::OnBaseRemove() { int c = base.GetCursor(); if(c < 0) return; String next; if(c + 1 < base.GetCount()) next = base.Get(c + 1); else if(c > 0) next = base.Get(c - 1); String vars = base.Get(0); String varpath = VarFilePath(vars); if(PromptOKCancel(NFormat("Remove base file [* \1%s\1]?", varpath)) && !FileDelete(varpath)) Exclamation(NFormat("Error deleting file [* \1%s\1].", varpath)); SyncBase(next); }
String VarFilePath() { String p = varsname; if(IsFullPath(varsname)) return varsname; return VarFilePath(GetVarsName()); }
bool LoadVars(const char *name) { varsname = (name && *name ? name : "default"); return MainNest().Load(VarFilePath()); }