On Fri, 2014-12-05 at 15:26 -0500, David Shea wrote:
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
Most generic and thus best (here) solution. ACK.
--
Vratislav Podzimek
Anaconda Rider | Red Hat, Inc. | Brno - Czech Republic