aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2019-07-02 08:45:58 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2019-07-02 08:45:58 +0200
commit1d4add1920c9c1b08ebb20333c15d6f5ed6b9ab5 (patch)
treecfd76dcc41d4f1634ab02d6213804395d89acfb2
parent329b566e931d3f1b0a8dd319d244432cc740ae9e (diff)
parentbd27bac457943aab1082ac1c5b3f81ef9574c671 (diff)
Merge remote-tracking branch 'origin/5.12' into 5.13
-rw-r--r--pyside2uic/Compiler/compiler.py4
-rw-r--r--pyside2uic/Compiler/qobjectcreator.py10
-rw-r--r--pyside2uic/__init__.py.in3
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)