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