Changeset - 83ddf0ac052f
[Not reviewed]
default
0 0 1
Jason Maltzen (jmaltzen) - 8 years ago 2016-01-15 17:22:18
jason.maltzen@unsanctioned.net
Add a new class for managing settings parsing to move that out of the MainWindow UI class
1 file changed with 88 insertions and 0 deletions:
0 comments (0 inline, 0 general)
Settings.cs
Show inline comments
 
new file 100644
 
using System;
 
using System.Collections.Generic;
 
using System.IO;
 
using System.Text.RegularExpressions;
 

	
 
namespace DesertPaintLab
 
{
 
    public class Settings
 
    {
 
        private Settings()
 
        {
 
        }
 

	
 
        private static Dictionary<string, string> _settings = new Dictionary<string, string>();
 

	
 
        public static void Get(string key, out int value)
 
        {
 
            value = 0;
 
            string valStr;
 
            if ( _settings.TryGetValue(key.ToLower(), out valStr) )
 
            {
 
                Int32.TryParse(valStr, out value);
 
            }
 
        }
 
        public static void Get(string key, out bool value)
 
        {
 
            value = false;
 
            string valStr;
 
            if ( _settings.TryGetValue(key.ToLower(), out valStr) )
 
            {
 
                Boolean.TryParse(valStr, out value);
 
            }
 
        }
 
        public static void Set(string key, int value)
 
        {
 
            _settings[key.ToLower()] = value.ToString();
 
        }
 
        public static void Get(string key, bool value)
 
        {
 
            _settings[key.ToLower()] = value.ToString();
 
        }
 

	
 
        public static void Save()
 
        {
 
            string settingsPath = System.IO.Path.Combine(FileUtils.AppDataPath, "settings");
 
            using (StreamWriter writer = new StreamWriter(settingsPath))
 
            {
 
                foreach (KeyValuePair<string, string> pair in _settings)
 
                {
 
                    writer.WriteLine("{0}={1}", pair.Key, pair.Value);
 
                }
 
            }
 
        }
 
    
 
        
 
        static Regex optionEntry = new Regex(@"(?<opt>[^#=][^=]*)=(?<optval>.*)$");
 
        public static bool Load()
 
        {
 
            string settingsPath = System.IO.Path.Combine(FileUtils.AppDataPath, "settings");
 
            if (System.IO.File.Exists(settingsPath))
 
            {
 
                string line;
 
                Match match;
 
                using (StreamReader reader = new StreamReader(settingsPath))
 
                {
 
                    while ((line = reader.ReadLine()) != null) 
 
                    {
 
                        match = optionEntry.Match(line);
 
                        if (match.Success)
 
                        {
 
                            String optName = match.Groups["opt"].Value.ToLower();
 
                            String optVal = match.Groups["optval"].Value.Trim();
 
                            if (optName.Equals("debug"))
 
                            {
 
                                // convert
 
                                optName = "enabledebugmenu";
 
                            }
 
                            _settings[optName.ToLower()] = optVal;
 
                        }
 
                    }
 
                }
 
                return true;
 
            }
 
            return false;
 
        }
 
    }
 
}
 

	
0 comments (0 inline, 0 general)