Added the Adafruit Feather nRF52840 to the list of known NRF52 boards and changed the list of known CircuitPython boards to be more explicit with respect to Adafruit boards (i.e. VID 0x239A).
9740
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1
|
# -*- coding: utf-8 -*- |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2
|
|
11090
|
3
|
# Copyright (c) 2023 - 2025 Detlev Offenbach <detlev@die-offenbachs.de> |
9740
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4
|
# |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7
|
Module implementing a dialog to generate a requirements file. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10
|
import os |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12
|
import circup |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14
|
from PyQt6.QtCore import pyqtSlot |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15
|
from PyQt6.QtGui import QGuiApplication |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16
|
from PyQt6.QtWidgets import QAbstractButton, QDialog, QDialogButtonBox |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18
|
from eric7.EricWidgets import EricFileDialog, EricMessageBox |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19
|
from eric7.EricWidgets.EricApplication import ericApp |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20
|
from eric7.EricWidgets.EricPathPicker import EricPathPickerModes |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21
|
from eric7.SystemUtilities import FileSystemUtilities |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23
|
from .Ui_RequirementsDialog import Ui_RequirementsDialog |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26
|
class RequirementsDialog(QDialog, Ui_RequirementsDialog): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28
|
Class implementing a dialog to generate a requirements file. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31
|
def __init__(self, devicePath, parent=None): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33
|
Constructor |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35
|
@param devicePath path to the connected board |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36
|
@type str |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37
|
@param parent reference to the parent widget (defaults to None) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38
|
@type QWidget (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40
|
super().__init__(parent) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41
|
self.setupUi(self) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43
|
self.__title = self.tr("Generate Requirements") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45
|
self.__refreshButton = self.buttonBox.addButton( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46
|
self.tr("&Refresh"), QDialogButtonBox.ButtonRole.ActionRole |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49
|
self.requirementsFilePicker.setMode(EricPathPickerModes.SAVE_FILE_MODE) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50
|
self.requirementsFilePicker.setFilters( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51
|
self.tr("Text Files (*.txt);;All Files (*)") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54
|
self.__devicePath = devicePath |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56
|
self.__requirementsEdited = False |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57
|
self.__requirementsAvailable = False |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59
|
self.__generateRequirements() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61
|
def __updateButtons(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63
|
Private method to set the state of the various buttons. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65
|
self.saveButton.setEnabled( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66
|
self.__requirementsAvailable |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67
|
and bool(self.requirementsFilePicker.text()) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68
|
and os.path.isabs(self.requirementsFilePicker.text()) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70
|
self.saveToButton.setEnabled(self.__requirementsAvailable) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71
|
self.copyButton.setEnabled(self.__requirementsAvailable) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73
|
aw = ericApp().getObject("ViewManager").activeWindow() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74
|
if aw and self.__requirementsAvailable: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75
|
self.insertButton.setEnabled(True) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76
|
self.replaceAllButton.setEnabled(True) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77
|
self.replaceSelectionButton.setEnabled(aw.hasSelectedText()) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78
|
else: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79
|
self.insertButton.setEnabled(False) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80
|
self.replaceAllButton.setEnabled(False) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81
|
self.replaceSelectionButton.setEnabled(False) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83
|
@pyqtSlot(str) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84
|
def on_requirementsFilePicker_textChanged(self, txt): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86
|
Private slot handling a change of the requirements file name. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88
|
@param txt name of the requirements file |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89
|
@type str |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91
|
self.__updateButtons() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93
|
@pyqtSlot() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94
|
def on_requirementsEdit_textChanged(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96
|
Private slot handling changes of the requirements text. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98
|
self.__requirementsEdited = True |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100
|
@pyqtSlot(QAbstractButton) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101
|
def on_buttonBox_clicked(self, button): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103
|
Private slot called by a button of the button box clicked. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105
|
@param button button that was clicked |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106
|
@type QAbstractButton |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108
|
if button == self.buttonBox.button(QDialogButtonBox.StandardButton.Close): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109
|
self.close() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110
|
elif button == self.__refreshButton: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111
|
self.__generateRequirements() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113
|
def __generateRequirements(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115
|
Private slot to generate the requirements specifiers list. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117
|
ok = ( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118
|
EricMessageBox.yesNo( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119
|
self, |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120
|
self.__title, |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121
|
self.tr( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122
|
"""The requirements were changed. Do you want""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123
|
""" to overwrite these changes?""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124
|
), |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126
|
if self.__requirementsEdited |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127
|
else True |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129
|
if ok: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130
|
self.requirementsEdit.clear() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131
|
self.__requirementsAvailable = False |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133
|
if not bool(self.requirementsFilePicker.text()): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134
|
self.requirementsFilePicker.setText("requirements.txt") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136
|
fileName = FileSystemUtilities.toNativeSeparators( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137
|
self.requirementsFilePicker.text() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139
|
if fileName and not os.path.isabs(fileName): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140
|
fileName = "" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142
|
modules = circup.find_modules(self.__devicePath, circup.get_bundles_list()) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143
|
specifiers = [] |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144
|
if modules: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145
|
for module in modules: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146
|
specifiers.append( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147
|
"{0}=={1}".format(module.name, module.device_version) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150
|
if specifiers: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151
|
self.requirementsEdit.setPlainText("\n".join(specifiers) + "\n") |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152
|
self.__requirementsAvailable = True |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153
|
else: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154
|
self.requirementsEdit.setPlainText( |
9741
|
155
|
self.tr("No package specifiers generated.") |
9740
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158
|
self.__updateButtons() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160
|
self.__requirementsEdited = False |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162
|
def __writeToFile(self, fileName): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164
|
Private method to write the requirements text to a file. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166
|
@param fileName name of the file to write to |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167
|
@type str |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169
|
if os.path.exists(fileName): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170
|
ok = EricMessageBox.warning( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
171
|
self, |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172
|
self.__title, |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173
|
self.tr( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174
|
"""The file <b>{0}</b> already exists. Do you want""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175
|
""" to overwrite it?""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
176
|
).format(fileName), |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
177
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
178
|
if not ok: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179
|
return |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181
|
txt = self.requirementsEdit.toPlainText() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182
|
try: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183
|
with open(fileName, "w") as f: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184
|
f.write(txt) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185
|
except OSError as err: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186
|
EricMessageBox.critical( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187
|
self, |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188
|
self.__title, |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189
|
self.tr( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
190
|
"""<p>The requirements could not be written""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
191
|
""" to <b>{0}</b>.</p><p>Reason: {1}</p>""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192
|
).format(fileName, str(err)), |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
193
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195
|
@pyqtSlot() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
196
|
def on_saveButton_clicked(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
197
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
198
|
Private slot to save the requirements text to the requirements file. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
199
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
200
|
fileName = self.requirementsFilePicker.text() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
201
|
self.__writeToFile(fileName) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
202
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
203
|
@pyqtSlot() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
204
|
def on_saveToButton_clicked(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
205
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
206
|
Private slot to write the requirements text to a new file. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
207
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
208
|
fileName, selectedFilter = EricFileDialog.getSaveFileNameAndFilter( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
209
|
self, |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
210
|
self.__title, |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
211
|
os.path.expanduser("~"), |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
212
|
self.tr("Text Files (*.txt);;All Files (*)"), |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
213
|
None, |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
214
|
EricFileDialog.DontConfirmOverwrite, |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
215
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
216
|
if fileName: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
217
|
ext = os.path.splitext(fileName)[1] |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
218
|
if not ext: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
219
|
ex = selectedFilter.split("(*")[1].split(")")[0] |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
220
|
if ex: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
221
|
fileName += ex |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
222
|
self.__writeToFile(fileName) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
223
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
224
|
@pyqtSlot() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
225
|
def on_copyButton_clicked(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
226
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
227
|
Private slot to copy the requirements text to the clipboard. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
228
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
229
|
txt = self.requirementsEdit.toPlainText() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
230
|
cb = QGuiApplication.clipboard() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
231
|
cb.setText(txt) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
232
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
233
|
@pyqtSlot() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
234
|
def on_insertButton_clicked(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
235
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
236
|
Private slot to insert the requirements text at the cursor position |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
237
|
of the current editor. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
238
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
239
|
aw = ericApp().getObject("ViewManager").activeWindow() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
240
|
if aw: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
241
|
aw.beginUndoAction() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
242
|
aw.insert(self.requirementsEdit.toPlainText()) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
243
|
aw.endUndoAction() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
244
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
245
|
@pyqtSlot() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
246
|
def on_replaceSelectionButton_clicked(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
247
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
248
|
Private slot to replace the selected text of the current editor |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
249
|
with the requirements text. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
250
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
251
|
aw = ericApp().getObject("ViewManager").activeWindow() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
252
|
if aw: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
253
|
aw.beginUndoAction() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
254
|
aw.replaceSelectedText(self.requirementsEdit.toPlainText()) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
255
|
aw.endUndoAction() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
256
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
257
|
@pyqtSlot() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
258
|
def on_replaceAllButton_clicked(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
259
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
260
|
Private slot to replace the text of the current editor with the |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
261
|
requirements text. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
262
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
263
|
aw = ericApp().getObject("ViewManager").activeWindow() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
264
|
if aw: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
265
|
aw.setText(self.requirementsEdit.toPlainText()) |