[d-feet/pygi] Sort bus objects



commit 08c3e42fc9aba099334e2fa67f69fc1171fd4f6a
Author: Thomas Bechtold <thomasbechtold jpberlin de>
Date:   Fri Oct 12 12:24:14 2012 +0200

    Sort bus objects

 dfeet/introspection.py |   18 ++++++++++++++++++
 ui/introspection.ui    |    8 ++++++--
 2 files changed, 24 insertions(+), 2 deletions(-)
---
diff --git a/dfeet/introspection.py b/dfeet/introspection.py
index 693c07a..b2c5096 100644
--- a/dfeet/introspection.py
+++ b/dfeet/introspection.py
@@ -38,6 +38,9 @@ class AddressInfo():
         self.__spinner = ui.get_widget('spinner') #the spinner is used to show progress during the introspection
         self.__scrolledwindow = ui.get_widget('scrolledwindow') #the scrolledwindow contains the treeview
         self.__treemodel = ui.get_widget('treestore')
+        self.__treemodelsort = ui.get_widget("treemodelsort")
+        self.__treemodelsort.set_sort_func(0, self.__sort_model)
+        self.__treemodelsort.set_sort_column_id(0, Gtk.SortType.ASCENDING)
         self.__treeview = ui.get_widget('treeview')
         self.__label_name = ui.get_widget('label_name')
         self.__label_unique_name = ui.get_widget('label_unique_name')
@@ -117,6 +120,21 @@ class AddressInfo():
             else:
                 treeview.expand_row(path, False)
 
+    def __sort_model(self, model, iter1, iter2, user_data):
+        """objects with small path depth first"""
+        un1 = model.get_value(iter1, 0)
+        un2 = model.get_value(iter2, 0)
+
+        un1_depth = len(un1.split("/"))
+        un2_depth = len(un2.split("/"))
+
+        if un1_depth > un2_depth:
+            return 1
+        elif un1_depth < un2_depth:
+            return -1
+        else:
+            return un1 > un2
+
 
     def introspect_start(self):
         """introspect the given bus name and update the tree model"""
diff --git a/ui/introspection.ui b/ui/introspection.ui
index 450e04c..dbb15ed 100644
--- a/ui/introspection.ui
+++ b/ui/introspection.ui
@@ -152,7 +152,7 @@
           <object class="GtkTreeView" id="treeview">
             <property name="visible">True</property>
             <property name="can_focus">True</property>
-            <property name="model">treestore</property>
+            <property name="model">treemodelsort</property>
             <property name="search_column">0</property>
             <property name="enable_tree_lines">True</property>
             <property name="tooltip_column">0</property>
@@ -163,7 +163,8 @@
             </child>
             <child>
               <object class="GtkTreeViewColumn" id="treeviewcolumn_name">
-                <property name="title" translatable="yes">Name</property>
+                <property name="title" translatable="yes">Object path</property>
+                <property name="sort_indicator">True</property>
                 <property name="sort_column_id">0</property>
                 <child>
                   <object class="GtkCellRendererText" id="cellrenderertext_name"/>
@@ -218,4 +219,7 @@
       <column type="GObject"/>
     </columns>
   </object>
+  <object class="GtkTreeModelSort" id="treemodelsort">
+    <property name="model">treestore</property>
+  </object>
 </interface>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]