[master/installclass] Add a stylesheet property to BaseInstallClass

David Shea dshea at redhat.com
Fri Dec 5 20:26:00 UTC 2014


If a stylesheet path is defined in the installclass, it will be applied
at a priority between the default anaconda-gtk.css and stylesheets from
updates/product.img.
---
 pyanaconda/installclass.py    |  3 +++
 pyanaconda/ui/gui/__init__.py | 15 ++++++++++++---
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/pyanaconda/installclass.py b/pyanaconda/installclass.py
index 74254d9..223bae5 100644
--- a/pyanaconda/installclass.py
+++ b/pyanaconda/installclass.py
@@ -64,6 +64,9 @@ class BaseInstallClass(object):
     help_placeholder = None
     help_placeholder_with_links = None
 
+    # path to the installclass stylesheet, if any
+    stylesheet = None
+
     @property
     def l10n_domain(self):
         if self._l10n_domain is None:
diff --git a/pyanaconda/ui/gui/__init__.py b/pyanaconda/ui/gui/__init__.py
index 08c2573..7baba35 100644
--- a/pyanaconda/ui/gui/__init__.py
+++ b/pyanaconda/ui/gui/__init__.py
@@ -48,10 +48,12 @@ ANACONDA_WINDOW_GROUP = Gtk.WindowGroup()
 # Stylesheet priorities to use for product-specific stylesheets and our
 # missing icon overrides. The missing icon rules should be higher than
 # the regular stylesheet, applied at GTK_STYLE_PROVIDER_PRIORITY_APPLICATION,
-# and stylesheets from updates.img and product.img should be higher than that,
-# so that they can override background images and not get re-overriden by us.
-# Both should be lower than GTK_STYLE_PROVIDER_PRIORITY_USER.
+# and stylesheets from the installclass, updates.img and product.img should be
+# higher than that, so that they can override background images and not get
+# re-overriden by us.  Both should be lower than
+# GTK_STYLE_PROVIDER_PRIORITY_USER.
 STYLE_PROVIDER_PRIORITY_MISSING_ICON = Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION + 10
+STYLE_PROVIDER_PRIORITY_INSTALLCLASS = Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION + 15
 STYLE_PROVIDER_PRIORITY_UPDATES = Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION + 20
 assert STYLE_PROVIDER_PRIORITY_UPDATES < Gtk.STYLE_PROVIDER_PRIORITY_USER
 
@@ -714,6 +716,13 @@ class GraphicalUserInterface(UserInterface):
         Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(), provider,
                 Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
 
+        # Apply the installclass stylesheet
+        if self.instclass.stylesheet:
+            provider = Gtk.CssProvider()
+            provider.load_from_path(self.instclass.stylesheet)
+            Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(), provider,
+                    STYLE_PROVIDER_PRIORITY_INSTALLCLASS)
+
         # Look for updates to the stylesheet and apply them at a higher priority
         for updates_dir in ("updates", "product"):
             updates_css = "/run/install/%s/anaconda-gtk.css" % updates_dir
-- 
2.1.0



More information about the anaconda-patches mailing list