diff options
author | root <root@rshg054.dnsready.net> | 2012-07-19 00:01:52 +0000 |
---|---|---|
committer | root <root@rshg054.dnsready.net> | 2012-07-19 00:01:52 +0000 |
commit | 6b87f8519dc037f4fd4c19d8f36b7d7565559bd3 (patch) | |
tree | 4c1b86f91ce9c742867b6eecd4857b20919cd713 /extra/pyqt/fix-pyuic4.patch | |
parent | 63d179775e063452db6358e15b9847e7fc6c84b6 (diff) |
Thu Jul 19 00:01:52 UTC 2012
Diffstat (limited to 'extra/pyqt/fix-pyuic4.patch')
-rw-r--r-- | extra/pyqt/fix-pyuic4.patch | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/extra/pyqt/fix-pyuic4.patch b/extra/pyqt/fix-pyuic4.patch new file mode 100644 index 000000000..2173443d8 --- /dev/null +++ b/extra/pyqt/fix-pyuic4.patch @@ -0,0 +1,91 @@ +# HG changeset patch +# User Phil Thompson <phil at 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) |