diff options
-rw-r--r-- | pyside2uic/Compiler/compiler.py | 4 | ||||
-rw-r--r-- | pyside2uic/Compiler/qobjectcreator.py | 10 | ||||
-rw-r--r-- | pyside2uic/__init__.py.in | 3 |
3 files changed, 13 insertions, 4 deletions
diff --git a/pyside2uic/Compiler/compiler.py b/pyside2uic/Compiler/compiler.py index 2013170..df6bb88 100644 --- a/pyside2uic/Compiler/compiler.py +++ b/pyside2uic/Compiler/compiler.py @@ -32,9 +32,9 @@ from pyside2uic.Compiler.misc import write_import class UICompiler(UIParser): - def __init__(self): + def __init__(self, all_pyside2_modules): UIParser.__init__(self, qtproxies.QtCore, qtproxies.QtGui, qtproxies.QtWidgets, - CompilerCreatorPolicy()) + CompilerCreatorPolicy(all_pyside2_modules)) def reset(self): qtproxies.i18n_strings = [] diff --git a/pyside2uic/Compiler/qobjectcreator.py b/pyside2uic/Compiler/qobjectcreator.py index 296ac36..a8e2a31 100644 --- a/pyside2uic/Compiler/qobjectcreator.py +++ b/pyside2uic/Compiler/qobjectcreator.py @@ -36,6 +36,8 @@ from pyside2uic.Compiler.qtproxies import (QtWidgets, QtGui, Literal, logger = logging.getLogger(__name__) DEBUG = logger.debug +pyside2_modules = [] # will be updated by CompilerCreatorPolicy + class _QtGuiWrapper(object): def search(clsname): @@ -90,6 +92,7 @@ class _CustomWidgetLoader(object): self._widgets = {} self._usedWidgets = set() + def addCustomWidget(self, widgetClass, baseClass, module): assert widgetClass not in self._widgets self._widgets[widgetClass] = (baseClass, module) @@ -128,12 +131,17 @@ class _CustomWidgetLoader(object): imports.setdefault(module, []).append(widget) for module, classes in imports.items(): + parts = module.split(".") + if (len(parts) == 2 and not parts[0].startswith("PySide2") + and parts[0] in pyside2_modules): + module = "PySide2.{}".format(parts[0]) write_code("from %s import %s" % (module, ", ".join(classes))) class CompilerCreatorPolicy(object): - def __init__(self): + def __init__(self, all_pyside2_modules): self._modules = [] + pyside2_modules[:] = all_pyside2_modules def createQtGuiWrapper(self): return _QtGuiWrapper diff --git a/pyside2uic/__init__.py.in b/pyside2uic/__init__.py.in index 8d48844..b3f4f55 100644 --- a/pyside2uic/__init__.py.in +++ b/pyside2uic/__init__.py.in @@ -140,7 +140,8 @@ def compileUi(uifile, pyfile, execute=False, indent=4, from_imports=False): global PySideToolsVersion pyfile.write(_header % (uifname, uifname, ctime(), __version__, PySide2.__version__)) - winfo = compiler.UICompiler().compileUi(uifile, pyfile, from_imports) + ui_comp = compiler.UICompiler(PySide2.__all__) + winfo = ui_comp.compileUi(uifile, pyfile, from_imports) if execute: indenter.write_code(_display_code % winfo) |