1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
Description: Fixes a regression in pyuic's handling of custom widgets.
Regression between PyQt4 4.9.1 and 4.9.3 which caused widgets not to be found
and caused other packages to FTBFS. Patch author is the upstream developer
and the fix will be part of the next upstream release (4.9.5).
Author: Phil Thompson <phil@riverbankcomputing.com>
Bug-Debian: http://bugs.debian.org/680837
Origin: <upstream>
Forwarded: <not-needed>
Reviewed-By: Scott Kitterman <scott@kitterman.com>
Last-Update: <2012-07-15>
--- python-qt4-4.9.3.orig/pyuic/uic/objcreator.py
+++ python-qt4-4.9.3/pyuic/uic/objcreator.py
@@ -102,19 +102,26 @@ class QObjectCreator(object):
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])
-
- 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)
+ # Handle regular and custom widgets.
+ factory = self.findQObjectType(classname)
- raise NoSuchWidgetError(classname)
+ if factory is None:
+ # Handle scoped names, typically static factory methods.
+ parts = classname.split('.')
+
+ 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)
--- python-qt4-4.9.3.orig/pyuic/uic/Compiler/qobjectcreator.py
+++ python-qt4-4.9.3/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 @@ class _CustomWidgetLoader(object):
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 @@ class _CustomWidgetLoader(object):
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:
|