Thu, 30 Dec 2021 11:20:01 +0100
Updated copyright for 2022.
# -*- coding: utf-8 -*- # Copyright (c) 2020 - 2022 Detlev Offenbach <detlev@die-offenbachs.de> # """ Module implementing a dialog to configure project specific flask settings. """ from PyQt6.QtCore import pyqtSlot from PyQt6.QtWidgets import QDialog from EricWidgets.EricApplication import ericApp from .Ui_FlaskConfigDialog import Ui_FlaskConfigDialog import UI.PixmapCache import Preferences class FlaskConfigDialog(QDialog, Ui_FlaskConfigDialog): """ Class implementing a dialog to configure project specific flask settings. """ def __init__(self, configuration, project, parent=None): """ Constructor @param configuration current project specific configuration @type dict @param project reference to the flask project object @type Project @param parent reference to the parent widget @type QWidget """ super().__init__(parent) self.setupUi(self) self.newEnvironmentButton.setIcon( UI.PixmapCache.getIcon("virtualenvConfig")) self.__project = project self.__virtualEnvManager = ericApp().getObject("VirtualEnvManager") self.virtualEnvironmentComboBox.addItem("") self.virtualEnvironmentComboBox.addItems( sorted(self.__virtualEnvManager.getVirtualenvNames( noRemote=True, noConda=True )) ) if "virtual_environment_name" in configuration: self.virtualEnvironmentComboBox.setCurrentText( configuration["virtual_environment_name"]) self.flaskBabelBox.setChecked( configuration.get("flask_babel_override", False)) self.flaskBabelCheckBox.setChecked( configuration.get("flask_babel_available", False)) self.flaskMigrateBox.setChecked( configuration.get("flask_migrate_override", False)) self.flaskMigrateCheckBox.setChecked( configuration.get("flask_migrate_available", False)) msh = self.minimumSizeHint() self.resize(max(self.width(), msh.width()), msh.height()) def getConfiguration(self): """ Public method to get the entered configuration data. @return project specific configuration @rtype dict """ configuration = { "virtual_environment_name": self.virtualEnvironmentComboBox.currentText(), "flask_babel_override": self.flaskBabelBox.isChecked(), "flask_babel_available": self.flaskBabelCheckBox.isChecked(), "flask_migrate_override": self.flaskMigrateBox.isChecked(), "flask_migrate_available": self.flaskMigrateCheckBox.isChecked(), } return configuration @pyqtSlot() def on_newEnvironmentButton_clicked(self): """ Private slot to open a dialog for adding a new virtual environment. """ from .FlaskVirtualenvConfigurationDialog import ( FlaskVirtualenvConfigurationDialog ) ericProject = ericApp().getObject("Project") dlg = FlaskVirtualenvConfigurationDialog( ericProject.getProjectPath(), ericProject.getProjectName(), self) if dlg.exec() == QDialog.DialogCode.Accepted: resultDict = dlg.getData() # now do the call from VirtualEnv.VirtualenvExecDialog import VirtualenvExecDialog dia = VirtualenvExecDialog( resultDict, self.__virtualEnvManager, self) dia.show() dia.start(resultDict["arguments"]) dia.exec() self.virtualEnvironmentComboBox.clear() self.virtualEnvironmentComboBox.addItem("") self.virtualEnvironmentComboBox.addItems( sorted(self.__virtualEnvManager.getVirtualenvNames( noRemote=True, noConda=True )) ) self.virtualEnvironmentComboBox.setCurrentText( resultDict["logicalName"]) self.__installFlask(resultDict["targetDirectory"]) def __installFlask(self, venvDir): """ Private method to install flask into the newly created environment. @param venvDir directory containing the virtual environment @type str """ from PipInterface.PipDialog import PipDialog interpreter = self.__project.getFullCommand("python", venvDir) if Preferences.getPip("PipSearchIndex"): indexUrl = Preferences.getPip("PipSearchIndex") + "/simple" args = ["-m", "pip", "install", "--index-url", indexUrl] else: args = ["-m", "pip", "install"] args.append("flask") dia = PipDialog(self.tr('Install Flask'), self) res = dia.startProcess(interpreter, args) if res: dia.exec()