[pygobject] Modify override for Gtk.Adjustment to allow position or keyword arguments in __init__().



commit 21c09a7ee294b59abb3eca6f64f13bf5c8a2fa0e
Author: Laszlo Pandy <lpandy src gnome org>
Date:   Wed Jan 19 12:00:02 2011 +0100

    Modify override for Gtk.Adjustment to allow position or keyword arguments in __init__().
    
    Previously passing no arguments was not working, because the default value for each parameter was None, and GObject.__init__() refuses to allow None for integer properties. This patch does not pass None up to GObject.__init__. Instead it does not pass the parameter at all, and uses the class's default values.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=639934

 gi/overrides/Gtk.py     |   14 ++++++++++++--
 tests/test_overrides.py |   34 +++++++++++++++++++++++++++-------
 2 files changed, 39 insertions(+), 9 deletions(-)
---
diff --git a/gi/overrides/Gtk.py b/gi/overrides/Gtk.py
index 7242054..d0b0cff 100644
--- a/gi/overrides/Gtk.py
+++ b/gi/overrides/Gtk.py
@@ -1113,8 +1113,18 @@ Label = override(Label)
 __all__.append('Label')
 
 class Adjustment(Gtk.Adjustment):
-    def __init__(self, value=None, lower=None, upper=None, step_increment=None, page_increment=None, page_size=None, **kwds):
-        Gtk.Adjustment.__init__(self, value=value, lower=lower, upper=upper, step_increment=step_increment, page_increment=page_increment, page_size=page_size, **kwds)
+    def __init__(self, *args, **kwds):
+        arg_names = ('value', 'lower', 'upper',
+                        'step_increment', 'page_increment', 'page_size')
+        new_args = dict(zip(arg_names, args))
+        new_args.update(kwds)
+        Gtk.Adjustment.__init__(self, **new_args)
+
+        # The value property is set between lower and (upper - page_size).
+        # Just in case lower, upper or page_size was still 0 when value
+        # was set, we set it again here.
+        if 'value' in new_args:
+            self.set_value(new_args['value'])
 
 Adjustment = override(Adjustment)
 __all__.append('Adjustment')
diff --git a/tests/test_overrides.py b/tests/test_overrides.py
index d516bbf..8517055 100644
--- a/tests/test_overrides.py
+++ b/tests/test_overrides.py
@@ -956,14 +956,34 @@ class TestGtk(unittest.TestCase):
         label = Gtk.Label('Hello')
         self.assertEquals(label.get_text(), 'Hello')
 
+    def adjustment_check(self, adjustment, value=0.0, lower=0.0, upper=0.0,
+                         step_increment=0.0, page_increment=0.0, page_size=0.0):
+        self.assertEquals(adjustment.get_value(), value)
+        self.assertEquals(adjustment.get_lower(), lower)
+        self.assertEquals(adjustment.get_upper(), upper)
+        self.assertEquals(adjustment.get_step_increment(), step_increment)
+        self.assertEquals(adjustment.get_page_increment(), page_increment)
+        self.assertEquals(adjustment.get_page_size(), page_size)
+
     def test_adjustment(self):
-        adjustment = Gtk.Adjustment(1, 0, 3, 4, 5, 6)
-        self.assertEquals(adjustment.get_value(),1)
-        self.assertEquals(adjustment.get_lower(),0)
-        self.assertEquals(adjustment.get_upper(),3)
-        self.assertEquals(adjustment.get_step_increment(),4)
-        self.assertEquals(adjustment.get_page_increment(),5)
-        self.assertEquals(adjustment.get_page_size(),6)
+        adjustment =       Gtk.Adjustment(1, 0, 6, 4, 5, 3)
+        self.adjustment_check(adjustment, 1, 0, 6, 4, 5, 3)
+
+        adjustment =       Gtk.Adjustment(1, 0, 6, 4, 5)
+        self.adjustment_check(adjustment, 1, 0, 6, 4, 5)
+
+        adjustment =       Gtk.Adjustment(1, 0, 6, 4)
+        self.adjustment_check(adjustment, 1, 0, 6, 4)
+
+        adjustment =       Gtk.Adjustment(1, 0, 6)
+        self.adjustment_check(adjustment, 1, 0, 6)
+
+        adjustment = Gtk.Adjustment()
+        self.adjustment_check(adjustment)
+
+        adjustment = Gtk.Adjustment(value=1, lower=0, upper=6,
+                                    step_increment=4, page_increment=5, page_size=3)
+        self.adjustment_check(adjustment, 1, 0, 6, 4, 5, 3)
 
     def test_table(self):
         table = Gtk.Table()



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