Sun, 08 Nov 2020 17:54:22 +0100
Added code for the basic project support.
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 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | from PyQt5.QtCore import pyqtSlot, QObject, QProcess, QTimer |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | from PyQt5.QtWidgets import QMenu |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | from E5Gui import E5MessageBox |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | from E5Gui.E5Action import E5Action |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | from E5Gui.E5Application import e5App |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | from Globals import isWindowsPlatform |
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 | import UI.PixmapCache |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | import Utilities |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | class Project(QObject): |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | """ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | Class implementing the Flask project support. |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | """ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | def __init__(self, plugin, iconSuffix, parent=None): |
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 | Constructor |
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 | @param plugin reference to the plugin object |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | @type ProjectFlaskPlugin |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | @param iconSuffix suffix for the icons |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | @type str |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | @param parent parent |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | @type QObject |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | """ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | super(Project, self).__init__(parent) |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | self.__plugin = plugin |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | self.__iconSuffix = iconSuffix |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | self.__ui = parent |
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 | self.__e5project = e5App().getObject("Project") |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | self.__virtualEnvManager = e5App().getObject("VirtualEnvManager") |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | self.__menus = {} # dictionary with references to menus |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | self.__serverProc = None |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | self.__flaskVersions = { |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | "python": "", |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | "flask": "", |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | "werkzeug": "", |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | } |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | def initActions(self): |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | """ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | Public method to define the Flask actions. |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | """ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | self.actions = [] |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | ############################## |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | ## about action below ## |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | ############################## |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | self.aboutFlaskAct = E5Action( |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | self.tr('About Flask'), |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | self.tr('About &Flask'), |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | 0, 0, |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | self, 'flask_about') |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | self.aboutFlaskAct.setStatusTip(self.tr( |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | 'Shows some information about Flask')) |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | self.aboutFlaskAct.setWhatsThis(self.tr( |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | """<b>About Flask</b>""" |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | """<p>Shows some information about Flask.</p>""" |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | )) |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | self.aboutFlaskAct.triggered.connect(self.__flaskInfo) |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | self.actions.append(self.aboutFlaskAct) |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | def initMenu(self): |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | """ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | Public method to initialize the Flask menu. |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | @return the menu generated |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | @rtype QMenu |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | """ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | self.__menus = {} # clear menus references |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | menu = QMenu(self.tr('&Flask'), self.__ui) |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | menu.setTearOffEnabled(True) |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | menu.addAction(self.aboutFlaskAct) |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | self.__menus["main"] = menu |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | return menu |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | def getMenu(self, name): |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | """ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | 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
|
104 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | @param name name of the menu |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | @type str |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | @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
|
108 | name exists |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | @rtype QMenu or None |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | """ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | if name in self.__menus: |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | return self.__menus[name] |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | else: |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | return None |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | def getMenuNames(self): |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | """ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | 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
|
119 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | @return menu names |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | @rtype list of str |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | """ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | return list(self.__menus.keys()) |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | ################################################################## |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | ## slots below implement general functionality |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | ################################################################## |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | def projectClosed(self): |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | """ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | 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
|
132 | """ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | if self.__serverProc is not None: |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | self.__serverProcFinished() |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | # TODO: implement this correctly |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | def supportedPythonVariants(self): |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | """ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | 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
|
140 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | @return list of supported Python variants |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | @rtype list of str |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | """ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | variants = [] |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | virtEnv = self.__getVirtualEnvironment() |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | if virtEnv: |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | fullCmd = self.getFlaskCommand() |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | if fullCmd: |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | variants.append("Python3") |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | else: |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | fullCmd = self.getFlaskCommand() |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | if isWindowsPlatform(): |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | if fullCmd: |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155 | variants.append("Python3") |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | else: |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | fullCmds = Utilities.getExecutablePaths("flask") |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158 | for fullCmd in fullCmds: |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | try: |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | 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
|
161 | l0 = f.readline() |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162 | except (IOError, OSError): |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | l0 = "" |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | if self.__isSuitableForVariant("Python3", l0): |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | variants.append("Python3") |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166 | break |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | return variants |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170 | def __isSuitableForVariant(self, variant, line0): |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
171 | """ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172 | 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
|
173 | given Python variant. |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175 | @param variant Python variant to test for |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
176 | @type str |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
177 | @param line0 first line of the executable |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
178 | @type str |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179 | @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
|
180 | @rtype bool |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181 | """ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182 | l0 = line0.lower() |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | ok = (variant.lower() in l0 or |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184 | "{0}.".format(variant[-1]) in l0) |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | ok |= "pypy3" in l0 |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187 | return ok |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | def __getVirtualEnvironment(self): |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
190 | """ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
191 | 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
|
192 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
193 | @return path of the virtual environment |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194 | @rtype str |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195 | """ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
196 | language = self.__e5project.getProjectLanguage() |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
197 | if language == "Python3": |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
198 | venvName = self.__plugin.getPreferences( |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
199 | "VirtualEnvironmentNamePy3") |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
200 | else: |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
201 | venvName = "" |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
202 | if venvName: |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
203 | virtEnv = self.__virtualEnvManager.getVirtualenvDirectory( |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
204 | venvName) |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
205 | else: |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
206 | virtEnv = "" |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
207 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
208 | 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
|
209 | virtEnv = "" |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
210 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
211 | return virtEnv # __IGNORE_WARNING_M834__ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
212 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
213 | def getFlaskCommand(self): |
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 | Public method to build the Flask command. |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
216 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
217 | @return full flask command |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
218 | @rtype str |
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 | cmd = "flask" |
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 | virtualEnv = self.__getVirtualEnvironment() |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
223 | if isWindowsPlatform(): |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
224 | fullCmds = [ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
225 | os.path.join(virtualEnv, "Scripts", cmd + '.exe'), |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
226 | os.path.join(virtualEnv, "bin", cmd + '.exe'), |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
227 | cmd # fall back to just cmd |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
228 | ] |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
229 | for cmd in fullCmds: |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
230 | if os.path.exists(cmd): |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
231 | break |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
232 | else: |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
233 | fullCmds = [ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
234 | os.path.join(virtualEnv, "bin", cmd), |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
235 | os.path.join(virtualEnv, "local", "bin", cmd), |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
236 | Utilities.getExecutablePath(cmd), |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
237 | cmd # fall back to just cmd |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
238 | ] |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
239 | for cmd in fullCmds: |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
240 | if os.path.exists(cmd): |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
241 | break |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
242 | return cmd |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
243 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
244 | @pyqtSlot() |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
245 | def __flaskInfo(self): |
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 | 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
|
248 | """ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
249 | versions = self.getFlaskVersionStrings() |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
250 | url = "https://flask.palletsprojects.com" |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
251 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
252 | msgBox = E5MessageBox.E5MessageBox( |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
253 | E5MessageBox.Question, |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
254 | self.tr("About Flask"), |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
255 | self.tr( |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
256 | "<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
|
257 | " 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
|
258 | " 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
|
259 | "<p><table>" |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
260 | "<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
|
261 | "<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
|
262 | "<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
|
263 | "<tr><td>Flask URL:</td><td><a href=\"{3}\">" |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
264 | "{3}</a></td></tr>" |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
265 | "</table></p>" |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
266 | ).format(versions["flask"], versions["werkzeug"], |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
267 | versions["python"], url), |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
268 | modal=True, |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
269 | buttons=E5MessageBox.Ok) |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
270 | msgBox.setIconPixmap(UI.PixmapCache.getPixmap( |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
271 | os.path.join("ProjectFlask", "icons", |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
272 | "flask64-{0}".format(self.__iconSuffix)))) |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
273 | msgBox.exec() |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
274 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
275 | def getFlaskVersionStrings(self): |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
276 | """ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
277 | 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
|
278 | string. |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
279 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
280 | @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
|
281 | @rtype dict |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
282 | """ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
283 | if not self.__flaskVersions["flask"]: |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
284 | cmd = self.getFlaskCommand() |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
285 | proc = QProcess() |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
286 | proc.start(cmd, ["--version"]) |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
287 | if proc.waitForFinished(10000): |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
288 | output = str(proc.readAllStandardOutput(), "utf-8") |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
289 | for line in output.lower().splitlines(): |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
290 | key, version = line.strip().split(None, 1) |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
291 | self.__flaskVersions[key] = version |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
292 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
293 | return self.__flaskVersions |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
294 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
295 | ################################################################## |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
296 | ## slots below implement run functions |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
297 | ################################################################## |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
298 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
299 | def __runServer(self, logging=False): |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
300 | """ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
301 | Private slot to start the Pyramid Web server. |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
302 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
303 | @param logging flag indicating to enable logging |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
304 | @type bool |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
305 | """ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
306 | # TODO: implement this |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
307 | |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
308 | def __serverProcFinished(self): |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
309 | """ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
310 | Private slot connected to the finished signal. |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
311 | """ |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
312 | if ( |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
313 | self.__serverProc is not None and |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
314 | self.__serverProc.state() != QProcess.NotRunning |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
315 | ): |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
316 | self.__serverProc.terminate() |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
317 | QTimer.singleShot(2000, self.__serverProc.kill) |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
318 | self.__serverProc.waitForFinished(3000) |
6cc80e4db8a7
Added code for the basic project support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
319 | self.__serverProc = None |