diff --git a/CHANGELIST.md b/CHANGELIST.md index e8af1fed..fafa4d7d 100644 --- a/CHANGELIST.md +++ b/CHANGELIST.md @@ -8,6 +8,7 @@ - Stop compiling Chime finally - Address some warnings and infos - Add setting for pulling comment/contents +- Move to config.json ### 2.6.5 (2023-09-27) diff --git a/MPF.Core/Data/Options.cs b/MPF.Core/Data/Options.cs index 088005f5..cfdab2d1 100644 --- a/MPF.Core/Data/Options.cs +++ b/MPF.Core/Data/Options.cs @@ -8,7 +8,10 @@ namespace MPF.Core.Data { public class Options : IDictionary { - private Dictionary _settings; + /// + /// All settings in the form of a dictionary + /// + public Dictionary Settings { get; private set; } #region Internal Program @@ -17,8 +20,8 @@ namespace MPF.Core.Data /// public string AaruPath { - get { return GetStringSetting(_settings, "AaruPath", "Programs\\Aaru\\Aaru.exe"); } - set { _settings["AaruPath"] = value; } + get { return GetStringSetting(Settings, "AaruPath", "Programs\\Aaru\\Aaru.exe"); } + set { Settings["AaruPath"] = value; } } /// @@ -26,8 +29,8 @@ namespace MPF.Core.Data /// public string DiscImageCreatorPath { - get { return GetStringSetting(_settings, "DiscImageCreatorPath", "Programs\\Creator\\DiscImageCreator.exe"); } - set { _settings["DiscImageCreatorPath"] = value; } + get { return GetStringSetting(Settings, "DiscImageCreatorPath", "Programs\\Creator\\DiscImageCreator.exe"); } + set { Settings["DiscImageCreatorPath"] = value; } } /// @@ -35,8 +38,8 @@ namespace MPF.Core.Data /// public string RedumperPath { - get { return GetStringSetting(_settings, "RedumperPath", "Programs\\Redumper\\redumper.exe"); } - set { _settings["RedumperPath"] = value; } + get { return GetStringSetting(Settings, "RedumperPath", "Programs\\Redumper\\redumper.exe"); } + set { Settings["RedumperPath"] = value; } } /// @@ -46,13 +49,13 @@ namespace MPF.Core.Data { get { - string valueString = GetStringSetting(_settings, "InternalProgram", InternalProgram.DiscImageCreator.ToString()); + string valueString = GetStringSetting(Settings, "InternalProgram", InternalProgram.DiscImageCreator.ToString()); var valueEnum = EnumConverter.ToInternalProgram(valueString); return valueEnum == InternalProgram.NONE ? InternalProgram.DiscImageCreator : valueEnum; } set { - _settings["InternalProgram"] = value.ToString(); + Settings["InternalProgram"] = value.ToString(); } } @@ -65,8 +68,8 @@ namespace MPF.Core.Data /// public bool EnableDarkMode { - get { return GetBooleanSetting(_settings, "EnableDarkMode", false); } - set { _settings["EnableDarkMode"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "EnableDarkMode", false); } + set { Settings["EnableDarkMode"] = value.ToString(); } } /// @@ -74,8 +77,8 @@ namespace MPF.Core.Data /// public bool CheckForUpdatesOnStartup { - get { return GetBooleanSetting(_settings, "CheckForUpdatesOnStartup", true); } - set { _settings["CheckForUpdatesOnStartup"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "CheckForUpdatesOnStartup", true); } + set { Settings["CheckForUpdatesOnStartup"] = value.ToString(); } } /// @@ -83,8 +86,8 @@ namespace MPF.Core.Data /// public bool FastUpdateLabel { - get { return GetBooleanSetting(_settings, "FastUpdateLabel", false); } - set { _settings["FastUpdateLabel"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "FastUpdateLabel", false); } + set { Settings["FastUpdateLabel"] = value.ToString(); } } /// @@ -92,8 +95,8 @@ namespace MPF.Core.Data /// public string DefaultOutputPath { - get { return GetStringSetting(_settings, "DefaultOutputPath", "ISO"); } - set { _settings["DefaultOutputPath"] = value; } + get { return GetStringSetting(Settings, "DefaultOutputPath", "ISO"); } + set { Settings["DefaultOutputPath"] = value; } } /// @@ -103,13 +106,13 @@ namespace MPF.Core.Data { get { - string valueString = GetStringSetting(_settings, "DefaultSystem", null); + string valueString = GetStringSetting(Settings, "DefaultSystem", null); var valueEnum = Extensions.ToRedumpSystem(valueString); return valueEnum; } set { - _settings["DefaultSystem"] = value.LongName(); + Settings["DefaultSystem"] = value.LongName(); } } @@ -119,8 +122,8 @@ namespace MPF.Core.Data /// This is a hidden setting public bool ShowDebugViewMenuItem { - get { return GetBooleanSetting(_settings, "ShowDebugViewMenuItem", false); } - set { _settings["ShowDebugViewMenuItem"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "ShowDebugViewMenuItem", false); } + set { Settings["ShowDebugViewMenuItem"] = value.ToString(); } } #endregion @@ -132,8 +135,8 @@ namespace MPF.Core.Data /// public int PreferredDumpSpeedCD { - get { return GetInt32Setting(_settings, "PreferredDumpSpeedCD", 24); } - set { _settings["PreferredDumpSpeedCD"] = value.ToString(); } + get { return GetInt32Setting(Settings, "PreferredDumpSpeedCD", 24); } + set { Settings["PreferredDumpSpeedCD"] = value.ToString(); } } /// @@ -141,8 +144,8 @@ namespace MPF.Core.Data /// public int PreferredDumpSpeedDVD { - get { return GetInt32Setting(_settings, "PreferredDumpSpeedDVD", 16); } - set { _settings["PreferredDumpSpeedDVD"] = value.ToString(); } + get { return GetInt32Setting(Settings, "PreferredDumpSpeedDVD", 16); } + set { Settings["PreferredDumpSpeedDVD"] = value.ToString(); } } /// @@ -150,8 +153,8 @@ namespace MPF.Core.Data /// public int PreferredDumpSpeedHDDVD { - get { return GetInt32Setting(_settings, "PreferredDumpSpeedHDDVD", 8); } - set { _settings["PreferredDumpSpeedHDDVD"] = value.ToString(); } + get { return GetInt32Setting(Settings, "PreferredDumpSpeedHDDVD", 8); } + set { Settings["PreferredDumpSpeedHDDVD"] = value.ToString(); } } /// @@ -159,8 +162,8 @@ namespace MPF.Core.Data /// public int PreferredDumpSpeedBD { - get { return GetInt32Setting(_settings, "PreferredDumpSpeedBD", 8); } - set { _settings["PreferredDumpSpeedBD"] = value.ToString(); } + get { return GetInt32Setting(Settings, "PreferredDumpSpeedBD", 8); } + set { Settings["PreferredDumpSpeedBD"] = value.ToString(); } } #endregion @@ -172,8 +175,8 @@ namespace MPF.Core.Data /// public bool AaruEnableDebug { - get { return GetBooleanSetting(_settings, "AaruEnableDebug", false); } - set { _settings["AaruEnableDebug"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "AaruEnableDebug", false); } + set { Settings["AaruEnableDebug"] = value.ToString(); } } /// @@ -181,8 +184,8 @@ namespace MPF.Core.Data /// public bool AaruEnableVerbose { - get { return GetBooleanSetting(_settings, "AaruEnableVerbose", false); } - set { _settings["AaruEnableVerbose"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "AaruEnableVerbose", false); } + set { Settings["AaruEnableVerbose"] = value.ToString(); } } /// @@ -190,8 +193,8 @@ namespace MPF.Core.Data /// public bool AaruForceDumping { - get { return GetBooleanSetting(_settings, "AaruForceDumping", true); } - set { _settings["AaruForceDumping"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "AaruForceDumping", true); } + set { Settings["AaruForceDumping"] = value.ToString(); } } /// @@ -199,8 +202,8 @@ namespace MPF.Core.Data /// public int AaruRereadCount { - get { return GetInt32Setting(_settings, "AaruRereadCount", 5); } - set { _settings["AaruRereadCount"] = value.ToString(); } + get { return GetInt32Setting(Settings, "AaruRereadCount", 5); } + set { Settings["AaruRereadCount"] = value.ToString(); } } /// @@ -208,8 +211,8 @@ namespace MPF.Core.Data /// public bool AaruStripPersonalData { - get { return GetBooleanSetting(_settings, "AaruStripPersonalData", false); } - set { _settings["AaruStripPersonalData"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "AaruStripPersonalData", false); } + set { Settings["AaruStripPersonalData"] = value.ToString(); } } #endregion @@ -221,8 +224,8 @@ namespace MPF.Core.Data /// public bool DICMultiSectorRead { - get { return GetBooleanSetting(_settings, "DICMultiSectorRead", false); } - set { _settings["DICMultiSectorRead"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "DICMultiSectorRead", false); } + set { Settings["DICMultiSectorRead"] = value.ToString(); } } /// @@ -230,8 +233,8 @@ namespace MPF.Core.Data /// public int DICMultiSectorReadValue { - get { return GetInt32Setting(_settings, "DICMultiSectorReadValue", 0); } - set { _settings["DICMultiSectorReadValue"] = value.ToString(); } + get { return GetInt32Setting(Settings, "DICMultiSectorReadValue", 0); } + set { Settings["DICMultiSectorReadValue"] = value.ToString(); } } /// @@ -244,8 +247,8 @@ namespace MPF.Core.Data /// public bool DICParanoidMode { - get { return GetBooleanSetting(_settings, "DICParanoidMode", false); } - set { _settings["DICParanoidMode"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "DICParanoidMode", false); } + set { Settings["DICParanoidMode"] = value.ToString(); } } /// @@ -253,8 +256,8 @@ namespace MPF.Core.Data /// public bool DICQuietMode { - get { return GetBooleanSetting(_settings, "DICQuietMode", false); } - set { _settings["DICQuietMode"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "DICQuietMode", false); } + set { Settings["DICQuietMode"] = value.ToString(); } } /// @@ -262,8 +265,8 @@ namespace MPF.Core.Data /// public int DICRereadCount { - get { return GetInt32Setting(_settings, "DICRereadCount", 20); } - set { _settings["DICRereadCount"] = value.ToString(); } + get { return GetInt32Setting(Settings, "DICRereadCount", 20); } + set { Settings["DICRereadCount"] = value.ToString(); } } /// @@ -271,8 +274,8 @@ namespace MPF.Core.Data /// public int DICDVDRereadCount { - get { return GetInt32Setting(_settings, "DICDVDRereadCount", 10); } - set { _settings["DICDVDRereadCount"] = value.ToString(); } + get { return GetInt32Setting(Settings, "DICDVDRereadCount", 10); } + set { Settings["DICDVDRereadCount"] = value.ToString(); } } /// @@ -280,8 +283,8 @@ namespace MPF.Core.Data /// public bool DICResetDriveAfterDump { - get { return GetBooleanSetting(_settings, "DICResetDriveAfterDump", false); } - set { _settings["DICResetDriveAfterDump"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "DICResetDriveAfterDump", false); } + set { Settings["DICResetDriveAfterDump"] = value.ToString(); } } /// @@ -289,8 +292,8 @@ namespace MPF.Core.Data /// public bool DICUseCMIFlag { - get { return GetBooleanSetting(_settings, "DICUseCMIFlag", false); } - set { _settings["DICUseCMIFlag"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "DICUseCMIFlag", false); } + set { Settings["DICUseCMIFlag"] = value.ToString(); } } #endregion @@ -302,8 +305,8 @@ namespace MPF.Core.Data /// public bool RedumperEnableDebug { - get { return GetBooleanSetting(_settings, "RedumperEnableDebug", false); } - set { _settings["RedumperEnableDebug"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "RedumperEnableDebug", false); } + set { Settings["RedumperEnableDebug"] = value.ToString(); } } /// @@ -311,8 +314,8 @@ namespace MPF.Core.Data /// public bool RedumperEnableVerbose { - get { return GetBooleanSetting(_settings, "RedumperEnableVerbose", false); } - set { _settings["RedumperEnableVerbose"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "RedumperEnableVerbose", false); } + set { Settings["RedumperEnableVerbose"] = value.ToString(); } } /// @@ -320,8 +323,8 @@ namespace MPF.Core.Data /// public int RedumperRereadCount { - get { return GetInt32Setting(_settings, "RedumperRereadCount", 20); } - set { _settings["RedumperRereadCount"] = value.ToString(); } + get { return GetInt32Setting(Settings, "RedumperRereadCount", 20); } + set { Settings["RedumperRereadCount"] = value.ToString(); } } #endregion @@ -333,8 +336,8 @@ namespace MPF.Core.Data /// public bool ScanForProtection { - get { return GetBooleanSetting(_settings, "ScanForProtection", true); } - set { _settings["ScanForProtection"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "ScanForProtection", true); } + set { Settings["ScanForProtection"] = value.ToString(); } } /// @@ -342,8 +345,8 @@ namespace MPF.Core.Data /// public bool OutputSeparateProtectionFile { - get { return GetBooleanSetting(_settings, "OutputSeparateProtectionFile", true); } - set { _settings["OutputSeparateProtectionFile"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "OutputSeparateProtectionFile", true); } + set { Settings["OutputSeparateProtectionFile"] = value.ToString(); } } /// @@ -351,8 +354,8 @@ namespace MPF.Core.Data /// public bool AddPlaceholders { - get { return GetBooleanSetting(_settings, "AddPlaceholders", true); } - set { _settings["AddPlaceholders"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "AddPlaceholders", true); } + set { Settings["AddPlaceholders"] = value.ToString(); } } /// @@ -360,8 +363,8 @@ namespace MPF.Core.Data /// public bool PromptForDiscInformation { - get { return GetBooleanSetting(_settings, "PromptForDiscInformation", true); } - set { _settings["PromptForDiscInformation"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "PromptForDiscInformation", true); } + set { Settings["PromptForDiscInformation"] = value.ToString(); } } /// @@ -369,8 +372,8 @@ namespace MPF.Core.Data /// public bool PullAllInformation { - get { return GetBooleanSetting(_settings, "PullAllInformation", false); } - set { _settings["PullAllInformation"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "PullAllInformation", false); } + set { Settings["PullAllInformation"] = value.ToString(); } } /// @@ -378,8 +381,8 @@ namespace MPF.Core.Data /// public bool EnableTabsInInputFields { - get { return GetBooleanSetting(_settings, "EnableTabsInInputFields", false); } - set { _settings["EnableTabsInInputFields"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "EnableTabsInInputFields", false); } + set { Settings["EnableTabsInInputFields"] = value.ToString(); } } /// @@ -387,8 +390,8 @@ namespace MPF.Core.Data /// public bool EnableRedumpCompatibility { - get { return GetBooleanSetting(_settings, "EnableRedumpCompatibility", true); } - set { _settings["EnableRedumpCompatibility"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "EnableRedumpCompatibility", true); } + set { Settings["EnableRedumpCompatibility"] = value.ToString(); } } /// @@ -396,8 +399,8 @@ namespace MPF.Core.Data /// public bool ShowDiscEjectReminder { - get { return GetBooleanSetting(_settings, "ShowDiscEjectReminder", true); } - set { _settings["ShowDiscEjectReminder"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "ShowDiscEjectReminder", true); } + set { Settings["ShowDiscEjectReminder"] = value.ToString(); } } /// @@ -405,8 +408,8 @@ namespace MPF.Core.Data /// public bool EjectAfterDump { - get { return GetBooleanSetting(_settings, "EjectAfterDump", false); } - set { _settings["EjectAfterDump"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "EjectAfterDump", false); } + set { Settings["EjectAfterDump"] = value.ToString(); } } /// @@ -414,8 +417,8 @@ namespace MPF.Core.Data /// public bool IgnoreFixedDrives { - get { return GetBooleanSetting(_settings, "IgnoreFixedDrives", true); } - set { _settings["IgnoreFixedDrives"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "IgnoreFixedDrives", true); } + set { Settings["IgnoreFixedDrives"] = value.ToString(); } } /// @@ -423,8 +426,8 @@ namespace MPF.Core.Data /// public bool ToolsInSeparateWindow { - get { return GetBooleanSetting(_settings, "ToolsInSeparateWindow", true); } - set { _settings["ToolsInSeparateWindow"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "ToolsInSeparateWindow", true); } + set { Settings["ToolsInSeparateWindow"] = value.ToString(); } } /// @@ -432,8 +435,8 @@ namespace MPF.Core.Data /// public bool OutputSubmissionJSON { - get { return GetBooleanSetting(_settings, "OutputSubmissionJSON", false); } - set { _settings["OutputSubmissionJSON"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "OutputSubmissionJSON", false); } + set { Settings["OutputSubmissionJSON"] = value.ToString(); } } /// @@ -441,8 +444,8 @@ namespace MPF.Core.Data /// public bool IncludeArtifacts { - get { return GetBooleanSetting(_settings, "IncludeArtifacts", false); } - set { _settings["IncludeArtifacts"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "IncludeArtifacts", false); } + set { Settings["IncludeArtifacts"] = value.ToString(); } } /// @@ -450,8 +453,8 @@ namespace MPF.Core.Data /// public bool CompressLogFiles { - get { return GetBooleanSetting(_settings, "CompressLogFiles", true); } - set { _settings["CompressLogFiles"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "CompressLogFiles", true); } + set { Settings["CompressLogFiles"] = value.ToString(); } } #endregion @@ -463,8 +466,8 @@ namespace MPF.Core.Data /// public bool SkipMediaTypeDetection { - get { return GetBooleanSetting(_settings, "SkipMediaTypeDetection", false); } - set { _settings["SkipMediaTypeDetection"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "SkipMediaTypeDetection", false); } + set { Settings["SkipMediaTypeDetection"] = value.ToString(); } } /// @@ -472,8 +475,8 @@ namespace MPF.Core.Data /// public bool SkipSystemDetection { - get { return GetBooleanSetting(_settings, "SkipSystemDetection", false); } - set { _settings["SkipSystemDetection"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "SkipSystemDetection", false); } + set { Settings["SkipSystemDetection"] = value.ToString(); } } #endregion @@ -485,8 +488,8 @@ namespace MPF.Core.Data /// public bool ScanArchivesForProtection { - get { return GetBooleanSetting(_settings, "ScanArchivesForProtection", true); } - set { _settings["ScanArchivesForProtection"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "ScanArchivesForProtection", true); } + set { Settings["ScanArchivesForProtection"] = value.ToString(); } } /// @@ -494,8 +497,8 @@ namespace MPF.Core.Data /// public bool ScanPackersForProtection { - get { return GetBooleanSetting(_settings, "ScanPackersForProtection", false); } - set { _settings["ScanPackersForProtection"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "ScanPackersForProtection", false); } + set { Settings["ScanPackersForProtection"] = value.ToString(); } } /// @@ -503,8 +506,8 @@ namespace MPF.Core.Data /// public bool IncludeDebugProtectionInformation { - get { return GetBooleanSetting(_settings, "IncludeDebugProtectionInformation", false); } - set { _settings["IncludeDebugProtectionInformation"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "IncludeDebugProtectionInformation", false); } + set { Settings["IncludeDebugProtectionInformation"] = value.ToString(); } } #endregion @@ -516,8 +519,8 @@ namespace MPF.Core.Data /// public bool VerboseLogging { - get { return GetBooleanSetting(_settings, "VerboseLogging", true); } - set { _settings["VerboseLogging"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "VerboseLogging", true); } + set { Settings["VerboseLogging"] = value.ToString(); } } /// @@ -525,8 +528,8 @@ namespace MPF.Core.Data /// public bool OpenLogWindowAtStartup { - get { return GetBooleanSetting(_settings, "OpenLogWindowAtStartup", true); } - set { _settings["OpenLogWindowAtStartup"] = value.ToString(); } + get { return GetBooleanSetting(Settings, "OpenLogWindowAtStartup", true); } + set { Settings["OpenLogWindowAtStartup"] = value.ToString(); } } #endregion @@ -535,15 +538,15 @@ namespace MPF.Core.Data public string RedumpUsername { - get { return GetStringSetting(_settings, "RedumpUsername", ""); } - set { _settings["RedumpUsername"] = value; } + get { return GetStringSetting(Settings, "RedumpUsername", ""); } + set { Settings["RedumpUsername"] = value; } } // TODO: Figure out a way to keep this encrypted in some way, BASE64 to start? public string RedumpPassword { - get { return GetStringSetting(_settings, "RedumpPassword", ""); } - set { _settings["RedumpPassword"] = value; } + get { return GetStringSetting(Settings, "RedumpPassword", ""); } + set { Settings["RedumpPassword"] = value; } } /// @@ -559,7 +562,7 @@ namespace MPF.Core.Data /// public Options(Dictionary settings = null) { - this._settings = settings ?? new Dictionary(); + this.Settings = settings ?? new Dictionary(); } /// @@ -568,16 +571,7 @@ namespace MPF.Core.Data /// public Options(Options source) { - _settings = new Dictionary(source._settings); - } - - /// - /// Set all fields from an existing Options object - /// - /// - public void SetFromExisting(Options source) - { - _settings = new Dictionary(source._settings); + Settings = new Dictionary(source.Settings); } #region Helpers @@ -645,41 +639,41 @@ namespace MPF.Core.Data #region IDictionary implementations - public ICollection Keys => _settings.Keys; + public ICollection Keys => Settings.Keys; - public ICollection Values => _settings.Values; + public ICollection Values => Settings.Values; - public int Count => _settings.Count; + public int Count => Settings.Count; - public bool IsReadOnly => ((IDictionary)_settings).IsReadOnly; + public bool IsReadOnly => ((IDictionary)Settings).IsReadOnly; public string this[string key] { - get { return (_settings.ContainsKey(key) ? _settings[key] : null); } - set { _settings[key] = value; } + get { return (Settings.ContainsKey(key) ? Settings[key] : null); } + set { Settings[key] = value; } } - public bool ContainsKey(string key) => _settings.ContainsKey(key); + public bool ContainsKey(string key) => Settings.ContainsKey(key); - public void Add(string key, string value) => _settings.Add(key, value); + public void Add(string key, string value) => Settings.Add(key, value); - public bool Remove(string key) => _settings.Remove(key); + public bool Remove(string key) => Settings.Remove(key); - public bool TryGetValue(string key, out string value) => _settings.TryGetValue(key, out value); + public bool TryGetValue(string key, out string value) => Settings.TryGetValue(key, out value); - public void Add(KeyValuePair item) => _settings.Add(item.Key, item.Value); + public void Add(KeyValuePair item) => Settings.Add(item.Key, item.Value); - public void Clear() => _settings.Clear(); + public void Clear() => Settings.Clear(); - public bool Contains(KeyValuePair item) => ((IDictionary)_settings).Contains(item); + public bool Contains(KeyValuePair item) => ((IDictionary)Settings).Contains(item); - public void CopyTo(KeyValuePair[] array, int arrayIndex) => ((IDictionary)_settings).CopyTo(array, arrayIndex); + public void CopyTo(KeyValuePair[] array, int arrayIndex) => ((IDictionary)Settings).CopyTo(array, arrayIndex); - public bool Remove(KeyValuePair item) => ((IDictionary)_settings).Remove(item); + public bool Remove(KeyValuePair item) => ((IDictionary)Settings).Remove(item); - public IEnumerator> GetEnumerator() => _settings.GetEnumerator(); + public IEnumerator> GetEnumerator() => Settings.GetEnumerator(); - IEnumerator IEnumerable.GetEnumerator() => _settings.GetEnumerator(); + IEnumerator IEnumerable.GetEnumerator() => Settings.GetEnumerator(); #endregion } diff --git a/MPF.Core/MPF.Core.csproj b/MPF.Core/MPF.Core.csproj index 753f0ed7..6f4733f6 100644 --- a/MPF.Core/MPF.Core.csproj +++ b/MPF.Core/MPF.Core.csproj @@ -45,7 +45,6 @@ - diff --git a/MPF.Core/Utilities/OptionsLoader.cs b/MPF.Core/Utilities/OptionsLoader.cs index 4ebcd796..48e00352 100644 --- a/MPF.Core/Utilities/OptionsLoader.cs +++ b/MPF.Core/Utilities/OptionsLoader.cs @@ -1,12 +1,15 @@ using System.Collections.Generic; -using System.Configuration; +using System.IO; using MPF.Core.Converters; using MPF.Core.Data; +using Newtonsoft.Json; namespace MPF.Core.Utilities { public static class OptionsLoader { + private const string ConfigurationPath = "config.json"; + #region Arguments /// @@ -143,17 +146,16 @@ namespace MPF.Core.Utilities /// public static Options LoadFromConfig() { - Configuration configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); - - var settings = configFile.AppSettings.Settings; - var dict = new Dictionary(); - - foreach (string key in settings.AllKeys) + if (!File.Exists(ConfigurationPath)) { - dict[key] = settings[key]?.Value ?? string.Empty; + _ = File.Create(ConfigurationPath); + return new Options(); } - return new Options(dict); + var serializer = JsonSerializer.Create(); + var reader = new StreamReader(ConfigurationPath); + var settings = serializer.Deserialize(reader, typeof(Dictionary)) as Dictionary; + return new Options(settings); } /// @@ -161,16 +163,10 @@ namespace MPF.Core.Utilities /// public static void SaveToConfig(Options options) { - Configuration configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); - - // Loop through all settings in Options and save them, overwriting existing settings - foreach (var kvp in options) - { - configFile.AppSettings.Settings.Remove(kvp.Key); - configFile.AppSettings.Settings.Add(kvp.Key, kvp.Value); - } - - configFile.Save(ConfigurationSaveMode.Modified); + var serializer = JsonSerializer.Create(); + var sw = new StreamWriter(ConfigurationPath) { AutoFlush = true }; + var writer = new JsonTextWriter(sw) { Formatting = Formatting.Indented }; + serializer.Serialize(writer, options.Settings, typeof(Dictionary)); } #endregion diff --git a/MPF/MPF.csproj b/MPF/MPF.csproj index 9f34f389..10e5411e 100644 --- a/MPF/MPF.csproj +++ b/MPF/MPF.csproj @@ -44,7 +44,6 @@ runtime; compile; build; native; analyzers; buildtransitive - all runtime; build; native; contentfiles; analyzers; buildtransitive