Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 431070
Collapse All | Expand All

(-)a/pyuic/uic/Compiler/qobjectcreator.py (-8 / +5 lines)
Lines 1-6 Link Here
1
#############################################################################
1
#############################################################################
2
##
2
##
3
## Copyright (C) 2011 Riverbank Computing Limited.
3
## Copyright (C) 2012 Riverbank Computing Limited.
4
## Copyright (C) 2006 Thorsten Marek.
4
## Copyright (C) 2006 Thorsten Marek.
5
## All right reserved.
5
## All right reserved.
6
##
6
##
Lines 100-106 Link Here
100
        assert widgetClass not in self._widgets 
100
        assert widgetClass not in self._widgets 
101
        self._widgets[widgetClass] = (baseClass, module)
101
        self._widgets[widgetClass] = (baseClass, module)
102
102
103
104
    def _resolveBaseclass(self, baseClass):
103
    def _resolveBaseclass(self, baseClass):
105
        try:
104
        try:
106
            for x in range(0, 10):
105
            for x in range(0, 10):
Lines 114-132 Link Here
114
        except KeyError:
113
        except KeyError:
115
            raise ValueError("unknown baseclass %s" % baseClass)
114
            raise ValueError("unknown baseclass %s" % baseClass)
116
        
115
        
117
118
    def search(self, cls):
116
    def search(self, cls):
119
        try:
117
        try:
120
            self._usedWidgets.add(cls)
121
            baseClass = self._resolveBaseclass(self._widgets[cls][0])
118
            baseClass = self._resolveBaseclass(self._widgets[cls][0])
122
            DEBUG("resolved baseclass of %s: %s" % (cls, baseClass))
119
            DEBUG("resolved baseclass of %s: %s" % (cls, baseClass))
123
            
124
            return type(cls, (baseClass,),
125
                        {"module" : ""})
126
        
127
        except KeyError:
120
        except KeyError:
128
            return None
121
            return None
129
122
123
        self._usedWidgets.add(cls)
124
125
        return type(cls, (baseClass, ), {"module" : ""})
126
130
    def _writeImportCode(self):
127
    def _writeImportCode(self):
131
        imports = {}
128
        imports = {}
132
        for widget in self._usedWidgets:
129
        for widget in self._usedWidgets:
(-)a/pyuic/uic/objcreator.py (-11 / +18 lines)
Lines 102-120 Link Here
102
        self._modules.append(self._customWidgets)
102
        self._modules.append(self._customWidgets)
103
103
104
    def createQObject(self, classname, *args, **kwargs):
104
    def createQObject(self, classname, *args, **kwargs):
105
        # Handle scoped names, typically static factory methods.
105
        # Handle regular and custom widgets.
106
        parts = classname.split('.')
106
        factory = self.findQObjectType(classname)
107
        factory = self.findQObjectType(parts[0])
108
107
109
        if factory is not None:
108
        if factory is None:
110
            for part in parts[1:]:
109
            # Handle scoped names, typically static factory methods.
111
                factory = getattr(factory, part, None)
110
            parts = classname.split('.')
112
                if factory is None:
113
                    break
114
            else:
115
                return self._cpolicy.instantiate(factory, *args, **kwargs)
116
111
117
        raise NoSuchWidgetError(classname)
112
            if len(parts) > 1:
113
                factory = self.findQObjectType(parts[0])
114
115
                if factory is not None:
116
                    for part in parts[1:]:
117
                        factory = getattr(factory, part, None)
118
                        if factory is None:
119
                            break
120
121
            if factory is None:
122
                raise NoSuchWidgetError(classname)
123
124
        return self._cpolicy.instantiate(factory, *args, **kwargs)
118
125
119
    def invoke(self, rname, method, args=()):
126
    def invoke(self, rname, method, args=()):
120
        return self._cpolicy.invoke(rname, method, args)
127
        return self._cpolicy.invoke(rname, method, args)

Return to bug 431070