[pygobject] Modify override for Gtk.Adjustment to allow position or keyword arguments in __init__().
- From: Laszlo Pandy <lpandy src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pygobject] Modify override for Gtk.Adjustment to allow position or keyword arguments in __init__().
- Date: Thu, 20 Jan 2011 10:39:24 +0000 (UTC)
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]