From d143f2bad66751402659db455601b747d537c6e8 Mon Sep 17 00:00:00 2001 From: Tyler Conrad Date: Mon, 10 Dec 2012 13:55:11 -0600 Subject: [PATCH] Modified to allow transparent widget proxies. --- .project | 17 +++++++++++++ .pydevproject | 8 ++++++ doc/sources/.static/kivy-logo-black-64.png | Bin kivy/core/window/__init__.py | 0 kivy/data/logo/kivy-icon-128.png | Bin kivy/data/logo/kivy-icon-16.png | Bin kivy/data/logo/kivy-icon-24.png | Bin kivy/data/logo/kivy-icon-256.png | Bin kivy/data/logo/kivy-icon-32.png | Bin kivy/data/logo/kivy-icon-512.png | Bin kivy/data/logo/kivy-icon-64.png | Bin kivy/tools/packaging/osx/kivy.sh | 0 kivy/tools/pep8checker/pre-commit.githook | 0 .../defaulttheme/audio-volume-high.png | Bin .../theming/defaulttheme/audio-volume-low.png | Bin .../defaulttheme/audio-volume-medium.png | Bin .../defaulttheme/audio-volume-muted.png | Bin .../defaulttheme/media-playback-pause.png | Bin .../defaulttheme/media-playback-start.png | Bin .../defaulttheme/media-playback-stop.png | Bin kivy/uix/widget.py | 24 +++++++++++++++++- 21 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 .project create mode 100644 .pydevproject mode change 100755 => 100644 doc/sources/.static/kivy-logo-black-64.png mode change 100755 => 100644 kivy/core/window/__init__.py mode change 100755 => 100644 kivy/data/logo/kivy-icon-128.png mode change 100755 => 100644 kivy/data/logo/kivy-icon-16.png mode change 100755 => 100644 kivy/data/logo/kivy-icon-24.png mode change 100755 => 100644 kivy/data/logo/kivy-icon-256.png mode change 100755 => 100644 kivy/data/logo/kivy-icon-32.png mode change 100755 => 100644 kivy/data/logo/kivy-icon-512.png mode change 100755 => 100644 kivy/data/logo/kivy-icon-64.png mode change 100755 => 100644 kivy/tools/packaging/osx/kivy.sh mode change 100755 => 100644 kivy/tools/pep8checker/pre-commit.githook mode change 100755 => 100644 kivy/tools/theming/defaulttheme/audio-volume-high.png mode change 100755 => 100644 kivy/tools/theming/defaulttheme/audio-volume-low.png mode change 100755 => 100644 kivy/tools/theming/defaulttheme/audio-volume-medium.png mode change 100755 => 100644 kivy/tools/theming/defaulttheme/audio-volume-muted.png mode change 100755 => 100644 kivy/tools/theming/defaulttheme/media-playback-pause.png mode change 100755 => 100644 kivy/tools/theming/defaulttheme/media-playback-start.png mode change 100755 => 100644 kivy/tools/theming/defaulttheme/media-playback-stop.png diff --git a/.project b/.project new file mode 100644 index 000000000..25b5cbb5e --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + kivymod + + + + + + org.python.pydev.PyDevBuilder + + + + + + org.python.pydev.pythonNature + + diff --git a/.pydevproject b/.pydevproject new file mode 100644 index 000000000..a70cb8095 --- /dev/null +++ b/.pydevproject @@ -0,0 +1,8 @@ + + + +/kivymod + +python 2.7 +Default + diff --git a/doc/sources/.static/kivy-logo-black-64.png b/doc/sources/.static/kivy-logo-black-64.png old mode 100755 new mode 100644 diff --git a/kivy/core/window/__init__.py b/kivy/core/window/__init__.py old mode 100755 new mode 100644 diff --git a/kivy/data/logo/kivy-icon-128.png b/kivy/data/logo/kivy-icon-128.png old mode 100755 new mode 100644 diff --git a/kivy/data/logo/kivy-icon-16.png b/kivy/data/logo/kivy-icon-16.png old mode 100755 new mode 100644 diff --git a/kivy/data/logo/kivy-icon-24.png b/kivy/data/logo/kivy-icon-24.png old mode 100755 new mode 100644 diff --git a/kivy/data/logo/kivy-icon-256.png b/kivy/data/logo/kivy-icon-256.png old mode 100755 new mode 100644 diff --git a/kivy/data/logo/kivy-icon-32.png b/kivy/data/logo/kivy-icon-32.png old mode 100755 new mode 100644 diff --git a/kivy/data/logo/kivy-icon-512.png b/kivy/data/logo/kivy-icon-512.png old mode 100755 new mode 100644 diff --git a/kivy/data/logo/kivy-icon-64.png b/kivy/data/logo/kivy-icon-64.png old mode 100755 new mode 100644 diff --git a/kivy/tools/packaging/osx/kivy.sh b/kivy/tools/packaging/osx/kivy.sh old mode 100755 new mode 100644 diff --git a/kivy/tools/pep8checker/pre-commit.githook b/kivy/tools/pep8checker/pre-commit.githook old mode 100755 new mode 100644 diff --git a/kivy/tools/theming/defaulttheme/audio-volume-high.png b/kivy/tools/theming/defaulttheme/audio-volume-high.png old mode 100755 new mode 100644 diff --git a/kivy/tools/theming/defaulttheme/audio-volume-low.png b/kivy/tools/theming/defaulttheme/audio-volume-low.png old mode 100755 new mode 100644 diff --git a/kivy/tools/theming/defaulttheme/audio-volume-medium.png b/kivy/tools/theming/defaulttheme/audio-volume-medium.png old mode 100755 new mode 100644 diff --git a/kivy/tools/theming/defaulttheme/audio-volume-muted.png b/kivy/tools/theming/defaulttheme/audio-volume-muted.png old mode 100755 new mode 100644 diff --git a/kivy/tools/theming/defaulttheme/media-playback-pause.png b/kivy/tools/theming/defaulttheme/media-playback-pause.png old mode 100755 new mode 100644 diff --git a/kivy/tools/theming/defaulttheme/media-playback-start.png b/kivy/tools/theming/defaulttheme/media-playback-start.png old mode 100755 new mode 100644 diff --git a/kivy/tools/theming/defaulttheme/media-playback-stop.png b/kivy/tools/theming/defaulttheme/media-playback-stop.png old mode 100755 new mode 100644 diff --git a/kivy/uix/widget.py b/kivy/uix/widget.py index 7e2628e53..796185cfa 100644 --- a/kivy/uix/widget.py +++ b/kivy/uix/widget.py @@ -88,6 +88,23 @@ from kivy.base import EventLoop from kivy.lang import Builder +class IClass(object): + '''Used to register 'widget equivalent' types. Emulates + isinstance(widget, Widget) with isinstance(widget, WidgetLike). This provides + the ability to use transparent widget proxies.''' + def __init__(self): + self.implementors = set() + def register(self,C): + self.implementors.add(C) + def __instancecheck__(self,x): + return self.__subclasscheck__(type(x)) + def __subclasscheck__(self,sub): + return any(c in self.implementors for c in sub.mro()) + +#Instantiate the IClass registry so we can compare to WidgetLike +WidgetLike = IClass() + + class WidgetException(Exception): '''Fired when the widget gets an exception. ''' @@ -263,7 +280,10 @@ class Widget(EventDispatcher): ''' if widget is self: raise WidgetException('You cannot add yourself in a Widget') - if not isinstance(widget, Widget): + #Use WidgetLike for isinstance comparisons + global WidgetLike +# if not isinstance(widget, Widget): + if not isinstance(widget, WidgetLike): raise WidgetException( 'add_widget() can be used only with Widget classes.') parent = widget.parent @@ -605,3 +625,5 @@ class Widget(EventDispatcher): See :class:`~kivy.graphics.Canvas` for more information about the usage. ''' +# Register Widget as a 'widget equivalent' type +WidgetLike.register(Widget)