ProjectFlask/Project.py

Sat, 21 Nov 2020 20:37:54 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 21 Nov 2020 20:37:54 +0100
changeset 17
f31df56510a1
parent 16
dd3f6bfb85f7
child 18
d76a0939be6a
permissions
-rw-r--r--

Moved the flask-babel support into its own package.

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 (
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
13 pyqtSlot, QObject, QProcess, QProcessEnvironment, QTimer
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
14 )
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
15 from PyQt5.QtWidgets import QMenu
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 from E5Gui import E5MessageBox
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
15
3f5c05eb2d5f Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
26 from .FlaskCommandDialog import FlaskCommandDialog
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
27
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
28 from .FlaskBabelExtension.PyBabelProjectExtension import PyBabelProject
15
3f5c05eb2d5f Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 14
diff changeset
29
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
31 # TODO: move database related code to a separate package (FlaskMigrateExtension)
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 class Project(QObject):
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 Class implementing the Flask project support.
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 def __init__(self, plugin, iconSuffix, parent=None):
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 Constructor
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 @param plugin reference to the plugin object
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 @type ProjectFlaskPlugin
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 @param iconSuffix suffix for the icons
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 @type str
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 @param parent parent
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 @type QObject
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 super(Project, self).__init__(parent)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 self.__plugin = plugin
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 self.__iconSuffix = iconSuffix
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 self.__ui = parent
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 self.__e5project = e5App().getObject("Project")
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 self.__virtualEnvManager = e5App().getObject("VirtualEnvManager")
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 self.__menus = {} # dictionary with references to menus
11
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
57 self.__hooksInstalled = False
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
59 self.__serverDialog = None
7
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
60 self.__routesDialog = None
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
61 self.__shellProcess = None
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
62
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
63 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
64 "flask": {},
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
65 "pybabel": {},
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
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
76 self.__pybabelProject = PyBabelProject(self.__plugin, self, self.__ui)
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 def initActions(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 Public method to define the Flask actions.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 self.actions = []
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
83
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 ## run actions below ##
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
86 ##############################
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 self.runServerAct = E5Action(
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
89 self.tr('Run Server'),
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 0, 0,
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
92 self, 'flask_run_server')
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
93 self.runServerAct.setStatusTip(self.tr(
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
94 'Starts the Flask Web server'))
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
95 self.runServerAct.setWhatsThis(self.tr(
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
96 """<b>Run Server</b>"""
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
97 """<p>Starts the Flask Web server.</p>"""
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
98 ))
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
99 self.runServerAct.triggered.connect(self.__runServer)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
100 self.actions.append(self.runServerAct)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
101
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
102 self.runDevServerAct = E5Action(
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
103 self.tr('Run Development Server'),
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 0, 0,
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
106 self, 'flask_run_dev_server')
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
107 self.runDevServerAct.setStatusTip(self.tr(
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
108 '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
109 self.runDevServerAct.setWhatsThis(self.tr(
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
110 """<b>Run Development Server</b>"""
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
111 """<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
112 ))
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
113 self.runDevServerAct.triggered.connect(self.__runDevelopmentServer)
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
114 self.actions.append(self.runDevServerAct)
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
115
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
116 self.askForServerOptionsAct = E5Action(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
117 self.tr('Ask for Server Start Options'),
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 0, 0,
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
120 self, 'flask_ask_server_options')
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
121 self.askForServerOptionsAct.setStatusTip(self.tr(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
122 'Ask for server start options'))
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
123 self.askForServerOptionsAct.setWhatsThis(self.tr(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
124 """<b>Ask for Server Start Options</b>"""
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
125 """<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
126 """ 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
127 """ default parameters.</p>"""
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
128 ))
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
129 self.askForServerOptionsAct.setCheckable(True)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
130 self.actions.append(self.askForServerOptionsAct)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
131
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 ## shell action below ##
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
134 ###############################
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 self.runPythonShellAct = E5Action(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
137 self.tr('Start Flask Python Console'),
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 0, 0,
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
140 self, 'flask_python_console')
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
141 self.runPythonShellAct.setStatusTip(self.tr(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
142 'Starts an interactive Python interpreter'))
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
143 self.runPythonShellAct.setWhatsThis(self.tr(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
144 """<b>Start Flask Python Console</b>"""
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
145 """<p>Starts an interactive Python interpreter.</p>"""
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
146 ))
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
147 self.runPythonShellAct.triggered.connect(self.__runPythonShell)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
148 self.actions.append(self.runPythonShellAct)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
149
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
150 ################################
7
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
151 ## routes action below ##
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
152 ################################
7
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
153
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
154 self.showRoutesAct = E5Action(
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
155 self.tr('Show Routes'),
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 0, 0,
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
158 self, 'flask_show_routes')
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
159 self.showRoutesAct.setStatusTip(self.tr(
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
160 '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
161 self.showRoutesAct.setWhatsThis(self.tr(
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
162 """<b>Show Routes</b>"""
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
163 """<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
164 ))
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
165 self.showRoutesAct.triggered.connect(self.__showRoutes)
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
166 self.actions.append(self.showRoutesAct)
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
167
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
168 ##################################
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
169 ## database action below ##
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
170 ##################################
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
171
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
172 self.initDatabaseAct = E5Action(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
173 self.tr('Initialize Database'),
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
174 self.tr('&Initialize Database'),
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
175 0, 0,
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
176 self, 'flask_init_database')
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
177 self.initDatabaseAct.setStatusTip(self.tr(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
178 'Shows a dialog with the result of the database creation'))
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
179 self.initDatabaseAct.setWhatsThis(self.tr(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
180 """<b>Initialize Database</b>"""
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
181 """<p>Shows a dialog with the result of the database"""
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
182 """ creation.</p>"""
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
183 ))
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
184 self.initDatabaseAct.triggered.connect(self.__initDatabase)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
185 self.actions.append(self.initDatabaseAct)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
186
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
187 ##################################
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
188 ## pybabel action below ##
13
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
189 ##################################
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
190
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
191 self.pybabelConfigAct = E5Action(
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
192 self.tr('Configure PyBabel'),
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
193 self.tr('Configure Py&Babel'),
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
194 0, 0,
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
195 self, 'flask_config_pybabel')
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
196 self.pybabelConfigAct.setStatusTip(self.tr(
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
197 'Shows a dialog to edit the configuration for pybabel'))
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
198 self.pybabelConfigAct.setWhatsThis(self.tr(
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
199 """<b>Configure PyBabel</b>"""
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
200 """<p>Shows a dialog to edit the configuration for pybabel.</p>"""
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
201 ))
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
202 self.pybabelConfigAct.triggered.connect(
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
203 self.__pybabelProject.configurePyBabel)
13
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
204 self.actions.append(self.pybabelConfigAct)
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
205
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
206 ##################################
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
207 ## documentation action below ##
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
208 ##################################
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
209
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
210 self.documentationAct = E5Action(
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
211 self.tr('Documentation'),
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
212 self.tr('D&ocumentation'),
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
213 0, 0,
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
214 self, 'flask_documentation')
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
215 self.documentationAct.setStatusTip(self.tr(
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
216 '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
217 self.documentationAct.setWhatsThis(self.tr(
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
218 """<b>Documentation</b>"""
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
219 """<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
220 ))
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
221 self.documentationAct.triggered.connect(self.__showDocumentation)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
222 self.actions.append(self.documentationAct)
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 ##############################
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 ## about action below ##
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 ##############################
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 self.aboutFlaskAct = E5Action(
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 self.tr('About Flask'),
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 self.tr('About &Flask'),
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 0, 0,
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 self, 'flask_about')
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 self.aboutFlaskAct.setStatusTip(self.tr(
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 'Shows some information about Flask'))
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 self.aboutFlaskAct.setWhatsThis(self.tr(
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 """<b>About Flask</b>"""
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 """<p>Shows some information about Flask.</p>"""
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 ))
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 self.aboutFlaskAct.triggered.connect(self.__flaskInfo)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 self.actions.append(self.aboutFlaskAct)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 def initMenu(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 Public method to initialize the Flask menu.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 @return the menu generated
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 @rtype QMenu
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 self.__menus = {} # clear menus references
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 menu = QMenu(self.tr('&Flask'), self.__ui)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 menu.setTearOffEnabled(True)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
254 menu.addAction(self.runServerAct)
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
255 menu.addAction(self.runDevServerAct)
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
256 menu.addAction(self.askForServerOptionsAct)
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
257 menu.addSeparator()
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
258 menu.addAction(self.runPythonShellAct)
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
259 menu.addSeparator()
7
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
260 menu.addAction(self.showRoutesAct)
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
261 menu.addSeparator()
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
262 menu.addAction(self.initDatabaseAct)
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
263 menu.addSeparator()
13
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
264 menu.addAction(self.pybabelConfigAct)
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
265 menu.addSeparator()
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
266 menu.addAction(self.documentationAct)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
267 menu.addSeparator()
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 menu.addAction(self.aboutFlaskAct)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270 self.__menus["main"] = menu
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 return menu
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 def getMenu(self, name):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276 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
277
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278 @param name name of the menu
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279 @type str
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
280 @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
281 name exists
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
282 @rtype QMenu or None
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 if name in self.__menus:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
285 return self.__menus[name]
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286 else:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287 return None
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289 def getMenuNames(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291 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
292
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 @return menu names
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 @rtype list of str
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296 return list(self.__menus.keys())
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297
11
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
298 def projectOpenedHooks(self):
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
299 """
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
300 Public method to add our hook methods.
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
301 """
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
302 if self.__e5project.getProjectType() == "Flask":
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
303 # TODO: add some methods for standard templates
11
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
304 ## self.__formsBrowser = (
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
305 ## e5App().getObject("ProjectBrowser")
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
306 ## .getProjectBrowser("forms"))
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
307 ## self.__formsBrowser.addHookMethodAndMenuEntry(
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
308 ## "newForm", self.newForm, self.tr("New template..."))
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
309 ##
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
310 self.__determineCapabilities()
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
311
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
312 self.__pybabelProject.projectOpenedHooks()
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
313 ## self.__hooksInstalled = True
11
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
314
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
315 def projectClosedHooks(self):
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 Public method to remove our hook methods.
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
318 """
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
319 self.__pybabelProject.projectClosedHooks()
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
320
11
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
321 if self.__hooksInstalled:
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
322 ## self.__formsBrowser.removeHookMethod("newForm")
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
323 ## self.__formsBrowser = None
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
324 pass
11
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
325
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
326 self.__hooksInstalled = False
da6ef8ab8268 Started support for translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
327
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
328 ##################################################################
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
329 ## slots below implement general functionality
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
330 ##################################################################
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
331
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
332 def projectClosed(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
333 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
334 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
335 """
8
cfbd3a2757fd Finished implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
336 for dlg in (self.__serverDialog, self.__routesDialog):
cfbd3a2757fd Finished implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
337 if dlg is not None:
cfbd3a2757fd Finished implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
338 dlg.close()
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
340 def supportedPythonVariants(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
341 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
342 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
343
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
344 @return list of supported Python variants
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
345 @rtype list of str
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
347 variants = []
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
348
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
349 virtEnv = self.__getVirtualEnvironment()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
350 if virtEnv:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
351 fullCmd = self.getFlaskCommand()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
352 if fullCmd:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353 variants.append("Python3")
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
354 else:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
355 fullCmd = self.getFlaskCommand()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
356 if isWindowsPlatform():
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
357 if fullCmd:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
358 variants.append("Python3")
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
359 else:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
360 fullCmds = Utilities.getExecutablePaths("flask")
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
361 for fullCmd in fullCmds:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
362 try:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
363 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
364 l0 = f.readline()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
365 except (IOError, OSError):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
366 l0 = ""
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
367 if self.__isSuitableForVariant("Python3", l0):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
368 variants.append("Python3")
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
369 break
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
371 return variants
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
372
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
373 def __isSuitableForVariant(self, variant, line0):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
374 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375 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
376 given Python variant.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 @param variant Python variant to test for
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
379 @type str
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
380 @param line0 first line of the executable
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
381 @type str
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
382 @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
383 @rtype bool
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
384 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
385 l0 = line0.lower()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
386 ok = (variant.lower() in l0 or
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
387 "{0}.".format(variant[-1]) in l0)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
388 ok |= "pypy3" in l0
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
389
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
390 return ok
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
391
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
392 def __getVirtualEnvironment(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
393 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
394 Private method to get the path of the virtual environment.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
395
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
396 @return path of the virtual environment
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
397 @rtype str
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
398 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
399 language = self.__e5project.getProjectLanguage()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
400 if language == "Python3":
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
401 venvName = self.__plugin.getPreferences(
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
402 "VirtualEnvironmentNamePy3")
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
403 else:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
404 venvName = ""
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
405 if venvName:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
406 virtEnv = self.__virtualEnvManager.getVirtualenvDirectory(
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
407 venvName)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
408 else:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
409 virtEnv = ""
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
410
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
411 if virtEnv and not os.path.exists(virtEnv):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
412 virtEnv = ""
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
413
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
414 return virtEnv # __IGNORE_WARNING_M834__
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
415
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
416 def getFlaskCommand(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
417 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
418 Public method to build the Flask command.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
419
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
420 @return full flask command
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
421 @rtype str
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
422 """
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
423 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
424
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
425 def getFullCommand(self, command):
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
426 """
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
427 Public method to get the full command for a given command name.
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
428
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
429 @param command command name
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
430 @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
431 @return full command
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
432 @rtype 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
433 """
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
434 virtualEnv = self.__getVirtualEnvironment()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
435 if isWindowsPlatform():
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
436 fullCmds = [
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
437 os.path.join(virtualEnv, "Scripts", command + '.exe'),
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
438 os.path.join(virtualEnv, "bin", command + '.exe'),
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
439 command # fall back to just cmd
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
440 ]
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
441 else:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
442 fullCmds = [
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
443 os.path.join(virtualEnv, "bin", command),
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
444 os.path.join(virtualEnv, "local", "bin", command),
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
445 Utilities.getExecutablePath(command),
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
446 command # fall back to just cmd
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
447 ]
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
448 for command in fullCmds:
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
449 if os.path.exists(command):
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
450 break
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
451 return command
2
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 @pyqtSlot()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
454 def __flaskInfo(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
455 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
456 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
457 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
458 versions = self.getFlaskVersionStrings()
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
459 url = "https://palletsprojects.com/p/flask/"
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 msgBox = E5MessageBox.E5MessageBox(
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
462 E5MessageBox.Question,
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
463 self.tr("About Flask"),
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
464 self.tr(
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
465 "<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
466 " 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
467 " 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
468 "<p><table>"
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
469 "<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
470 "<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
471 "<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
472 "<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
473 "The Pallets Projects - Flask</a></td></tr>"
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
474 "</table></p>"
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
475 ).format(versions["flask"], versions["werkzeug"],
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
476 versions["python"], url),
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
477 modal=True,
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
478 buttons=E5MessageBox.Ok)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
479 msgBox.setIconPixmap(UI.PixmapCache.getPixmap(
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
480 os.path.join("ProjectFlask", "icons",
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
481 "flask64-{0}".format(self.__iconSuffix))))
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
482 msgBox.exec()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
483
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
484 def getFlaskVersionStrings(self):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
485 """
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
486 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
487 string.
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
488
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
489 @return 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
490 @rtype dict
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 if not self.__flaskVersions["flask"]:
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
493 cmd = self.getFlaskCommand()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
494 proc = QProcess()
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
495 proc.start(cmd, ["--version"])
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
496 if proc.waitForFinished(10000):
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
497 output = str(proc.readAllStandardOutput(), "utf-8")
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
498 for line in output.lower().splitlines():
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
499 key, version = line.strip().split(None, 1)
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
500 self.__flaskVersions[key] = version
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
501
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
502 return self.__flaskVersions
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
503
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
504 def prepareRuntimeEnvironment(self, development=False):
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
505 """
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
506 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
507 the appropriate working directory.
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
508
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
509 @param development flag indicating development mode
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
510 @type bool
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
511 @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
512 environment object to be used with QProcess
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
513 @rtype tuple of (str, QProcessEnvironment)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
514 """
14
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
515 workdir, app = self.getApplication()
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
516 env = QProcessEnvironment.systemEnvironment()
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
517 env.insert("FLASK_APP", app)
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
518 if development:
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
519 env.insert("FLASK_ENV", "development")
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
520
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
521 return workdir, env
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
522
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
523 def getApplication(self):
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
524 """
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
525 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
526 working directory.
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
527
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
528 @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
529 @rtype tuple of (str, str)
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
530 """
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
531 mainScript = self.__e5project.getMainScript(normalized=True)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
532 if not mainScript:
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
533 E5MessageBox.critical(
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
534 self.__ui,
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
535 self.tr("Prepare Environment"),
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
536 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
537 """ (= Flask application). Aborting..."""))
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
538 return "", None
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
539
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
540 scriptPath, scriptName = os.path.split(mainScript)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
541 if scriptName == "__init__.py":
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
542 workdir, app = os.path.split(scriptPath)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
543 else:
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
544 workdir, app = scriptPath, scriptName
14
d2da14b2a233 Continued implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
545 return workdir, app
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
546
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
547 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
548 """
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
549 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
550
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
551 @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
552 @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
553 @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
554 @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
555 @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
556 @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
557 """
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
558 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
559 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
560
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
561 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
562 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
563 "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
564 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
565 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
566
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
567 data = self.__projectData[category]
13
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
568 if not key:
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
569 # return complete category dictionary
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
570 return data
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
571 elif key in data:
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
572 # 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
573 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
574 else:
13
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
575 # 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
576 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
577
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
578 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
579 """
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
580 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
581
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
582 @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
583 @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
584 @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
585 @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
586 @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
587 @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
588 """
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
589 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
590 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
591
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
592 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
593 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
594 "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
595 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
596 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
597
13
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
598 if not key:
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
599 # update the complete category
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
600 self.__projectData[category] = value
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
601 else:
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
602 # update individual entry
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
603 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
604
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
605 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
606 "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
607
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
608 def __determineCapabilities(self):
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
609 """
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
610 Private method to determine capabilities provided by supported
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
611 extensions.
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
612 """
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
613 # 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
614 self.__pybabelProject.determineCapability()
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
615 self.pybabelConfigAct.setEnabled(self.hasCapability("pybabel"))
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
616
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
617 # 2. support for flask-migrate
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
618 # TODO: add support for flask-migrate
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
619
17
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
620 def hasCapability(self, key):
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
621 """
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
622 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
623
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
624 @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
625 @type str
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
626 @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
627 @rtype bool
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
628 """
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
629 try:
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
630 return self.__capabilities[key]
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
631 except KeyError:
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
632 return False
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
633
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
634 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
635 """
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
636 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
637
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
638 @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
639 @type str
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
640 @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
641 @type bool
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
642 """
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
643 self.__capabilities[key] = available
f31df56510a1 Moved the flask-babel support into its own package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 16
diff changeset
644
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
645 ##################################################################
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
646 ## slot below implements project specific flask configuration
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
647 ##################################################################
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
648
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
649 @pyqtSlot()
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
650 def __configureFlaskForProject(self):
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
651 """
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
652 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
653 """
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
654 # TODO: implement the flask project config dialog
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
655 # 1. check boxes to override flask-babel and flask-migrate
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
656 # 2. support for project specific virtual environment
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
657
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
658 ##################################################################
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
659 ## slot below implements documentation function
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
660 ##################################################################
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
661
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
662 def __showDocumentation(self):
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
663 """
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
664 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
665 """
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
666 page = self.__plugin.getPreferences("FlaskDocUrl")
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
667 self.__ui.launchHelpViewer(page)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
668
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
669 ##################################################################
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
670 ## 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
671 ##################################################################
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
672
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
673 @pyqtSlot()
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
674 def __runServer(self, development=False):
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
675 """
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
676 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
677
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
678 @param development flag indicating development mode
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
679 @type bool
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
680 """
13
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
681 from .RunServerDialog import RunServerDialog
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
682
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
683 if self.__serverDialog is not None:
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
684 self.__serverDialog.close()
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
685
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
686 askForOptions = self.askForServerOptionsAct.isChecked()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
687 dlg = RunServerDialog(self.__plugin, self)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
688 if dlg.startServer(development=development,
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
689 askForOptions=askForOptions):
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
690 dlg.show()
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
691 self.__serverDialog = dlg
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
692
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
693 @pyqtSlot()
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
694 def __runDevelopmentServer(self):
2
6cc80e4db8a7 Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
695 """
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
696 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
697 """
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
698 self.__runServer(development=True)
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
699
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
700 ##################################################################
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
701 ## slots below implement functions for the flask console
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
702 ##################################################################
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3
diff changeset
703
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
704 @pyqtSlot()
3
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
705 def __runPythonShell(self):
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
706 """
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
707 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
708 """
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
709 workdir, env = self.prepareRuntimeEnvironment()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
710 if env is not None:
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
711 command = self.getFlaskCommand()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
712
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
713 consoleCmd = self.__plugin.getPreferences("ConsoleCommand")
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
714 if consoleCmd:
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
715 self.__terminatePythonShell()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
716
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
717 args = Utilities.parseOptionString(consoleCmd)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
718 args[0] = Utilities.getExecutablePath(args[0])
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
719 args += [command, "shell"]
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
720
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
721 self.__shellProcess = QProcess()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
722 self.__shellProcess.setProcessEnvironment(env)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
723 self.__shellProcess.setWorkingDirectory(workdir)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
724 self.__shellProcess.finished.connect(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
725 self.__shellProcessFinished)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
726
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
727 self.__shellProcess.start(args[0], args[1:])
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
728 self.__shellProcess.waitForStarted(10000)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
729
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
730 @pyqtSlot()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
731 def __shellProcessFinished(self):
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
732 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
733 Private slot connected to the finished signal.
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
734 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
735 self.__shellProcess = None
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
736
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
737 def __terminatePythonShell(self):
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
738 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
739 Private method to terminate the current Python console.
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
740 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
741 if (
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
742 self.__shellProcess is not None and
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
743 self.__shellProcess.state() != QProcess.NotRunning
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
744 ):
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
745 self.__shellProcess.terminate()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
746 QTimer.singleShot(2000, self.__shellProcess.kill)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
747 self.__shellProcess.waitForFinished(3000)
3
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
748
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
749 ##################################################################
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
750 ## slots below implement various debugging functions
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
751 ##################################################################
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
752
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
753 @pyqtSlot()
3
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
754 def __showRoutes(self):
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
755 """
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
756 Private slot showing all URL dispatch routes.
265c3c2914e2 Added some TODO markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
757 """
13
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
758 from .RoutesDialog import RoutesDialog
ed33cdfca13d Started implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 12
diff changeset
759
7
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
760 if self.__routesDialog is not None:
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
761 self.__routesDialog.close()
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
762
8
cfbd3a2757fd Finished implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
763 dlg = RoutesDialog(self)
cfbd3a2757fd Finished implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
764 if dlg.showRoutes():
7
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
765 dlg.show()
a140b2a8ba93 Started implementing the "flask routes" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
766 self.__routesDialog = dlg
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
767
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
768 # TODO: replace this by commands made by flask-migrate (flask db ...)
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
769 @pyqtSlot()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
770 def __initDatabase(self):
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
771 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
772 Private slot showing the result of the database creation.
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
773 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
774 dlg = FlaskCommandDialog(self)
16
dd3f6bfb85f7 Done implementing pybabel translations support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 15
diff changeset
775 if dlg.startCommand("init-db"):
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8
diff changeset
776 dlg.exec()

eric ide

mercurial