diff options
author | Vratislav Podzimek <vpodzime@redhat.com> | 2012-07-10 13:40:43 +0200 |
---|---|---|
committer | Vratislav Podzimek <vpodzime@redhat.com> | 2012-07-11 12:24:27 +0200 |
commit | 4e96ee95aecc7f26c6975e874f9dd882d11f05f8 (patch) | |
tree | ecb7a0fe4a76d478f0ba7ca866a103bd129ab5ba /pyanaconda | |
parent | 54fc77bf41dc15086ed59840e3b8042bbe35e0cb (diff) | |
download | anaconda-4e96ee95aecc7f26c6975e874f9dd882d11f05f8.tar.gz anaconda-4e96ee95aecc7f26c6975e874f9dd882d11f05f8.tar.xz anaconda-4e96ee95aecc7f26c6975e874f9dd882d11f05f8.zip |
Sort available layouts alphabetically
It's easier to search through the available layouts manually if
they are sorted.
Diffstat (limited to 'pyanaconda')
-rw-r--r-- | pyanaconda/ui/gui/spokes/keyboard.py | 30 | ||||
-rw-r--r-- | pyanaconda/ui/gui/spokes/keyboard.ui | 17 |
2 files changed, 37 insertions, 10 deletions
diff --git a/pyanaconda/ui/gui/spokes/keyboard.py b/pyanaconda/ui/gui/spokes/keyboard.py index 154a88cac..4f390d598 100644 --- a/pyanaconda/ui/gui/spokes/keyboard.py +++ b/pyanaconda/ui/gui/spokes/keyboard.py @@ -24,7 +24,7 @@ import gettext _ = lambda x: gettext.ldgettext("anaconda", x) N_ = lambda x: x -from gi.repository import GLib, Gkbd +from gi.repository import GLib, Gkbd, Gtk from pyanaconda.ui.gui import UIObject from pyanaconda.ui.gui.spokes import NormalSpoke @@ -39,7 +39,8 @@ def _show_layout(column, renderer, model, itr, wrapper): renderer.set_property("text", value) class AddLayoutDialog(UIObject): - builderObjects = ["addLayoutDialog", "newLayoutStore", "newLayoutStoreFilter"] + builderObjects = ["addLayoutDialog", "newLayoutStore", + "newLayoutStoreFilter", "newLayoutStoreSort"] mainWidgetName = "addLayoutDialog" uiFile = "spokes/keyboard.ui" @@ -66,9 +67,26 @@ class AddLayoutDialog(UIObject): except ValueError as valerr: return False + def compare_layouts(self, model, itr1, itr2, user_data=None): + """ + We want to sort layouts by their show strings not their names. + This function is an instance of GtkTreeIterCompareFunc(). + + """ + + value1 = model[itr1][0] + value2 = model[itr2][0] + show_str1 = self._xkl_wrapper.name_to_show_str[value1] + show_str2 = self._xkl_wrapper.name_to_show_str[value2] + + if show_str1 < show_str2: + return -1 + elif show_str1 == show_str2: + return 0 + else: + return 1 + def refresh(self): - self._treeModelFilter = self.builder.get_object("newLayoutStoreFilter") - self._treeModelFilter.set_visible_func(self.matches_entry, None) self._entry = self.builder.get_object("addLayoutEntry") self._entry.grab_focus() @@ -79,6 +97,10 @@ class AddLayoutDialog(UIObject): layoutRenderer = self.builder.get_object("newLayoutRenderer") layoutColumn.set_cell_data_func(layoutRenderer, _show_layout, self._xkl_wrapper) + self._treeModelFilter = self.builder.get_object("newLayoutStoreFilter") + self._treeModelFilter.set_visible_func(self.matches_entry, None) + self._treeModelSort = self.builder.get_object("newLayoutStoreSort") + self._treeModelSort.set_default_sort_func(self.compare_layouts, None) self._store = self.builder.get_object("newLayoutStore") for layout in self._xkl_wrapper.get_available_layouts(): diff --git a/pyanaconda/ui/gui/spokes/keyboard.ui b/pyanaconda/ui/gui/spokes/keyboard.ui index 9b50a0d8e..1243e22fb 100644 --- a/pyanaconda/ui/gui/spokes/keyboard.ui +++ b/pyanaconda/ui/gui/spokes/keyboard.ui @@ -9,10 +9,10 @@ </object> <object class="GtkDialog" id="addLayoutDialog"> <property name="can_focus">False</property> - <property name="decorated">False</property> <property name="border_width">5</property> <property name="default_height">450</property> <property name="type_hint">dialog</property> + <property name="decorated">False</property> <child internal-child="vbox"> <object class="GtkBox" id="dialog-vbox1"> <property name="can_focus">False</property> @@ -107,7 +107,7 @@ <object class="GtkTreeView" id="newLayoutView"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="model">newLayoutStoreFilter</property> + <property name="model">newLayoutStoreSort</property> <property name="headers_visible">False</property> <property name="headers_clickable">False</property> <child internal-child="selection"> @@ -192,6 +192,8 @@ <child internal-child="nav_area"> <object class="GtkGrid" id="AnacondaSpokeWindow-nav_area1"> <property name="can_focus">False</property> + <property name="n_rows">2</property> + <property name="n_columns">2</property> </object> <packing> <property name="expand">False</property> @@ -472,16 +474,19 @@ any layout to the top of the list to select it as the default.</property> <object class="GtkTreeModelFilter" id="newLayoutStoreFilter"> <property name="child_model">newLayoutStore</property> </object> - <object class="GtkImage" id="removeImage"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="icon_name">list-remove-symbolic</property> + <object class="GtkTreeModelSort" id="newLayoutStoreSort"> + <property name="model">newLayoutStoreFilter</property> </object> <object class="GtkImage" id="previewImage"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="icon_name">input-keyboard-symbolic</property> </object> + <object class="GtkImage" id="removeImage"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="icon_name">list-remove-symbolic</property> + </object> <object class="GtkImage" id="upImage"> <property name="visible">True</property> <property name="can_focus">False</property> |