Wizards: Improve python class wizard

Some minor fixes, simplifications and improvements.
In detail:
 * create valid Python code
 * allow creating a Python class also without a Qt package
 * hint about the need for a Qt package depending on the
   base class
 * remove QDeclarativeItem as base class as this is not
   present in recent Qt packages

Change-Id: I7198f315b3a9eec9a04f52d7438d05ccce40c3f7
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Christian Stenger
2020-05-19 16:44:15 +02:00
parent 4174d0c72c
commit 5b4b09481a
2 changed files with 25 additions and 33 deletions

View File

@@ -1,38 +1,24 @@
# This Python file uses the following encoding: utf-8
@if '%{Module}' === 'PySide2'
@if '%{ImportQtCore}'
from PySide2 import QtCore
@if '%{Module}' !== '<None>'
@if '%{ImportQtCore}' !== ''
from %{Module} import QtCore
@endif
@if '%{ImportQtWidgets}'
from PySide2 import QtWidgets
@if '%{ImportQtWidgets}' !== ''
from %{Module} import QtWidgets
@endif
@if '%{ImportQtQuick}'
from PySide2 import QtQuick
@endif
@else
@if '%{ImportQtCore}'
from PyQt5 import QtCore
@endif
@if '%{ImportQtWidgets}'
from PyQt5 import QtWidgets
@endif
@if '%{ImportQtQuick}'
from PyQt5 import QtQuick
@if '%{ImportQtQuick}' !== ''
from %{Module} import QtQuick
@endif
@endif
@if '%{Base}'
class %{Class}(%{Base}):
class %{Class}(%{FullBase}):
@else
class %{Class}:
@endif
def __init__(self):
@if '%{Base}' === 'QWidget'
QtWidgets.QWidget.__init__(self)
@elif '%{Base}' === 'QMainWindow'
QtWidgets.QMainWindow.__init__(self)
@elif '%{Base}' === 'QQuickItem'
QtQuick.QQuickItem.__init__(self)
@if %{JS: [ "QObject", "QWidget", "QMainWindow", "QQuickItem" ].indexOf("%Base")} >= 0
%{FullBase}.__init__(self)
@endif
pass

View File

@@ -12,7 +12,8 @@
"options":
[
{ "key": "Base", "value":"%{JS: value('BaseCB') === '' ? value('BaseEdit') : value('BaseCB')}" },
{ "key": "Imports", "value": "%{ImportQtCore}%{ImportQtWidgets}%{ImportQtDeclarative}"}
{ "key": "Package", "value": "%{JS: [ 'QWidget', 'QMainWindow' ].indexOf(value('Base')) >= 0 ? 'QtWidgets' : (value('Base') === 'QQuickItem' ? 'QtQuick' : (value('Base') === 'QObject' ? 'QtCore' : ''))}" },
{ "key": "FullBase", "value": "%{JS: value('Package') === '' ? value('Base') : value('Package') + '.' + value('Base')}" }
],
"pages":
@@ -32,11 +33,11 @@
},
{
"name": "Module",
"trDisplayName": "Python module:",
"trDisplayName": "Qt for Python module:",
"type": "ComboBox",
"data":
{
"items": ["PySide2", "PyQt5"]
"items": ["<None>", "PySide2", "PyQt5"]
}
},
{
@@ -46,8 +47,10 @@
"data":
{
"items": [ { "trKey": "<Custom>", "value": "" },
"QObject", "QWidget", "QMainWindow", "QDeclarativeItem", "QQuickItem" ]
}
"QObject", "QWidget", "QMainWindow", "QQuickItem" ]
},
"isComplete": "%{JS: (value('Module') === '<None>' && value('BaseCB') === '') || value('Module') !== '<None>'}",
"trIncompleteMessage": "You can choose Qt classes only if you select a Qt for Python module."
},
{
"name": "BaseEdit",
@@ -67,33 +70,36 @@
"name": "ImportQtCore",
"trDisplayName": "Import QtCore",
"type": "CheckBox",
"enabled": "%{JS: value('Module') !== '<None>'}",
"data":
{
"checkedValue": "QtCore",
"uncheckedValue": "",
"checked": "%{JS: value('Base') !== ''}"
"checked": "%{JS: value('BaseCB') !== ''}"
}
},
{
"name": "ImportQWidget",
"name": "ImportQtWidgets",
"trDisplayName": "Import QtWidgets",
"type": "CheckBox",
"enabled": "%{JS: value('Module') !== '<None>'}",
"data":
{
"checkedValue": "QtWidgets",
"uncheckedValue": "",
"checked": "%{JS: value('Base') === 'QWidget'}"
"checked": "%{JS: [ 'QWidget', 'QMainWindow' ].indexOf(value('BaseCB')) >= 0}"
}
},
{
"name": "ImportQtQuick",
"trDisplayName": "Import QtQuick",
"type": "CheckBox",
"enabled": "%{JS: value('Module') !== '<None>'}",
"data":
{
"checkedValue": "QtQuick",
"uncheckedValue": "",
"checked": "%{JS: value('Base') === 'QQuickItem'}"
"checked": "%{JS: value('BaseCB') === 'QQuickItem'}"
}
},
{