public static IndentTheme Load(RegistryKey reg, string themeKey) { var theme = new IndentTheme(); using (var key = reg.OpenSubKey(themeKey)) { theme.ContentType = (themeKey == DefaultThemeName) ? null : themeKey; theme.Behavior.Load(key); theme.CaretHandler = (string)key.GetValue("CaretHandler") ?? DefaultCaretHandler; foreach (var subkeyName in key.GetSubKeyNames()) { Dictionary <string, string> values; using (var subkey = key.OpenSubKey(subkeyName)) { values = subkey.GetValueNames().ToDictionary(name => name, name => (string)subkey.GetValue(name)); } var format = LineFormat.FromInvariantStrings(theme, values); format.FormatIndexName = subkeyName; if (format.FormatIndex.HasValue) { theme.LineFormats[format.FormatIndex.GetValueOrDefault()] = format; } else { Trace.TraceWarning("{0}.{1} is not a valid format index.", themeKey, subkeyName); } } } return(theme); }
public IndentTheme() { ContentType = null; LineFormats = new Dictionary <int, LineFormat>(); PageWidthMarkers = new PageWidthMarkerGetter(this); DefaultLineFormat = new LineFormat(this); Behavior = new LineBehavior(); CaretHandler = DefaultCaretHandler; // Ensure format for indent 0 is hidden by default var format = new LineFormat(this); format.FormatIndex = 0; format.Reset(); LineFormats[0] = format; }
public bool TryGetValue(int index, out LineFormat value) { return(Theme.LineFormats.TryGetValue(index + PageWidthMarkerFormat.FirstPageWidthIndex, out value) && value is PageWidthMarkerFormat); }
public static IndentTheme Load(IVsSettingsReader reader, string themeKey) { var theme = new IndentTheme(); theme.ContentType = (themeKey == DefaultThemeName) ? null : themeKey; theme.Behavior.Load(reader, themeKey); string caretHandler; reader.ReadSettingString("CaretHandler", out caretHandler); theme.CaretHandler = caretHandler ?? DefaultCaretHandler; string subkeyNames, settingNames; ErrorHandler.ThrowOnFailure(reader.ReadSettingString(themeKey, out subkeyNames)); if (!string.IsNullOrEmpty(subkeyNames)) { foreach (var subkeyName in subkeyNames.Split(';')) { if (string.IsNullOrEmpty(subkeyName)) { continue; } int i = subkeyName.LastIndexOf('.'); if (i < 0) { continue; } var values = new Dictionary <string, string>(); if (ErrorHandler.Failed(reader.ReadSettingAttribute(subkeyName, "Keys", out settingNames)) || string.IsNullOrEmpty(settingNames)) { settingNames = "LineStyle;LineColor;HighlightStyle;HighlightColor;Visible"; } foreach (var setting in settingNames.Split(';')) { if (string.IsNullOrEmpty(subkeyName)) { continue; } string value; ErrorHandler.ThrowOnFailure(reader.ReadSettingAttribute(subkeyName, setting, out value)); if (!string.IsNullOrEmpty(value)) { values[setting] = value; } } var format = LineFormat.FromInvariantStrings(theme, values); format.FormatIndexName = subkeyName.Substring(i + 1); if (format.FormatIndex.HasValue) { theme.LineFormats[format.FormatIndex.GetValueOrDefault()] = format; } else { Trace.TraceWarning("{0}.{1} is not a valid format index.", themeKey, subkeyName); } } } return(theme); }