ProjectDjango/DjangoDialog.py

Sun, 22 Nov 2020 16:23:02 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 22 Nov 2020 16:23:02 +0100
changeset 167
09aa216b3046
parent 165
80afe6639c6c
child 168
c6182aab51e9
permissions
-rw-r--r--

Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.

1
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
145
104b14713e9e Updated copyright for 2020.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 142
diff changeset
3 # Copyright (c) 2013 - 2020 Detlev Offenbach <detlev@die-offenbachs.de>
1
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a dialog starting a process and showing its output.
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
102
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
10 import os
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
11
51
0b60dbff8e9a Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
12 from PyQt5.QtCore import pyqtSlot, QProcess, QTimer, QFileInfo
161
208fced62e00 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 145
diff changeset
13 from PyQt5.QtWidgets import (
208fced62e00 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 145
diff changeset
14 QDialog, QDialogButtonBox, QAbstractButton, QTextEdit, QLineEdit
208fced62e00 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 145
diff changeset
15 )
1
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 from E5Gui import E5MessageBox, E5FileDialog
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 from .Ui_DjangoDialog import Ui_DjangoDialog
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 import Preferences
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
140
a6c1fcaa2617 DjangoDialog: fixed a bug causing sending some input to the Django process to fail.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 125
diff changeset
23 from Globals import isWindowsPlatform, strToQByteArray
1
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 class DjangoDialog(QDialog, Ui_DjangoDialog):
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 """
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 Class implementing a dialog starting a process and showing its output.
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 It starts a QProcess and displays a dialog that
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 shows the output of the process. The dialog is modal,
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 which causes a synchronized execution of the process.
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 """
6
80815349eef4 Fixed PEP-8 related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
34 def __init__(self, text, fixed=False, linewrap=True,
80815349eef4 Fixed PEP-8 related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
35 msgSuccess=None, msgError=None,
102
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
36 saveFilters=None, showInput=False,
6
80815349eef4 Fixed PEP-8 related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
37 parent=None):
1
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 """
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 Constructor
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 @param text text to be shown by the label (string)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 @keyparam fixed flag indicating a fixed font should be used (boolean)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 @keyparam linewrap flag indicating to wrap long lines (boolean)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 @keyparam msgSuccess optional string to show upon successful execution
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 (string)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 @keyparam msgError optional string to show upon unsuccessful execution
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 (string)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 @keyparam saveFilters filename filter string (string)
102
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
49 @keyparam showInput flag indicating to show the input widgets (bool)
1
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 @keyparam parent parent widget (QWidget)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 """
26
2dd206cd1aa2 Python 2 compatibility for Eric 5.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6
diff changeset
52 super(DjangoDialog, self).__init__(parent)
1
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 self.setupUi(self)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 self.buttonBox.button(QDialogButtonBox.Close).setEnabled(False)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 self.buttonBox.button(QDialogButtonBox.Cancel).setDefault(True)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 self.buttonBox.button(QDialogButtonBox.Save).setEnabled(False)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 if saveFilters is None:
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 self.buttonBox.button(QDialogButtonBox.Save).setHidden(True)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 self.ioEncoding = Preferences.getSystem("IOEncoding")
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 self.proc = None
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 self.argsLists = []
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 self.workingDir = None
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 self.mergedOutput = False
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 self.msgSuccess = msgSuccess
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 self.msgError = msgError
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 self.fileFilters = saveFilters
102
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
70 self.showInput = showInput
125
d280acf98fb5 - additions for Django > 1.9.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 121
diff changeset
71 self.intercept = False
1
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 self.outputGroup.setTitle(text)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 if fixed:
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 if isWindowsPlatform():
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 self.resultbox.setFontFamily("Lucida Console")
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 else:
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 self.resultbox.setFontFamily("Monospace")
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 if not linewrap:
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 self.resultbox.setLineWrapMode(QTextEdit.NoWrap)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 @pyqtSlot(QAbstractButton)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 def on_buttonBox_clicked(self, button):
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 """
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 Private slot called by a button of the button box clicked.
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 @param button button that was clicked (QAbstractButton)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 """
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 if button == self.buttonBox.button(QDialogButtonBox.Close):
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 self.close()
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 elif button == self.buttonBox.button(QDialogButtonBox.Cancel):
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 self.__finish()
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 elif button == self.buttonBox.button(QDialogButtonBox.Save):
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 self.__saveData()
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 def __finish(self):
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 """
29
76d04dd67367 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
100 Private slot called when the process finished or the user pressed the
76d04dd67367 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
101 button.
1
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 """
161
208fced62e00 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 145
diff changeset
103 if (
208fced62e00 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 145
diff changeset
104 self.proc is not None and
208fced62e00 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 145
diff changeset
105 self.proc.state() != QProcess.NotRunning
208fced62e00 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 145
diff changeset
106 ):
1
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 self.proc.terminate()
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 QTimer.singleShot(2000, self.proc.kill)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 self.proc.waitForFinished(3000)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 self.buttonBox.button(QDialogButtonBox.Close).setEnabled(True)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 self.buttonBox.button(QDialogButtonBox.Cancel).setEnabled(False)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 self.buttonBox.button(QDialogButtonBox.Close).setDefault(True)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 self.buttonBox.button(QDialogButtonBox.Save).setEnabled(True)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115
102
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
116 self.inputGroup.setEnabled(False)
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
117 self.inputGroup.hide()
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
118
1
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 self.proc = None
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 if self.argsLists:
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 args = self.argsLists[0][:]
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 del self.argsLists[0]
29
76d04dd67367 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
124 self.startProcess(args, self.workingDir,
76d04dd67367 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
125 mergedOutput=self.mergedOutput)
1
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 def __procFinished(self, exitCode, exitStatus):
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 """
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 Private slot connected to the finished signal.
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 @param exitCode exit code of the process (integer)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 @param exitStatus exit status of the process (QProcess.ExitStatus)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 """
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 self.normal = (exitStatus == QProcess.NormalExit) and (exitCode == 0)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 self.__finish()
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 if self.normal and self.msgSuccess:
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 self.resultbox.insertPlainText(self.msgSuccess)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 elif not self.normal and self.msgError:
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 self.resultbox.insertPlainText(self.msgError)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 self.errorGroup.show()
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 self.resultbox.ensureCursorVisible()
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143
6
80815349eef4 Fixed PEP-8 related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
144 def startProcess(self, args, workingDir=None, showCommand=True,
80815349eef4 Fixed PEP-8 related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
145 mergedOutput=False):
1
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 """
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 Public slot used to start the process.
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 @param args list of arguments for the process (list of strings)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 @param workingDir working directory for the process (string)
29
76d04dd67367 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
151 @param showCommand flag indicating to show the command executed
76d04dd67367 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
152 (boolean)
76d04dd67367 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
153 @param mergedOutput flag indicating to merge the output of the process
76d04dd67367 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
154 (boolean)
1
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 @return flag indicating a successful start of the process (boolean)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 """
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 self.errorGroup.hide()
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 self.normal = False
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 self.proc = QProcess()
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 if mergedOutput:
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 self.proc.setProcessChannelMode(QProcess.MergedChannels)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 if showCommand:
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 self.resultbox.append(' '.join(args))
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 self.resultbox.append('')
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 self.proc.finished.connect(self.__procFinished)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 self.proc.readyReadStandardOutput.connect(self.__readStdout)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 self.proc.readyReadStandardError.connect(self.__readStderr)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 if workingDir:
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 self.proc.setWorkingDirectory(workingDir)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 self.workingDir = workingDir
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 else:
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 self.workingDir = ""
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 prog = args[0]
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 del args[0]
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 self.proc.start(prog, args)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 procStarted = self.proc.waitForStarted()
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 if not procStarted:
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 self.buttonBox.setFocus()
102
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
185 self.inputGroup.setEnabled(False)
29
76d04dd67367 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
186 E5MessageBox.critical(
76d04dd67367 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
187 self,
51
0b60dbff8e9a Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
188 self.tr('Process Generation Error'),
0b60dbff8e9a Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
189 self.tr(
1
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 'The process {0} could not be started. '
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 'Ensure, that it is in the search path.'
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 ).format(prog))
102
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
193 else:
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
194 if self.showInput:
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
195 self.inputGroup.setEnabled(True)
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
196 self.inputGroup.show()
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
197 else:
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
198 self.inputGroup.setEnabled(False)
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
199 self.inputGroup.hide()
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
200
1
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 return procStarted
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202
29
76d04dd67367 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
203 def startBatchProcesses(self, argsLists, workingDir=None,
76d04dd67367 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
204 mergedOutput=False):
1
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 """
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 Public slot used to start a batch of processes.
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 @param argsLists list of lists of arguments for the processes
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 (list of lists of strings)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 @param workingDir working directory for the process (string)
29
76d04dd67367 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
211 @param mergedOutput flag indicating to merge the output of the process
76d04dd67367 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
212 (boolean)
76d04dd67367 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
213 @return flag indicating a successful start of the first process
76d04dd67367 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
214 (boolean)
1
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 """
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 self.argsLists = argsLists[:]
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 self.workingDir = workingDir
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 self.mergedOutput = mergedOutput
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 # start the first process
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 args = self.argsLists[0][:]
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 del self.argsLists[0]
29
76d04dd67367 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
223 res = self.startProcess(args, self.workingDir,
76d04dd67367 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
224 mergedOutput=self.mergedOutput)
1
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 if not res:
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 self.argsLists = []
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 return res
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 def normalExit(self):
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 """
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 Public method to check for a normal process termination.
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 @return flag indicating normal process termination (boolean)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 """
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 return self.normal
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 def normalExitWithoutErrors(self):
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 """
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 Public method to check for a normal process termination without
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 error messages.
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 @return flag indicating normal process termination (boolean)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 """
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 return self.normal and self.errors.toPlainText() == ""
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 def __readStdout(self):
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 """
6
80815349eef4 Fixed PEP-8 related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
249 Private slot to handle the readyReadStdout signal.
1
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 It reads the output of the process, formats it and inserts it into
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 the contents pane.
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 """
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 if self.proc is not None:
29
76d04dd67367 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
255 s = str(self.proc.readAllStandardOutput(), self.ioEncoding,
76d04dd67367 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
256 'replace')
1
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 self.resultbox.insertPlainText(s)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 self.resultbox.ensureCursorVisible()
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 def __readStderr(self):
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 """
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262 Private slot to handle the readyReadStderr signal.
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264 It reads the error output of the process and inserts it into the
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265 error pane.
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266 """
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 if self.proc is not None:
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 self.errorGroup.show()
29
76d04dd67367 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
269 s = str(self.proc.readAllStandardError(), self.ioEncoding,
76d04dd67367 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
270 'replace')
1
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271 self.errors.insertPlainText(s)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 self.errors.ensureCursorVisible()
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 def __saveData(self):
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275 """
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276 Private slot to save the output to a file.
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277 """
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278 fname, selectedFilter = E5FileDialog.getSaveFileNameAndFilter(
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279 self,
51
0b60dbff8e9a Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
280 self.tr("Select data file"),
1
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281 self.workingDir,
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
282 self.fileFilters,
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
283 None)
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
284
2
1e97424fda0c Continued porting the Django project plug-in from eric4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
285 if fname:
1
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286 ext = QFileInfo(fname).suffix()
2
1e97424fda0c Continued porting the Django project plug-in from eric4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
287 if not ext:
1e97424fda0c Continued porting the Django project plug-in from eric4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
288 ex = selectedFilter.split("(*")[1].split(")")[0]
1e97424fda0c Continued porting the Django project plug-in from eric4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
289 if ex:
1e97424fda0c Continued porting the Django project plug-in from eric4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
290 fname += ex
1
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 txt = self.resultbox.toPlainText()
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293
13a0cced0c6e Commit of the first batch of code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 try:
165
80afe6639c6c Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
295 with open(fname, "w", encoding="utf-8") as f:
80afe6639c6c Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 163
diff changeset
296 f.write(txt)
167
09aa216b3046 Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 165
diff changeset
297 except OSError as err:
29
76d04dd67367 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
298 E5MessageBox.critical(
76d04dd67367 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
299 self,
51
0b60dbff8e9a Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
300 self.tr("Error saving data"),
0b60dbff8e9a Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
301 self.tr("""<p>The data could not be written"""
0b60dbff8e9a Ported to PyQt5 and eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
302 """ to <b>{0}</b></p><p>Reason: {1}</p>""")
29
76d04dd67367 Fixed code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
303 .format(fname, str(err)))
102
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
304
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
305 def on_passwordCheckBox_toggled(self, isOn):
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
306 """
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
307 Private slot to handle the password checkbox toggled.
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
308
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
309 @param isOn flag indicating the status of the check box (boolean)
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
310 """
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
311 if isOn:
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
312 self.input.setEchoMode(QLineEdit.Password)
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
313 else:
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
314 self.input.setEchoMode(QLineEdit.Normal)
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
315
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
316 @pyqtSlot()
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
317 def on_sendButton_clicked(self):
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
318 """
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
319 Private slot to send the input to the manage.py process.
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
320 """
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
321 inputTxt = self.input.text()
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
322 inputTxt += os.linesep
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
323
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
324 if self.passwordCheckBox.isChecked():
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
325 self.errors.insertPlainText(os.linesep)
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
326 self.errors.ensureCursorVisible()
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
327 else:
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
328 self.errors.insertPlainText(inputTxt)
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
329 self.errors.ensureCursorVisible()
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
330
140
a6c1fcaa2617 DjangoDialog: fixed a bug causing sending some input to the Django process to fail.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 125
diff changeset
331 self.proc.write(strToQByteArray(inputTxt))
102
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
332
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
333 self.input.clear()
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
334 self.passwordCheckBox.setChecked(False)
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
335
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
336 def on_input_returnPressed(self):
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
337 """
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
338 Private slot to handle the press of the return key in the input field.
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
339 """
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
340 self.intercept = True
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
341 self.on_sendButton_clicked()
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
342
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
343 def keyPressEvent(self, evt):
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
344 """
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
345 Protected slot to handle a key press event.
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
346
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
347 @param evt the key press event (QKeyEvent)
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
348 """
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
349 if self.intercept:
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
350 self.intercept = False
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
351 evt.accept()
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
352 return
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
353
7e2351e4d729 Added functionality to enter data to be sent to the Django process.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 93
diff changeset
354 super(DjangoDialog, self).keyPressEvent(evt)

eric ide

mercurial