void ScriptingSettingsDlg::EndModal(int retCode) { if (retCode == wxID_OK) { ConfigManager* mgr = Manager::Get()->GetConfigManager(_T("scripting")); mgr->DeleteSubPath(_T("/startup_scripts")); ScriptsVector::iterator it; int i = 0; for (it = m_ScriptsVector.begin(); it != m_ScriptsVector.end(); ++it, ++i) { ScriptEntry& se = *it; wxString key = wxString::Format(_T("/startup_scripts/script%d"), i); mgr->Write(key, se.SerializeOut()); } mgr = Manager::Get()->GetConfigManager(_T("security")); mgr->Write(_T("CreateDir"), XRCCTRL(*this, "chkMkDir", wxCheckBox)->GetValue()); mgr->Write(_T("RemoveDir"), XRCCTRL(*this, "chkRmDir", wxCheckBox)->GetValue()); mgr->Write(_T("CopyFile"), XRCCTRL(*this, "chkCp", wxCheckBox)->GetValue()); mgr->Write(_T("RenameFile"), XRCCTRL(*this, "chkMv", wxCheckBox)->GetValue()); mgr->Write(_T("RemoveFile"), XRCCTRL(*this, "chkRm", wxCheckBox)->GetValue()); mgr->Write(_T("CreateFile"), XRCCTRL(*this, "chkTouch", wxCheckBox)->GetValue()); mgr->Write(_T("Execute"), XRCCTRL(*this, "chkExec", wxCheckBox)->GetValue()); } wxScrollingDialog::EndModal(retCode); }
void ToolsManager::SaveTools() { ConfigManager* cfg = Manager::Get()->GetConfigManager(_T("tools")); wxArrayString list = cfg->EnumerateSubPaths(_("/")); for (unsigned int i = 0; i < list.GetCount(); ++i) { cfg->DeleteSubPath(list[i]); } int count = 0; for (ToolsList::Node* node = m_Tools.GetFirst(); node; node = node->GetNext()) { cbTool* tool = node->GetData(); wxString elem; // prepend a 0-padded 2-digit number to keep ordering wxString tmp; tmp.Printf(_T("tool%2.2d"), count++); elem << _T("/") << tmp << _T("/"); cfg->Write(elem + _T("name"), tool->GetName()); cfg->Write(elem + _T("command"), tool->GetCommand()); cfg->Write(elem + _T("params"), tool->GetParams()); cfg->Write(elem + _T("workingDir"), tool->GetWorkingDir()); cfg->Write(elem + _T("launchOption"), static_cast<int>(tool->GetLaunchOption())); } }
void EnvVarsConfigDlg::OnRemoveSetClick(wxCommandEvent& WXUNUSED(event)) { #if defined(TRACE_ENVVARS) Manager::Get()->GetLogManager()->DebugLog(F(_T("OnRemoveSetClick"))); #endif wxChoice* choSet = XRCCTRL(*this, "choSet", wxChoice); if (!choSet) return; if (choSet->GetCount()<2) { cbMessageBox(_("Must have at least one set active (can be empty)."), _("Information"), wxICON_INFORMATION); return; } wxCheckListBox* lstEnvVars = XRCCTRL(*this, "lstEnvVars", wxCheckListBox); if (!lstEnvVars) return; ConfigManager *cfg = Manager::Get()->GetConfigManager(_T("envvars")); if (!cfg) return; if (cbMessageBox(_("Are you sure you want to delete the set?"), _("Confirmation"), wxYES | wxNO | wxICON_QUESTION) == wxID_YES) { // Obtain active set int active_set_idx = choSet->GetCurrentSelection(); wxString active_set = choSet->GetString(active_set_idx); // Remove envvars from C::B focus (and listbox) EV_DBGLOG(_T("EnvVars: Unsetting variables of envvar set '%s'."), active_set.wx_str()); nsEnvVars::EnvvarsClearUI(lstEnvVars); // Don't care about return value // Remove envvars set from config wxString active_set_path = nsEnvVars::GetSetPathByName(active_set, false); EV_DBGLOG(_T("EnvVars: Removing envvar set '%s' at path '%s' from config."), active_set.wx_str(), active_set_path.wx_str()); cfg->DeleteSubPath(active_set_path); // Remove envvars set from choicebox choSet->Delete(active_set_idx); if (active_set_idx>0) choSet->SetSelection(active_set_idx-1); else choSet->SetSelection(0); }// if SaveSettingsActiveSet(choSet->GetString(choSet->GetCurrentSelection())); LoadSettings(); }// OnRemoveSetClick
void EnvVarsConfigDlg::SaveSettings() { #if defined(TRACE_ENVVARS) if (Manager::Get() && Manager::Get()->GetLogManager()); Manager::Get()->GetLogManager()->DebugLog(F(_T("SaveSettings"))); #endif wxChoice* choSet = XRCCTRL(*this, "choSet", wxChoice); if (!choSet) return; wxCheckListBox* lstEnvVars = XRCCTRL(*this, "lstEnvVars", wxCheckListBox); if (!lstEnvVars) return; wxCheckBox* chkDebugLog = XRCCTRL(*this, "chkDebugLog", wxCheckBox); if (!chkDebugLog) return; ConfigManager *cfg = Manager::Get()->GetConfigManager(_T("envvars")); if (!cfg) return; wxString active_set = choSet->GetString(choSet->GetCurrentSelection()); if (active_set.IsEmpty()) active_set = nsEnvVars::EnvVarsDefault; SaveSettingsActiveSet(active_set); wxString active_set_path = nsEnvVars::GetSetPathByName(active_set, false); EV_DBGLOG(_T("EnvVars: Removing (old) envvar set '%s' at path '%s' from config."), active_set.wx_str(), active_set_path.wx_str()); cfg->DeleteSubPath(active_set_path); EV_DBGLOG(_T("EnvVars: Saving (new) envvar set '%s'."), active_set.wx_str()); cfg->SetPath(active_set_path); for (int i=0; i<(int)lstEnvVars->GetCount(); ++i) { // Format: [checked?]|[key]|[value] wxString check = (lstEnvVars->IsChecked(i))?_T("1"):_T("0"); wxString key = lstEnvVars->GetString(i).BeforeFirst(_T('=')).Trim(true).Trim(false); wxString value = lstEnvVars->GetString(i).AfterFirst(_T('=')).Trim(true).Trim(false); wxString txt; txt << check << nsEnvVars::EnvVarsSep << key << nsEnvVars::EnvVarsSep << value; wxString cfg_key; cfg_key.Printf(_T("EnvVar%d"), i); cfg->Write(cfg_key, txt); }// for cfg->Write(_T("/debug_log"), chkDebugLog->GetValue()); }// SaveSettings
void FilesGroupsAndMasks::Save() { ConfigManager* conf = Manager::Get()->GetConfigManager(_T("project_manager")); conf->DeleteSubPath(_T("/file_groups")); for (unsigned int i = 0; i < m_Groups.GetCount(); ++i) { FileGroups* fg = m_Groups[i]; wxString key; key << _T("/file_groups/group") << wxString::Format(_T("%d"), i) << _T("/") << _T("name"); conf->Write(key, fg->groupName); key.Clear(); key << _T("/file_groups/group") << wxString::Format(_T("%d"), i) << _T("/") << _T("mask"); conf->Write(key, GetStringFromArray(fg->fileMasks, _T(";"))); } }
void ResultMap::WriteDetectedResults() { ConfigManager* cfg = Manager::Get()->GetConfigManager(_T("lib_finder")); if ( !cfg ) return; cfg->DeleteSubPath(_T("/stored_results/")); ResultArray Results; GetAllResults(Results); LogManager::Get()->DebugLog(_T("********** lib_finder Dump 2 BEGIN *************")); for ( size_t i=0; i<Results.Count(); i++ ) { LibraryResult* Result = Results[i]; Result->DebugDump(); wxString Path = wxString::Format(_T("/stored_results/res%06d/"),i); cfg->Write(Path+_T("name"),Result->LibraryName); cfg->Write(Path+_T("short_code"),Result->ShortCode); cfg->Write(Path+_T("base_path"),Result->BasePath); cfg->Write(Path+_T("description"),Result->Description); cfg->Write(Path+_T("pkg_config_var"),Result->PkgConfigVar); cfg->Write(Path+_T("categories"),Result->Categories); cfg->Write(Path+_T("include_paths"),Result->IncludePath); cfg->Write(Path+_T("lib_paths"),Result->LibPath); cfg->Write(Path+_T("obj_paths"),Result->ObjPath); cfg->Write(Path+_T("libs"),Result->Libs); cfg->Write(Path+_T("defines"),Result->Defines); cfg->Write(Path+_T("cflags"),Result->CFlags); cfg->Write(Path+_T("lflags"),Result->LFlags); cfg->Write(Path+_T("compilers"),Result->Compilers); cfg->Write(Path+_T("headers"),Result->Headers); cfg->Write(Path+_T("require"),Result->Require); } LogManager::Get()->DebugLog(_T("********** lib_finder Dump 2 END *************")); }
void EditorColourSet::Load() { // no need for syntax highlighting if batch building if (Manager::IsBatchBuild()) return; static bool s_notifiedUser = false; wxString key; ConfigManager* cfg = Manager::Get()->GetConfigManager(_T("editor")); // read the theme name m_Name = cfg->Read(_T("/colour_sets/") + m_Name + _T("/name"), m_Name); int x = 0; for (OptionSetsMap::iterator it = m_Sets.begin(); it != m_Sets.end(); ++it) { if (it->first == HL_NONE || it->first == HL_AUTO) continue; // look for old-style configuration key.Clear(); key << _T("/colour_sets/") << m_Name << _T("/set") << wxString::Format(_T("%d"), x++); if (cfg->Exists(key + _T("/name"))) { // old-style configuration // delete it and tell the user about it cfg->DeleteSubPath(key); if (!s_notifiedUser) { cbMessageBox(_("The way editor syntax highlighting configuration is saved, has changed.\n" "Syntax highlighting for all supported languages will revert to defaults now.\n" "We 're sorry for the inconvenience..."), _("Information"), wxICON_INFORMATION); s_notifiedUser = true; } continue; } // make sure we didn't create it accidentally cfg->DeleteSubPath(key); // new-style configuration key key.Clear(); key << _T("/colour_sets/") << m_Name << _T('/') << it->first; if (!cfg->Exists(key + _T("/name"))) { // make sure we didn't create it accidentally cfg->DeleteSubPath(key); continue; } for (unsigned int i = 0; i < it->second.m_Colours.GetCount(); ++i) { wxString tmpKey; tmpKey << key << _T("/style") << wxString::Format(_T("%u"), i); if (!cfg->Exists(tmpKey + _T("/name"))) { // make sure we didn't create it accidentally cfg->DeleteSubPath(tmpKey); continue; } wxString name = cfg->Read(tmpKey + _T("/name")); for (size_t j = 0; j < it->second.m_Colours.GetCount(); ++j) { OptionColour* opt = it->second.m_Colours.Item(j); if (!opt || opt->name != name) continue; if (cfg->Exists(tmpKey + _T("/fore"))) opt->fore = cfg->ReadColour(tmpKey + _T("/fore"), opt->fore); if (cfg->Exists(tmpKey + _T("/back"))) opt->back = cfg->ReadColour(tmpKey + _T("/back"), opt->back); if (cfg->Exists(tmpKey + _T("/bold"))) opt->bold = cfg->ReadBool(tmpKey + _T("/bold"), opt->bold); if (cfg->Exists(tmpKey + _T("/italics"))) opt->italics = cfg->ReadBool(tmpKey + _T("/italics"), opt->italics); if (cfg->Exists(tmpKey + _T("/underlined"))) opt->underlined = cfg->ReadBool(tmpKey + _T("/underlined"), opt->underlined); if (cfg->Exists(tmpKey + _T("/isStyle"))) opt->isStyle = cfg->ReadBool(tmpKey + _T("/isStyle"), opt->isStyle); } } wxString tmpkey; for (int i = 0; i <= wxSCI_KEYWORDSET_MAX; ++i) { tmpkey.Printf(_T("%s/editor/keywords/set%d"), key.c_str(), i); if (cfg->Exists(tmpkey)) it->second.m_Keywords[i] = cfg->Read(tmpkey, wxEmptyString); } tmpkey.Printf(_T("%s/editor/filemasks"), key.c_str()); if (cfg->Exists(tmpkey)) it->second.m_FileMasks = GetArrayFromString(cfg->Read(tmpkey, wxEmptyString), _T(",")); } }
void EditorColourSet::Save() { // no need for syntax highlighting if batch building if (Manager::IsBatchBuild()) return; wxString key; ConfigManager* cfg = Manager::Get()->GetConfigManager(_T("editor")); //FIXME: Commenting out the following line is no definite cure, but it hides the annoying disappearing colourset for now //NOTE (mandrav): uncommenting it doesn't seem to cause any trouble (at least now). What was the problem? cfg->DeleteSubPath(_T("/colour_sets/") + m_Name); // write the theme name cfg->Write(_T("/colour_sets/") + m_Name + _T("/name"), m_Name); for (OptionSetsMap::iterator it = m_Sets.begin(); it != m_Sets.end(); ++it) { if (it->first == HL_NONE || it->first == HL_AUTO) continue; wxString lang = it->first; bool gsaved = false; key.Clear(); key << _T("/colour_sets/") << m_Name << _T('/') << lang; for (unsigned int i = 0; i < it->second.m_Colours.GetCount(); ++i) { OptionColour* opt = it->second.m_Colours.Item(i); wxString tmpKey; tmpKey << key << _T("/style") << wxString::Format(_T("%u"), i); bool saved = false; if (opt->fore != opt->originalfore) { cfg->Write(tmpKey + _T("/fore"), opt->fore); saved = true; } if (opt->back != opt->originalback) { cfg->Write(tmpKey + _T("/back"), opt->back); saved = true; } if (opt->bold != opt->originalbold) { cfg->Write(tmpKey + _T("/bold"), opt->bold); saved = true; } if (opt->italics != opt->originalitalics) { cfg->Write(tmpKey + _T("/italics"), opt->italics); saved = true; } if (opt->underlined != opt->originalunderlined) { cfg->Write(tmpKey + _T("/underlined"), opt->underlined); saved = true; } if (opt->isStyle != opt->originalisStyle) { cfg->Write(tmpKey + _T("/isStyle"), opt->isStyle); saved = true; } if (saved) { cfg->Write(tmpKey + _T("/name"), opt->name, true); gsaved = true; } } wxString tmpkey; for (int i = 0; i <= wxSCI_KEYWORDSET_MAX; ++i) { if (it->second.m_Keywords[i] != it->second.m_originalKeywords[i]) { tmpkey.Printf(_T("%s/editor/keywords/set%d"), key.c_str(), i); cfg->Write(tmpkey, it->second.m_Keywords[i]); gsaved = true; } } tmpkey.Printf(_T("%s/editor/filemasks"), key.c_str()); wxString tmparr = GetStringFromArray(it->second.m_FileMasks, _T(",")); wxString tmparrorig = GetStringFromArray(it->second.m_originalFileMasks, _T(",")); if (tmparr != tmparrorig) { cfg->Write(tmpkey, tmparr); gsaved = true; } if (gsaved) cfg->Write(key + _T("/name"), it->second.m_Langs); } }
void Compiler::SaveSettings(const wxString& baseKey) { ConfigManager* cfg = Manager::Get()->GetConfigManager(_T("compiler")); // save settings version cfg->Write(_T("settings_version"), CompilerSettingsVersion); wxString tmp; // delete old-style keys (using integer IDs) tmp.Printf(_T("%s/set%3.3d"), baseKey.c_str(), CompilerFactory::GetCompilerIndex(this) + 1); cfg->DeleteSubPath(tmp); tmp.Printf(_T("%s/%s"), baseKey.c_str(), m_ID.c_str()); cfg->Write(tmp + _T("/name"), m_Name); cfg->Write(tmp + _T("/parent"), m_ParentID, true); if (m_Mirror.CompilerOptions_ != m_CompilerOptions) { wxString key = GetStringFromArray(m_CompilerOptions); cfg->Write(tmp + _T("/compiler_options"), key, false); } if (m_Mirror.LinkerOptions != m_LinkerOptions) { wxString key = GetStringFromArray(m_LinkerOptions); cfg->Write(tmp + _T("/linker_options"), key, false); } if (m_Mirror.IncludeDirs != m_IncludeDirs) { wxString key = GetStringFromArray( MakeUniqueArray(m_IncludeDirs, true) ); cfg->Write(tmp + _T("/include_dirs"), key, false); } if (m_Mirror.ResIncludeDirs != m_ResIncludeDirs) { wxString key = GetStringFromArray( MakeUniqueArray(m_ResIncludeDirs, true) ); cfg->Write(tmp + _T("/res_include_dirs"), key, false); } if (m_Mirror.LibDirs != m_LibDirs) { wxString key = GetStringFromArray( MakeUniqueArray(m_LibDirs, true) ); cfg->Write(tmp + _T("/library_dirs"), key, false); } if (m_Mirror.LinkLibs != m_LinkLibs) { wxString key = GetStringFromArray(m_LinkLibs); cfg->Write(tmp + _T("/libraries"), key, false); } if (m_Mirror.CmdsBefore != m_CmdsBefore) { wxString key = GetStringFromArray(m_CmdsBefore); cfg->Write(tmp + _T("/commands_before"), key, true); } if (m_Mirror.CmdsAfter != m_CmdsAfter) { wxString key = GetStringFromArray(m_CmdsAfter); cfg->Write(tmp + _T("/commands_after"), key, true); } if (m_Mirror.MasterPath != m_MasterPath) cfg->Write(tmp + _T("/master_path"), m_MasterPath, true); if (m_Mirror.ExtraPaths != m_ExtraPaths) cfg->Write(tmp + _T("/extra_paths"), GetStringFromArray( MakeUniqueArray(m_ExtraPaths, true), _T(";") ), true); if (m_Mirror.Programs.C != m_Programs.C) cfg->Write(tmp + _T("/c_compiler"), m_Programs.C, true); if (m_Mirror.Programs.CPP != m_Programs.CPP) cfg->Write(tmp + _T("/cpp_compiler"), m_Programs.CPP, true); if (m_Mirror.Programs.LD != m_Programs.LD) cfg->Write(tmp + _T("/linker"), m_Programs.LD, true); if (m_Mirror.Programs.LIB != m_Programs.LIB) cfg->Write(tmp + _T("/lib_linker"), m_Programs.LIB, true); if (m_Mirror.Programs.WINDRES != m_Programs.WINDRES) cfg->Write(tmp + _T("/res_compiler"), m_Programs.WINDRES, true); if (m_Mirror.Programs.MAKE != m_Programs.MAKE) cfg->Write(tmp + _T("/make"), m_Programs.MAKE, true); if (m_Mirror.Programs.DBG != m_Programs.DBG) cfg->Write(tmp + _T("/debugger"), m_Programs.DBG, true); for (int i = 0; i < ctCount; ++i) { for (size_t n = 0; n < m_Commands[i].size(); ++n) { if (n >= m_Mirror.Commands[i].size() || m_Mirror.Commands[i][n] != m_Commands[i][n]) { wxString key = wxString::Format(_T("%s/macros/%s/tool%d/"), tmp.c_str(), CommandTypeDescriptions[i].c_str(), n); cfg->Write(key + _T("command"), m_Commands[i][n].command); cfg->Write(key + _T("extensions"), m_Commands[i][n].extensions); cfg->Write(key + _T("generatedFiles"), m_Commands[i][n].generatedFiles); } } } // switches if (m_Mirror.Switches.includeDirs != m_Switches.includeDirs) cfg->Write(tmp + _T("/switches/includes"), m_Switches.includeDirs, true); if (m_Mirror.Switches.libDirs != m_Switches.libDirs) cfg->Write(tmp + _T("/switches/libs"), m_Switches.libDirs, true); if (m_Mirror.Switches.linkLibs != m_Switches.linkLibs) cfg->Write(tmp + _T("/switches/link"), m_Switches.linkLibs, true); if (m_Mirror.Switches.defines != m_Switches.defines) cfg->Write(tmp + _T("/switches/define"), m_Switches.defines, true); if (m_Mirror.Switches.genericSwitch != m_Switches.genericSwitch) cfg->Write(tmp + _T("/switches/generic"), m_Switches.genericSwitch, true); if (m_Mirror.Switches.objectExtension != m_Switches.objectExtension) cfg->Write(tmp + _T("/switches/objectext"), m_Switches.objectExtension, true); if (m_Mirror.Switches.needDependencies != m_Switches.needDependencies) cfg->Write(tmp + _T("/switches/deps"), m_Switches.needDependencies); if (m_Mirror.Switches.forceCompilerUseQuotes != m_Switches.forceCompilerUseQuotes) cfg->Write(tmp + _T("/switches/forceCompilerQuotes"), m_Switches.forceCompilerUseQuotes); if (m_Mirror.Switches.forceLinkerUseQuotes != m_Switches.forceLinkerUseQuotes) cfg->Write(tmp + _T("/switches/forceLinkerQuotes"), m_Switches.forceLinkerUseQuotes); if (m_Mirror.Switches.logging != m_Switches.logging) cfg->Write(tmp + _T("/switches/logging"), m_Switches.logging); if (m_Mirror.Switches.libPrefix != m_Switches.libPrefix) cfg->Write(tmp + _T("/switches/libPrefix"), m_Switches.libPrefix, true); if (m_Mirror.Switches.libExtension != m_Switches.libExtension) cfg->Write(tmp + _T("/switches/libExtension"), m_Switches.libExtension, true); if (m_Mirror.Switches.linkerNeedsLibPrefix != m_Switches.linkerNeedsLibPrefix) cfg->Write(tmp + _T("/switches/linkerNeedsLibPrefix"), m_Switches.linkerNeedsLibPrefix); if (m_Mirror.Switches.linkerNeedsLibExtension != m_Switches.linkerNeedsLibExtension) cfg->Write(tmp + _T("/switches/linkerNeedsLibExtension"), m_Switches.linkerNeedsLibExtension); if (m_Mirror.Switches.forceFwdSlashes != m_Switches.forceFwdSlashes) cfg->Write(tmp + _T("/switches/forceFwdSlashes"), m_Switches.forceFwdSlashes); if (m_Mirror.Switches.supportsPCH != m_Switches.supportsPCH) cfg->Write(tmp + _T("/switches/supportsPCH"), m_Switches.supportsPCH); if (m_Mirror.Switches.PCHExtension != m_Switches.PCHExtension) cfg->Write(tmp + _T("/switches/pchExtension"), m_Switches.PCHExtension); if (m_Mirror.Switches.UseFlatObjects != m_Switches.UseFlatObjects) cfg->Write(tmp + _T("/switches/UseFlatObjects"), m_Switches.UseFlatObjects); if (m_Mirror.Switches.UseFullSourcePaths != m_Switches.UseFullSourcePaths) cfg->Write(tmp + _T("/switches/UseFullSourcePaths"), m_Switches.UseFullSourcePaths); if (m_Mirror.Switches.Use83Paths != m_Switches.Use83Paths) cfg->Write(tmp + _T("/switches/Use83Paths"), m_Switches.Use83Paths); // regexes cfg->DeleteSubPath(tmp + _T("/regex")); wxString group; for (size_t i = 0; i < m_RegExes.Count(); ++i) { if (i < m_Mirror.RegExes.GetCount() && m_Mirror.RegExes[i] == m_RegExes[i]) continue; group.Printf(_T("%s/regex/re%3.3d"), tmp.c_str(), i + 1); RegExStruct& rs = m_RegExes[i]; cfg->Write(group + _T("/description"), rs.desc, true); if (rs.lt != 0) cfg->Write(group + _T("/type"), rs.lt); cfg->Write(group + _T("/regex"), rs.regex, true); if (rs.msg[0] != 0) cfg->Write(group + _T("/msg1"), rs.msg[0]); if (rs.msg[1] != 0) cfg->Write(group + _T("/msg2"), rs.msg[1]); if (rs.msg[2] != 0) cfg->Write(group + _T("/msg3"), rs.msg[2]); if (rs.filename != 0) cfg->Write(group + _T("/filename"), rs.filename); if (rs.line != 0) cfg->Write(group + _T("/line"), rs.line); } // custom vars wxString configpath = tmp + _T("/custom_variables/"); cfg->DeleteSubPath(configpath); const StringHash& v = GetAllVars(); for (StringHash::const_iterator it = v.begin(); it != v.end(); ++it) cfg->Write(configpath + it->first, it->second); }