summaryrefslogtreecommitdiffstats
path: root/gi/overrides
diff options
context:
space:
mode:
authorSimon van der Linden <svdlinden@src.gnome.org>2010-01-22 13:41:21 +0100
committerSimon van der Linden <svdlinden@src.gnome.org>2010-01-22 13:41:21 +0100
commiteaf7cb8ebb7e34f9493ac83b2f04af4dcf45f40f (patch)
tree92c184f82369ffc181701450fe4045ac0cef2ef3 /gi/overrides
parentb11cf2595987c1f0fc4ffd834f07c98b92aa2355 (diff)
downloadpygi-eaf7cb8ebb7e34f9493ac83b2f04af4dcf45f40f.tar.gz
pygi-eaf7cb8ebb7e34f9493ac83b2f04af4dcf45f40f.tar.xz
pygi-eaf7cb8ebb7e34f9493ac83b2f04af4dcf45f40f.zip
Restore the overrides support
Add a ModuleProxy in front of the DynamicModule when an overrides module is present. There is no need for an overrides module to be a class; it can just be a module. Add an override decorator to override the wrapper of a registered type. Adapt Gdk and Gtk accordingly. Add tests. https://bugzilla.gnome.org/show_bug.cgi?id=602830
Diffstat (limited to 'gi/overrides')
-rw-r--r--gi/overrides/Gdk.py42
-rw-r--r--gi/overrides/Gtk.py16
2 files changed, 34 insertions, 24 deletions
diff --git a/gi/overrides/Gdk.py b/gi/overrides/Gdk.py
index e3e2d29..2662046 100644
--- a/gi/overrides/Gdk.py
+++ b/gi/overrides/Gdk.py
@@ -1,21 +1,33 @@
-import sys
+from ..types import override
+from ..importer import modules
+
+Gdk = modules['Gdk']
+
+
+class Rectangle(Gdk.Rectangle):
-from ..module import DynamicModule
+ def __init__(self, x, y, width, height):
+ Gdk.Rectangle.__init__(self)
+ self.x = x
+ self.y = y
+ self.width = width
+ self.height = height
-class GdkModule(DynamicModule):
+ def __new__(cls, *args, **kwargs):
+ return Gdk.Rectangle.__new__(cls)
- def __init__(self):
- super(GdkModule, self).__init__()
+ def __repr__(self):
+ return '<Gdk.Rectangle(x=%d, y=%d, width=%d, height=%d)>' % (
+ self.x, self.y, self.width, self.height)
- initialized, argv = self.init_check(tuple(sys.argv))
- if not initialized:
- raise RuntimeError("Gdk couldn't be initialized")
+Rectangle = override(Rectangle)
- def rectangle_new(self, x, y, width, height):
- rectangle = self.Rectangle()
- rectangle.x = x
- rectangle.y = y
- rectangle.width = width
- rectangle.height = height
- return rectangle
+__all__ = [Rectangle]
+
+
+import sys
+
+initialized, argv = Gdk.init_check(sys.argv)
+if not initialized:
+ raise RuntimeError("Gdk couldn't be initialized")
diff --git a/gi/overrides/Gtk.py b/gi/overrides/Gtk.py
index b4e9596..0f5d46a 100644
--- a/gi/overrides/Gtk.py
+++ b/gi/overrides/Gtk.py
@@ -1,15 +1,13 @@
-import sys
+from ..importer import modules
-from ..module import DynamicModule
+Gtk = modules['Gtk']
-class GtkModule(DynamicModule):
- import keysyms
+__all__ = []
- def __init__(self):
- super(GtkModule, self).__init__()
- initialized, argv = self.init_check(tuple(sys.argv))
- if not initialized:
- raise RuntimeError("Gtk couldn't be initialized")
+import sys
+initialized, argv = Gtk.init_check(sys.argv)
+if not initialized:
+ raise RuntimeError("Gtk couldn't be initialized")