eric7/CondaInterface/CondaExportDialog.py

branch
eric7
changeset 8356
68ec9c3d4de5
parent 8327
666c2b81cbb7
child 8358
144a6b854f70
equal deleted inserted replaced
8355:8a7677a63c8d 8356:68ec9c3d4de5
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
131 "--export", 131 "--export",
132 "--prefix", 132 "--prefix",
133 self.__prefix, 133 self.__prefix,
134 ] 134 ]
135 135
136 with E5OverrideCursor(): 136 with EricOverrideCursor():
137 success, output = self.__conda.runProcess(args) 137 success, output = self.__conda.runProcess(args)
138 138
139 if success: 139 if success:
140 self.requirementsEdit.setPlainText(output) 140 self.requirementsEdit.setPlainText(output)
141 self.__requirementsAvailable = True 141 self.__requirementsAvailable = True
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
263 def on_replaceAllButton_clicked(self): 263 def on_replaceAllButton_clicked(self):
264 """ 264 """
265 Private slot to replace the text of the current editor with the 265 Private slot to replace the text of the current editor with the
266 requirements text. 266 requirements text.
267 """ 267 """
268 aw = e5App().getObject("ViewManager").activeWindow() 268 aw = ericApp().getObject("ViewManager").activeWindow()
269 if aw: 269 if aw:
270 aw.setText(self.requirementsEdit.toPlainText()) 270 aw.setText(self.requirementsEdit.toPlainText())

eric ide

mercurial