public static SettingRow ParseIniLine(this string line)
        {
            SettingRow sr = new SettingRow();

            string[] pieces = line.Split(new string[] { ":" }, 2, StringSplitOptions.RemoveEmptyEntries);
            if (pieces.Length == 2)
            {
                sr.Setting = pieces[0];
                sr.Value   = cleanUpValue(pieces[1]);
            }
            return(sr);
        }
 public void LoadSettings()
 {
     try{
         if (File.Exists(SettingsINI))
         {
             this._settings = new Dictionary <string, string>();
             string   contents = "";
             FileInfo fi       = new FileInfo(this.SettingsINI);
             using (StreamReader sr = fi.OpenText())
             {
                 contents = sr.ReadToEnd();
             }
             if (!string.IsNullOrEmpty(contents))
             {
                 string[] lines = contents.Split(new string[] { System.Environment.NewLine }, StringSplitOptions.None);
                 foreach (string line in lines)
                 {
                     if (line.IsSettingLine())
                     {
                         SettingRow sr = line.ParseIniLine();
                         KeyValuePair <string, string> kvp = new KeyValuePair <string, string>(sr.Setting, sr.Value);
                         if (!string.IsNullOrEmpty(kvp.Key) && !string.IsNullOrEmpty(kvp.Value))
                         {
                             if (!Settings.ContainsKey(kvp.Key))
                             {
                                 Settings.Add(kvp.Key, kvp.Value);
                             }
                             else
                             {
                                 Settings[kvp.Key] += MULTI_DELIM + kvp.Value;
                             }
                         }
                     }
                 }
             }
         }
     }catch (Exception ex)
     {
     }
 }
 public static string CreateIniLine(this SettingRow setting)
 {
     return(setting.Setting + ":\t" + setting.Value);
 }
        public bool SaveSettings()
        {
            List <String> lines = new List <string>();

            using (StreamReader sr = File.OpenText(this.SettingsINI))
            {
                while (sr.Peek() >= 0)
                {
                    lines.Add(sr.ReadLine());
                }
            }
            IList <SettingRow> settingLines = new List <SettingRow>();

            foreach (string line in lines)
            {
                if (line.IsSettingLine())
                {
                    SettingRow sr = line.ParseIniLine();
                    sr.Row = lines.IndexOf(line);
                    settingLines.Add(sr);
                }
            }
//			var settingLines = lines.Where(xx => xx.IsSettingLine())
//				.Select(xx =>
//				        {
//				            SettingRow sr =xx.ParseIniLine();
//				            sr.Row = lines.IndexOf(xx);
//				            return sr;
//				        });
            foreach (SettingRow sr in settingLines)
            {
                if (this.Settings.ContainsKey(sr.Setting))
                {
                    if (!this[sr.Setting].Equals(sr.Value))
                    {
                        sr.Value      = this[sr.Setting];
                        lines[sr.Row] = sr.CreateIniLine();
                    }
                }
            }

            IList <string> settingKeys = new List <string>();

            foreach (SettingRow sr in settingLines)
            {
                settingKeys.Add(sr.Setting);
            }
//			var settingKeys = settingLines.Select(xx => xx.Setting);
            foreach (KeyValuePair <string, string> setting in this.Settings)
            {
                if (!settingKeys.Contains(setting.Key))
                {
                    lines.Add(setting.CreateIniLine());
                }
            }

            bool r = false;

            using (FileStream fs = File.Create(this.SettingsINI))
            {
                using (StreamWriter sw = new StreamWriter(fs))
                {
                    foreach (String line in lines)
                    {
                        sw.WriteLine(line);
                    }
                    r = true;
                }
            }
            return(r);
        }