[PATCH] Use only one large grid for the hubs.

Chris Lumens clumens at redhat.com
Wed Jan 23 20:30:22 UTC 2013


This makes the spoke selectors on rows by theirselves much smaller.  They
no longer extend all the way to the right edge of the screen.
---
 pyanaconda/ui/gui/categories/__init__.py | 29 -------------------------
 pyanaconda/ui/gui/hubs/__init__.py       | 36 ++++++++++++++++++++++++--------
 2 files changed, 27 insertions(+), 38 deletions(-)

diff --git a/pyanaconda/ui/gui/categories/__init__.py b/pyanaconda/ui/gui/categories/__init__.py
index 14dc2a0..7a75e5c 100644
--- a/pyanaconda/ui/gui/categories/__init__.py
+++ b/pyanaconda/ui/gui/categories/__init__.py
@@ -43,34 +43,6 @@ class SpokeCategory(object):
     displayOnHub = None
     title = N_("DEFAULT TITLE")
 
-    def grid(self, selectors):
-        """Construct a Gtk.Grid consisting of two columns from the provided
-           list of selectors.
-        """
-        from gi.repository import Gtk
-
-        if len(selectors) == 0:
-            return None
-
-        row = 0
-        col = 0
-
-        g = Gtk.Grid()
-        g.set_row_homogeneous(True)
-        g.set_column_homogeneous(True)
-        g.set_row_spacing(6)
-        g.set_column_spacing(6)
-        g.set_margin_bottom(12)
-
-        for selector in selectors:
-            g.attach(selector, col, row, 1, 1)
-
-            col = int(not col)
-            if col == 0:
-                row += 1
-
-        return g
-
 def collect_categories(mask_paths):
     """Return a list of all category subclasses. Look for them in modules
        imported as module_mask % basename(f) where f is name of all files in path.
@@ -80,4 +52,3 @@ def collect_categories(mask_paths):
         categories.extend(collect(mask, path, lambda obj: getattr(obj, "displayOnHub", None) != None))
         
     return categories
-
diff --git a/pyanaconda/ui/gui/hubs/__init__.py b/pyanaconda/ui/gui/hubs/__init__.py
index 1f5141a..510c624 100644
--- a/pyanaconda/ui/gui/hubs/__init__.py
+++ b/pyanaconda/ui/gui/hubs/__init__.py
@@ -132,15 +132,21 @@ class Hub(GUIObject, common.Hub):
             ret[c] = collect_spokes(self.paths["spokes"], c.__name__)
 
         return ret
-            
+
     def _createBox(self):
         from gi.repository import Gtk, AnacondaWidgets
         from pyanaconda.ui.gui.utils import setViewportBackground
 
         cats_and_spokes = self._collectCategoriesAndSpokes()
         categories = cats_and_spokes.keys()
-        
-        box = Gtk.VBox(False, 6)
+
+        grid = Gtk.Grid()
+        grid.set_row_spacing(6)
+        grid.set_column_spacing(6)
+        grid.set_column_homogeneous(True)
+        grid.set_margin_bottom(12)
+
+        row = 0
 
         for c in sorted(categories, key=lambda c: c.title):
             obj = c()
@@ -206,16 +212,28 @@ class Hub(GUIObject, common.Hub):
             label = Gtk.Label("<span font-desc=\"Sans 14\">%s</span>" % _(obj.title))
             label.set_use_markup(True)
             label.set_halign(Gtk.Align.START)
+            label.set_margin_top(12)
             label.set_margin_bottom(12)
-            box.pack_start(label, False, True, 0)
-
-            grid = obj.grid(selectors)
-            grid.set_margin_left(12)
-            box.pack_start(grid, False, True, 0)
+            grid.attach(label, 0, row, 2, 1)
+            row += 1
+
+            col = 0
+            for selector in selectors:
+                selector.set_margin_left(12)
+                grid.attach(selector, col, row, 1, 1)
+                col = int(not col)
+                if col == 0:
+                    row += 1
+
+            # If this category contains an odd number of selectors, the above
+            # row += 1 will not have run for the last row, which puts the next
+            # category's title in the wrong place.
+            if len(selectors) % 2:
+                row += 1
 
         spokeArea = self.window.get_spoke_area()
         viewport = Gtk.Viewport()
-        viewport.add(box)
+        viewport.add(grid)
         spokeArea.add(viewport)
 
         setViewportBackground(viewport)
-- 
1.7.11.2



More information about the anaconda-patches mailing list