diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2019-07-02 08:45:58 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2019-07-02 08:45:58 +0200 |
commit | 1d4add1920c9c1b08ebb20333c15d6f5ed6b9ab5 (patch) | |
tree | cfd76dcc41d4f1634ab02d6213804395d89acfb2 | |
parent | 329b566e931d3f1b0a8dd319d244432cc740ae9e (diff) | |
parent | bd27bac457943aab1082ac1c5b3f81ef9574c671 (diff) |
Merge remote-tracking branch 'origin/5.12' into 5.13
Change-Id: I2f987bfdb8f8dd2f0672793eab71a915b1c9fa07
-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) |