ProjectFlask/RunServerDialog.py

Sun, 15 Nov 2020 17:35:48 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 15 Nov 2020 17:35:48 +0100
changeset 10
506c78268b18
parent 9
79094fb72c18
child 11
da6ef8ab8268
permissions
-rw-r--r--

Added a few more server start options.

4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de>
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a dialog to run the Flask server.
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
5
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
10 import re
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
11
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
12 from PyQt5.QtCore import pyqtSlot, Qt, QProcess, QTimer
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
13 from PyQt5.QtGui import QTextCharFormat
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
14 from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QMenu
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 from E5Gui import E5MessageBox
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
17 from E5Gui.E5Application import e5App
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 from .Ui_RunServerDialog import Ui_RunServerDialog
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
21 from . import AnsiTools
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
22 from .ServerStartOptionsDialog import ServerStartOptionsDialog
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
23
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
24 import UI.PixmapCache
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
26
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
27 # TODO: should this be placed into the sidebar as a sidebar widget?
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 class RunServerDialog(QDialog, Ui_RunServerDialog):
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 """
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 Class implementing a dialog to run the Flask server.
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 """
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
32 def __init__(self, plugin, project, parent=None):
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 """
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 Constructor
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
36 @param plugin reference to the plug-in object
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
37 @type PluginProjectFlask
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
38 @param project reference to the project object
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
39 @type Project
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 @param parent reference to the parent widget
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 @type QWidget
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 """
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 super(RunServerDialog, self).__init__(parent)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 self.setupUi(self)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
46 self.__plugin = plugin
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
47 self.__project = project
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
48
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
49 self.__serverOptions = {
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
50 "development": False
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
51 }
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
53 self.__process = None
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
54 self.__serverUrl = ""
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
55
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
56 self.__ansiRe = re.compile("(\\x1b\[\d+m)")
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
57
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
58 self.__urlRe = re.compile(r""" * Running on ([^(]+) \(.*""")
5
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
59
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 self.buttonBox.button(QDialogButtonBox.Close).setEnabled(True)
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 self.buttonBox.button(QDialogButtonBox.Close).setDefault(True)
5
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
62
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
63 self.__defaultTextFormat = self.outputEdit.currentCharFormat()
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
64
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
65 self.__initActionsMenu()
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
67 def __initActionsMenu(self):
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
68 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
69 Private method to populate the actions button menu.
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
70 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
71 self.__actionsMenu = QMenu()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
72 self.__actionsMenu.setTearOffEnabled(True)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
73 self.__actionsMenu.setToolTipsVisible(True)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
74 self.__actionsMenu.aboutToShow.connect(self.__showActionsMenu)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
75
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
76 # re-start server
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
77 self.__actionsMenu.addAction(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
78 self.tr("Re-start Server"), self.__restartServer)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
79 self.__restartModeAct = self.__actionsMenu.addAction(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
80 self.tr("Re-start Server"), self.__restartServerDifferentMode)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
81 self.__actionsMenu.addSeparator()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
82 self.__actionsMenu.addAction(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
83 self.tr("Re-start Server with Options"),
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
84 self.__restartServerWithOptions)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
85 # start server with options
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
86
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
87 self.menuButton.setIcon(UI.PixmapCache.getIcon("actionsToolButton"))
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
88 self.menuButton.setMenu(self.__actionsMenu)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
89
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
90 @pyqtSlot()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
91 def __showActionsMenu(self):
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
92 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
93 Private slot handling the actions menu about to be shown.
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
94 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
95 if self.__serverOptions["development"]:
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
96 self.__restartModeAct.setText(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
97 self.tr("Re-start Server (Production Mode)"))
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
98 else:
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
99 self.__restartModeAct.setText(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
100 self.tr("Re-start Server (Development Mode)"))
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
101
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
102 def startServer(self, development=False, restart=False,
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
103 askForOptions=False):
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 """
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 Public method to start the Flask server process.
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
107 @param development flag indicating development mode
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
108 @type bool
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
109 @return flag indicating success
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 @rtype bool
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 """
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
112 self.__serverOptions["development"] = development
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
113
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
114 if askForOptions:
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
115 dlg = ServerStartOptionsDialog(self.__serverOptions)
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
116 if dlg.exec() != QDialog.Accepted:
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
117 return False
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
118
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
119 self.__serverOptions.update(dlg.getDataDict())
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
120
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
121 workdir, env = self.__project.prepareRuntimeEnvironment(
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
122 development=self.__serverOptions["development"])
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
123 if env is not None:
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
124 command = self.__project.getFlaskCommand()
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
125
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
126 self.__process = QProcess()
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
127 self.__process.setProcessEnvironment(env)
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
128 self.__process.setWorkingDirectory(workdir)
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
129 self.__process.setProcessChannelMode(QProcess.MergedChannels)
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
130
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
131 self.__process.readyReadStandardOutput.connect(self.__readStdOut)
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
132 self.__process.finished.connect(self.__processFinished)
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
133
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
134 self.outputEdit.clear()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
135
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
136 args = ["run"]
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
137 if "host" in self.__serverOptions and self.__serverOptions["host"]:
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
138 args += ["--host", self.__serverOptions["host"]]
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
139 if "port" in self.__serverOptions and self.__serverOptions["port"]:
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
140 args += ["--port", self.__serverOptions["port"]]
10
506c78268b18 Added a few more server start options.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
141 if "cert" in self.__serverOptions and self.__serverOptions["cert"]:
506c78268b18 Added a few more server start options.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
142 args += ["--cert", self.__serverOptions["cert"]]
506c78268b18 Added a few more server start options.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
143 if "key" in self.__serverOptions and self.__serverOptions["key"]:
506c78268b18 Added a few more server start options.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9
diff changeset
144 args += ["--key", self.__serverOptions["key"]]
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
145
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
146 self.__process.start(command, args)
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
147 ok = self.__process.waitForStarted(10000)
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
148 if not ok:
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
149 E5MessageBox.critical(
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
150 None,
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
151 self.tr("Run Flask Server"),
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
152 self.tr("""The Flask server process could not be"""
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
153 """ started."""))
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
154 else:
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
155 self.buttonBox.button(QDialogButtonBox.Close).setEnabled(False)
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
156 self.stopServerButton.setEnabled(True)
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
157 self.stopServerButton.setDefault(True)
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
158 self.startBrowserButton.setEnabled(True)
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 else:
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
160 ok = False
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 return ok
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 def closeEvent(self, evt):
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 """
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
166 Protected method handling a close event.
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 @param evt reference to the close event
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 @type QCloseEvent
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 """
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
171 self.on_stopServerButton_clicked()
5
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
172 evt.accept()
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 @pyqtSlot()
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 def __readStdOut(self):
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 """
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 Private slot to add the server process output to the output pane.
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 """
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 if self.__process is not None:
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 out = str(self.__process.readAllStandardOutput(), "utf-8")
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
181 if not self.__serverUrl:
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
182 urlMatch = self.__urlRe.search(out)
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
183 if urlMatch:
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
184 self.__serverUrl = urlMatch.group(1)
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
185
5
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
186 for txt in self.__ansiRe.split(out):
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
187 if txt.startswith("\x1b["):
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
188 color = int(txt[2:-1]) # strip off ANSI command parts
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
189 if color == 0:
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
190 self.outputEdit.setCurrentCharFormat(
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
191 self.__defaultTextFormat)
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
192 elif 30 <= color <= 37:
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
193 brush = AnsiTools.getColor(
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
194 self.__plugin.getPreferences("AnsiColorScheme"),
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
195 color - 30)
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
196 if brush is not None:
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
197 charFormat = QTextCharFormat(
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
198 self.__defaultTextFormat)
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
199 charFormat.setForeground(brush)
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
200 self.outputEdit.setCurrentCharFormat(charFormat)
5
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
201 else:
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
202 self.outputEdit.insertPlainText(txt)
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 @pyqtSlot()
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 def __processFinished(self):
5
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
206 """
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
207 Private slot handling the finishing of the server process.
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
208 """
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
209 if (
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
210 self.__process is not None and
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
211 self.__process.state() != QProcess.NotRunning
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
212 ):
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
213 self.__process.terminate()
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
214 QTimer.singleShot(2000, self.__process.kill)
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
215 self.__process.waitForFinished(3000)
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
216
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
217 self.__process = None
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
218
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
219 self.startBrowserButton.setEnabled(False)
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
220 self.stopServerButton.setEnabled(False)
5
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
221 self.buttonBox.button(QDialogButtonBox.Close).setEnabled(True)
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
222 self.buttonBox.button(QDialogButtonBox.Close).setDefault(True)
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
223 self.buttonBox.button(QDialogButtonBox.Close).setFocus(
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
224 Qt.OtherFocusReason)
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 @pyqtSlot()
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
227 def on_stopServerButton_clicked(self):
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 """
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
229 Private slot to stop the running server.
4
e164b9ad3819 Started implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 """
5
550e5ea385cb Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4
diff changeset
231 self.__processFinished()
6
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
232
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
233 @pyqtSlot()
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
234 def on_startBrowserButton_clicked(self):
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
235 """
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
236 Private slot to start a web browser with the server URL.
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
237 """
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
238 if self.__plugin.getPreferences("UseExternalBrowser"):
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
239 import webbrowser
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
240 webbrowser.open(self.__serverUrl)
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
241 else:
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
242 e5App().getObject("UserInterface").launchHelpViewer(
d491ccab7343 Continued implementing the "Run Server" function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
243 self.__serverUrl)
9
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
244
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
245 @pyqtSlot()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
246 def __restartServer(self):
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
247 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
248 Private slot to restart the server process.
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
249 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
250 # step 1: stop the current server
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
251 self.on_stopServerButton_clicked()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
252
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
253 # step 2: start a new server
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
254 self.startServer(development=self.__serverOptions["development"])
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
255
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
256 @pyqtSlot()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
257 def __restartServerDifferentMode(self):
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
258 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
259 Private slot to restart the server process with the opposite mode.
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
260 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
261 # step 1: stop the current server
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
262 self.on_stopServerButton_clicked()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
263
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
264 # step 2: start a new server
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
265 self.startServer(development=not self.__serverOptions["development"])
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
266 @pyqtSlot()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
267 def __restartServerWithOptions(self):
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
268 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
269 Private slot to restart the server asking for start options.
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
270 """
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
271 # step 1: stop the current server
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
272 self.on_stopServerButton_clicked()
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
273
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
274 # step 2: start a new server
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
275 self.startServer(development=self.__serverOptions["development"],
79094fb72c18 Continued implementing various flask actions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6
diff changeset
276 askForOptions=True)

eric ide

mercurial