[accerciser/gtkbuilder] Moved the relations model to GtkBuilder



commit 72e946396fa55b3c659f9aaf60c5389b57904cb6
Author: Eitan Isaacson <eitan ascender com>
Date:   Thu May 7 18:25:13 2009 +0300

    Moved the relations model to GtkBuilder
---
 plugins/interface_view.py |   28 +++++++++++++---------------
 plugins/interface_view.ui |   28 ++++++++++++++++++++++++++++
 2 files changed, 41 insertions(+), 15 deletions(-)

diff --git a/plugins/interface_view.py b/plugins/interface_view.py
index 3052247..ccf8a96 100644
--- a/plugins/interface_view.py
+++ b/plugins/interface_view.py
@@ -281,24 +281,20 @@ class _SectionAccessible(_InterfaceSection):
 
     # configure relations tree view
     self.relations_view = ui_xml.get_object('relations_view')
-    self.relations_model = gtk.TreeStore(gtk.gdk.Pixbuf, str, object)
-    self.relations_view.set_model(self.relations_model)
-    crt = gtk.CellRendererText()
-    crp = gtk.CellRendererPixbuf()
-    tvc = gtk.TreeViewColumn()
-    tvc.pack_start(crp, False)
-    tvc.pack_start(crt, True)
-    tvc.set_attributes(crp, pixbuf=0)
-    tvc.set_attributes(crt, text=1)
-    tvc.set_cell_data_func(crt, self._relationCellDataFunc)
-    tvc.set_cell_data_func(crp, self._relationCellDataFunc)
-    self.relations_view.append_column(tvc)
+    self.relations_model = ui_xml.get_object('relations_treestore')
+    tvc = ui_xml.get_object('treeviewcolumn2')
+    tvc.set_cell_data_func(
+      ui_xml.get_object('cellrendererpixbuf1'), self._relationCellDataFunc)
+    tvc.set_cell_data_func(
+      ui_xml.get_object('cellrenderertext2'), self._relationCellDataFunc)
     # preset the different bg colors
     style = gtk.Style ()
     self.header_bg = style.bg[gtk.STATE_NORMAL]
     self.relation_bg = style.base[gtk.STATE_NORMAL]
+
     selection = self.relations_view.get_selection()
     selection.set_select_function(self._relationSelectFunc)
+
     show_button = ui_xml.get_object('button_relation_show')
     show_button.set_sensitive(self._isSelectedInView(selection))
     selection.connect('changed', self._onViewSelectionChanged, show_button)
@@ -347,10 +343,10 @@ class _SectionAccessible(_InterfaceSection):
     for relation in relations:
       r_type_name = repr(relation.getRelationType()).replace('RELATION_', '')
       r_type_name = r_type_name.replace('_', ' ').lower().capitalize()
-      iter = self.relations_model.append(None, [None, r_type_name, None])
+      iter = self.relations_model.append(None, [None, r_type_name, -1])
       for i in range(relation.getNTargets()):
         acc = relation.getTarget(i)
-        self.relations_model.append(iter, [getIcon(acc), acc.name, acc])
+        self.relations_model.append(iter, [getIcon(acc), acc.name, i])
     self.relations_view.expand_all()
 
     self.registerEventListener(self._accEventState, 'object:state-changed')
@@ -417,7 +413,9 @@ class _SectionAccessible(_InterfaceSection):
     selection = relations_view.get_selection()
     model, iter = selection.get_selected()
     if iter:
-      acc = model[iter][2]
+      path = model.get_path(iter)
+      relations = self.node.acc.getRelationSet()
+      acc = relations[path[0]].getTarget(model[iter][2])
       if acc:
         self.node.update(acc)
   
diff --git a/plugins/interface_view.ui b/plugins/interface_view.ui
index 70a1f43..fbd69e7 100644
--- a/plugins/interface_view.ui
+++ b/plugins/interface_view.ui
@@ -8,6 +8,16 @@
       <column type="gchararray"/>
     </columns>
   </object>
+  <object class="GtkTreeStore" id="relations_treestore">
+    <columns>
+      <!-- column-name role_icon -->
+      <column type="GdkPixbuf"/>
+      <!-- column-name name -->
+      <column type="gchararray"/>
+      <!-- column-name index -->
+      <column type="gint"/>
+    </columns>
+  </object>
   <object class="GtkFrame" id="iface_view_frame">
     <property name="visible">True</property>
     <property name="label_xalign">0</property>
@@ -190,9 +200,27 @@
                                               <object class="GtkTreeView" id="relations_view">
                                                 <property name="visible">True</property>
                                                 <property name="can_focus">True</property>
+                                                <property name="model">relations_treestore</property>
                                                 <property name="headers_visible">False</property>
                                                 <property name="show_expanders">False</property>
                                                 <signal name="row_activated" handler="_onRelationShow"/>
+                                                <child>
+                                                  <object class="GtkTreeViewColumn" id="treeviewcolumn2">
+                                                    <property name="title">column</property>
+                                                    <child>
+                                                      <object class="GtkCellRendererPixbuf" id="cellrendererpixbuf1"/>
+                                                      <attributes>
+                                                        <attribute name="pixbuf">0</attribute>
+                                                      </attributes>
+                                                    </child>
+                                                    <child>
+                                                      <object class="GtkCellRendererText" id="cellrenderertext2"/>
+                                                      <attributes>
+                                                        <attribute name="text">1</attribute>
+                                                      </attributes>
+                                                    </child>
+                                                  </object>
+                                                </child>
                                               </object>
                                             </child>
                                           </object>



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