diff options
author | Christian Stenger <christian.stenger@qt.io> | 2020-05-19 16:44:15 +0200 |
---|---|---|
committer | Christian Stenger <christian.stenger@qt.io> | 2020-07-02 06:58:51 +0000 |
commit | 5b4b09481af83ac82802ed48b24f58db0aa37ff4 (patch) | |
tree | 3d7d0893a3e97041bae757f5d1c2a2b0d6362f30 /share | |
parent | 4174d0c72c08ad05f45c76f717762c83d2fc1e87 (diff) |
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>
Diffstat (limited to 'share')
-rw-r--r-- | share/qtcreator/templates/wizards/classes/python/file.py | 34 | ||||
-rw-r--r-- | share/qtcreator/templates/wizards/classes/python/wizard.json | 24 |
2 files changed, 25 insertions, 33 deletions
diff --git a/share/qtcreator/templates/wizards/classes/python/file.py b/share/qtcreator/templates/wizards/classes/python/file.py index 5698022dd8..6b16b9d952 100644 --- a/share/qtcreator/templates/wizards/classes/python/file.py +++ b/share/qtcreator/templates/wizards/classes/python/file.py @@ -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 diff --git a/share/qtcreator/templates/wizards/classes/python/wizard.json b/share/qtcreator/templates/wizards/classes/python/wizard.json index aeebd1f2a3..d8a6734144 100644 --- a/share/qtcreator/templates/wizards/classes/python/wizard.json +++ b/share/qtcreator/templates/wizards/classes/python/wizard.json @@ -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'}" } }, { |