ProjectFlask/Project.py

Sat, 05 Dec 2020 17:18:17 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 05 Dec 2020 17:18:17 +0100
changeset 52
caddf9f36f9f
parent 50
a4bbe1c04ca2
child 60
02243723ac17
permissions
-rw-r--r--

Added the capability to create project specific virtual environments.

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
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de>
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
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
12 from PyQt5.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 )
18
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
15 from PyQt5.QtWidgets import QMenu, QDialog
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
18
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
17 from E5Gui import E5MessageBox, E5FileDialog
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 from E5Gui.E5Action import E5Action
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 from E5Gui.E5Application import e5App
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 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 super(Project, self).__init__(parent)
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
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 self.__e5project = e5App().getObject("Project")
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 self.__virtualEnvManager = e5App().getObject("VirtualEnvManager")
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
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
89 self.runServerAct = E5Action(
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
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
103 self.runDevServerAct = E5Action(
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
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
117 self.askForServerOptionsAct = E5Action(
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
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
137 self.runPythonShellAct = E5Action(
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
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
155 self.showRoutesAct = E5Action(
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
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
173 self.documentationAct = E5Action(
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
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 self.aboutFlaskAct = E5Action(
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
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
212 self.flaskConfigAct = E5Action(
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 """
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
293 if self.__e5project.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 = (
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
295 e5App().getObject("ProjectBrowser")
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()
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
329 if dlg.exec() == QDialog.Accepted:
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 (*)")
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
336 fname, selectedFilter = E5FileDialog.getSaveFileNameAndFilter(
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,
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
342 E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite))
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):
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
351 res = E5MessageBox.yesNo(
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?"""),
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
356 icon=E5MessageBox.Warning)
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:
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
365 E5MessageBox.critical(
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
d76a0939be6a Added code ot create template web pages of selectable kinds.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 17
diff changeset
373 self.__e5project.appendFile(fname)
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 """
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
387 language = self.__e5project.getProjectLanguage()
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 = ""
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
396 if venvName:
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
397 virtEnv = self.__virtualEnvManager.getVirtualenvDirectory(
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
398 venvName)
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
399 else:
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
400 virtEnv = ""
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()
30
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
429 if isWindowsPlatform():
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
430 fullCmds = [
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
431 os.path.join(virtualEnv, "Scripts", command + '.exe'),
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
432 os.path.join(virtualEnv, "bin", command + '.exe'),
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
433 command # fall back to just cmd
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
434 ]
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
435 else:
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
436 fullCmds = [
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
437 os.path.join(virtualEnv, "bin", command),
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
438 os.path.join(virtualEnv, "local", "bin", command),
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
439 Utilities.getExecutablePath(command),
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
440 command # fall back to just cmd
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
441 ]
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
442 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
443 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
444 break
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
445 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
446
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
447 ##################################################################
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
448 ## methods below implement general functionality
2
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
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
451 def projectClosed(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
452 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
453 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
454 """
8
cfbd3a2757fd Finished implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
455 for dlg in (self.__serverDialog, self.__routesDialog):
cfbd3a2757fd Finished implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
456 if dlg is not None:
cfbd3a2757fd Finished implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
457 dlg.close()
35
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
458
65a377b7a52c Added actions to show a migrations summary and migrations history.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 32
diff changeset
459 self.__migrateProject.projectClosed()
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
460
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
461 def supportedPythonVariants(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
462 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
463 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
464
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
465 @return list of supported Python variants
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
466 @rtype list of str
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
467 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
468 variants = []
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
469
30
76c86fe13f36 Moved all code dealing with virtual environments to the main Project class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 29
diff changeset
470 virtEnv = self.getVirtualEnvironment()
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
471 if virtEnv:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
472 fullCmd = self.getFlaskCommand()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
473 if fullCmd:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
474 variants.append("Python3")
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
475 else:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
476 fullCmd = self.getFlaskCommand()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
477 if isWindowsPlatform():
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
478 if fullCmd:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
479 variants.append("Python3")
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
480 else:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
481 fullCmds = Utilities.getExecutablePaths("flask")
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
482 for fullCmd in fullCmds:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
483 try:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
484 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
485 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
486 except OSError:
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
487 l0 = ""
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
488 if self.__isSuitableForVariant("Python3", l0):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
489 variants.append("Python3")
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
490 break
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
491
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
492 return variants
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
493
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
494 def __isSuitableForVariant(self, variant, line0):
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 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
497 given Python variant.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
498
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
499 @param variant Python variant to test for
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
500 @type str
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
501 @param line0 first line of the executable
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
502 @type str
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
503 @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
504 @rtype bool
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
505 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
506 l0 = line0.lower()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
507 ok = (variant.lower() in l0 or
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
508 "{0}.".format(variant[-1]) in l0)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
509 ok |= "pypy3" in l0
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
510
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
511 return ok
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
512
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
513 def getFlaskCommand(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
514 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
515 Public method to build the Flask command.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
516
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
517 @return full flask command
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
518 @rtype str
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
519 """
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
520 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
521
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
522 @pyqtSlot()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
523 def __flaskInfo(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
524 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
525 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
526 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
527 versions = self.getFlaskVersionStrings()
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
528 url = "https://palletsprojects.com/p/flask/"
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
529
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
530 msgBox = E5MessageBox.E5MessageBox(
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
531 E5MessageBox.Question,
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
532 self.tr("About Flask"),
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
533 self.tr(
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
534 "<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
535 " 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
536 " 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
537 "<p><table>"
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
538 "<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
539 "<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
540 "<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
541 "<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
542 "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
543 "</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
544 "Do not translate the program names."
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
545 ).format(versions["flask"], versions["werkzeug"],
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
546 versions["python"], url),
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
547 modal=True,
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
548 buttons=E5MessageBox.Ok)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
549 msgBox.setIconPixmap(UI.PixmapCache.getPixmap(
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
550 os.path.join("ProjectFlask", "icons",
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
551 "flask64-{0}".format(self.__iconSuffix))))
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
552 msgBox.exec()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
553
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
554 def getFlaskVersionStrings(self):
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 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
557 string.
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 @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
560 @rtype dict
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
561 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
562 if not self.__flaskVersions["flask"]:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
563 cmd = self.getFlaskCommand()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
564 proc = QProcess()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
565 proc.start(cmd, ["--version"])
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
566 if proc.waitForFinished(10000):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
567 output = str(proc.readAllStandardOutput(), "utf-8")
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
568 for line in output.lower().splitlines():
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
569 key, version = line.strip().split(None, 1)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
570 self.__flaskVersions[key] = version
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
571
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
572 return self.__flaskVersions
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
573
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
574 def prepareRuntimeEnvironment(self, development=False):
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 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
577 the appropriate working directory.
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
578
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
579 @param development flag indicating development mode
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
580 @type bool
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
581 @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
582 environment object to be used with QProcess
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
583 @rtype tuple of (str, QProcessEnvironment)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
584 """
14
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
585 workdir, app = self.getApplication()
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
586 env = QProcessEnvironment.systemEnvironment()
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
587 env.insert("FLASK_APP", app)
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
588 if development:
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
589 env.insert("FLASK_ENV", "development")
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
590
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
591 return workdir, env
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
592
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
593 def getApplication(self):
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 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
596 working directory.
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
597
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
598 @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
599 @rtype tuple of (str, str)
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
600 """
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
601 mainScript = self.__e5project.getMainScript(normalized=True)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
602 if not mainScript:
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
603 E5MessageBox.critical(
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
604 self.__ui,
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
605 self.tr("Prepare Environment"),
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
606 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
607 """ (= Flask application). Aborting..."""))
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
608 return "", None
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
609
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
610 scriptPath, scriptName = os.path.split(mainScript)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
611 if scriptName == "__init__.py":
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
612 workdir, app = os.path.split(scriptPath)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
613 else:
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
614 workdir, app = scriptPath, scriptName
14
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
615 return workdir, app
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
616
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
617 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
618 """
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 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
620
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 @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
622 @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
623 @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
624 @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
625 @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
626 @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
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 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
629 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
630
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 not 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
632 data = self.__e5project.getData(
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 "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
634 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
635 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
636
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
637 data = self.__projectData[category]
13
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
638 if not key:
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
639 # return complete category dictionary
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
640 return data
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
641 elif key in data:
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
642 # 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
643 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
644 else:
13
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
645 # 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
646 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
647
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 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
649 """
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 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
651
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 @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
653 @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
654 @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
655 @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
656 @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
657 @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
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 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
660 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
661
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 not 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
663 data = self.__e5project.getData(
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 "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
665 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
666 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
667
13
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
668 if not key:
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
669 # update the complete category
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
670 self.__projectData[category] = value
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
671 else:
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
672 # update individual entry
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
673 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
674
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
675 self.__e5project.setData(
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
676 "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
677
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
678 def __determineCapabilities(self):
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 Private method to determine capabilities provided by supported
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
681 extensions.
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 # 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
684 self.__pybabelProject.determineCapability()
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
685
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
686 # 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
687 self.__migrateProject.determineCapability()
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
688
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
689 def hasCapability(self, key):
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
690 """
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
691 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
692
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
693 @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
694 @type str
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
695 @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
696 @rtype bool
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
697 """
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
698 try:
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
699 return self.__capabilities[key]
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
700 except KeyError:
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
701 return False
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
702
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
703 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
704 """
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
705 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
706
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
707 @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
708 @type str
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
709 @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
710 @type bool
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
711 """
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
712 self.__capabilities[key] = available
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
713
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
714 ##################################################################
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
715 ## slot below implements project specific flask configuration
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
716 ##################################################################
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 @pyqtSlot()
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
719 def __configureFlaskForProject(self):
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
720 """
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
721 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
722 """
47
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
723 from .FlaskConfigDialog import FlaskConfigDialog
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
724
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
725 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
726 dlg = FlaskConfigDialog(config, self)
47
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
727 if dlg.exec() == QDialog.Accepted:
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
728 config = dlg.getConfiguration()
144b67fd111a Started implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
729 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
730 self.__setIgnoreVirtualEnvironment()
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
731 self.__setDebugEnvironment()
49
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
732
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
733 self.__migrateProject.determineCapability()
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
734
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
735 self.__pybabelProject.determineCapability()
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
736 self.projectClosedHooks()
3866bd742041 Finished implementing project specific flask settings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
737 self.projectOpenedHooks()
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
738
52
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
739 def __setIgnoreVirtualEnvironment(self):
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 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
742 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
743 """
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
744 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
745 if virtenvName:
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
746 virtenvPath = self.getVirtualEnvironment()
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
747 if self.__e5project.startswithProjectPath(virtenvPath):
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
748 relVirtenvPath = self.__e5project.getRelativeUniversalPath(
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
749 virtenvPath)
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
750 if relVirtenvPath not in self.__e5project.pdata["FILETYPES"]:
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
751 self.__e5project.pdata["FILETYPES"][relVirtenvPath] = (
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
752 "__IGNORE__"
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
753 )
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
754 self.__e5project.setDirty(True)
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
755
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
756 def __setDebugEnvironment(self):
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
757 """
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
758 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
759 environment.
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
760 """
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
761 language = self.__e5project.getProjectLanguage()
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
762 if language == "Python3":
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
763 # 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
764 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
765 if not venvName:
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
766 venvName = self.__plugin.getPreferences(
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
767 "VirtualEnvironmentNamePy3")
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
768 if venvName:
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
769 self.__e5project.debugProperties["VIRTUALENV"] = venvName
caddf9f36f9f Added the capability to create project specific virtual environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 50
diff changeset
770
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
771 ##################################################################
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
772 ## slot below implements documentation function
4
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
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
775 def __showDocumentation(self):
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
776 """
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
777 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
778 """
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
779 page = self.__plugin.getPreferences("FlaskDocUrl")
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
780 self.__ui.launchHelpViewer(page)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
781
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
782 ##################################################################
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
783 ## 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
784 ##################################################################
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
785
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
786 @pyqtSlot()
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
787 def __runServer(self, development=False):
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
788 """
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
789 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
790
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
791 @param development flag indicating development mode
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
792 @type bool
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
793 """
13
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
794 from .RunServerDialog import RunServerDialog
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
795
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
796 if self.__serverDialog is not None:
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
797 self.__serverDialog.close()
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
798
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
799 askForOptions = self.askForServerOptionsAct.isChecked()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
800 dlg = RunServerDialog(self.__plugin, self)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
801 if dlg.startServer(development=development,
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
802 askForOptions=askForOptions):
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
803 dlg.show()
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
804 self.__serverDialog = dlg
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
805
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
806 @pyqtSlot()
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
807 def __runDevelopmentServer(self):
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
808 """
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
809 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
810 """
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
811 self.__runServer(development=True)
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
812
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
813 ##################################################################
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
814 ## slots below implement functions for the flask console
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
815 ##################################################################
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
816
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
817 @pyqtSlot()
3
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
818 def __runPythonShell(self):
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
819 """
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
820 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
821 """
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
822 workdir, env = self.prepareRuntimeEnvironment()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
823 if env is not None:
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
824 command = self.getFlaskCommand()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
825
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
826 consoleCmd = self.__plugin.getPreferences("ConsoleCommand")
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
827 if consoleCmd:
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
828 self.__terminatePythonShell()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
829
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
830 args = Utilities.parseOptionString(consoleCmd)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
831 args[0] = Utilities.getExecutablePath(args[0])
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
832 args += [command, "shell"]
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
833
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
834 self.__shellProcess = QProcess()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
835 self.__shellProcess.setProcessEnvironment(env)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
836 self.__shellProcess.setWorkingDirectory(workdir)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
837 self.__shellProcess.finished.connect(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
838 self.__shellProcessFinished)
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 self.__shellProcess.start(args[0], args[1:])
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
841 self.__shellProcess.waitForStarted(10000)
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 @pyqtSlot()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
844 def __shellProcessFinished(self):
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
845 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
846 Private slot connected to the finished signal.
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
847 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
848 self.__shellProcess = None
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
849
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
850 def __terminatePythonShell(self):
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
851 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
852 Private method to terminate the current Python console.
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
853 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
854 if (
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
855 self.__shellProcess is not None and
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
856 self.__shellProcess.state() != QProcess.NotRunning
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
857 ):
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
858 self.__shellProcess.terminate()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
859 QTimer.singleShot(2000, self.__shellProcess.kill)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
860 self.__shellProcess.waitForFinished(3000)
3
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 ##################################################################
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
863 ## slots below implement various debugging functions
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
864 ##################################################################
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
865
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
866 @pyqtSlot()
3
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
867 def __showRoutes(self):
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
868 """
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
869 Private slot showing all URL dispatch routes.
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
870 """
13
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
871 from .RoutesDialog import RoutesDialog
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
872
7
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
873 if self.__routesDialog is not None:
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
874 self.__routesDialog.close()
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
875
8
cfbd3a2757fd Finished implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
876 dlg = RoutesDialog(self)
cfbd3a2757fd Finished implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
877 if dlg.showRoutes():
7
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
878 dlg.show()
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
879 self.__routesDialog = dlg

eric ide

mercurial