[pygobject] Override TreeModel.get() to return a tuple



commit e1db544e46aeed984133896af34b671a6a5547df
Author: Paolo Borelli <pborelli gnome org>
Date:   Sun Nov 21 23:03:25 2010 +0100

    Override TreeModel.get() to return a tuple
    
    https://bugzilla.gnome.org/show_bug.cgi?id=635466

 gi/overrides/Gtk.py     |   15 +++++++++++++++
 tests/test_overrides.py |    6 ++++++
 2 files changed, 21 insertions(+), 0 deletions(-)
---
diff --git a/gi/overrides/Gtk.py b/gi/overrides/Gtk.py
index ce353b3..f09709c 100644
--- a/gi/overrides/Gtk.py
+++ b/gi/overrides/Gtk.py
@@ -654,6 +654,21 @@ class TreeModel(Gtk.TreeModel):
             if row[i] is not None:
                 self.set_value(treeiter, i, row[i])
 
+    def get(self, treeiter, *columns):
+        n_columns = self.get_n_columns();
+
+        values = []
+        for col in columns:
+            if not isinstance(col, int):
+                raise TypeError("column numbers must be ints")
+
+            if col < 0 or col >= n_columns:
+                raise ValueError("column number is out of range")
+
+            values.append(self.get_value(treeiter, col))
+
+        return tuple(values)
+
 TreeModel = override(TreeModel)
 __all__.append('TreeModel')
 
diff --git a/tests/test_overrides.py b/tests/test_overrides.py
index 915155f..6daa24f 100644
--- a/tests/test_overrides.py
+++ b/tests/test_overrides.py
@@ -564,6 +564,12 @@ class TestGtk(unittest.TestCase):
         for childrow in last_row.iterchildren():
             self.fail("Should not be reached")
 
+        aiter = tree_store.get_iter(10)
+        self.assertRaises(TypeError, tree_store.get, aiter, 1, 'a')
+        self.assertRaises(ValueError, tree_store.get, aiter, 1, -1)
+        self.assertRaises(ValueError, tree_store.get, aiter, 1, 100)
+        self.assertEqual(tree_store.get(aiter, 0, 1), (10, 'this is row #10'))
+
     def test_tree_view_column(self):
         cell = Gtk.CellRendererText()
         column = Gtk.TreeViewColumn(title='This is just a test',



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