Example #1
0
        private T ProcessSetting <T>(RawSettings settings, string settingsKey, T defaultValue, Func <string, T> parser)
        {
            T   t;
            var defaultValueString = defaultValue.ToString();

            if (!settings.ContainsKey(settingsKey))
            {
                settings.Add(settingsKey, defaultValueString);
                t = defaultValue;
            }
            else
            {
                try
                {
                    t = parser(settings.GetItem <string>(settingsKey));
                }
                catch (Exception)
                {
                    _logger.Warning(
                        $"[Heat] Invalid '{settingsKey}' setting specified; defaulting to '{defaultValueString}'");
                    settings.Remove(settingsKey);
                    settings.Add(settingsKey, defaultValueString);
                    t = defaultValue;
                }
            }

            return(t);
        }
Example #2
0
        private Settings InitializeSettings()
        {
            var settings = new RawSettings("Heat.plugin");

            if (!settings.ContainsKey("toggleHotkey"))
            {
                settings.Add("toggleHotkey", "LeftControl+H");
            }

            var units = ProcessSetting(settings, "units", Units.Automatic,
                                       x => (Units)Enum.Parse(typeof(Units), x, true));
            var display = ProcessSetting(settings, "display", Display.Watermark,
                                         x => (Display)Enum.Parse(typeof(Display), x, true));
            var activation = ProcessSetting(settings, "activation", Activation.Always,
                                            x => (Activation)Enum.Parse(typeof(Activation), x, true));
            var warningThreshold = ProcessSetting(settings, "warningThreshold", 0.8f, float.Parse);

            settings.Save();

            return(new Settings(settings.GetItem <string>("toggleHotkey"), units, display, activation, warningThreshold));
        }