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)