diff --git a/Source/Core/Core/Src/GeckoCodeConfig.cpp b/Source/Core/Core/Src/GeckoCodeConfig.cpp index 7657e98de9..58b5b46968 100644 --- a/Source/Core/Core/Src/GeckoCodeConfig.cpp +++ b/Source/Core/Core/Src/GeckoCodeConfig.cpp @@ -10,8 +10,6 @@ #include #include -#define GECKO_CODE_INI_SECTION "Gecko" - namespace Gecko { @@ -21,7 +19,7 @@ void LoadCodes(const IniFile& globalIni, const IniFile& localIni, std::vector lines; - inis[i]->GetLines(GECKO_CODE_INI_SECTION, lines, false); + inis[i]->GetLines("Gecko", lines, false); GeckoCode gcode; @@ -74,20 +72,35 @@ void LoadCodes(const IniFile& globalIni, const IniFile& localIni, std::vectorGetLines("Gecko_Enabled", lines, false); + + for (auto lines_iter = lines.begin(); lines_iter!=lines.end(); ++lines_iter) + { + auto line = *lines_iter; + if (line.size() == 0 || line[0] != '$') + continue; + std::string name = line.substr(1); + for (auto gcodes_iter = gcodes.begin(); gcodes_iter != gcodes.end(); ++gcodes_iter) + { + if ((*gcodes_iter).name == name) + (*gcodes_iter).enabled = true; + } + } } } // used by the SaveGeckoCodes function -void SaveGeckoCode(std::vector& lines, const GeckoCode& gcode) +void SaveGeckoCode(std::vector& lines, std::vector& enabledLines, const GeckoCode& gcode) { + if (gcode.enabled) + enabledLines.push_back("$" + gcode.name); + if (!gcode.user_defined) return; std::string name; - if (gcode.enabled) - name += '+'; - // save the name name += '$'; name += gcode.name; @@ -125,16 +138,18 @@ void SaveGeckoCode(std::vector& lines, const GeckoCode& gcode) void SaveCodes(IniFile& inifile, const std::vector& gcodes) { std::vector lines; + std::vector enabledLines; std::vector::const_iterator gcodes_iter = gcodes.begin(), gcodes_end = gcodes.end(); for (; gcodes_iter!=gcodes_end; ++gcodes_iter) { - SaveGeckoCode(lines, *gcodes_iter); + SaveGeckoCode(lines, enabledLines, *gcodes_iter); } - inifile.SetLines(GECKO_CODE_INI_SECTION, lines); + inifile.SetLines("Gecko", lines); + inifile.SetLines("Gecko_Enabled", enabledLines); } };