summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python/PyQt4/files/PyQt4-4.9.4-pyuic-custom-widgets.patch')
-rw-r--r--dev-python/PyQt4/files/PyQt4-4.9.4-pyuic-custom-widgets.patch93
1 files changed, 93 insertions, 0 deletions
diff --git a/dev-python/PyQt4/files/PyQt4-4.9.4-pyuic-custom-widgets.patch b/dev-python/PyQt4/files/PyQt4-4.9.4-pyuic-custom-widgets.patch
new file mode 100644
index 000000000000..20ebeb93e842
--- /dev/null
+++ b/dev-python/PyQt4/files/PyQt4-4.9.4-pyuic-custom-widgets.patch
@@ -0,0 +1,93 @@
+
+
+# HG changeset patch
+# User Phil Thompson <phil@riverbankcomputing.com>
+# Date 2012-07-13 13:39:28 +0100
+# Node ID 29b668ada14c1428a3bbfe8f0324c6626bd5ac9a
+# Parent fd0f3da9d79ca9858d10a20c15fb85456cb832d7
+Fixed a regression in pyuic's handling of custom widgets.
+
+diff --git a/pyuic/uic/Compiler/qobjectcreator.py b/pyuic/uic/Compiler/qobjectcreator.py
+--- a/pyuic/uic/Compiler/qobjectcreator.py
++++ b/pyuic/uic/Compiler/qobjectcreator.py
+@@ -1,6 +1,6 @@
+ #############################################################################
+ ##
+-## Copyright (C) 2011 Riverbank Computing Limited.
++## Copyright (C) 2012 Riverbank Computing Limited.
+ ## Copyright (C) 2006 Thorsten Marek.
+ ## All right reserved.
+ ##
+@@ -100,7 +100,6 @@
+ assert widgetClass not in self._widgets
+ self._widgets[widgetClass] = (baseClass, module)
+
+-
+ def _resolveBaseclass(self, baseClass):
+ try:
+ for x in range(0, 10):
+@@ -114,19 +113,17 @@
+ except KeyError:
+ raise ValueError("unknown baseclass %s" % baseClass)
+
+-
+ def search(self, cls):
+ try:
+- self._usedWidgets.add(cls)
+ baseClass = self._resolveBaseclass(self._widgets[cls][0])
+ DEBUG("resolved baseclass of %s: %s" % (cls, baseClass))
+-
+- return type(cls, (baseClass,),
+- {"module" : ""})
+-
+ except KeyError:
+ return None
+
++ self._usedWidgets.add(cls)
++
++ return type(cls, (baseClass, ), {"module" : ""})
++
+ def _writeImportCode(self):
+ imports = {}
+ for widget in self._usedWidgets:
+diff --git a/pyuic/uic/objcreator.py b/pyuic/uic/objcreator.py
+--- a/pyuic/uic/objcreator.py
++++ b/pyuic/uic/objcreator.py
+@@ -102,19 +102,26 @@
+ self._modules.append(self._customWidgets)
+
+ def createQObject(self, classname, *args, **kwargs):
+- # Handle scoped names, typically static factory methods.
+- parts = classname.split('.')
+- factory = self.findQObjectType(parts[0])
++ # Handle regular and custom widgets.
++ factory = self.findQObjectType(classname)
+
+- if factory is not None:
+- for part in parts[1:]:
+- factory = getattr(factory, part, None)
+- if factory is None:
+- break
+- else:
+- return self._cpolicy.instantiate(factory, *args, **kwargs)
++ if factory is None:
++ # Handle scoped names, typically static factory methods.
++ parts = classname.split('.')
+
+- raise NoSuchWidgetError(classname)
++ if len(parts) > 1:
++ factory = self.findQObjectType(parts[0])
++
++ if factory is not None:
++ for part in parts[1:]:
++ factory = getattr(factory, part, None)
++ if factory is None:
++ break
++
++ if factory is None:
++ raise NoSuchWidgetError(classname)
++
++ return self._cpolicy.instantiate(factory, *args, **kwargs)
+
+ def invoke(self, rname, method, args=()):
+ return self._cpolicy.invoke(rname, method, args)