ProjectFlask/Project.py

Thu, 30 Dec 2021 11:20:01 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 30 Dec 2021 11:20:01 +0100
branch
eric7
changeset 66
0d3168d0e310
parent 64
0ee58185b8df
child 70
22e1d0f69668
permissions
-rw-r--r--

Updated copyright for 2022.

2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
66
0d3168d0e310 Updated copyright for 2022.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 64
diff changeset
3 # Copyright (c) 2020 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the Flask project support.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import os
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
12 from PyQt6.QtCore import (
18
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
13 pyqtSlot, QObject, QProcess, QProcessEnvironment, QTimer, QFileInfo
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
14 )
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
15 from PyQt6.QtWidgets import QMenu, QDialog
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
17 from EricWidgets import EricMessageBox, EricFileDialog
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
18 from EricGui.EricAction import EricAction
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
19 from EricWidgets.EricApplication import ericApp
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 from Globals import isWindowsPlatform
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 import UI.PixmapCache
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 import Utilities
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
26 from .FlaskBabelExtension.PyBabelProjectExtension import PyBabelProject
29
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
27 from .FlaskMigrateExtension.MigrateProjectExtension import MigrateProject
15
3f5c05eb2d5f Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
28
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 class Project(QObject):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 Class implementing the Flask project support.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 def __init__(self, plugin, iconSuffix, parent=None):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 Constructor
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 @param plugin reference to the plugin object
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 @type ProjectFlaskPlugin
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 @param iconSuffix suffix for the icons
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 @type str
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 @param parent parent
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 @type QObject
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 """
61
fe1e8783a95f - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
45 super().__init__(parent)
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 self.__plugin = plugin
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 self.__iconSuffix = iconSuffix
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 self.__ui = parent
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
51 self.__ericProject = ericApp().getObject("Project")
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
52 self.__virtualEnvManager = ericApp().getObject("VirtualEnvManager")
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 self.__menus = {} # dictionary with references to menus
18
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
55 self.__formsBrowser = None
11
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
56 self.__hooksInstalled = False
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
58 self.__serverDialog = None
7
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
59 self.__routesDialog = None
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
60 self.__shellProcess = None
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
61
12
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
62 self.__projectData = {
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
63 "flask": {},
46
e700f73e1c6f Fine tuned some internal data structures.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
64 "flask-babel": {},
e700f73e1c6f Fine tuned some internal data structures.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
65 "flask-migrate": {},
12
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
66 }
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
67
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 self.__flaskVersions = {
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 "python": "",
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 "flask": "",
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 "werkzeug": "",
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 }
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
73
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
74 self.__capabilities = {}
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
75
27
b73e9af0d496 Added actions to check the availability of the flask-babel extension and to install it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
76 self.__pybabelProject = PyBabelProject(self.__plugin, self, self)
29
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
77 self.__migrateProject = MigrateProject(self.__plugin, self, self)
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 def initActions(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 Public method to define the Flask actions.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 self.actions = []
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
84
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
85 ##############################
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
86 ## run actions below ##
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
87 ##############################
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
88
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
89 self.runServerAct = EricAction(
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
90 self.tr('Run Server'),
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
91 self.tr('Run &Server'),
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
92 0, 0,
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
93 self, 'flask_run_server')
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
94 self.runServerAct.setStatusTip(self.tr(
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
95 'Starts the Flask Web server'))
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
96 self.runServerAct.setWhatsThis(self.tr(
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
97 """<b>Run Server</b>"""
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
98 """<p>Starts the Flask Web server.</p>"""
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
99 ))
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
100 self.runServerAct.triggered.connect(self.__runServer)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
101 self.actions.append(self.runServerAct)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
102
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
103 self.runDevServerAct = EricAction(
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
104 self.tr('Run Development Server'),
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
105 self.tr('Run &Development Server'),
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
106 0, 0,
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
107 self, 'flask_run_dev_server')
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
108 self.runDevServerAct.setStatusTip(self.tr(
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
109 'Starts the Flask Web server in development mode'))
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
110 self.runDevServerAct.setWhatsThis(self.tr(
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
111 """<b>Run Development Server</b>"""
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
112 """<p>Starts the Flask Web server in development mode.</p>"""
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
113 ))
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
114 self.runDevServerAct.triggered.connect(self.__runDevelopmentServer)
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
115 self.actions.append(self.runDevServerAct)
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
116
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
117 self.askForServerOptionsAct = EricAction(
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
118 self.tr('Ask for Server Start Options'),
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
119 self.tr('Ask for Server Start Options'),
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
120 0, 0,
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
121 self, 'flask_ask_server_options')
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
122 self.askForServerOptionsAct.setStatusTip(self.tr(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
123 'Ask for server start options'))
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
124 self.askForServerOptionsAct.setWhatsThis(self.tr(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
125 """<b>Ask for Server Start Options</b>"""
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
126 """<p>Asks for server start options before the Flask Web server"""
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
127 """ is started. If this is unchecked, the server is started with"""
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
128 """ default parameters.</p>"""
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
129 ))
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
130 self.askForServerOptionsAct.setCheckable(True)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
131 self.actions.append(self.askForServerOptionsAct)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
132
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
133 ###############################
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
134 ## shell action below ##
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
135 ###############################
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
136
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
137 self.runPythonShellAct = EricAction(
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
138 self.tr('Start Flask Python Console'),
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
139 self.tr('Start Flask &Python Console'),
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
140 0, 0,
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
141 self, 'flask_python_console')
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
142 self.runPythonShellAct.setStatusTip(self.tr(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
143 'Starts an interactive Python interpreter'))
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
144 self.runPythonShellAct.setWhatsThis(self.tr(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
145 """<b>Start Flask Python Console</b>"""
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
146 """<p>Starts an interactive Python interpreter.</p>"""
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
147 ))
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
148 self.runPythonShellAct.triggered.connect(self.__runPythonShell)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
149 self.actions.append(self.runPythonShellAct)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
150
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
151 ################################
7
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
152 ## routes action below ##
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
153 ################################
7
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
154
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
155 self.showRoutesAct = EricAction(
7
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
156 self.tr('Show Routes'),
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
157 self.tr('Show &Routes'),
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
158 0, 0,
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
159 self, 'flask_show_routes')
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
160 self.showRoutesAct.setStatusTip(self.tr(
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
161 'Shows a dialog with the routes of the flask app'))
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
162 self.showRoutesAct.setWhatsThis(self.tr(
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
163 """<b>Show Routes</b>"""
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
164 """<p>Shows a dialog with the routes of the flask app.</p>"""
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
165 ))
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
166 self.showRoutesAct.triggered.connect(self.__showRoutes)
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
167 self.actions.append(self.showRoutesAct)
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
168
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
169 ##################################
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
170 ## documentation action below ##
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
171 ##################################
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
172
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
173 self.documentationAct = EricAction(
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
174 self.tr('Documentation'),
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
175 self.tr('D&ocumentation'),
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
176 0, 0,
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
177 self, 'flask_documentation')
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
178 self.documentationAct.setStatusTip(self.tr(
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
179 'Shows the help viewer with the Flask documentation'))
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
180 self.documentationAct.setWhatsThis(self.tr(
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
181 """<b>Documentation</b>"""
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
182 """<p>Shows the help viewer with the Flask documentation.</p>"""
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
183 ))
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
184 self.documentationAct.triggered.connect(self.__showDocumentation)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
185 self.actions.append(self.documentationAct)
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 ##############################
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 ## about action below ##
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 ##############################
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
191 self.aboutFlaskAct = EricAction(
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 self.tr('About Flask'),
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 self.tr('About &Flask'),
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 0, 0,
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 self, 'flask_about')
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 self.aboutFlaskAct.setStatusTip(self.tr(
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 'Shows some information about Flask'))
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 self.aboutFlaskAct.setWhatsThis(self.tr(
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 """<b>About Flask</b>"""
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 """<p>Shows some information about Flask.</p>"""
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 ))
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 self.aboutFlaskAct.triggered.connect(self.__flaskInfo)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 self.actions.append(self.aboutFlaskAct)
26
5aac667c4f0f Moved the pybabel config action and menu into a 'Translations' menu of the flask-babel extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
204
5aac667c4f0f Moved the pybabel config action and menu into a 'Translations' menu of the flask-babel extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
205 self.__pybabelProject.initActions()
29
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
206 self.__migrateProject.initActions()
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207
47
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
208 ######################################
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
209 ## configuration action below ##
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
210 ######################################
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
211
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
212 self.flaskConfigAct = EricAction(
47
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
213 self.tr('Configure Flask for Project'),
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
214 self.tr('Configure Flask for &Project'),
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
215 0, 0,
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
216 self, 'flask_config_for_project')
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
217 self.flaskConfigAct.setStatusTip(self.tr(
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
218 'Shows a dialog to edit the project specific flask configuration'))
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
219 self.flaskConfigAct.setWhatsThis(self.tr(
50
a4bbe1c04ca2 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 49
diff changeset
220 """<b>Configure Flask for Project</b>"""
47
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
221 """<p>Shows a dialog to edit the project specific flask"""
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
222 """ configuration.</p>"""
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
223 ))
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
224 self.flaskConfigAct.triggered.connect(
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
225 self.__configureFlaskForProject)
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
226 self.actions.append(self.flaskConfigAct)
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
227
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 def initMenu(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 Public method to initialize the Flask menu.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 @return the menu generated
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 @rtype QMenu
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 self.__menus = {} # clear menus references
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236
46
e700f73e1c6f Fine tuned some internal data structures.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
237 self.__menus["flask-babel"] = self.__pybabelProject.initMenu()
e700f73e1c6f Fine tuned some internal data structures.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
238 self.__menus["flask-migrate"] = self.__migrateProject.initMenu()
26
5aac667c4f0f Moved the pybabel config action and menu into a 'Translations' menu of the flask-babel extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
239
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 menu = QMenu(self.tr('&Flask'), self.__ui)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 menu.setTearOffEnabled(True)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242
47
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
243 menu.addAction(self.flaskConfigAct)
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
244 menu.addSeparator()
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
245 menu.addAction(self.runServerAct)
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
246 menu.addAction(self.runDevServerAct)
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
247 menu.addAction(self.askForServerOptionsAct)
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
248 menu.addSeparator()
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
249 menu.addAction(self.runPythonShellAct)
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
250 menu.addSeparator()
7
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
251 menu.addAction(self.showRoutesAct)
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
252 menu.addSeparator()
46
e700f73e1c6f Fine tuned some internal data structures.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
253 menu.addMenu(self.__menus["flask-migrate"])
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
254 menu.addSeparator()
46
e700f73e1c6f Fine tuned some internal data structures.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
255 menu.addMenu(self.__menus["flask-babel"])
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
256 menu.addSeparator()
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
257 menu.addAction(self.documentationAct)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
258 menu.addSeparator()
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 menu.addAction(self.aboutFlaskAct)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 self.__menus["main"] = menu
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263 return menu
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265 def getMenu(self, name):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 Public method to get a reference to the requested menu.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269 @param name name of the menu
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270 @type str
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271 @return reference to the menu or None, if no menu with the given
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 name exists
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273 @rtype QMenu or None
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275 if name in self.__menus:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276 return self.__menus[name]
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277 else:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278 return None
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
280 def getMenuNames(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
282 Public method to get the names of all menus.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
283
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
284 @return menu names
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
285 @rtype list of str
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287 return list(self.__menus.keys())
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288
11
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
289 def projectOpenedHooks(self):
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
290 """
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
291 Public method to add our hook methods.
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
292 """
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
293 if self.__ericProject.getProjectType() == "Flask":
18
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
294 self.__formsBrowser = (
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
295 ericApp().getObject("ProjectBrowser")
18
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
296 .getProjectBrowser("forms"))
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
297 self.__formsBrowser.addHookMethodAndMenuEntry(
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
298 "newForm", self.newForm, self.tr("New template..."))
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
299
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
300 self.__determineCapabilities()
52
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
301 self.__setDebugEnvironment()
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
302
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
303 self.__pybabelProject.projectOpenedHooks()
18
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
304
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
305 self.__hooksInstalled = True
11
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
306
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
307 def projectClosedHooks(self):
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
308 """
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
309 Public method to remove our hook methods.
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
310 """
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
311 self.__pybabelProject.projectClosedHooks()
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
312
11
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
313 if self.__hooksInstalled:
18
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
314 self.__formsBrowser.removeHookMethod("newForm")
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
315 self.__formsBrowser = None
11
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
316
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
317 self.__hooksInstalled = False
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
318
18
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
319 def newForm(self, dirPath):
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
320 """
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
321 Public method to create a new form.
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
322
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
323 @param dirPath full directory path for the new form file
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
324 @type str
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
325 """
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
326 from .FormSelectionDialog import FormSelectionDialog
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
327
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
328 dlg = FormSelectionDialog()
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
329 if dlg.exec() == QDialog.DialogCode.Accepted:
18
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
330 template = dlg.getTemplateText()
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
331
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
332 fileFilters = self.tr(
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
333 "HTML Files (*.html);;"
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
334 "HTML Files (*.htm);;"
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
335 "All Files (*)")
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
336 fname, selectedFilter = EricFileDialog.getSaveFileNameAndFilter(
18
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
337 self.__ui,
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
338 self.tr("New Form"),
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
339 dirPath,
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
340 fileFilters,
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
341 None,
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
342 EricFileDialog.Options(EricFileDialog.DontConfirmOverwrite))
18
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
343 if fname:
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
344 ext = QFileInfo(fname).suffix()
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
345 if not ext:
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
346 ex = selectedFilter.split("(*")[1].split(")")[0]
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
347 if ex:
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
348 fname += ex
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
349
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
350 if os.path.exists(fname):
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
351 res = EricMessageBox.yesNo(
18
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
352 self.__ui,
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
353 self.tr("New Form"),
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
354 self.tr("""The file already exists! Overwrite"""
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
355 """ it?"""),
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
356 icon=EricMessageBox.Warning)
18
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
357 if not res:
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
358 # user selected to not overwrite
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
359 return
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
360
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
361 try:
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
362 with open(fname, "w", encoding="utf-8") as f:
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
363 f.write(template)
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
364 except OSError as err:
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
365 EricMessageBox.critical(
18
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
366 self.__ui,
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
367 self.tr("New Form"),
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
368 self.tr("<p>The new form file <b>{0}</b> could"
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
369 " not be created.</p><p>Problem: {1}</p>")
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
370 .format(fname, str(err)))
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
371 return
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
372
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
373 self.__ericProject.appendFile(fname)
18
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
374 self.__formsBrowser.sourceFile.emit(fname)
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
375
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
376 ##################################################################
30
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
377 ## methods below implement virtual environment handling
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
378 ##################################################################
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
379
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
380 def getVirtualEnvironment(self):
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
381 """
32
80fc8deac8fe Finished the 'flask db init' command support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
382 Public method to get the path of the virtual environment.
30
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
383
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
384 @return path of the virtual environment
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
385 @rtype str
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
386 """
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
387 language = self.__ericProject.getProjectLanguage()
30
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
388 if language == "Python3":
49
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
389 # get project specific virtual environment name
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
390 venvName = self.getData("flask", "virtual_environment_name")
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
391 if not venvName:
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
392 venvName = self.__plugin.getPreferences(
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
393 "VirtualEnvironmentNamePy3")
30
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
394 else:
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
395 venvName = ""
61
fe1e8783a95f - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
396 virtEnv = (
fe1e8783a95f - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
397 self.__virtualEnvManager.getVirtualenvDirectory(venvName)
fe1e8783a95f - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
398 if venvName else
fe1e8783a95f - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
399 ""
fe1e8783a95f - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
400 )
30
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
401
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
402 if virtEnv and not os.path.exists(virtEnv):
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
403 virtEnv = ""
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
404
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
405 return virtEnv # __IGNORE_WARNING_M834__
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
406
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
407 def getVirtualenvInterpreter(self):
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
408 """
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
409 Public method to get the path of the Python interpreter to be used
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
410 with the current project.
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
411
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
412 @return path of the Python interpreter
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
413 @rtype str
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
414 """
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
415 return self.getFullCommand("python")
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
416
52
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
417 def getFullCommand(self, command, virtualEnvPath=None):
30
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
418 """
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
419 Public method to get the full command for a given command name.
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
420
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
421 @param command command name
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
422 @type str
52
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
423 @param virtualEnvPath path of the virtual environment
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
424 @type str
30
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
425 @return full command
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
426 @rtype str
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
427 """
52
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
428 virtualEnv = virtualEnvPath or self.getVirtualEnvironment()
61
fe1e8783a95f - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
429 fullCmds = (
fe1e8783a95f - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
430 [os.path.join(virtualEnv, "Scripts", command + '.exe'),
fe1e8783a95f - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
431 os.path.join(virtualEnv, "bin", command + '.exe'),
fe1e8783a95f - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
432 command] # fall back to just cmd
fe1e8783a95f - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
433 if isWindowsPlatform() else
fe1e8783a95f - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
434 [os.path.join(virtualEnv, "bin", command),
fe1e8783a95f - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
435 os.path.join(virtualEnv, "local", "bin", command),
fe1e8783a95f - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
436 Utilities.getExecutablePath(command),
fe1e8783a95f - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
437 command] # fall back to just cmd
fe1e8783a95f - implemented some code simplifications
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 60
diff changeset
438 )
30
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
439 for command in fullCmds:
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
440 if os.path.exists(command):
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
441 break
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
442 return command
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
443
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
444 ##################################################################
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
445 ## methods below implement general functionality
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
446 ##################################################################
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
447
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
448 def projectClosed(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
449 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
450 Public method to handle the closing of a project.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
451 """
8
cfbd3a2757fd Finished implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
452 for dlg in (self.__serverDialog, self.__routesDialog):
cfbd3a2757fd Finished implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
453 if dlg is not None:
cfbd3a2757fd Finished implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
454 dlg.close()
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
455
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
456 self.__migrateProject.projectClosed()
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
457
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
458 def supportedPythonVariants(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
459 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
460 Public method to get the supported Python variants.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
461
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
462 @return list of supported Python variants
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
463 @rtype list of str
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
464 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
465 variants = []
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
466
30
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
467 virtEnv = self.getVirtualEnvironment()
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
468 if virtEnv:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
469 fullCmd = self.getFlaskCommand()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
470 if fullCmd:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
471 variants.append("Python3")
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
472 else:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
473 fullCmd = self.getFlaskCommand()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
474 if isWindowsPlatform():
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
475 if fullCmd:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
476 variants.append("Python3")
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
477 else:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
478 fullCmds = Utilities.getExecutablePaths("flask")
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
479 for fullCmd in fullCmds:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
480 try:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
481 with open(fullCmd, 'r', encoding='utf-8') as f:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
482 l0 = f.readline()
18
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
483 except OSError:
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
484 l0 = ""
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
485 if self.__isSuitableForVariant("Python3", l0):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
486 variants.append("Python3")
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
487 break
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
488
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
489 return variants
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
490
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
491 def __isSuitableForVariant(self, variant, line0):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
492 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
493 Private method to test, if a detected command file is suitable for the
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
494 given Python variant.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
495
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
496 @param variant Python variant to test for
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
497 @type str
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
498 @param line0 first line of the executable
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
499 @type str
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
500 @return flag indicating a suitable file was found
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
501 @rtype bool
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
502 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
503 l0 = line0.lower()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
504 ok = (variant.lower() in l0 or
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
505 "{0}.".format(variant[-1]) in l0)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
506 ok |= "pypy3" in l0
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
507
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
508 return ok
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
509
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
510 def getFlaskCommand(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
511 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
512 Public method to build the Flask command.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
513
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
514 @return full flask command
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
515 @rtype str
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
516 """
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
517 return self.getFullCommand("flask")
12
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
518
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
519 @pyqtSlot()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
520 def __flaskInfo(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
521 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
522 Private slot to show some info about Flask.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
523 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
524 versions = self.getFlaskVersionStrings()
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
525 url = "https://palletsprojects.com/p/flask/"
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
526
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
527 msgBox = EricMessageBox.EricMessageBox(
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
528 EricMessageBox.Question,
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
529 self.tr("About Flask"),
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
530 self.tr(
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
531 "<p>Flask is a lightweight WSGI web application framework."
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
532 " It is designed to make getting started quick and easy,"
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
533 " with the ability to scale up to complex applications.</p>"
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
534 "<p><table>"
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
535 "<tr><td>Flask Version:</td><td>{0}</td></tr>"
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
536 "<tr><td>Werkzeug Version:</td><td>{1}</td></tr>"
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
537 "<tr><td>Python Version:</td><td>{2}</td></tr>"
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
538 "<tr><td>Flask URL:</td><td><a href=\"{3}\">"
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
539 "The Pallets Projects - Flask</a></td></tr>"
26
5aac667c4f0f Moved the pybabel config action and menu into a 'Translations' menu of the flask-babel extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
540 "</table></p>",
5aac667c4f0f Moved the pybabel config action and menu into a 'Translations' menu of the flask-babel extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
541 "Do not translate the program names."
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
542 ).format(versions["flask"], versions["werkzeug"],
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
543 versions["python"], url),
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
544 modal=True,
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
545 buttons=EricMessageBox.Ok)
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
546 msgBox.setIconPixmap(UI.PixmapCache.getPixmap(
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
547 os.path.join("ProjectFlask", "icons",
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
548 "flask64-{0}".format(self.__iconSuffix))))
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
549 msgBox.exec()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
550
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
551 def getFlaskVersionStrings(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
552 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
553 Public method to get the Flask, Werkzeug and Python versions as a
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
554 string.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
555
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
556 @return dictionary containing the Flask, Werkzeug and Python versions
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
557 @rtype dict
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
558 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
559 if not self.__flaskVersions["flask"]:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
560 cmd = self.getFlaskCommand()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
561 proc = QProcess()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
562 proc.start(cmd, ["--version"])
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
563 if proc.waitForFinished(10000):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
564 output = str(proc.readAllStandardOutput(), "utf-8")
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
565 for line in output.lower().splitlines():
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
566 key, version = line.strip().split(None, 1)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
567 self.__flaskVersions[key] = version
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
568
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
569 return self.__flaskVersions
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
570
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
571 def prepareRuntimeEnvironment(self, development=False):
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
572 """
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
573 Public method to prepare a QProcessEnvironment object and determine
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
574 the appropriate working directory.
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
575
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
576 @param development flag indicating development mode
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
577 @type bool
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
578 @return tuple containing the working directory and a prepared
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
579 environment object to be used with QProcess
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
580 @rtype tuple of (str, QProcessEnvironment)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
581 """
14
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
582 workdir, app = self.getApplication()
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
583 env = QProcessEnvironment.systemEnvironment()
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
584 env.insert("FLASK_APP", app)
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
585 if development:
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
586 env.insert("FLASK_ENV", "development")
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
587
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
588 return workdir, env
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
589
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
590 def getApplication(self):
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
591 """
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
592 Public method to determine the application name and the respective
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
593 working directory.
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
594
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
595 @return tuple containing the working directory and the application name
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
596 @rtype tuple of (str, str)
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
597 """
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
598 mainScript = self.__ericProject.getMainScript(normalized=True)
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
599 if not mainScript:
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
600 EricMessageBox.critical(
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
601 self.__ui,
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
602 self.tr("Prepare Environment"),
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
603 self.tr("""The project has no configured main script"""
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
604 """ (= Flask application). Aborting..."""))
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
605 return "", None
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
606
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
607 scriptPath, scriptName = os.path.split(mainScript)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
608 if scriptName == "__init__.py":
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
609 workdir, app = os.path.split(scriptPath)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
610 else:
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
611 workdir, app = scriptPath, scriptName
14
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
612 return workdir, app
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
613
12
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
614 def getData(self, category, key):
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
615 """
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
616 Public method to get data stored in the project store.
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
617
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
618 @param category data category
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
619 @type str
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
620 @param key data key
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
621 @type str
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
622 @return referenced data
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
623 @rtype any
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
624 """
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
625 if category not in self.__projectData:
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
626 self.__projectData[category] = {}
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
627
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
628 if not self.__projectData[category]:
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
629 data = self.__ericProject.getData(
12
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
630 "PROJECTTYPESPECIFICDATA", category)
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
631 if data is not None:
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
632 self.__projectData[category] = data
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
633
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
634 data = self.__projectData[category]
13
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
635 if not key:
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
636 # return complete category dictionary
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
637 return data
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
638 elif key in data:
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
639 # return individual entry
12
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
640 return data[key]
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
641 else:
13
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
642 # failure
12
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
643 return None
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
644
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
645 def setData(self, category, key, value):
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
646 """
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
647 Public method to store data in the project store.
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
648
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
649 @param category data category
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
650 @type str
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
651 @param key data key
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
652 @type str
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
653 @param value data to be stored
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
654 @type any (serializable type)
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
655 """
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
656 if category not in self.__projectData:
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
657 self.__projectData[category] = {}
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
658
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
659 if not self.__projectData[category]:
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
660 data = self.__ericProject.getData(
12
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
661 "PROJECTTYPESPECIFICDATA", category)
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
662 if data is not None:
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
663 self.__projectData[category] = data
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
664
13
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
665 if not key:
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
666 # update the complete category
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
667 self.__projectData[category] = value
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
668 else:
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
669 # update individual entry
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
670 self.__projectData[category][key] = value
12
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
671
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
672 self.__ericProject.setData(
12
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
673 "PROJECTTYPESPECIFICDATA", category, self.__projectData[category])
68ee221cd0cb Added some utility methods to determine executable paths and get/set project type specific data.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11
diff changeset
674
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
675 def __determineCapabilities(self):
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
676 """
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
677 Private method to determine capabilities provided by supported
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
678 extensions.
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
679 """
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
680 # 1. support for flask-babel (i.e. pybabel)
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
681 self.__pybabelProject.determineCapability()
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
682
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
683 # 2. support for flask-migrate
29
a8817ea36587 Started implementing support for the 'flask-migrate' extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
684 self.__migrateProject.determineCapability()
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
685
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
686 def hasCapability(self, key):
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
687 """
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
688 Public method to check, if a capability is available.
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
689
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
690 @param key key of the capability to check
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
691 @type str
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
692 @return flag indicating the availability of the capability
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
693 @rtype bool
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
694 """
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
695 try:
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
696 return self.__capabilities[key]
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
697 except KeyError:
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
698 return False
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
699
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
700 def setCapability(self, key, available):
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
701 """
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
702 Public method to set the availability status of a capability.
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
703
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
704 @param key key of the capability to set
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
705 @type str
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
706 @param available flag indicating the availability of the capability
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
707 @type bool
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
708 """
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
709 self.__capabilities[key] = available
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
710
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
711 ##################################################################
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
712 ## slots below implements project specific flask configuration
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
713 ##################################################################
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
714
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
715 @pyqtSlot()
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
716 def __configureFlaskForProject(self):
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
717 """
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
718 Private slot to configure the project specific flask parameters.
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
719 """
47
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
720 from .FlaskConfigDialog import FlaskConfigDialog
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
721
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
722 config = self.getData("flask", "")
52
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
723 dlg = FlaskConfigDialog(config, self)
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
724 if dlg.exec() == QDialog.DialogCode.Accepted:
47
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
725 config = dlg.getConfiguration()
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
726 self.setData("flask", "", config)
52
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
727 self.__setIgnoreVirtualEnvironment()
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
728 self.__setDebugEnvironment()
49
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
729
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
730 self.__migrateProject.determineCapability()
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
731
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
732 self.__pybabelProject.determineCapability()
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
733 self.projectClosedHooks()
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
734 self.projectOpenedHooks()
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
735
52
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
736 def __setIgnoreVirtualEnvironment(self):
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
737 """
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
738 Private method to add an embedded project specific virtual environment
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
739 to the list of ignore files/directories.
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
740 """
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
741 virtenvName = self.getData("flask", "virtual_environment_name")
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
742 if virtenvName:
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
743 virtenvPath = self.getVirtualEnvironment()
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
744 if self.__ericProject.startswithProjectPath(virtenvPath):
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
745 relVirtenvPath = self.__ericProject.getRelativeUniversalPath(
52
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
746 virtenvPath)
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
747 if relVirtenvPath not in self.__ericProject.pdata["FILETYPES"]:
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
748 self.__ericProject.pdata["FILETYPES"][relVirtenvPath] = (
52
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
749 "__IGNORE__"
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
750 )
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
751 self.__ericProject.setDirty(True)
52
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
752
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
753 def __setDebugEnvironment(self):
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
754 """
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
755 Private method to set the virtual environment as the selected debug
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
756 environment.
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
757 """
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
758 language = self.__ericProject.getProjectLanguage()
52
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
759 if language == "Python3":
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
760 # get project specific virtual environment name
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
761 venvName = self.getData("flask", "virtual_environment_name")
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
762 if not venvName:
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
763 venvName = self.__plugin.getPreferences(
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
764 "VirtualEnvironmentNamePy3")
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
765 if venvName:
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
766 self.__ericProject.debugProperties["VIRTUALENV"] = venvName
52
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
767
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
768 ##################################################################
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
769 ## slot below implements documentation function
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
770 ##################################################################
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
771
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
772 def __showDocumentation(self):
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
773 """
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
774 Private slot to show the helpviewer with the Flask documentation.
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
775 """
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
776 page = self.__plugin.getPreferences("FlaskDocUrl")
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
777 self.__ui.launchHelpViewer(page)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
778
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
779 ##################################################################
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
780 ## slots below implement run functions for the server
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
781 ##################################################################
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
782
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
783 @pyqtSlot()
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
784 def __runServer(self, development=False):
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
785 """
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
786 Private slot to start the Flask Web server.
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
787
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
788 @param development flag indicating development mode
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
789 @type bool
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
790 """
13
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
791 from .RunServerDialog import RunServerDialog
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
792
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
793 if self.__serverDialog is not None:
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
794 self.__serverDialog.close()
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
795
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
796 askForOptions = self.askForServerOptionsAct.isChecked()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
797 dlg = RunServerDialog(self.__plugin, self)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
798 if dlg.startServer(development=development,
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
799 askForOptions=askForOptions):
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
800 dlg.show()
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
801 self.__serverDialog = dlg
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
802
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
803 @pyqtSlot()
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
804 def __runDevelopmentServer(self):
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
805 """
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
806 Private slot to start the Flask Web server in development mode.
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
807 """
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
808 self.__runServer(development=True)
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
809
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
810 ##################################################################
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
811 ## slots below implement functions for the flask console
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
812 ##################################################################
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
813
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
814 @pyqtSlot()
3
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
815 def __runPythonShell(self):
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
816 """
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
817 Private slot to start a Python console in the app context.
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
818 """
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
819 workdir, env = self.prepareRuntimeEnvironment()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
820 if env is not None:
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
821 command = self.getFlaskCommand()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
822
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
823 consoleCmd = self.__plugin.getPreferences("ConsoleCommand")
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
824 if consoleCmd:
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
825 self.__terminatePythonShell()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
826
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
827 args = Utilities.parseOptionString(consoleCmd)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
828 args[0] = Utilities.getExecutablePath(args[0])
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
829 args += [command, "shell"]
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
830
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
831 self.__shellProcess = QProcess()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
832 self.__shellProcess.setProcessEnvironment(env)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
833 self.__shellProcess.setWorkingDirectory(workdir)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
834 self.__shellProcess.finished.connect(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
835 self.__shellProcessFinished)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
836
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
837 self.__shellProcess.start(args[0], args[1:])
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
838 self.__shellProcess.waitForStarted(10000)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
839
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
840 @pyqtSlot()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
841 def __shellProcessFinished(self):
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
842 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
843 Private slot connected to the finished signal.
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
844 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
845 self.__shellProcess = None
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
846
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
847 def __terminatePythonShell(self):
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
848 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
849 Private method to terminate the current Python console.
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
850 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
851 if (
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
852 self.__shellProcess is not None and
64
0ee58185b8df Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 61
diff changeset
853 self.__shellProcess.state() != QProcess.ProcessState.NotRunning
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
854 ):
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
855 self.__shellProcess.terminate()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
856 QTimer.singleShot(2000, self.__shellProcess.kill)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
857 self.__shellProcess.waitForFinished(3000)
3
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
858
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
859 ##################################################################
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
860 ## slots below implement various debugging functions
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
861 ##################################################################
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
862
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
863 @pyqtSlot()
3
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
864 def __showRoutes(self):
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
865 """
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
866 Private slot showing all URL dispatch routes.
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
867 """
13
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
868 from .RoutesDialog import RoutesDialog
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
869
7
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
870 if self.__routesDialog is not None:
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
871 self.__routesDialog.close()
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
872
8
cfbd3a2757fd Finished implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
873 dlg = RoutesDialog(self)
cfbd3a2757fd Finished implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
874 if dlg.showRoutes():
7
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
875 dlg.show()
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
876 self.__routesDialog = dlg

eric ide

mercurial