src/eric7/Plugins/WizardPlugins/FileDialogWizard/FileDialogWizardDialog.py

branch
eric7
changeset 9221
bf71ee032bb4
parent 9209
b99e7fd55fd3
child 9240
183220dc5492
equal deleted inserted replaced
9220:e9e7eca7efee 9221:bf71ee032bb4
8 """ 8 """
9 9
10 import os 10 import os
11 11
12 from PyQt6.QtCore import pyqtSlot, QUrl 12 from PyQt6.QtCore import pyqtSlot, QUrl
13 from PyQt6.QtWidgets import ( 13 from PyQt6.QtWidgets import QDialog, QDialogButtonBox, QFileDialog, QButtonGroup
14 QDialog, QDialogButtonBox, QFileDialog, QButtonGroup
15 )
16 14
17 from EricWidgets.EricCompleters import EricFileCompleter, EricDirCompleter 15 from EricWidgets.EricCompleters import EricFileCompleter, EricDirCompleter
18 16
19 from .Ui_FileDialogWizardDialog import Ui_FileDialogWizardDialog 17 from .Ui_FileDialogWizardDialog import Ui_FileDialogWizardDialog
20 18
22 20
23 21
24 class FileDialogWizardDialog(QDialog, Ui_FileDialogWizardDialog): 22 class FileDialogWizardDialog(QDialog, Ui_FileDialogWizardDialog):
25 """ 23 """
26 Class implementing the color dialog wizard dialog. 24 Class implementing the color dialog wizard dialog.
27 25
28 It displays a dialog for entering the parameters for the 26 It displays a dialog for entering the parameters for the
29 EricFileDialog or QFileDialog code generator. 27 EricFileDialog or QFileDialog code generator.
30 """ 28 """
29
31 def __init__(self, dialogVariant, parent=None): 30 def __init__(self, dialogVariant, parent=None):
32 """ 31 """
33 Constructor 32 Constructor
34 33
35 @param dialogVariant variant of the file dialog to be generated 34 @param dialogVariant variant of the file dialog to be generated
36 (-1 = EricFileDialog, 0 = unknown, 5 = PyQt5, 6 = PyQt6) 35 (-1 = EricFileDialog, 0 = unknown, 5 = PyQt5, 6 = PyQt6)
37 @type int 36 @type int
38 @param parent parent widget 37 @param parent parent widget
39 @type QWidget 38 @type QWidget
40 """ 39 """
41 super().__init__(parent) 40 super().__init__(parent)
42 self.setupUi(self) 41 self.setupUi(self)
43 42
44 self.eStartWithCompleter = EricFileCompleter(self.eStartWith) 43 self.eStartWithCompleter = EricFileCompleter(self.eStartWith)
45 self.eWorkDirCompleter = EricDirCompleter(self.eWorkDir) 44 self.eWorkDirCompleter = EricDirCompleter(self.eWorkDir)
46 45
47 self.__dialogVariant = dialogVariant 46 self.__dialogVariant = dialogVariant
48 47
49 self.__typeButtonsGroup = QButtonGroup(self) 48 self.__typeButtonsGroup = QButtonGroup(self)
50 self.__typeButtonsGroup.setExclusive(True) 49 self.__typeButtonsGroup.setExclusive(True)
51 self.__typeButtonsGroup.addButton(self.rOpenFile, 1) 50 self.__typeButtonsGroup.addButton(self.rOpenFile, 1)
52 self.__typeButtonsGroup.addButton(self.rOpenFiles, 2) 51 self.__typeButtonsGroup.addButton(self.rOpenFiles, 2)
53 self.__typeButtonsGroup.addButton(self.rSaveFile, 3) 52 self.__typeButtonsGroup.addButton(self.rSaveFile, 3)
57 self.__typeButtonsGroup.addButton(self.rOpenFileUrl, 21) 56 self.__typeButtonsGroup.addButton(self.rOpenFileUrl, 21)
58 self.__typeButtonsGroup.addButton(self.rOpenFileUrls, 22) 57 self.__typeButtonsGroup.addButton(self.rOpenFileUrls, 22)
59 self.__typeButtonsGroup.addButton(self.rSaveFileUrl, 23) 58 self.__typeButtonsGroup.addButton(self.rSaveFileUrl, 23)
60 self.__typeButtonsGroup.addButton(self.rDirectory, 30) 59 self.__typeButtonsGroup.addButton(self.rDirectory, 30)
61 self.__typeButtonsGroup.addButton(self.rDirectoryUrl, 31) 60 self.__typeButtonsGroup.addButton(self.rDirectoryUrl, 31)
62 self.__typeButtonsGroup.idClicked.connect( 61 self.__typeButtonsGroup.idClicked.connect(self.__toggleInitialFilterAndResult)
63 self.__toggleInitialFilterAndResult)
64 self.__toggleInitialFilterAndResult(1) 62 self.__toggleInitialFilterAndResult(1)
65 63
66 if self.__dialogVariant == -1: 64 if self.__dialogVariant == -1:
67 self.pyqtComboBox.addItems(["eric"]) 65 self.pyqtComboBox.addItems(["eric"])
68 self.setWindowTitle(self.tr("EricFileDialog Wizard")) 66 self.setWindowTitle(self.tr("EricFileDialog Wizard"))
69 self.pyqtComboBox.setCurrentIndex(0) 67 self.pyqtComboBox.setCurrentIndex(0)
70 self.pyqtComboBox.setEnabled(False) 68 self.pyqtComboBox.setEnabled(False)
75 self.pyqtComboBox.setCurrentIndex(0) 73 self.pyqtComboBox.setCurrentIndex(0)
76 elif self.__dialogVariant == 6: 74 elif self.__dialogVariant == 6:
77 self.pyqtComboBox.setCurrentIndex(1) 75 self.pyqtComboBox.setCurrentIndex(1)
78 else: 76 else:
79 self.pyqtComboBox.setCurrentIndex(0) 77 self.pyqtComboBox.setCurrentIndex(0)
80 78
81 self.rSaveFile.toggled[bool].connect(self.__toggleConfirmCheckBox) 79 self.rSaveFile.toggled[bool].connect(self.__toggleConfirmCheckBox)
82 self.rfSaveFile.toggled[bool].connect(self.__toggleConfirmCheckBox) 80 self.rfSaveFile.toggled[bool].connect(self.__toggleConfirmCheckBox)
83 self.rSaveFileUrl.toggled[bool].connect(self.__toggleConfirmCheckBox) 81 self.rSaveFileUrl.toggled[bool].connect(self.__toggleConfirmCheckBox)
84 self.rDirectory.toggled[bool].connect(self.__toggleGroupsAndTest) 82 self.rDirectory.toggled[bool].connect(self.__toggleGroupsAndTest)
85 self.rDirectoryUrl.toggled[bool].connect(self.__toggleGroupsAndTest) 83 self.rDirectoryUrl.toggled[bool].connect(self.__toggleGroupsAndTest)
86 self.cStartWith.toggled[bool].connect(self.__toggleGroupsAndTest) 84 self.cStartWith.toggled[bool].connect(self.__toggleGroupsAndTest)
87 self.cWorkDir.toggled[bool].connect(self.__toggleGroupsAndTest) 85 self.cWorkDir.toggled[bool].connect(self.__toggleGroupsAndTest)
88 self.cFilters.toggled[bool].connect(self.__toggleGroupsAndTest) 86 self.cFilters.toggled[bool].connect(self.__toggleGroupsAndTest)
89 87
90 self.bTest = self.buttonBox.addButton( 88 self.bTest = self.buttonBox.addButton(
91 self.tr("Test"), QDialogButtonBox.ButtonRole.ActionRole) 89 self.tr("Test"), QDialogButtonBox.ButtonRole.ActionRole
92 90 )
91
93 msh = self.minimumSizeHint() 92 msh = self.minimumSizeHint()
94 self.resize(max(self.width(), msh.width()), msh.height()) 93 self.resize(max(self.width(), msh.width()), msh.height())
95 94
96 def __adjustOptions(self, options): 95 def __adjustOptions(self, options):
97 """ 96 """
98 Private method to adjust the file dialog options. 97 Private method to adjust the file dialog options.
99 98
100 @param options file dialog options (QFileDialog.Option) 99 @param options file dialog options (QFileDialog.Option)
101 @return modified options (QFileDialog.Option) 100 @return modified options (QFileDialog.Option)
102 """ 101 """
103 if Globals.isLinuxPlatform(): 102 if Globals.isLinuxPlatform():
104 options |= QFileDialog.Option.DontUseNativeDialog 103 options |= QFileDialog.Option.DontUseNativeDialog
105 return options 104 return options
106 105
107 @pyqtSlot(int) 106 @pyqtSlot(int)
108 def on_pyqtComboBox_currentIndexChanged(self, index): 107 def on_pyqtComboBox_currentIndexChanged(self, index):
109 """ 108 """
110 Private slot to setup the dialog for the selected PyQt variant. 109 Private slot to setup the dialog for the selected PyQt variant.
111 110
112 @param index index of the current item 111 @param index index of the current item
113 @type int 112 @type int
114 """ 113 """
115 txt = self.pyqtComboBox.itemText(index) 114 txt = self.pyqtComboBox.itemText(index)
116 self.rfOpenFile.setEnabled(txt == "eric") 115 self.rfOpenFile.setEnabled(txt == "eric")
117 self.rfOpenFiles.setEnabled(txt == "eric") 116 self.rfOpenFiles.setEnabled(txt == "eric")
118 self.rfSaveFile.setEnabled(txt == "eric") 117 self.rfSaveFile.setEnabled(txt == "eric")
119 118
120 self.rOpenFileUrl.setEnabled(txt in ["PyQt5", "PyQt6"]) 119 self.rOpenFileUrl.setEnabled(txt in ["PyQt5", "PyQt6"])
121 self.rOpenFileUrls.setEnabled(txt in ["PyQt5", "PyQt6"]) 120 self.rOpenFileUrls.setEnabled(txt in ["PyQt5", "PyQt6"])
122 self.rSaveFileUrl.setEnabled(txt in ["PyQt5", "PyQt6"]) 121 self.rSaveFileUrl.setEnabled(txt in ["PyQt5", "PyQt6"])
123 self.rDirectoryUrl.setEnabled(txt in ["PyQt5", "PyQt6"]) 122 self.rDirectoryUrl.setEnabled(txt in ["PyQt5", "PyQt6"])
124 123
125 if txt in ["PyQt5", "PyQt6"]: 124 if txt in ["PyQt5", "PyQt6"]:
126 if self.rfOpenFile.isChecked(): 125 if self.rfOpenFile.isChecked():
127 self.rOpenFile.setChecked(True) 126 self.rOpenFile.setChecked(True)
128 elif self.rfOpenFiles.isChecked(): 127 elif self.rfOpenFiles.isChecked():
129 self.rOpenFiles.setChecked(True) 128 self.rOpenFiles.setChecked(True)
136 self.rOpenFiles.setChecked(True) 135 self.rOpenFiles.setChecked(True)
137 if self.rSaveFileUrl.isChecked(): 136 if self.rSaveFileUrl.isChecked():
138 self.rSaveFile.setChecked(True) 137 self.rSaveFile.setChecked(True)
139 if self.rDirectoryUrl.isChecked(): 138 if self.rDirectoryUrl.isChecked():
140 self.rDirectory.setChecked(True) 139 self.rDirectory.setChecked(True)
141 140
142 if txt == "eric": 141 if txt == "eric":
143 self.__dialogVariant = -1 142 self.__dialogVariant = -1
144 elif txt == "PyQt5": 143 elif txt == "PyQt5":
145 self.__dialogVariant = 5 144 self.__dialogVariant = 5
146 elif txt == "PyQt6": 145 elif txt == "PyQt6":
147 self.__dialogVariant = 6 146 self.__dialogVariant = 6
148 else: 147 else:
149 # default is PyQt6 148 # default is PyQt6
150 self.__dialogVariant = 6 149 self.__dialogVariant = 6
151 150
152 self.__toggleInitialFilterAndResult( 151 self.__toggleInitialFilterAndResult(self.__typeButtonsGroup.checkedId())
153 self.__typeButtonsGroup.checkedId()) 152
154
155 def on_buttonBox_clicked(self, button): 153 def on_buttonBox_clicked(self, button):
156 """ 154 """
157 Private slot called by a button of the button box clicked. 155 Private slot called by a button of the button box clicked.
158 156
159 @param button button that was clicked (QAbstractButton) 157 @param button button that was clicked (QAbstractButton)
160 """ 158 """
161 if button == self.bTest: 159 if button == self.bTest:
162 self.on_bTest_clicked() 160 self.on_bTest_clicked()
163 161
164 @pyqtSlot() 162 @pyqtSlot()
165 def on_bTest_clicked(self): 163 def on_bTest_clicked(self):
166 """ 164 """
167 Private method to test the selected options. 165 Private method to test the selected options.
168 """ 166 """
176 None, 174 None,
177 self.eCaption.text(), 175 self.eCaption.text(),
178 self.eStartWith.text(), 176 self.eStartWith.text(),
179 self.eFilters.text(), 177 self.eFilters.text(),
180 self.eInitialFilter.text(), 178 self.eInitialFilter.text(),
181 options) 179 options,
180 )
182 elif self.rOpenFileUrl.isChecked(): 181 elif self.rOpenFileUrl.isChecked():
183 if not self.cSymlinks.isChecked(): 182 if not self.cSymlinks.isChecked():
184 options = QFileDialog.Option.DontResolveSymlinks 183 options = QFileDialog.Option.DontResolveSymlinks
185 else: 184 else:
186 options = QFileDialog.Option(0) 185 options = QFileDialog.Option(0)
190 self.eCaption.text(), 189 self.eCaption.text(),
191 QUrl(self.eStartWith.text()), 190 QUrl(self.eStartWith.text()),
192 self.eFilters.text(), 191 self.eFilters.text(),
193 self.eInitialFilter.text(), 192 self.eInitialFilter.text(),
194 options, 193 options,
195 self.schemesEdit.text().split()) 194 self.schemesEdit.text().split(),
195 )
196 elif self.rOpenFiles.isChecked() or self.rfOpenFiles.isChecked(): 196 elif self.rOpenFiles.isChecked() or self.rfOpenFiles.isChecked():
197 if not self.cSymlinks.isChecked(): 197 if not self.cSymlinks.isChecked():
198 options = QFileDialog.Option.DontResolveSymlinks 198 options = QFileDialog.Option.DontResolveSymlinks
199 else: 199 else:
200 options = QFileDialog.Option(0) 200 options = QFileDialog.Option(0)
203 None, 203 None,
204 self.eCaption.text(), 204 self.eCaption.text(),
205 self.eStartWith.text(), 205 self.eStartWith.text(),
206 self.eFilters.text(), 206 self.eFilters.text(),
207 self.eInitialFilter.text(), 207 self.eInitialFilter.text(),
208 options) 208 options,
209 )
209 elif self.rOpenFileUrls.isChecked(): 210 elif self.rOpenFileUrls.isChecked():
210 if not self.cSymlinks.isChecked(): 211 if not self.cSymlinks.isChecked():
211 options = QFileDialog.Option.DontResolveSymlinks 212 options = QFileDialog.Option.DontResolveSymlinks
212 else: 213 else:
213 options = QFileDialog.Option(0) 214 options = QFileDialog.Option(0)
217 self.eCaption.text(), 218 self.eCaption.text(),
218 QUrl(self.eStartWith.text()), 219 QUrl(self.eStartWith.text()),
219 self.eFilters.text(), 220 self.eFilters.text(),
220 self.eInitialFilter.text(), 221 self.eInitialFilter.text(),
221 options, 222 options,
222 self.schemesEdit.text().split()) 223 self.schemesEdit.text().split(),
224 )
223 elif self.rSaveFile.isChecked() or self.rfSaveFile.isChecked(): 225 elif self.rSaveFile.isChecked() or self.rfSaveFile.isChecked():
224 if not self.cSymlinks.isChecked(): 226 if not self.cSymlinks.isChecked():
225 options = QFileDialog.Option.DontResolveSymlinks 227 options = QFileDialog.Option.DontResolveSymlinks
226 else: 228 else:
227 options = QFileDialog.Option(0) 229 options = QFileDialog.Option(0)
230 None, 232 None,
231 self.eCaption.text(), 233 self.eCaption.text(),
232 self.eStartWith.text(), 234 self.eStartWith.text(),
233 self.eFilters.text(), 235 self.eFilters.text(),
234 self.eInitialFilter.text(), 236 self.eInitialFilter.text(),
235 options) 237 options,
238 )
236 elif self.rSaveFileUrl.isChecked(): 239 elif self.rSaveFileUrl.isChecked():
237 if not self.cSymlinks.isChecked(): 240 if not self.cSymlinks.isChecked():
238 options = QFileDialog.Option.DontResolveSymlinks 241 options = QFileDialog.Option.DontResolveSymlinks
239 else: 242 else:
240 options = QFileDialog.Option(0) 243 options = QFileDialog.Option(0)
244 self.eCaption.text(), 247 self.eCaption.text(),
245 QUrl(self.eStartWith.text()), 248 QUrl(self.eStartWith.text()),
246 self.eFilters.text(), 249 self.eFilters.text(),
247 self.eInitialFilter.text(), 250 self.eInitialFilter.text(),
248 options, 251 options,
249 self.schemesEdit.text().split()) 252 self.schemesEdit.text().split(),
253 )
250 elif self.rDirectory.isChecked(): 254 elif self.rDirectory.isChecked():
251 options = QFileDialog.Option(0) 255 options = QFileDialog.Option(0)
252 if not self.cSymlinks.isChecked(): 256 if not self.cSymlinks.isChecked():
253 options |= QFileDialog.Option.DontResolveSymlinks 257 options |= QFileDialog.Option.DontResolveSymlinks
254 if self.cDirOnly.isChecked(): 258 if self.cDirOnly.isChecked():
255 options |= QFileDialog.Option.ShowDirsOnly 259 options |= QFileDialog.Option.ShowDirsOnly
256 else: 260 else:
257 options |= QFileDialog.Option(0) 261 options |= QFileDialog.Option(0)
258 options = self.__adjustOptions(options) 262 options = self.__adjustOptions(options)
259 QFileDialog.getExistingDirectory( 263 QFileDialog.getExistingDirectory(
260 None, 264 None, self.eCaption.text(), self.eWorkDir.text(), options
261 self.eCaption.text(), 265 )
262 self.eWorkDir.text(),
263 options)
264 elif self.rDirectoryUrl.isChecked(): 266 elif self.rDirectoryUrl.isChecked():
265 options = QFileDialog.Option(0) 267 options = QFileDialog.Option(0)
266 if not self.cSymlinks.isChecked(): 268 if not self.cSymlinks.isChecked():
267 options |= QFileDialog.Option.DontResolveSymlinks 269 options |= QFileDialog.Option.DontResolveSymlinks
268 if self.cDirOnly.isChecked(): 270 if self.cDirOnly.isChecked():
273 QFileDialog.getExistingDirectoryUrl( 275 QFileDialog.getExistingDirectoryUrl(
274 None, 276 None,
275 self.eCaption.text(), 277 self.eCaption.text(),
276 QUrl(self.eWorkDir.text()), 278 QUrl(self.eWorkDir.text()),
277 options, 279 options,
278 self.schemesEdit.text().split()) 280 self.schemesEdit.text().split(),
279 281 )
282
280 def __toggleConfirmCheckBox(self): 283 def __toggleConfirmCheckBox(self):
281 """ 284 """
282 Private slot to enable/disable the confirmation check box. 285 Private slot to enable/disable the confirmation check box.
283 """ 286 """
284 self.cConfirmOverwrite.setEnabled( 287 self.cConfirmOverwrite.setEnabled(
285 self.rSaveFile.isChecked() or self.rfSaveFile.isChecked() or 288 self.rSaveFile.isChecked()
286 self.rSaveFileUrl.isChecked()) 289 or self.rfSaveFile.isChecked()
287 290 or self.rSaveFileUrl.isChecked()
291 )
292
288 def __toggleGroupsAndTest(self): 293 def __toggleGroupsAndTest(self):
289 """ 294 """
290 Private slot to enable/disable certain groups and the test button. 295 Private slot to enable/disable certain groups and the test button.
291 """ 296 """
292 if self.rDirectory.isChecked() or self.rDirectoryUrl.isChecked(): 297 if self.rDirectory.isChecked() or self.rDirectoryUrl.isChecked():
295 self.bTest.setDisabled(self.cWorkDir.isChecked()) 300 self.bTest.setDisabled(self.cWorkDir.isChecked())
296 else: 301 else:
297 self.filePropertiesGroup.setEnabled(True) 302 self.filePropertiesGroup.setEnabled(True)
298 self.dirPropertiesGroup.setEnabled(False) 303 self.dirPropertiesGroup.setEnabled(False)
299 self.bTest.setDisabled( 304 self.bTest.setDisabled(
300 self.cStartWith.isChecked() or self.cFilters.isChecked()) 305 self.cStartWith.isChecked() or self.cFilters.isChecked()
301 306 )
307
302 def __toggleInitialFilterAndResult(self, checkedId): 308 def __toggleInitialFilterAndResult(self, checkedId):
303 """ 309 """
304 Private slot to enable/disable the initial filter elements and the 310 Private slot to enable/disable the initial filter elements and the
305 results entries. 311 results entries.
306 312
307 @param checkedId id of the clicked button (integer) 313 @param checkedId id of the clicked button (integer)
308 """ 314 """
309 enable = ( 315 enable = (self.__dialogVariant in (-1,) and checkedId in [11, 12, 13]) or (
310 (self.__dialogVariant in (-1, ) and checkedId in [11, 12, 13]) or 316 self.__dialogVariant in (5, 6) and checkedId in [1, 2, 3, 21, 22, 23]
311 (self.__dialogVariant in (5, 6) and
312 checkedId in [1, 2, 3, 21, 22, 23])
313 ) 317 )
314 318
315 self.lInitialFilter.setEnabled(enable) 319 self.lInitialFilter.setEnabled(enable)
316 self.eInitialFilter.setEnabled(enable) 320 self.eInitialFilter.setEnabled(enable)
317 self.cInitialFilter.setEnabled(enable) 321 self.cInitialFilter.setEnabled(enable)
318 322
319 self.lFilterVariable.setEnabled(enable) 323 self.lFilterVariable.setEnabled(enable)
320 self.eFilterVariable.setEnabled(enable) 324 self.eFilterVariable.setEnabled(enable)
321 325
322 self.urlPropertiesGroup.setEnabled(checkedId in (21, 22, 23, 31)) 326 self.urlPropertiesGroup.setEnabled(checkedId in (21, 22, 23, 31))
323 327
324 def getCode(self, indLevel, indString): 328 def getCode(self, indLevel, indString):
325 """ 329 """
326 Public method to get the source code for Qt6. 330 Public method to get the source code for Qt6.
327 331
328 @param indLevel indentation level (int) 332 @param indLevel indentation level (int)
329 @param indString string used for indentation (space or tab) (string) 333 @param indString string used for indentation (space or tab) (string)
330 @return generated code (string) 334 @return generated code (string)
331 """ 335 """
332 # calculate our indentation level and the indentation string 336 # calculate our indentation level and the indentation string
333 il = indLevel + 1 337 il = indLevel + 1
334 istring = il * indString 338 istring = il * indString
335 estring = os.linesep + indLevel * indString 339 estring = os.linesep + indLevel * indString
336 340
337 # now generate the code 341 # now generate the code
338 if self.parentSelf.isChecked(): 342 if self.parentSelf.isChecked():
339 parent = "self" 343 parent = "self"
340 elif self.parentNone.isChecked(): 344 elif self.parentNone.isChecked():
341 parent = "None" 345 parent = "None"
342 elif self.parentOther.isChecked(): 346 elif self.parentOther.isChecked():
343 parent = self.parentEdit.text() 347 parent = self.parentEdit.text()
344 if parent == "": 348 if parent == "":
345 parent = "None" 349 parent = "None"
346 350
347 # prepare the result variables 351 # prepare the result variables
348 nameVariable = self.eNameVariable.text() 352 nameVariable = self.eNameVariable.text()
349 if not nameVariable: 353 if not nameVariable:
350 if self.__typeButtonsGroup.checkedButton() in [ 354 if self.__typeButtonsGroup.checkedButton() in [
351 self.rOpenFile, self.rfOpenFile, 355 self.rOpenFile,
352 self.rSaveFile, self.rfSaveFile]: 356 self.rfOpenFile,
357 self.rSaveFile,
358 self.rfSaveFile,
359 ]:
353 nameVariable = "fileName" 360 nameVariable = "fileName"
354 elif self.__typeButtonsGroup.checkedButton() in [ 361 elif self.__typeButtonsGroup.checkedButton() in [
355 self.rOpenFiles, self.rfOpenFiles]: 362 self.rOpenFiles,
363 self.rfOpenFiles,
364 ]:
356 nameVariable = "fileNames" 365 nameVariable = "fileNames"
357 elif self.__typeButtonsGroup.checkedButton() == self.rDirectory: 366 elif self.__typeButtonsGroup.checkedButton() == self.rDirectory:
358 nameVariable = "dirName" 367 nameVariable = "dirName"
359 else: 368 else:
360 nameVariable = "res" 369 nameVariable = "res"
361 filterVariable = self.eFilterVariable.text() 370 filterVariable = self.eFilterVariable.text()
362 if not filterVariable: 371 if not filterVariable:
363 if ( 372 if (
364 (self.__dialogVariant in (-1, ) and 373 self.__dialogVariant in (-1,)
365 self.__typeButtonsGroup.checkedButton() in [ 374 and self.__typeButtonsGroup.checkedButton()
366 self.rfOpenFile, self.rfOpenFiles, self.rfSaveFile]) or 375 in [self.rfOpenFile, self.rfOpenFiles, self.rfSaveFile]
367 (self.__dialogVariant in (5, 6) and 376 ) or (
368 self.__typeButtonsGroup.checkedButton() in [ 377 self.__dialogVariant in (5, 6)
369 self.rOpenFile, self.rOpenFiles, self.rSaveFile]) 378 and self.__typeButtonsGroup.checkedButton()
379 in [self.rOpenFile, self.rOpenFiles, self.rSaveFile]
370 ): 380 ):
371 filterVariable = ", selectedFilter" 381 filterVariable = ", selectedFilter"
372 else: 382 else:
373 filterVariable = "" 383 filterVariable = ""
374 else: 384 else:
375 filterVariable = ", " + filterVariable 385 filterVariable = ", " + filterVariable
376 386
377 if self.__dialogVariant == -1: 387 if self.__dialogVariant == -1:
378 dialogType = "EricFileDialog" 388 dialogType = "EricFileDialog"
379 optionStr = "" 389 optionStr = ""
380 else: 390 else:
381 dialogType = "QFileDialog" 391 dialogType = "QFileDialog"
382 optionStr = ".Option" 392 optionStr = ".Option"
383 393
384 code = '{0}{1} = {2}.'.format(nameVariable, filterVariable, dialogType) 394 code = "{0}{1} = {2}.".format(nameVariable, filterVariable, dialogType)
385 if ( 395 if (
386 self.rOpenFile.isChecked() or 396 self.rOpenFile.isChecked()
387 self.rfOpenFile.isChecked() or 397 or self.rfOpenFile.isChecked()
388 self.rOpenFileUrl.isChecked() 398 or self.rOpenFileUrl.isChecked()
389 ): 399 ):
390 if self.rOpenFile.isChecked(): 400 if self.rOpenFile.isChecked():
391 code += 'getOpenFileName({0}{1}'.format(os.linesep, istring) 401 code += "getOpenFileName({0}{1}".format(os.linesep, istring)
392 elif self.rOpenFileUrl.isChecked(): 402 elif self.rOpenFileUrl.isChecked():
393 code += 'getOpenFileUrl({0}{1}'.format(os.linesep, istring) 403 code += "getOpenFileUrl({0}{1}".format(os.linesep, istring)
394 else: 404 else:
395 code += 'getOpenFileNameAndFilter({0}{1}'.format( 405 code += "getOpenFileNameAndFilter({0}{1}".format(os.linesep, istring)
396 os.linesep, istring) 406 code += "{0},{1}{2}".format(parent, os.linesep, istring)
397 code += '{0},{1}{2}'.format(parent, os.linesep, istring)
398 if not self.eCaption.text(): 407 if not self.eCaption.text():
399 code += '"",{0}{1}'.format(os.linesep, istring) 408 code += '"",{0}{1}'.format(os.linesep, istring)
400 else: 409 else:
401 code += 'self.tr("{0}"),{1}{2}'.format( 410 code += 'self.tr("{0}"),{1}{2}'.format(
402 self.eCaption.text(), os.linesep, istring) 411 self.eCaption.text(), os.linesep, istring
412 )
403 if self.rOpenFileUrl.isChecked(): 413 if self.rOpenFileUrl.isChecked():
404 if not self.eStartWith.text(): 414 if not self.eStartWith.text():
405 code += 'QUrl(),{0}{1}'.format(os.linesep, istring) 415 code += "QUrl(),{0}{1}".format(os.linesep, istring)
406 else: 416 else:
407 if self.cStartWith.isChecked(): 417 if self.cStartWith.isChecked():
408 fmt = '{0},{1}{2}' 418 fmt = "{0},{1}{2}"
409 else: 419 else:
410 fmt = 'QUrl("{0}"),{1}{2}' 420 fmt = 'QUrl("{0}"),{1}{2}'
411 code += fmt.format(self.eStartWith.text(), os.linesep, 421 code += fmt.format(self.eStartWith.text(), os.linesep, istring)
412 istring)
413 else: 422 else:
414 if not self.eStartWith.text(): 423 if not self.eStartWith.text():
415 code += '"",{0}{1}'.format(os.linesep, istring) 424 code += '"",{0}{1}'.format(os.linesep, istring)
416 else: 425 else:
417 if self.cStartWith.isChecked(): 426 if self.cStartWith.isChecked():
418 fmt = '{0},{1}{2}' 427 fmt = "{0},{1}{2}"
419 else: 428 else:
420 fmt = '"{0}",{1}{2}' 429 fmt = '"{0}",{1}{2}'
421 code += fmt.format(self.eStartWith.text(), os.linesep, 430 code += fmt.format(self.eStartWith.text(), os.linesep, istring)
422 istring)
423 if self.eFilters.text() == "": 431 if self.eFilters.text() == "":
424 code += '""' 432 code += '""'
425 else: 433 else:
426 if self.cFilters.isChecked(): 434 if self.cFilters.isChecked():
427 fmt = '{0}' 435 fmt = "{0}"
428 else: 436 else:
429 fmt = 'self.tr("{0}")' 437 fmt = 'self.tr("{0}")'
430 code += fmt.format(self.eFilters.text()) 438 code += fmt.format(self.eFilters.text())
431 if self.rfOpenFile.isChecked() or self.__dialogVariant in (5, 6): 439 if self.rfOpenFile.isChecked() or self.__dialogVariant in (5, 6):
432 if self.eInitialFilter.text() == "": 440 if self.eInitialFilter.text() == "":
433 initialFilter = "None" 441 initialFilter = "None"
434 else: 442 else:
435 if self.cInitialFilter.isChecked(): 443 if self.cInitialFilter.isChecked():
436 fmt = '{0}' 444 fmt = "{0}"
437 else: 445 else:
438 fmt = 'self.tr("{0}")' 446 fmt = 'self.tr("{0}")'
439 initialFilter = fmt.format(self.eInitialFilter.text()) 447 initialFilter = fmt.format(self.eInitialFilter.text())
440 code += ',{0}{1}{2}'.format(os.linesep, istring, initialFilter) 448 code += ",{0}{1}{2}".format(os.linesep, istring, initialFilter)
441 if not self.cSymlinks.isChecked(): 449 if not self.cSymlinks.isChecked():
442 code += ( 450 code += ",{0}{1}{2}{3}.DontResolveSymlinks".format(
443 ',{0}{1}{2}{3}.DontResolveSymlinks' 451 os.linesep, istring, dialogType, optionStr
444 .format(os.linesep, istring, dialogType, optionStr)
445 ) 452 )
446 if self.rOpenFileUrl.isChecked() and bool(self.schemesEdit.text()): 453 if self.rOpenFileUrl.isChecked() and bool(self.schemesEdit.text()):
447 code += ',{0}{1}{2}'.format( 454 code += ",{0}{1}{2}".format(
448 os.linesep, istring, self.__prepareSchemesList()) 455 os.linesep, istring, self.__prepareSchemesList()
449 code += '{0}){0}'.format(estring) 456 )
457 code += "{0}){0}".format(estring)
450 elif ( 458 elif (
451 self.rOpenFiles.isChecked() or 459 self.rOpenFiles.isChecked()
452 self.rfOpenFiles.isChecked() or 460 or self.rfOpenFiles.isChecked()
453 self.rOpenFileUrls.isChecked() 461 or self.rOpenFileUrls.isChecked()
454 ): 462 ):
455 if self.rOpenFiles.isChecked(): 463 if self.rOpenFiles.isChecked():
456 code += 'getOpenFileNames({0}{1}'.format(os.linesep, istring) 464 code += "getOpenFileNames({0}{1}".format(os.linesep, istring)
457 elif self.rOpenFileUrls.isChecked(): 465 elif self.rOpenFileUrls.isChecked():
458 code += 'getOpenFileUrls({0}{1}'.format(os.linesep, istring) 466 code += "getOpenFileUrls({0}{1}".format(os.linesep, istring)
459 else: 467 else:
460 code += 'getOpenFileNamesAndFilter({0}{1}'.format( 468 code += "getOpenFileNamesAndFilter({0}{1}".format(os.linesep, istring)
461 os.linesep, istring) 469 code += "{0},{1}{2}".format(parent, os.linesep, istring)
462 code += '{0},{1}{2}'.format(parent, os.linesep, istring)
463 if not self.eCaption.text(): 470 if not self.eCaption.text():
464 code += '"",{0}{1}'.format(os.linesep, istring) 471 code += '"",{0}{1}'.format(os.linesep, istring)
465 else: 472 else:
466 code += 'self.tr("{0}"),{1}{2}'.format( 473 code += 'self.tr("{0}"),{1}{2}'.format(
467 self.eCaption.text(), os.linesep, istring) 474 self.eCaption.text(), os.linesep, istring
475 )
468 if self.rOpenFileUrls.isChecked(): 476 if self.rOpenFileUrls.isChecked():
469 if not self.eStartWith.text(): 477 if not self.eStartWith.text():
470 code += 'QUrl(),{0}{1}'.format(os.linesep, istring) 478 code += "QUrl(),{0}{1}".format(os.linesep, istring)
471 else: 479 else:
472 if self.cStartWith.isChecked(): 480 if self.cStartWith.isChecked():
473 fmt = '{0},{1}{2}' 481 fmt = "{0},{1}{2}"
474 else: 482 else:
475 fmt = 'QUrl("{0}"),{1}{2}' 483 fmt = 'QUrl("{0}"),{1}{2}'
476 code += fmt.format(self.eStartWith.text(), os.linesep, 484 code += fmt.format(self.eStartWith.text(), os.linesep, istring)
477 istring)
478 else: 485 else:
479 if not self.eStartWith.text(): 486 if not self.eStartWith.text():
480 code += '"",{0}{1}'.format(os.linesep, istring) 487 code += '"",{0}{1}'.format(os.linesep, istring)
481 else: 488 else:
482 if self.cStartWith.isChecked(): 489 if self.cStartWith.isChecked():
483 fmt = '{0},{1}{2}' 490 fmt = "{0},{1}{2}"
484 else: 491 else:
485 fmt = '"{0}",{1}{2}' 492 fmt = '"{0}",{1}{2}'
486 code += fmt.format(self.eStartWith.text(), os.linesep, 493 code += fmt.format(self.eStartWith.text(), os.linesep, istring)
487 istring)
488 if not self.eFilters.text(): 494 if not self.eFilters.text():
489 code += '""' 495 code += '""'
490 else: 496 else:
491 if self.cFilters.isChecked(): 497 if self.cFilters.isChecked():
492 fmt = '{0}' 498 fmt = "{0}"
493 else: 499 else:
494 fmt = 'self.tr("{0}")' 500 fmt = 'self.tr("{0}")'
495 code += fmt.format(self.eFilters.text()) 501 code += fmt.format(self.eFilters.text())
496 if self.rfOpenFiles.isChecked() or self.__dialogVariant in (5, 6): 502 if self.rfOpenFiles.isChecked() or self.__dialogVariant in (5, 6):
497 if self.eInitialFilter.text() == "": 503 if self.eInitialFilter.text() == "":
498 initialFilter = "None" 504 initialFilter = "None"
499 else: 505 else:
500 if self.cInitialFilter.isChecked(): 506 if self.cInitialFilter.isChecked():
501 fmt = '{0}' 507 fmt = "{0}"
502 else: 508 else:
503 fmt = 'self.tr("{0}")' 509 fmt = 'self.tr("{0}")'
504 initialFilter = fmt.format(self.eInitialFilter.text()) 510 initialFilter = fmt.format(self.eInitialFilter.text())
505 code += ',{0}{1}{2}'.format(os.linesep, istring, initialFilter) 511 code += ",{0}{1}{2}".format(os.linesep, istring, initialFilter)
506 if not self.cSymlinks.isChecked(): 512 if not self.cSymlinks.isChecked():
507 code += ( 513 code += ",{0}{1}{2}{3}.DontResolveSymlinks".format(
508 ',{0}{1}{2}{3}.DontResolveSymlinks' 514 os.linesep, istring, dialogType, optionStr
509 .format(os.linesep, istring, dialogType, optionStr) 515 )
510 ) 516 if self.rOpenFileUrls.isChecked() and bool(self.schemesEdit.text()):
511 if ( 517 code += ",{0}{1}{2}".format(
512 self.rOpenFileUrls.isChecked() and 518 os.linesep, istring, self.__prepareSchemesList()
513 bool(self.schemesEdit.text()) 519 )
514 ): 520 code += "{0}){0}".format(estring)
515 code += ',{0}{1}{2}'.format(
516 os.linesep, istring, self.__prepareSchemesList())
517 code += '{0}){0}'.format(estring)
518 elif ( 521 elif (
519 self.rSaveFile.isChecked() or 522 self.rSaveFile.isChecked()
520 self.rfSaveFile.isChecked() or 523 or self.rfSaveFile.isChecked()
521 self.rSaveFileUrl.isChecked() 524 or self.rSaveFileUrl.isChecked()
522 ): 525 ):
523 if self.rSaveFile.isChecked(): 526 if self.rSaveFile.isChecked():
524 code += 'getSaveFileName({0}{1}'.format(os.linesep, istring) 527 code += "getSaveFileName({0}{1}".format(os.linesep, istring)
525 elif self.rSaveFileUrl.isChecked(): 528 elif self.rSaveFileUrl.isChecked():
526 code += 'getSaveFileUrl({0}{1}'.format(os.linesep, istring) 529 code += "getSaveFileUrl({0}{1}".format(os.linesep, istring)
527 else: 530 else:
528 code += 'getSaveFileNameAndFilter({0}{1}'.format( 531 code += "getSaveFileNameAndFilter({0}{1}".format(os.linesep, istring)
529 os.linesep, istring) 532 code += "{0},{1}{2}".format(parent, os.linesep, istring)
530 code += '{0},{1}{2}'.format(parent, os.linesep, istring)
531 if not self.eCaption.text(): 533 if not self.eCaption.text():
532 code += '"",{0}{1}'.format(os.linesep, istring) 534 code += '"",{0}{1}'.format(os.linesep, istring)
533 else: 535 else:
534 code += 'self.tr("{0}"),{1}{2}'.format( 536 code += 'self.tr("{0}"),{1}{2}'.format(
535 self.eCaption.text(), os.linesep, istring) 537 self.eCaption.text(), os.linesep, istring
538 )
536 if self.rSaveFileUrl.isChecked(): 539 if self.rSaveFileUrl.isChecked():
537 if not self.eStartWith.text(): 540 if not self.eStartWith.text():
538 code += 'QUrl(),{0}{1}'.format(os.linesep, istring) 541 code += "QUrl(),{0}{1}".format(os.linesep, istring)
539 else: 542 else:
540 if self.cStartWith.isChecked(): 543 if self.cStartWith.isChecked():
541 fmt = '{0},{1}{2}' 544 fmt = "{0},{1}{2}"
542 else: 545 else:
543 fmt = 'QUrl("{0}"),{1}{2}' 546 fmt = 'QUrl("{0}"),{1}{2}'
544 code += fmt.format(self.eStartWith.text(), os.linesep, 547 code += fmt.format(self.eStartWith.text(), os.linesep, istring)
545 istring)
546 else: 548 else:
547 if not self.eStartWith.text(): 549 if not self.eStartWith.text():
548 code += '"",{0}{1}'.format(os.linesep, istring) 550 code += '"",{0}{1}'.format(os.linesep, istring)
549 else: 551 else:
550 if self.cStartWith.isChecked(): 552 if self.cStartWith.isChecked():
551 fmt = '{0},{1}{2}' 553 fmt = "{0},{1}{2}"
552 else: 554 else:
553 fmt = '"{0}",{1}{2}' 555 fmt = '"{0}",{1}{2}'
554 code += fmt.format(self.eStartWith.text(), os.linesep, 556 code += fmt.format(self.eStartWith.text(), os.linesep, istring)
555 istring)
556 if not self.eFilters.text(): 557 if not self.eFilters.text():
557 code += '""' 558 code += '""'
558 else: 559 else:
559 if self.cFilters.isChecked(): 560 if self.cFilters.isChecked():
560 fmt = '{0}' 561 fmt = "{0}"
561 else: 562 else:
562 fmt = 'self.tr("{0}")' 563 fmt = 'self.tr("{0}")'
563 code += fmt.format(self.eFilters.text()) 564 code += fmt.format(self.eFilters.text())
564 if self.rfSaveFile.isChecked() or self.__dialogVariant in (5, 6): 565 if self.rfSaveFile.isChecked() or self.__dialogVariant in (5, 6):
565 if self.eInitialFilter.text() == "": 566 if self.eInitialFilter.text() == "":
566 initialFilter = "None" 567 initialFilter = "None"
567 else: 568 else:
568 if self.cInitialFilter.isChecked(): 569 if self.cInitialFilter.isChecked():
569 fmt = '{0}' 570 fmt = "{0}"
570 else: 571 else:
571 fmt = 'self.tr("{0}")' 572 fmt = 'self.tr("{0}")'
572 initialFilter = fmt.format(self.eInitialFilter.text()) 573 initialFilter = fmt.format(self.eInitialFilter.text())
573 code += ',{0}{1}{2}'.format(os.linesep, istring, initialFilter) 574 code += ",{0}{1}{2}".format(os.linesep, istring, initialFilter)
574 if ( 575 if (not self.cSymlinks.isChecked()) or (
575 (not self.cSymlinks.isChecked()) or 576 not self.cConfirmOverwrite.isChecked()
576 (not self.cConfirmOverwrite.isChecked())
577 ): 577 ):
578 code += ',{0}{1}'.format(os.linesep, istring) 578 code += ",{0}{1}".format(os.linesep, istring)
579 if not self.cSymlinks.isChecked(): 579 if not self.cSymlinks.isChecked():
580 code += '{0}{1}.DontResolveSymlinks'.format( 580 code += "{0}{1}.DontResolveSymlinks".format(dialogType, optionStr)
581 dialogType, optionStr) 581 if (not self.cSymlinks.isChecked()) and (
582 if ( 582 not self.cConfirmOverwrite.isChecked()
583 (not self.cSymlinks.isChecked()) and
584 (not self.cConfirmOverwrite.isChecked())
585 ): 583 ):
586 code += ' | ' 584 code += " | "
587 if not self.cConfirmOverwrite.isChecked(): 585 if not self.cConfirmOverwrite.isChecked():
588 code += '{0}{1}.DontConfirmOverwrite'.format( 586 code += "{0}{1}.DontConfirmOverwrite".format(dialogType, optionStr)
589 dialogType, optionStr) 587 if self.rSaveFileUrl.isChecked() and bool(self.schemesEdit.text()):
590 if ( 588 code += ",{0}{1}{2}".format(
591 self.rSaveFileUrl.isChecked() and 589 os.linesep, istring, self.__prepareSchemesList()
592 bool(self.schemesEdit.text()) 590 )
593 ): 591
594 code += ',{0}{1}{2}'.format( 592 code += "{0}){0}".format(estring)
595 os.linesep, istring, self.__prepareSchemesList())
596
597 code += '{0}){0}'.format(estring)
598 elif self.rDirectory.isChecked() or self.rDirectoryUrl.isChecked(): 593 elif self.rDirectory.isChecked() or self.rDirectoryUrl.isChecked():
599 if self.rDirectory.isChecked(): 594 if self.rDirectory.isChecked():
600 code += 'getExistingDirectory({0}{1}'.format( 595 code += "getExistingDirectory({0}{1}".format(os.linesep, istring)
601 os.linesep, istring) 596 else:
602 else: 597 code += "getExistingDirectoryUrl({0}{1}".format(os.linesep, istring)
603 code += 'getExistingDirectoryUrl({0}{1}'.format( 598 code += "{0},{1}{2}".format(parent, os.linesep, istring)
604 os.linesep, istring)
605 code += '{0},{1}{2}'.format(parent, os.linesep, istring)
606 if not self.eCaption.text(): 599 if not self.eCaption.text():
607 code += '"",{0}{1}'.format(os.linesep, istring) 600 code += '"",{0}{1}'.format(os.linesep, istring)
608 else: 601 else:
609 code += 'self.tr("{0}"),{1}{2}'.format( 602 code += 'self.tr("{0}"),{1}{2}'.format(
610 self.eCaption.text(), os.linesep, istring) 603 self.eCaption.text(), os.linesep, istring
604 )
611 if self.rDirectoryUrl.isChecked(): 605 if self.rDirectoryUrl.isChecked():
612 if not self.eWorkDir.text(): 606 if not self.eWorkDir.text():
613 code += 'QUrl()' 607 code += "QUrl()"
614 else: 608 else:
615 if self.cWorkDir.isChecked(): 609 if self.cWorkDir.isChecked():
616 fmt = '{0}' 610 fmt = "{0}"
617 else: 611 else:
618 fmt = 'QUrl("{0}")' 612 fmt = 'QUrl("{0}")'
619 code += fmt.format(self.eWorkDir.text()) 613 code += fmt.format(self.eWorkDir.text())
620 else: 614 else:
621 if not self.eWorkDir.text(): 615 if not self.eWorkDir.text():
622 code += '""' 616 code += '""'
623 else: 617 else:
624 if self.cWorkDir.isChecked(): 618 if self.cWorkDir.isChecked():
625 fmt = '{0}' 619 fmt = "{0}"
626 else: 620 else:
627 fmt = '"{0}"' 621 fmt = '"{0}"'
628 code += fmt.format(self.eWorkDir.text()) 622 code += fmt.format(self.eWorkDir.text())
629 code += ',{0}{1}'.format(os.linesep, istring) 623 code += ",{0}{1}".format(os.linesep, istring)
630 if ( 624 if (not self.cSymlinks.isChecked()) or self.cDirOnly.isChecked():
631 (not self.cSymlinks.isChecked()) or
632 self.cDirOnly.isChecked()
633 ):
634 if not self.cSymlinks.isChecked(): 625 if not self.cSymlinks.isChecked():
635 code += '{0}{1}.DontResolveSymlinks'.format( 626 code += "{0}{1}.DontResolveSymlinks".format(dialogType, optionStr)
636 dialogType, optionStr) 627 if (not self.cSymlinks.isChecked()) and self.cDirOnly.isChecked():
637 if ( 628 code += " | "
638 (not self.cSymlinks.isChecked()) and
639 self.cDirOnly.isChecked()
640 ):
641 code += ' | '
642 if self.cDirOnly.isChecked(): 629 if self.cDirOnly.isChecked():
643 code += '{0}{1}.ShowDirsOnly'.format( 630 code += "{0}{1}.ShowDirsOnly".format(dialogType, optionStr)
644 dialogType, optionStr) 631 else:
645 else: 632 code += "{0}.Option(0)".format(dialogType)
646 code += '{0}.Option(0)'.format(dialogType)
647 if self.rDirectoryUrl.isChecked(): 633 if self.rDirectoryUrl.isChecked():
648 code += ',{0}{1}{2}'.format( 634 code += ",{0}{1}{2}".format(
649 os.linesep, istring, self.__prepareSchemesList()) 635 os.linesep, istring, self.__prepareSchemesList()
650 code += '{0}){0}'.format(estring) 636 )
651 637 code += "{0}){0}".format(estring)
638
652 return code 639 return code
653 640
654 def __prepareSchemesList(self): 641 def __prepareSchemesList(self):
655 """ 642 """
656 Private method to prepare the list of supported schemes. 643 Private method to prepare the list of supported schemes.
657 644
658 @return string representation of the supported schemes 645 @return string representation of the supported schemes
659 @rtype str 646 @rtype str
660 """ 647 """
661 return repr(self.schemesEdit.text().strip().split()) 648 return repr(self.schemesEdit.text().strip().split())

eric ide

mercurial