ProjectFlask/Project.py

Tue, 17 Nov 2020 19:49:24 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 17 Nov 2020 19:49:24 +0100
changeset 12
68ee221cd0cb
parent 11
da6ef8ab8268
child 13
ed33cdfca13d
permissions
-rw-r--r--

Added some utility methods to determine executable paths and get/set project type specific data.

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

eric ide

mercurial