Sun, 16 May 2021 20:07:24 +0200
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
# -*- coding: utf-8 -*- # Copyright (c) 2014 - 2021 Detlev Offenbach <detlev@die-offenbachs.de> # """ Module implementing the eric plug-in wizard dialog. """ from PyQt6.QtCore import pyqtSlot, QDate from PyQt6.QtWidgets import QDialog, QDialogButtonBox from E5Gui.E5Application import e5App from .Ui_PluginWizardDialog import Ui_PluginWizardDialog from .Templates import ( mainTemplate, configTemplate0, configTemplate1, configTemplate2, configTemplate3, onDemandTemplate, previewPixmapTemplate, moduleSetupTemplate, exeDisplayDataTemplate, exeDisplayDataInfoTemplate, exeDisplayDataListTemplate, apiFilesTemplate ) class PluginWizardDialog(QDialog, Ui_PluginWizardDialog): """ Class implementing the eric plug-in wizard dialog. """ def __init__(self, parent=None): """ Constructor @param parent reference to the parent widget (QWidget) """ super().__init__(parent) self.setupUi(self) self.dataTabWidget.setCurrentIndex(0) self.__okButton = self.buttonBox.button( QDialogButtonBox.StandardButton.Ok) self.__okButton.setEnabled(False) projectOpen = e5App().getObject("Project").isOpen() self.projectButton.setEnabled(projectOpen) self.nameEdit.textChanged.connect(self.__enableOkButton) self.versionEdit.textChanged.connect(self.__enableOkButton) self.authorEdit.textChanged.connect(self.__enableOkButton) self.authorEmailEdit.textChanged.connect(self.__enableOkButton) self.classNameEdit.textChanged.connect(self.__enableOkButton) self.packageNameEdit.textChanged.connect(self.__enableOkButton) self.shortDescriptionEdit.textChanged.connect(self.__enableOkButton) self.longDescriptionEdit.textChanged.connect(self.__enableOkButton) self.preferencesKeyEdit.textChanged.connect(self.__enableOkButton) self.configurationGroup.toggled.connect(self.__enableOkButton) self.autoActivateCheckBox.toggled.connect(self.__enableOkButton) self.pluginTypeCombo.currentIndexChanged.connect(self.__enableOkButton) self.pluginTypeNameEdit.textChanged.connect(self.__enableOkButton) self.pluginTypeCombo.addItems(["", "viewmanager", "version_control"]) def __enableOkButton(self): """ Private slot to set the state of the OK button. """ enable = ( bool(self.nameEdit.text()) and bool(self.versionEdit.text()) and bool(self.authorEdit.text()) and bool(self.authorEmailEdit.text()) and bool(self.classNameEdit.text()) and bool(self.packageNameEdit.text()) and bool(self.shortDescriptionEdit.text()) and bool(self.longDescriptionEdit.toPlainText()) ) if self.configurationGroup.isChecked(): enable = enable and bool(self.preferencesKeyEdit.text()) if not self.autoActivateCheckBox.isChecked(): enable = (enable and bool(self.pluginTypeCombo.currentText()) and bool(self.pluginTypeNameEdit.text()) ) self.__okButton.setEnabled(enable) @pyqtSlot() def on_projectButton_clicked(self): """ Private slot to populate some fields with data retrieved from the current project. """ project = e5App().getObject("Project") try: self.versionEdit.setText(project.getProjectVersion()) self.authorEdit.setText(project.getProjectAuthor()) self.authorEmailEdit.setText(project.getProjectAuthorEmail()) description = project.getProjectDescription() except AttributeError: self.versionEdit.setText(project.pdata["VERSION"][0]) self.authorEdit.setText(project.pdata["AUTHOR"][0]) self.authorEmailEdit.setText(project.pdata["EMAIL"][0]) description = project.pdata["DESCRIPTION"][0] # summary is max. 55 characters long summary = (description.split(".", 1)[0] .replace("\r", "").replace("\n", "") + ".")[:55] self.shortDescriptionEdit.setText(summary) self.longDescriptionEdit.setPlainText(description) # prevent overwriting of entries by disabling the button self.projectButton.setEnabled(False) def getCode(self): """ Public method to get the source code. @return generated code (string) """ templateData = { "year": QDate.currentDate().year(), "author": self.authorEdit.text(), "email": self.authorEmailEdit.text(), "name": self.nameEdit.text(), "autoactivate": self.autoActivateCheckBox.isChecked(), "deactivateable": self.deactivateableCheckBox.isChecked(), "version": self.versionEdit.text(), "className": self.classNameEdit.text(), "packageName": self.packageNameEdit.text(), "shortDescription": self.shortDescriptionEdit.text(), "longDescription": self.longDescriptionEdit.toPlainText(), "needsRestart": self.restartCheckBox.isChecked(), } if self.configurationGroup.isChecked(): templateData["config0"] = configTemplate0 templateData["config1"] = configTemplate1.format( className=self.classNameEdit.text()) templateData["config2"] = configTemplate2.format( preferencesKey=self.preferencesKeyEdit.text()) templateData["config3"] = configTemplate3 else: templateData["config0"] = "" templateData["config1"] = "" templateData["config2"] = "" templateData["config3"] = "" if self.autoActivateCheckBox.isChecked(): templateData["onDemand"] = "" else: templateData["onDemand"] = onDemandTemplate.format( pluginType=self.pluginTypeCombo.currentText(), pluginTypename=self.pluginTypeNameEdit.text() ) if self.pixmapCheckBox.isChecked(): templateData["preview"] = previewPixmapTemplate else: templateData["preview"] = "" if self.moduleSetupCheckBox.isChecked(): templateData["modulesetup"] = moduleSetupTemplate else: templateData["modulesetup"] = "" templateData["exeData"] = "" if self.exeGroup.isChecked(): if self.exeRadioButton.isChecked(): templateData["exeData"] = exeDisplayDataTemplate elif self.exeInfoRadioButton.isChecked(): templateData["exeData"] = exeDisplayDataInfoTemplate elif self.exeListRadioButton.isChecked(): templateData["exeData"] = exeDisplayDataListTemplate if self.apiFilesCheckBox.isChecked(): templateData["apiFiles"] = apiFilesTemplate else: templateData["apiFiles"] = "" return mainTemplate.format(**templateData) def packageName(self): """ Public method to retrieve the plug-in package name. @return plug-in package name (string) """ if self.createPackageCheckBox.isChecked(): return self.packageNameEdit.text() else: return "" @pyqtSlot(str) def on_pluginTypeCombo_currentTextChanged(self, txt): """ Private slot to react upon the selection of a plug-in type. @param txt selected plug-in type (string) """ self.pixmapCheckBox.setChecked(txt == "viewmanager")