예제 #1
0
 internal SyntaxHighlightPage(ConfigPage page) : this()
 {
     _servicePage                   = page;
     _ColorBox.Checked              = _FontFamilyBox.Checked = _FontSizeBox.Checked = _FontStyleBox.Checked = true;
     _ColorBox.CheckedChanged      += (s, args) => _StyleFilters = _StyleFilters.SetFlags(StyleFilters.Color, _ColorBox.Checked);
     _FontFamilyBox.CheckedChanged += (s, args) => _StyleFilters = _StyleFilters.SetFlags(StyleFilters.FontFamily, _FontFamilyBox.Checked);
     _FontSizeBox.CheckedChanged   += (s, args) => _StyleFilters = _StyleFilters.SetFlags(StyleFilters.FontSize, _FontSizeBox.Checked);
     _FontStyleBox.CheckedChanged  += (s, args) => _StyleFilters = _StyleFilters.SetFlags(StyleFilters.FontStyle, _FontStyleBox.Checked);
     _UI.CommonEventAction         += () => Config.Instance.FireConfigChangedEvent(Features.SyntaxHighlight);
 }
예제 #2
0
파일: Config.cs 프로젝트: AmadeusW/Codist
 public static void LoadConfig(string configPath, StyleFilters styleFilter = StyleFilters.None)
 {
     if (Interlocked.Exchange(ref _LoadingConfig, 1) != 0)
     {
         return;
     }
     Debug.WriteLine("Load config: " + configPath);
     try {
         Instance = InternalLoadConfig(configPath, styleFilter);
         Loaded?.Invoke(Instance, EventArgs.Empty);
         Updated?.Invoke(Instance, new ConfigUpdatedEventArgs(styleFilter != StyleFilters.None ? Features.SyntaxHighlight : Features.All));
     }
     catch (Exception ex) {
         Debug.WriteLine(ex.ToString());
         Instance = GetDefaultConfig();
     }
     finally {
         _LoadingConfig = 0;
     }
 }
예제 #3
0
파일: Config.cs 프로젝트: molongwudi/Codist
 static void MergeCodeStyle <TStyle>(List <TStyle> source, IEnumerable <TStyle> target, StyleFilters styleFilters) where TStyle : StyleBase
 {
     foreach (var item in target)
     {
         if (item.IsSet == false)
         {
             continue;
         }
         var s = source.Find(i => i.Id == item.Id);
         if (s != null)
         {
             item.CopyTo(s, styleFilters);
         }
     }
 }
예제 #4
0
파일: Config.cs 프로젝트: molongwudi/Codist
        static Config InternalLoadConfig(string configPath, StyleFilters styleFilter)
        {
            var configContent = configPath == LightTheme ? Properties.Resources.Light
                                : configPath == DarkTheme ? Properties.Resources.Dark
                                : configPath == SimpleTheme ? Properties.Resources.Simple
                                : File.ReadAllText(configPath);
            var config = JsonConvert.DeserializeObject <Config>(configContent, new JsonSerializerSettings {
                DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate,
                NullValueHandling    = NullValueHandling.Ignore,
                Error = (sender, args) => {
                    args.ErrorContext.Handled = true;                     // ignore json error
                }
            });

            if (styleFilter == StyleFilters.None)
            {
                var l = config.Labels;
                for (var i = l.Count - 1; i >= 0; i--)
                {
                    if (String.IsNullOrWhiteSpace(l[i].Label))
                    {
                        l.RemoveAt(i);
                    }
                }
                if (l.Count == 0)
                {
                    InitDefaultLabels(l);
                }
            }
            var removeFontNames = System.Windows.Forms.Control.ModifierKeys == System.Windows.Forms.Keys.Control;

            LoadStyleEntries <CodeStyle, CodeStyleTypes>(config.GeneralStyles, removeFontNames);
            LoadStyleEntries <CommentStyle, CommentStyleTypes>(config.CommentStyles, removeFontNames);
            LoadStyleEntries <CppStyle, CppStyleTypes>(config.CppStyles, removeFontNames);
            LoadStyleEntries <CSharpStyle, CSharpStyleTypes>(config.CodeStyles, removeFontNames);
            LoadStyleEntries <XmlCodeStyle, XmlStyleTypes>(config.XmlCodeStyles, removeFontNames);
            LoadStyleEntries <SymbolMarkerStyle, SymbolMarkerStyleTypes>(config.SymbolMarkerStyles, removeFontNames);
            if (styleFilter == StyleFilters.All)
            {
                // don't override other settings if loaded from predefined themes or syntax config file
                ResetCodeStyle(Instance.GeneralStyles, config.GeneralStyles);
                ResetCodeStyle(Instance.CommentStyles, config.CommentStyles);
                ResetCodeStyle(Instance.CodeStyles, config.CodeStyles);
                ResetCodeStyle(Instance.CppStyles, config.CppStyles);
                ResetCodeStyle(Instance.XmlCodeStyles, config.XmlCodeStyles);
                ResetCodeStyle(Instance.SymbolMarkerStyles, config.SymbolMarkerStyles);
                ResetCodeStyle(Instance.MarkerSettings, config.MarkerSettings);
                _LastLoaded = DateTime.Now;
                return(Instance);
            }
            else if (styleFilter != StyleFilters.None)
            {
                MergeCodeStyle(Instance.GeneralStyles, config.GeneralStyles, styleFilter);
                MergeCodeStyle(Instance.CommentStyles, config.CommentStyles, styleFilter);
                MergeCodeStyle(Instance.CodeStyles, config.CodeStyles, styleFilter);
                MergeCodeStyle(Instance.CppStyles, config.CppStyles, styleFilter);
                MergeCodeStyle(Instance.XmlCodeStyles, config.XmlCodeStyles, styleFilter);
                MergeCodeStyle(Instance.SymbolMarkerStyles, config.SymbolMarkerStyles, styleFilter);
                //MergeCodeStyle(Instance.MarkerSettings, config.MarkerSettings, styleFilter);
                ResetCodeStyle(Instance.MarkerSettings, config.MarkerSettings);
                _LastLoaded = DateTime.Now;
                return(Instance);
            }
            _LastLoaded = DateTime.Now;
            Debug.WriteLine("Config loaded");
            return(config);
        }