ProjectFlask/FlaskConfigDialog.py

Wed, 02 Dec 2020 19:54:44 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 02 Dec 2020 19:54:44 +0100
changeset 49
3866bd742041
parent 47
144b67fd111a
child 52
caddf9f36f9f
permissions
-rw-r--r--

Finished implementing project specific flask settings.

47
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de>
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a dialog to configure project specific flask settings.
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 from PyQt5.QtCore import pyqtSlot
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 from PyQt5.QtWidgets import QDialog
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 from E5Gui.E5Application import e5App
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 from .Ui_FlaskConfigDialog import Ui_FlaskConfigDialog
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
49
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
17 import UI.PixmapCache
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
18
47
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 class FlaskConfigDialog(QDialog, Ui_FlaskConfigDialog):
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 """
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 Class implementing a dialog to configure project specific flask settings.
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 """
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 def __init__(self, configuration, parent=None):
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 """
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 Constructor
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 @param configuration current project specific configuration
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 @type dict
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 @param parent reference to the parent widget
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 @type QWidget
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 """
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 super(FlaskConfigDialog, self).__init__(parent)
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 self.setupUi(self)
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35
49
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
36 self.newEnvironmentButton.setIcon(
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
37 UI.PixmapCache.getIcon("virtualenvConfig"))
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
38
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
39 self.__virtualEnvManager = e5App().getObject("VirtualEnvManager")
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
40
47
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 self.virtualEnvironmentComboBox.addItem("")
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 self.virtualEnvironmentComboBox.addItems(
49
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
43 sorted(self.__virtualEnvManager.getVirtualenvNames(
47
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 noRemote=True, noConda=True
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 ))
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 )
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47
49
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
48 if "virtual_environment_name" in configuration:
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
49 self.virtualEnvironmentComboBox.setCurrentText(
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
50 configuration["virtual_environment_name"])
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
51 self.flaskBabelBox.setChecked(
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
52 configuration.get("flask_babel_override", False))
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
53 self.flaskBabelCheckBox.setChecked(
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
54 configuration.get("flask_babel_available", False))
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
55 self.flaskMigrateBox.setChecked(
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
56 configuration.get("flask_migrate_override", False))
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
57 self.flaskMigrateCheckBox.setChecked(
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
58 configuration.get("flask_migrate_available", False))
47
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 msh = self.minimumSizeHint()
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 self.resize(max(self.width(), msh.width()), msh.height())
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 def getConfiguration(self):
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 """
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 Public method to get the entered configuration data.
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 @return project specific configuration
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 @rtype dict
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 """
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 configuration = {
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 "virtual_environment_name":
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 self.virtualEnvironmentComboBox.currentText(),
49
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
73 "flask_babel_override":
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
74 self.flaskBabelBox.isChecked(),
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
75 "flask_babel_available":
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
76 self.flaskBabelCheckBox.isChecked(),
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
77 "flask_migrate_override":
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
78 self.flaskMigrateBox.isChecked(),
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
79 "flask_migrate_available":
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
80 self.flaskMigrateCheckBox.isChecked(),
47
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 }
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 return configuration
49
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
84
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
85 @pyqtSlot()
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
86 def on_newEnvironmentButton_clicked(self):
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
87 """
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
88 Private slot to open a dialog for adding a new virtual environment.
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
89 """
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
90 ## self.__virtualEnvManager.createVirtualEnv()
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
91 from VirtualEnv.VirtualenvConfigurationDialog import (
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
92 VirtualenvConfigurationDialog
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
93 )
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
94
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
95 dlg = VirtualenvConfigurationDialog(self)
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
96 if dlg.exec() == QDialog.Accepted:
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
97 resultDict = dlg.getData()
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
98
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
99 if resultDict["envType"] == "conda":
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
100 # conda environments are not suitable
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
101 return
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
102 else:
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
103 # now do the call
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
104 from VirtualEnv.VirtualenvExecDialog import (
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
105 VirtualenvExecDialog
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
106 )
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
107 dia = VirtualenvExecDialog(
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
108 resultDict, self.__virtualEnvManager, self)
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
109 dia.show()
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
110 dia.start(resultDict["arguments"])
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
111 dia.exec()
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
112
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
113 # reload the list of environments
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
114 currentEnvName = self.virtualEnvironmentComboBox.currentText()
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
115
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
116 self.virtualEnvironmentComboBox.clear()
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
117 self.virtualEnvironmentComboBox.addItem("")
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
118 self.virtualEnvironmentComboBox.addItems(
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
119 sorted(self.__virtualEnvManager.getVirtualenvNames(
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
120 noRemote=True, noConda=True
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
121 ))
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
122 )
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
123
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
124 self.virtualEnvironmentComboBox.setCurrentText(currentEnvName)

eric ide

mercurial