diff -r 428c2bec2e8f -r caddf9f36f9f ProjectFlask/FlaskConfigDialog.py --- a/ProjectFlask/FlaskConfigDialog.py Wed Dec 02 20:04:05 2020 +0100 +++ b/ProjectFlask/FlaskConfigDialog.py Sat Dec 05 17:18:17 2020 +0100 @@ -15,18 +15,21 @@ 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, parent=None): + 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 """ @@ -36,6 +39,8 @@ self.newEnvironmentButton.setIcon( UI.PixmapCache.getIcon("virtualenvConfig")) + self.__project = project + self.__virtualEnvManager = e5App().getObject("VirtualEnvManager") self.virtualEnvironmentComboBox.addItem("") @@ -87,31 +92,25 @@ """ Private slot to open a dialog for adding a new virtual environment. """ -## self.__virtualEnvManager.createVirtualEnv() - from VirtualEnv.VirtualenvConfigurationDialog import ( - VirtualenvConfigurationDialog + from .FlaskVirtualenvConfigurationDialog import ( + FlaskVirtualenvConfigurationDialog ) - dlg = VirtualenvConfigurationDialog(self) + e5Project = e5App().getObject("Project") + dlg = FlaskVirtualenvConfigurationDialog( + e5Project.getProjectPath(), + e5Project.getProjectName(), + self) if dlg.exec() == QDialog.Accepted: resultDict = dlg.getData() - if resultDict["envType"] == "conda": - # conda environments are not suitable - return - else: - # now do the call - from VirtualEnv.VirtualenvExecDialog import ( - VirtualenvExecDialog - ) - dia = VirtualenvExecDialog( - resultDict, self.__virtualEnvManager, self) - dia.show() - dia.start(resultDict["arguments"]) - dia.exec() - - # reload the list of environments - currentEnvName = self.virtualEnvironmentComboBox.currentText() + # 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("") @@ -121,4 +120,28 @@ )) ) - self.virtualEnvironmentComboBox.setCurrentText(currentEnvName) + self.virtualEnvironmentComboBox.setCurrentText( + resultDict["logicalName"]) + + self.__installFlask(resultDict["targetDirectory"]) + + def __installFlask(self, venvDir): + """ + Private method to install flask into the newly created environment. + + @param venvtDir 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()