[PATCH 3/3] Add a separator under the default language on the welcome screen.

Chris Lumens clumens at redhat.com
Thu Apr 25 18:58:00 UTC 2013


---
 pyanaconda/ui/gui/spokes/welcome.glade |  2 ++
 pyanaconda/ui/gui/spokes/welcome.py    | 17 +++++++++++++++--
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/pyanaconda/ui/gui/spokes/welcome.glade b/pyanaconda/ui/gui/spokes/welcome.glade
index 7196133..f0a4602 100644
--- a/pyanaconda/ui/gui/spokes/welcome.glade
+++ b/pyanaconda/ui/gui/spokes/welcome.glade
@@ -193,6 +193,8 @@
       <column type="gchararray"/>
       <!-- column-name langSetting -->
       <column type="gchararray"/>
+      <!-- column-name separator -->
+      <column type="gboolean"/>
     </columns>
   </object>
   <object class="GtkTreeModelFilter" id="languageStoreFilter">
diff --git a/pyanaconda/ui/gui/spokes/welcome.py b/pyanaconda/ui/gui/spokes/welcome.py
index fadd2ec..63da277 100644
--- a/pyanaconda/ui/gui/spokes/welcome.py
+++ b/pyanaconda/ui/gui/spokes/welcome.py
@@ -140,6 +140,9 @@ class LanguageMixIn(object):
         else:
             return False
 
+    def _row_is_separator(self, model, itr, *args):
+        return model[itr][3]
+
     def initialize(self):
         store = self.builder.get_object("languageStore")
         self._languageStoreFilter = self.builder.get_object("languageStoreFilter")
@@ -147,6 +150,9 @@ class LanguageMixIn(object):
         self._selection = self.builder.get_object(self._selectionName)
         self._view = self.builder.get_object(self._viewName)
 
+        # We need to tell the view whether something is a separator or not.
+        self._view.set_row_separator_func(self._row_is_separator, None)
+
         # We can use the territory from geolocation here
         # to preselect the translation, when it's available.
         territory = geoloc.get_territory_code()
@@ -192,6 +198,10 @@ class LanguageMixIn(object):
         store = store.get_model()
         store.move_after(itr, None)
 
+        # And then we add a separator after the default chosen language.
+        newItr = store.insert(1)
+        store.set(newItr, 0, "", 1, "", 2, "", 3, True)
+
         self._languageStoreFilter.set_visible_func(self._matchesEntry, None)
 
     def _retranslate_one(self, widgetName):
@@ -249,7 +259,7 @@ class LanguageMixIn(object):
         self._languageStoreFilter.refilter()
 
     def _addLanguage(self, store, native, english, setting):
-        store.append(['<span lang="%s">%s</span>' % (re.sub('\..*', '', setting), native), english, setting])
+        store.append(['<span lang="%s">%s</span>' % (re.sub('\..*', '', setting), native), english, setting, False])
 
     def _matchesEntry(self, model, itr, *args):
         # Need to strip out the pango markup before attempting to match.
@@ -273,7 +283,10 @@ class LanguageMixIn(object):
 
     def _selectLanguage(self, store, language):
         itr = store.get_iter_first()
-        while itr and language not in expand_langs(store[itr][2]):
+
+        # store[itr][3] is True if this row is a separator in the view, so we
+        # want to skip those.
+        while itr and not store[itr][3] and language not in expand_langs(store[itr][2]):
             itr = store.iter_next(itr)
 
         # If we were provided with an unsupported language, just use the default.
-- 
1.8.1.2



More information about the anaconda-patches mailing list