//TODO написать парсер, чтобы читать из файла //ColorScheme должен будет передавать строку из файла для распарсивания public static ItemColorSchemeEntry Parse(string line) { ItemColorSchemeEntry ret = ItemColorSchemeEntry.SystemDefault; // //[category][space][color1][space][color2][space]...[color8][space][mask1][;][mask2][;]... // try { string[] items1 = line.Split(new char[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries); ret.Category = (ItemCategory)int.Parse(items1[0]); ItemColorState i_state = new ItemColorState(); string hex_prefix = "0x"; i_state.DefaultState = ItemColors.Create(Color.FromArgb(int.Parse(items1[1].Replace(hex_prefix, string.Empty), System.Globalization.NumberStyles.HexNumber)), Color.FromArgb(int.Parse(items1[2].Replace(hex_prefix, string.Empty), System.Globalization.NumberStyles.HexNumber))); i_state.FocusedState = ItemColors.Create(Color.FromArgb(int.Parse(items1[3].Replace(hex_prefix, string.Empty), System.Globalization.NumberStyles.HexNumber)), Color.FromArgb(int.Parse(items1[4].Replace(hex_prefix, string.Empty), System.Globalization.NumberStyles.HexNumber))); i_state.SelectedState = ItemColors.Create(Color.FromArgb(int.Parse(items1[5].Replace(hex_prefix, string.Empty), System.Globalization.NumberStyles.HexNumber)), Color.FromArgb(int.Parse(items1[6].Replace(hex_prefix, string.Empty), System.Globalization.NumberStyles.HexNumber))); i_state.SelectedFocusedState = ItemColors.Create(Color.FromArgb(int.Parse(items1[7].Replace(hex_prefix, string.Empty), System.Globalization.NumberStyles.HexNumber)), Color.FromArgb(int.Parse(items1[8].Replace(hex_prefix, string.Empty), System.Globalization.NumberStyles.HexNumber))); string[] masks = items1[9].Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); ret.ItemColorState = i_state; ret.Masks = masks; } catch (Exception) { } return(ret); }
public static ColorScheme Parse(string file_name) { StreamReader reader = null; ColorScheme ret = new ColorScheme(); try { reader = new StreamReader(file_name, Encoding.UTF8); string line = string.Empty; while ((line = reader.ReadLine()) != null) { line = line.Trim(); if (line == string.Empty) { continue; } if (line.StartsWith("#")) { continue; } ItemColorSchemeEntry new_entry = ItemColorSchemeEntry.Parse(line); ret.internal_list.Add(new_entry); //line = reader.ReadLine(); } } catch (Exception) { } finally { if (reader != null) { reader.Close(); } } if (ret.internal_list.Count == 0) { ret.internal_list.Add(ItemColorSchemeEntry.SystemDefault); } return(ret); }