本文整理汇总了C++中ConfigManager::Exists方法的典型用法代码示例。如果您正苦于以下问题:C++ ConfigManager::Exists方法的具体用法?C++ ConfigManager::Exists怎么用?C++ ConfigManager::Exists使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ConfigManager
的用法示例。
在下文中一共展示了ConfigManager::Exists方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: LoadSettings
void Compiler::LoadSettings(const wxString& baseKey)
{
// before loading any compiler settings, keep the current settings safe
// so we can compare them when saving: this way we can only save what's
// different from the defaults
MirrorCurrentSettings();
ConfigManager* cfg = Manager::Get()->GetConfigManager(_T("compiler"));
// read settings version
wxString version = cfg->Read(_T("settings_version"));
bool versionMismatch = version != CompilerSettingsVersion;
wxString tmp;
// if using old-style keys (using integer IDs), notify user about the changes
static bool saidAboutCompilerIDs = false;
tmp.Printf(_T("%s/set%3.3d"), baseKey.c_str(), CompilerFactory::GetCompilerIndex(this) + 1);
if (cfg->Exists(tmp + _T("/name")))
{
if (!saidAboutCompilerIDs)
{
saidAboutCompilerIDs = true;
cbMessageBox(_("Compilers now use unique names instead of integer IDs.\n"
"Projects will be updated accordingly on load, mostly automatic."),
_("Information"),
wxICON_INFORMATION);
}
// at this point, we 'll be using the old style configuration to load settings
}
else // it's OK to use new style
tmp.Printf(_T("%s/%s"), baseKey.c_str(), m_ID.c_str());
if (!cfg->Exists(tmp + _T("/name")))
return;
wxString sep = wxFileName::GetPathSeparator();
m_Name = cfg->Read(tmp + _T("/name"), m_Name);
m_MasterPath = cfg->Read(tmp + _T("/master_path"), m_MasterPath);
m_ExtraPaths = MakeUniqueArray(GetArrayFromString(cfg->Read(tmp + _T("/extra_paths"), _T("")), _T(";")), true);
m_Programs.C = cfg->Read(tmp + _T("/c_compiler"), m_Programs.C);
m_Programs.CPP = cfg->Read(tmp + _T("/cpp_compiler"), m_Programs.CPP);
m_Programs.LD = cfg->Read(tmp + _T("/linker"), m_Programs.LD);
m_Programs.LIB = cfg->Read(tmp + _T("/lib_linker"), m_Programs.LIB);
m_Programs.WINDRES = cfg->Read(tmp + _T("/res_compiler"), m_Programs.WINDRES);
m_Programs.MAKE = cfg->Read(tmp + _T("/make"), m_Programs.MAKE);
m_Programs.DBG = cfg->Read(tmp + _T("/debugger"), m_Programs.DBG);
// set member variable containing the version string with the configurated toolchain executables, not only
// with the default ones, otherwise we might have an empty version-string
// Some MinGW installations do not includee "mingw32-gcc" !!
SetVersionString();
SetCompilerOptions (GetArrayFromString(cfg->Read(tmp + _T("/compiler_options"), wxEmptyString)));
SetLinkerOptions (GetArrayFromString(cfg->Read(tmp + _T("/linker_options"), wxEmptyString)));
SetIncludeDirs (GetArrayFromString(cfg->Read(tmp + _T("/include_dirs"), wxEmptyString)));
SetResourceIncludeDirs(GetArrayFromString(cfg->Read(tmp + _T("/res_include_dirs"), wxEmptyString)));
SetLibDirs (GetArrayFromString(cfg->Read(tmp + _T("/library_dirs"), wxEmptyString)));
SetLinkLibs (GetArrayFromString(cfg->Read(tmp + _T("/libraries"), wxEmptyString)));
SetCommandsBeforeBuild(GetArrayFromString(cfg->Read(tmp + _T("/commands_before"), wxEmptyString)));
SetCommandsAfterBuild (GetArrayFromString(cfg->Read(tmp + _T("/commands_after"), wxEmptyString)));
for (int i = 0; i < ctCount; ++i)
{
wxArrayString keys = cfg->EnumerateSubPaths(tmp + _T("/macros/") + CommandTypeDescriptions[i]);
for (size_t n = 0; n < keys.size(); ++n)
{
unsigned long index = 0;
if (keys[n].Mid(4).ToULong(&index)) // skip 'tool'
{
while (index >= m_Commands[i].size())
m_Commands[i].push_back(CompilerTool());
CompilerTool& tool = m_Commands[i][index];
wxString key = wxString::Format(_T("%s/macros/%s/tool%lu/"), tmp.c_str(), CommandTypeDescriptions[i].c_str(), index);
tool.command = cfg->Read(key + _T("command"));
tool.extensions = cfg->ReadArrayString(key + _T("extensions"));
tool.generatedFiles = cfg->ReadArrayString(key + _T("generatedFiles"));
}
}
}
// switches
m_Switches.includeDirs = cfg->Read(tmp + _T("/switches/includes"), m_Switches.includeDirs);
m_Switches.libDirs = cfg->Read(tmp + _T("/switches/libs"), m_Switches.libDirs);
m_Switches.linkLibs = cfg->Read(tmp + _T("/switches/link"), m_Switches.linkLibs);
m_Switches.defines = cfg->Read(tmp + _T("/switches/define"), m_Switches.defines);
m_Switches.genericSwitch = cfg->Read(tmp + _T("/switches/generic"), m_Switches.genericSwitch);
m_Switches.objectExtension = cfg->Read(tmp + _T("/switches/objectext"), m_Switches.objectExtension);
m_Switches.needDependencies = cfg->ReadBool(tmp + _T("/switches/deps"), m_Switches.needDependencies);
m_Switches.forceCompilerUseQuotes = cfg->ReadBool(tmp + _T("/switches/forceCompilerQuotes"), m_Switches.forceCompilerUseQuotes);
m_Switches.forceLinkerUseQuotes = cfg->ReadBool(tmp + _T("/switches/forceLinkerQuotes"), m_Switches.forceLinkerUseQuotes);
m_Switches.logging = (CompilerLoggingType)cfg->ReadInt(tmp + _T("/switches/logging"), m_Switches.logging);
m_Switches.libPrefix = cfg->Read(tmp + _T("/switches/libPrefix"), m_Switches.libPrefix);
m_Switches.libExtension = cfg->Read(tmp + _T("/switches/libExtension"), m_Switches.libExtension);
m_Switches.linkerNeedsLibPrefix = cfg->ReadBool(tmp + _T("/switches/linkerNeedsLibPrefix"), m_Switches.linkerNeedsLibPrefix);
m_Switches.linkerNeedsLibExtension = cfg->ReadBool(tmp + _T("/switches/linkerNeedsLibExtension"), m_Switches.linkerNeedsLibExtension);
m_Switches.forceFwdSlashes = cfg->ReadBool(tmp + _T("/switches/forceFwdSlashes"), m_Switches.forceFwdSlashes);
//.........这里部分代码省略.........
示例2: Load
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(","));
}
}
示例3: Init
void AnnoyingDialog::Init(const wxString &caption, const wxString &id, const wxString& message, const wxArtID icon,
dStyle style, const wxString& b1, const wxString& b2, const wxString& b3)
{
m_CheckBox = nullptr;
m_DontAnnoy = false;
m_Id = id;
static_assert(wxMinimumVersion<2,8,12>::eval, "wxWidgets 2.8.12 is required");
ConfigManagerContainer::StringSet disabled;
ConfigManager* cfg = Manager::Get()->GetConfigManager(wxT("an_dlg"));
if (cfg->Exists(wxT("/disabled_ret")))
{
// new config style, includes return code in format:
// "id:dReturnType"
// example:
// "Question XYZ?:4"
disabled = cfg->ReadSSet(wxT("/disabled_ret"));
}
else
{
// if the new config key does not exist, read from the old one
// old keys are in format:
// "id"
disabled = cfg->ReadSSet(wxT("/disabled"));
// and copy it to the new one
cfg->Write(wxT("/disabled_ret"), disabled);
// we do not do an in place upgrade of the format to maintain
// compatibility with previous versions
}
ConfigManagerContainer::StringSet::const_iterator it = disabled.lower_bound(m_Id);
if (it != disabled.end())
{
if (*it == m_Id)
{
// upgrade old settings
m_DontAnnoy = true;
if (m_DefRet == rtSAVE_CHOICE)
m_DefRet = rtYES; // default value
disabled.erase(it);
disabled.insert(m_Id + F(wxT(":%d"), m_DefRet));
// save updated format
cfg->Write(wxT("/disabled_ret"), disabled);
return;
}
else if (it->BeforeLast(wxT(':')) == m_Id)
{
m_DontAnnoy = true;
// read the saved choice and store it for ShowModal() to use
long ret = rtSAVE_CHOICE;
if (it->AfterLast(wxT(':')).ToLong(&ret) && ret != rtSAVE_CHOICE)
{
Manager::Get()->GetLogManager()->Log(*it);
m_DefRet = (dReturnType)ret;
}
else if (m_DefRet == rtSAVE_CHOICE)
m_DefRet = rtYES; // default value
return;
}
}
wxBoxSizer *outerSizer = new wxBoxSizer( wxVERTICAL );
wxFlexGridSizer *mainArea = new wxFlexGridSizer(2, 0, 0);
wxStaticBitmap *bitmap = new wxStaticBitmap(this, -1, wxArtProvider::GetBitmap(icon, wxART_MESSAGE_BOX), wxDefaultPosition);
mainArea->Add(bitmap, 0, wxALL, 5);
wxStaticText *txt = new wxStaticText(this, -1, message, wxDefaultPosition, wxDefaultSize, 0);
mainArea->Add( txt, 0, wxALIGN_CENTER|wxALL, 5 );
mainArea->Add( 1, 1, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP, 5 );
int numButtons = 0;
dReturnType id1 = rtINVALID;
dReturnType id2 = rtINVALID;
dReturnType id3 = rtINVALID;
wxString bTxt1;
wxString bTxt2;
wxString bTxt3;
if(style == OK || style == ONE_BUTTON)
{
numButtons = 1;
// only one choice, so set m_DefRet
m_DefRet = (style == OK ? rtOK : rtONE);
id1 = m_DefRet;
bTxt1 = b1.IsEmpty() ? wxString(_("&OK")) : b1;
}
else if(style == YES_NO || style == OK_CANCEL || style == TWO_BUTTONS)
{
numButtons = 2;
id1 = (style == YES_NO ? rtYES : (style == OK_CANCEL ? rtOK : rtONE));
id2 = (style == YES_NO ? rtNO : (style == OK_CANCEL ? rtCANCEL : rtTWO));
bTxt1 = b1.IsEmpty() ? (style == YES_NO ? wxString(_("&Yes")) : wxString(_("&OK"))) : b1;
bTxt2 = b2.IsEmpty() ? (style == YES_NO ? wxString(_("&No")) : wxString(_("&Cancel"))) : b2;
// this is the default, so apply correct return type (if it was not set)
if (m_DefRet == rtYES)
m_DefRet = id1;
}
//.........这里部分代码省略.........