void WorkspaceWork::RemoveFile() { int i = filelist.GetCursor(); int s = filelist.GetSbPos(); bool separator = false; if(i >= 0 && i < fileindex.GetCount()) { int fx = fileindex[i]; separator = actual.file[fx].separator; if(separator && closed.Find(GetActiveSepfo()) >= 0) { int px = fx; while(--px >= 0 && !actual.file[fx].separator) ; if(px >= 0) { int c = closed.Find(Sepfo(GetActivePackage(), actual.file[px])); if(c >= 0) closed.Unlink(c); } } actual.file.Remove(fx); } if(separator || IsAux()) SaveLoadPackageNS(false); else SaveLoadPackage(false); if (separator || FileRemove()) { filelist.SetSbPos(s); filelist.SetCursor(i); } }
void WorkspaceWork::CloseAllGroups() { for(int i = 0; i < actual.file.GetCount(); i++) if(actual.file[i].separator) closed.FindPut(Sepfo(GetActivePackage(), actual.file[i])); SaveLoadPackage(); }
void WorkspaceWork::AddFile(ADDFILE af) { String active = GetActivePackage(); if(active.IsEmpty()) return; FileSel *fs = &OutputFs(); RealizeDirectory(GetLocalDir()); switch(af) { case PACKAGE_FILE: fs = &BasedSourceFs(); fs->BaseDir(GetFileFolder(PackagePathA(active))); break; case ANY_FILE: fs = &AnySourceFs(); break; case OUTPUT_FILE: fs->ActiveDir(GetOutputDir()); break; case CONFIG_FILE: fs->ActiveDir(GetConfigDir()); break; case HOME_FILE: fs->ActiveDir(GetHomeDirectory()); break; case LOCAL_FILE: fs->ActiveDir(GetLocalDir()); break; default: ; // GCC warns otherwise } if(!fs->ExecuteOpen("Add files to package..")) return; int fci = filelist.GetCursor(); int cs = filelist.GetSbPos(); int ci = fci >= 0 && fci < fileindex.GetCount() ? fileindex[fci] : -1; for(int i = 0; i < fs->GetCount(); i++) { Package::File& f = ci >= 0 ? actual.file.Insert(ci++) : actual.file.Add(); f = (*fs)[i]; f.readonly = fs->GetReadOnly(); } SaveLoadPackage(false); filelist.SetSbPos(cs); filelist.SetCursor(fci >= 0 ? fci : filelist.GetCount() - 1); FileSelected(); }
void WorkspaceWork::AddNormalUses() { String p = SelectPackage("Select package"); if(p.IsEmpty()) return; OptItem& m = actual.uses.Add(); m.text = p; SaveLoadPackage(); }
void Ide::FinishConfig() { if(filelist.IsCursor()) { FlushFile(); FileCursor(); } SaveLoadPackage(); SyncCh(); }
void WorkspaceWork::SetErrorFiles(const Vector<String>& files) { errorfiles <<= Index<String>(files, 1); int i = filelist.GetCursor(); int s = filelist.GetSbPos(); SaveLoadPackage(false); filelist.SetSbPos(s); filelist.SetCursor(i); SyncErrorPackages(); }
void Ide::AddPackage(const String& p) { const Workspace& wspc = IdeWorkspace(); for(int i = 0; i < wspc.GetCount(); i++){ if(wspc[i] == p) return; } if(!PromptOKCancel("Package [* " + p + "] is not yet in the workspace.&Do you want to add it?")) return; OptItem& m = actual.uses.Add(); m.text = p; SaveLoadPackage(); }
void WorkspaceWork::Group() { if(!filelist.IsCursor() || !filelist[filelist.GetCursor()].isdir) return; int i = filelist.GetCursor(); int s = filelist.GetSbPos(); Sepfo as = GetActiveSepfo(); if(closed.Find(as) >= 0) closed.UnlinkKey(as); else closed.Put(as); SaveLoadPackage(false); filelist.SetSbPos(s); filelist.SetCursor(i); }
void WorkspaceWork::AddItem(const String& name, bool separator, bool readonly) { int fci = filelist.GetCursor(); int cs = filelist.GetSbPos(); int ci = fci >= 0 && fci < fileindex.GetCount() ? fileindex[fci] : -1; Package::File& f = ci >= 0 ? actual.file.Insert(ci) : actual.file.Add(); f = name; f.separator = separator; f.readonly = readonly; if(separator) SaveLoadPackageNS(false); else SaveLoadPackage(false); filelist.SetSbPos(cs); filelist.SetCursor(fci >= 0 ? fci : filelist.GetCount() - 1); FileSelected(); }
void Ide::LoadConfig() { if(!LoadFromFile(*this) && GetIniKey("DebugClipboard") == "1") { Exclamation("LoadConfig has failed!"); if(!LoadFromFile(*this, ConfigFile() + ".bak")) { Exclamation("LoadConfig .bak has failed!"); if(!LoadFromFile(*this, ConfigFile() + ".bak1")) Exclamation("LoadConfig .bak1 has failed!"); } } RestoreKeys(LoadFile(ConfigFile("ide.key"))); editor.LoadHlStyles(LoadFile(ConfigFile("ide.colors"))); config_time = FileGetTime(ConfigFile()); UpdateFormat(); if(filelist.IsCursor()) { FlushFile(); FileCursor(); } SaveLoadPackage(); SyncCh(); }
void WorkspaceWork::RenameFile() { if(!filelist.IsCursor()) return; String n = GetActiveFileName(); int i = filelist.GetCursor(); if(i < 0 || i >= fileindex.GetCount()) return; int ii = fileindex[i]; WithEditStringLayout<TopWindow> dlg; CtrlLayoutOKCancel(dlg, "Rename file"); dlg.lbl = "New name"; dlg.text <<= n; dlg.Open(); dlg.text.SetFocus(); int l = int(GetFileNamePos(n) - ~n); int h = int(GetFileExtPos(n) - ~n); if(l >= h) l = 0; dlg.text.SetSelection(l, h); if(dlg.Run() != IDOK) return; n = ~dlg.text; String spath = GetActiveFilePath(); String dpath = SourcePath(GetActivePackage(), n); if(!filelist[i].isdir && GetFileLength(spath) >= 0) { if(!::MoveFile(spath, dpath)) { Exclamation("Failed to rename the file.&&" + GetErrorMessage(GetLastError())); return; } } FileRename(dpath); int s = filelist.GetSbPos(); (String &)actual.file[ii] = n; SaveLoadPackage(false); filelist.SetSbPos(s); filelist.SetCursor(i); if(GetFileExt(spath) == ".iml" || GetFileExt(dpath) == ".iml") SyncWorkspace(); }
void WorkspaceWork::Import() { String active = GetActivePackage(); if(active.IsEmpty()) return; ImportDlg dlg; if(dlg.Execute() != IDOK) return; Progress pi("Importing file %d"); int fci = filelist.GetCursor(); int cs = filelist.GetSbPos(); try { DoImport(~dlg.folder, ~dlg.files, false, pi, ~dlg.tree); } catch(String msg) { if(!msg.IsEmpty()) Exclamation(msg); } SaveLoadPackage(false); filelist.SetSbPos(cs); filelist.SetCursor(fci >= 0 ? fci : filelist.GetCount() - 1); FileSelected(); }
void WorkspaceWork::ShowFile(int pi) { bool open = true; Sepfo sf; for(int i = 0; i < actual.file.GetCount(); i++) { if(actual.file[i].separator) { sf = Sepfo(GetActivePackage(), actual.file[i]); open = closed.Find(sf) < 0; } else if(i == pi) { if(!open) { int i = filelist.GetCursor(); int s = filelist.GetSbPos(); closed.UnlinkKey(sf); SaveLoadPackage(false); filelist.SetSbPos(s); filelist.SetCursor(i); } return; } } }