aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Tismer <tismer@stackless.com>2019-06-29 12:02:37 +0200
committerCristian Maureira-Fredes <cristian.maureira-fredes@qt.io>2019-07-01 14:28:09 +0000
commitbd27bac457943aab1082ac1c5b3f81ef9574c671 (patch)
tree009768ec8a57ada13da7764e02231818a34a2a05
parenta2405a27e738e7a7bb379ed0ada07b317650ca09 (diff)
Fix classes from modules imports in pyside2-uic V2
This version replaces the pyside2_modules variable by PySide2.__all__ . The complication was that pyside2uic uses strict layering, and so it was a bit fiddly to get at PySide2. This project will be modernized, soon. Fixes: PYSIDE-1020 Change-Id: Ia58fe4986919525a70ea7cc453c64cdf46e7fba1 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
-rw-r--r--pyside2uic/Compiler/compiler.py4
-rw-r--r--pyside2uic/Compiler/qobjectcreator.py24
-rw-r--r--pyside2uic/__init__.py.in3
3 files changed, 12 insertions, 19 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 0e35e47..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):
@@ -89,17 +91,6 @@ class _CustomWidgetLoader(object):
def __init__(self):
self._widgets = {}
self._usedWidgets = set()
- self.pyside2_modules = ("Qt3DAnimation", "Qt3DCore", "Qt3DExtras", "Qt3DInput",
- "Qt3DLogic", "Qt3DRender", "QtAxContainer", "QtCharts", "QtConcurrent",
- "QtCore", "QtDataVisualization", "QtGui", "QtHelp", "QtLocation",
- "QtMacExtras", "QtMultimedia", "QtMultimediaWidgets", "QtNetwork",
- "QtOpenGL", "QtOpenGLFunctions", "QtPositioning", "QtPrintSupport",
- "QtQml", "QtQuick", "QtQuickWidgets", "QtRemoteObjects", "QtScript",
- "QtScriptTools", "QtScxml", "QtSensors", "QtSql", "QtSvg", "QtTest",
- "QtTextToSpeech", "QtUiTools", "QtWebChannel", "QtWebEngine",
- "QtWebEngineCore", "QtWebEngineWidgets", "QtWebKit", "QtWebKitWidgets",
- "QtWebSockets", "QtWidgets", "QtWinExtras", "QtX11Extras", "QtXml",
- "QtXmlPatterns")
def addCustomWidget(self, widgetClass, baseClass, module):
@@ -140,16 +131,17 @@ class _CustomWidgetLoader(object):
imports.setdefault(module, []).append(widget)
for module, classes in imports.items():
- split = module.split(".")
- if (len(split) == 2 and not split[0].startswith("PySide2")
- and split[0] in self.pyside2_modules):
- module = "PySide2.{}".format(split[0])
+ 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)