diff options
author | Simon van der Linden <svdlinden@src.gnome.org> | 2010-01-22 13:41:21 +0100 |
---|---|---|
committer | Simon van der Linden <svdlinden@src.gnome.org> | 2010-01-22 13:41:21 +0100 |
commit | eaf7cb8ebb7e34f9493ac83b2f04af4dcf45f40f (patch) | |
tree | 92c184f82369ffc181701450fe4045ac0cef2ef3 /gi/overrides | |
parent | b11cf2595987c1f0fc4ffd834f07c98b92aa2355 (diff) | |
download | pygi-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.py | 42 | ||||
-rw-r--r-- | gi/overrides/Gtk.py | 16 |
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") |