[meld] style: Run common style initialisation from settings initialisation



commit c1262d2ce6d353eeb19bfd716b80d37a28d9653d
Author: Kai Willadsen <kai willadsen gmail com>
Date:   Fri Jul 5 10:19:01 2019 +1000

    style: Run common style initialisation from settings initialisation
    
    This lets us handle all of the style scheme settings as globals
    controlled directly by the central settings handling. Widgets already
    hook in to style changes to update their colour maps.

 meld/settings.py |  5 ++++-
 meld/style.py    | 23 ++++++++++-------------
 2 files changed, 14 insertions(+), 14 deletions(-)
---
diff --git a/meld/settings.py b/meld/settings.py
index 30a8b9e4..33ce1a28 100644
--- a/meld/settings.py
+++ b/meld/settings.py
@@ -56,8 +56,11 @@ class MeldSettings(GObject.GObject):
             self.emit('changed', 'style-scheme')
 
     def _style_scheme_from_gsettings(self):
+        from meld.style import set_base_style_scheme
         manager = GtkSource.StyleSchemeManager.get_default()
-        return manager.get_scheme(settings.get_string('style-scheme'))
+        scheme = manager.get_scheme(settings.get_string('style-scheme'))
+        set_base_style_scheme(scheme)
+        return scheme
 
     def _filters_from_gsetting(self, key, filt_type):
         filter_params = settings.get_value(key)
diff --git a/meld/style.py b/meld/style.py
index c05d9efc..1cf330de 100644
--- a/meld/style.py
+++ b/meld/style.py
@@ -33,18 +33,17 @@ class MeldStyleScheme(enum.Enum):
     dark = "meld-dark"
 
 
+style_scheme: Optional[GtkSource.StyleScheme] = None
 base_style_scheme: Optional[GtkSource.StyleScheme] = None
 
 
-def get_base_style_scheme() -> GtkSource.StyleScheme:
+def set_base_style_scheme(
+        new_style_scheme: GtkSource.StyleScheme) -> GtkSource.StyleScheme:
 
     global base_style_scheme
+    global style_scheme
 
-    if base_style_scheme:
-        return base_style_scheme
-
-    from meld.settings import meldsettings
-    style_scheme = meldsettings.style_scheme
+    style_scheme = new_style_scheme
 
     # Get our text background colour by checking the 'text' style of
     # the user's selected style scheme, falling back to the GTK+ theme
@@ -72,21 +71,19 @@ def get_base_style_scheme() -> GtkSource.StyleScheme:
         MeldStyleScheme.dark if use_dark else MeldStyleScheme.base)
 
     manager = GtkSource.StyleSchemeManager.get_default()
-    base_style_scheme = manager.get_scheme(base_scheme_name)
+    base_style_scheme = manager.get_scheme(base_scheme_name.value)
+    if style_scheme.props.id in (MeldStyleScheme.dark.value, MeldStyleScheme.base.value):
+        style_scheme = base_style_scheme
 
     return base_style_scheme
 
 
 def colour_lookup_with_fallback(name: str, attribute: str) -> Gdk.RGBA:
-    from meld.settings import meldsettings
-    source_style = meldsettings.style_scheme
-
-    style = source_style.get_style(name) if source_style else None
+    style = style_scheme.get_style(name) if style_scheme else None
     style_attr = getattr(style.props, attribute) if style else None
     if not style or not style_attr:
-        base_style = get_base_style_scheme()
         try:
-            style = base_style.get_style(name)
+            style = base_style_scheme.get_style(name)
             style_attr = getattr(style.props, attribute)
         except AttributeError:
             pass


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]