diff options
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.patch | 93 |
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) |