1
0

Initial implementation of IniFile overloading

This commit is contained in:
tycho
2015-05-14 15:47:51 +01:00
committed by tycho
parent da58620d45
commit b9efa02c80
22 changed files with 955 additions and 116 deletions

View File

@@ -118,7 +118,7 @@ void cPluginManager::ReloadPluginsNow(void)
void cPluginManager::ReloadPluginsNow(cIniFile & a_SettingsIni)
void cPluginManager::ReloadPluginsNow(cSettingsRepositoryInterface & a_Settings)
{
LOG("-- Loading Plugins --");
@@ -130,7 +130,7 @@ void cPluginManager::ReloadPluginsNow(cIniFile & a_SettingsIni)
RefreshPluginList();
// Load the plugins:
AStringVector ToLoad = GetFoldersToLoad(a_SettingsIni);
AStringVector ToLoad = GetFoldersToLoad(a_Settings);
for (auto & pluginFolder: ToLoad)
{
LoadPlugin(pluginFolder);
@@ -157,16 +157,16 @@ void cPluginManager::ReloadPluginsNow(cIniFile & a_SettingsIni)
void cPluginManager::InsertDefaultPlugins(cIniFile & a_SettingsIni)
void cPluginManager::InsertDefaultPlugins(cSettingsRepositoryInterface & a_Settings)
{
a_SettingsIni.AddKeyName("Plugins");
a_SettingsIni.AddKeyComment("Plugins", " Plugin=Debuggers");
a_SettingsIni.AddKeyComment("Plugins", " Plugin=HookNotify");
a_SettingsIni.AddKeyComment("Plugins", " Plugin=ChunkWorx");
a_SettingsIni.AddKeyComment("Plugins", " Plugin=APIDump");
a_SettingsIni.AddValue("Plugins", "Plugin", "Core");
a_SettingsIni.AddValue("Plugins", "Plugin", "TransAPI");
a_SettingsIni.AddValue("Plugins", "Plugin", "ChatLog");
a_Settings.AddKeyName("Plugins");
a_Settings.AddKeyComment("Plugins", " Plugin=Debuggers");
a_Settings.AddKeyComment("Plugins", " Plugin=HookNotify");
a_Settings.AddKeyComment("Plugins", " Plugin=ChunkWorx");
a_Settings.AddKeyComment("Plugins", " Plugin=APIDump");
a_Settings.AddValue("Plugins", "Plugin", "Core");
a_Settings.AddValue("Plugins", "Plugin", "TransAPI");
a_Settings.AddValue("Plugins", "Plugin", "ChatLog");
}
@@ -1896,25 +1896,23 @@ size_t cPluginManager::GetNumLoadedPlugins(void) const
AStringVector cPluginManager::GetFoldersToLoad(cIniFile & a_SettingsIni)
AStringVector cPluginManager::GetFoldersToLoad(cSettingsRepositoryInterface & a_Settings)
{
// Check if the Plugins section exists.
int KeyNum = a_SettingsIni.FindKey("Plugins");
if (KeyNum == -1)
if (a_Settings.KeyExists("Plugins"))
{
InsertDefaultPlugins(a_SettingsIni);
KeyNum = a_SettingsIni.FindKey("Plugins");
InsertDefaultPlugins(a_Settings);
}
// Get the list of plugins to load:
AStringVector res;
int NumPlugins = a_SettingsIni.GetNumValues(KeyNum);
for (int i = 0; i < NumPlugins; i++)
auto Values = a_Settings.GetValues("Plugins");
for (auto NameValue : Values)
{
AString ValueName = a_SettingsIni.GetValueName(KeyNum, i);
AString ValueName = NameValue.first;
if (ValueName.compare("Plugin") == 0)
{
AString PluginFile = a_SettingsIni.GetValue(KeyNum, i);
AString PluginFile = NameValue.second;
if (!PluginFile.empty())
{
res.push_back(PluginFile);