12 from PyQt6.QtCore import pyqtSlot, Qt |
12 from PyQt6.QtCore import pyqtSlot, Qt |
13 from PyQt6.QtWidgets import ( |
13 from PyQt6.QtWidgets import ( |
14 QDialog, QDialogButtonBox, QAbstractButton, QApplication |
14 QDialog, QDialogButtonBox, QAbstractButton, QApplication |
15 ) |
15 ) |
16 |
16 |
17 from E5Gui import E5MessageBox, E5FileDialog |
17 from E5Gui import EricMessageBox, EricFileDialog |
18 from E5Gui.E5PathPicker import E5PathPickerModes |
18 from E5Gui.EricPathPicker import EricPathPickerModes |
19 from E5Gui.E5Application import e5App |
19 from E5Gui.EricApplication import ericApp |
20 from E5Gui.E5OverrideCursor import E5OverrideCursor |
20 from E5Gui.EricOverrideCursor import EricOverrideCursor |
21 |
21 |
22 from .Ui_CondaExportDialog import Ui_CondaExportDialog |
22 from .Ui_CondaExportDialog import Ui_CondaExportDialog |
23 |
23 |
24 |
24 |
25 class CondaExportDialog(QDialog, Ui_CondaExportDialog): |
25 class CondaExportDialog(QDialog, Ui_CondaExportDialog): |
46 self.setWindowFlags(Qt.WindowType.Window) |
46 self.setWindowFlags(Qt.WindowType.Window) |
47 |
47 |
48 self.__refreshButton = self.buttonBox.addButton( |
48 self.__refreshButton = self.buttonBox.addButton( |
49 self.tr("&Refresh"), QDialogButtonBox.ButtonRole.ActionRole) |
49 self.tr("&Refresh"), QDialogButtonBox.ButtonRole.ActionRole) |
50 |
50 |
51 self.requirementsFilePicker.setMode(E5PathPickerModes.SAVE_FILE_MODE) |
51 self.requirementsFilePicker.setMode(EricPathPickerModes.SAVE_FILE_MODE) |
52 self.requirementsFilePicker.setFilters( |
52 self.requirementsFilePicker.setFilters( |
53 self.tr("Text Files (*.txt);;All Files (*)")) |
53 self.tr("Text Files (*.txt);;All Files (*)")) |
54 |
54 |
55 self.__conda = conda |
55 self.__conda = conda |
56 self.__prefix = envPrefix |
56 self.__prefix = envPrefix |
106 def __refresh(self): |
106 def __refresh(self): |
107 """ |
107 """ |
108 Private slot to refresh the displayed list. |
108 Private slot to refresh the displayed list. |
109 """ |
109 """ |
110 ok = ( |
110 ok = ( |
111 E5MessageBox.yesNo( |
111 EricMessageBox.yesNo( |
112 self, |
112 self, |
113 self.tr("Generate Requirements"), |
113 self.tr("Generate Requirements"), |
114 self.tr("""The requirements were changed. Do you want""" |
114 self.tr("""The requirements were changed. Do you want""" |
115 """ to overwrite these changes?""")) |
115 """ to overwrite these changes?""")) |
116 if self.__requirementsEdited else |
116 if self.__requirementsEdited else |
156 bool(self.requirementsFilePicker.text()) |
156 bool(self.requirementsFilePicker.text()) |
157 ) |
157 ) |
158 self.saveToButton.setEnabled(self.__requirementsAvailable) |
158 self.saveToButton.setEnabled(self.__requirementsAvailable) |
159 self.copyButton.setEnabled(self.__requirementsAvailable) |
159 self.copyButton.setEnabled(self.__requirementsAvailable) |
160 |
160 |
161 aw = e5App().getObject("ViewManager").activeWindow() |
161 aw = ericApp().getObject("ViewManager").activeWindow() |
162 if aw and self.__requirementsAvailable: |
162 if aw and self.__requirementsAvailable: |
163 self.insertButton.setEnabled(True) |
163 self.insertButton.setEnabled(True) |
164 self.replaceAllButton.setEnabled(True) |
164 self.replaceAllButton.setEnabled(True) |
165 self.replaceSelectionButton.setEnabled( |
165 self.replaceSelectionButton.setEnabled( |
166 aw.hasSelectedText()) |
166 aw.hasSelectedText()) |
175 |
175 |
176 @param fileName name of the file to write to |
176 @param fileName name of the file to write to |
177 @type str |
177 @type str |
178 """ |
178 """ |
179 if os.path.exists(fileName): |
179 if os.path.exists(fileName): |
180 ok = E5MessageBox.warning( |
180 ok = EricMessageBox.warning( |
181 self, |
181 self, |
182 self.tr("Generate Requirements"), |
182 self.tr("Generate Requirements"), |
183 self.tr("""The file <b>{0}</b> already exists. Do you want""" |
183 self.tr("""The file <b>{0}</b> already exists. Do you want""" |
184 """ to overwrite it?""").format(fileName)) |
184 """ to overwrite it?""").format(fileName)) |
185 if not ok: |
185 if not ok: |
187 |
187 |
188 try: |
188 try: |
189 with open(fileName, "w") as f: |
189 with open(fileName, "w") as f: |
190 f.write(self.requirementsEdit.toPlainText()) |
190 f.write(self.requirementsEdit.toPlainText()) |
191 except OSError as err: |
191 except OSError as err: |
192 E5MessageBox.critical( |
192 EricMessageBox.critical( |
193 self, |
193 self, |
194 self.tr("Generate Requirements"), |
194 self.tr("Generate Requirements"), |
195 self.tr("""<p>The requirements could not be written""" |
195 self.tr("""<p>The requirements could not be written""" |
196 """ to <b>{0}</b>.</p><p>Reason: {1}</p>""") |
196 """ to <b>{0}</b>.</p><p>Reason: {1}</p>""") |
197 .format(fileName, str(err))) |
197 .format(fileName, str(err))) |
207 @pyqtSlot() |
207 @pyqtSlot() |
208 def on_saveToButton_clicked(self): |
208 def on_saveToButton_clicked(self): |
209 """ |
209 """ |
210 Private slot to write the requirements text to a new file. |
210 Private slot to write the requirements text to a new file. |
211 """ |
211 """ |
212 fileName, selectedFilter = E5FileDialog.getSaveFileNameAndFilter( |
212 fileName, selectedFilter = EricFileDialog.getSaveFileNameAndFilter( |
213 self, |
213 self, |
214 self.tr("Generate Requirements"), |
214 self.tr("Generate Requirements"), |
215 os.path.expanduser("~"), |
215 os.path.expanduser("~"), |
216 self.tr("Text Files (*.txt);;All Files (*)"), |
216 self.tr("Text Files (*.txt);;All Files (*)"), |
217 None, |
217 None, |
218 E5FileDialog.DontConfirmOverwrite |
218 EricFileDialog.DontConfirmOverwrite |
219 ) |
219 ) |
220 if fileName: |
220 if fileName: |
221 ext = os.path.splitext(fileName)[1] |
221 ext = os.path.splitext(fileName)[1] |
222 if not ext: |
222 if not ext: |
223 ex = selectedFilter.split("(*")[1].split(")")[0] |
223 ex = selectedFilter.split("(*")[1].split(")")[0] |
238 def on_insertButton_clicked(self): |
238 def on_insertButton_clicked(self): |
239 """ |
239 """ |
240 Private slot to insert the requirements text at the cursor position |
240 Private slot to insert the requirements text at the cursor position |
241 of the current editor. |
241 of the current editor. |
242 """ |
242 """ |
243 aw = e5App().getObject("ViewManager").activeWindow() |
243 aw = ericApp().getObject("ViewManager").activeWindow() |
244 if aw: |
244 if aw: |
245 aw.beginUndoAction() |
245 aw.beginUndoAction() |
246 cline, cindex = aw.getCursorPosition() |
246 cline, cindex = aw.getCursorPosition() |
247 aw.insertAt(self.requirementsEdit.toPlainText(), cline, cindex) |
247 aw.insertAt(self.requirementsEdit.toPlainText(), cline, cindex) |
248 aw.endUndoAction() |
248 aw.endUndoAction() |
251 def on_replaceSelectionButton_clicked(self): |
251 def on_replaceSelectionButton_clicked(self): |
252 """ |
252 """ |
253 Private slot to replace the selected text of the current editor |
253 Private slot to replace the selected text of the current editor |
254 with the requirements text. |
254 with the requirements text. |
255 """ |
255 """ |
256 aw = e5App().getObject("ViewManager").activeWindow() |
256 aw = ericApp().getObject("ViewManager").activeWindow() |
257 if aw: |
257 if aw: |
258 aw.beginUndoAction() |
258 aw.beginUndoAction() |
259 aw.replaceSelectedText(self.requirementsEdit.toPlainText()) |
259 aw.replaceSelectedText(self.requirementsEdit.toPlainText()) |
260 aw.endUndoAction() |
260 aw.endUndoAction() |
261 |
261 |