eric7/Plugins/WizardPlugins/FileDialogWizard/FileDialogWizardDialog.py

branch
eric7
changeset 8322
b422b4e77d19
parent 8318
962bce857696
child 8356
68ec9c3d4de5
equal deleted inserted replaced
8319:ea11a3948f40 8322:b422b4e77d19
41 super().__init__(parent) 41 super().__init__(parent)
42 self.setupUi(self) 42 self.setupUi(self)
43 43
44 self.eStartWithCompleter = E5FileCompleter(self.eStartWith) 44 self.eStartWithCompleter = E5FileCompleter(self.eStartWith)
45 self.eWorkDirCompleter = E5DirCompleter(self.eWorkDir) 45 self.eWorkDirCompleter = E5DirCompleter(self.eWorkDir)
46
47 self.__dialogVariant = dialogVariant
46 48
47 self.__typeButtonsGroup = QButtonGroup(self) 49 self.__typeButtonsGroup = QButtonGroup(self)
48 self.__typeButtonsGroup.setExclusive(True) 50 self.__typeButtonsGroup.setExclusive(True)
49 self.__typeButtonsGroup.addButton(self.rOpenFile, 1) 51 self.__typeButtonsGroup.addButton(self.rOpenFile, 1)
50 self.__typeButtonsGroup.addButton(self.rOpenFiles, 2) 52 self.__typeButtonsGroup.addButton(self.rOpenFiles, 2)
55 self.__typeButtonsGroup.addButton(self.rOpenFileUrl, 21) 57 self.__typeButtonsGroup.addButton(self.rOpenFileUrl, 21)
56 self.__typeButtonsGroup.addButton(self.rOpenFileUrls, 22) 58 self.__typeButtonsGroup.addButton(self.rOpenFileUrls, 22)
57 self.__typeButtonsGroup.addButton(self.rSaveFileUrl, 23) 59 self.__typeButtonsGroup.addButton(self.rSaveFileUrl, 23)
58 self.__typeButtonsGroup.addButton(self.rDirectory, 30) 60 self.__typeButtonsGroup.addButton(self.rDirectory, 30)
59 self.__typeButtonsGroup.addButton(self.rDirectoryUrl, 31) 61 self.__typeButtonsGroup.addButton(self.rDirectoryUrl, 31)
60 self.__typeButtonsGroup.buttonClicked[int].connect( 62 self.__typeButtonsGroup.idClicked.connect(
61 self.__toggleInitialFilterAndResult) 63 self.__toggleInitialFilterAndResult)
62 self.__toggleInitialFilterAndResult(1) 64 self.__toggleInitialFilterAndResult(1)
63 65
64 self.__dialogVariant = dialogVariant
65 if self.__dialogVariant == -1: 66 if self.__dialogVariant == -1:
66 self.pyqtComboBox.addItems(["eric"]) 67 self.pyqtComboBox.addItems(["eric"])
67 self.setWindowTitle(self.tr("E5FileDialog Wizard")) 68 self.setWindowTitle(self.tr("E5FileDialog Wizard"))
68 self.pyqtComboBox.setCurrentIndex(0) 69 self.pyqtComboBox.setCurrentIndex(0)
69 self.pyqtComboBox.setEnabled(False) 70 self.pyqtComboBox.setEnabled(False)
94 95
95 def __adjustOptions(self, options): 96 def __adjustOptions(self, options):
96 """ 97 """
97 Private method to adjust the file dialog options. 98 Private method to adjust the file dialog options.
98 99
99 @param options file dialog options (QFileDialog.Options) 100 @param options file dialog options (QFileDialog.Option)
100 @return modified options (QFileDialog.Options) 101 @return modified options (QFileDialog.Option)
101 """ 102 """
102 if Globals.isLinuxPlatform(): 103 if Globals.isLinuxPlatform():
103 options |= QFileDialog.Option.DontUseNativeDialog 104 options |= QFileDialog.Option.DontUseNativeDialog
104 return options 105 return options
105 106
165 """ 166 """
166 Private method to test the selected options. 167 Private method to test the selected options.
167 """ 168 """
168 if self.rOpenFile.isChecked() or self.rfOpenFile.isChecked(): 169 if self.rOpenFile.isChecked() or self.rfOpenFile.isChecked():
169 if not self.cSymlinks.isChecked(): 170 if not self.cSymlinks.isChecked():
170 options = QFileDialog.Options( 171 options = QFileDialog.Option.DontResolveSymlinks
171 QFileDialog.Option.DontResolveSymlinks) 172 else:
172 else: 173 options = QFileDialog.Option(0)
173 options = QFileDialog.Options()
174 options = self.__adjustOptions(options) 174 options = self.__adjustOptions(options)
175 QFileDialog.getOpenFileName( 175 QFileDialog.getOpenFileName(
176 None, 176 None,
177 self.eCaption.text(), 177 self.eCaption.text(),
178 self.eStartWith.text(), 178 self.eStartWith.text(),
179 self.eFilters.text(), 179 self.eFilters.text(),
180 self.eInitialFilter.text(), 180 self.eInitialFilter.text(),
181 options) 181 options)
182 elif self.rOpenFileUrl.isChecked(): 182 elif self.rOpenFileUrl.isChecked():
183 if not self.cSymlinks.isChecked(): 183 if not self.cSymlinks.isChecked():
184 options = QFileDialog.Options( 184 options = QFileDialog.Option.DontResolveSymlinks
185 QFileDialog.Option.DontResolveSymlinks) 185 else:
186 else: 186 options = QFileDialog.Option(0)
187 options = QFileDialog.Options() 187 options = self.__adjustOptions(options)
188 options = self.__adjustOptions(options) 188 QFileDialog.getOpenFileUrl(
189 try: 189 None,
190 QFileDialog.getOpenFileUrl( 190 self.eCaption.text(),
191 None, 191 QUrl(self.eStartWith.text()),
192 self.eCaption.text(), 192 self.eFilters.text(),
193 QUrl(self.eStartWith.text()), 193 self.eInitialFilter.text(),
194 self.eFilters.text(), 194 options,
195 self.eInitialFilter.text(), 195 self.schemesEdit.text().split())
196 options,
197 self.schemesEdit.text().split())
198 except TypeError:
199 # PyQt5 < 5.13.0 contains an error
200 QFileDialog.getOpenFileUrl(
201 None,
202 self.eCaption.text(),
203 self.eStartWith.text(),
204 self.eFilters.text(),
205 self.eInitialFilter.text(),
206 options,
207 self.schemesEdit.text().split())
208 elif self.rOpenFiles.isChecked() or self.rfOpenFiles.isChecked(): 196 elif self.rOpenFiles.isChecked() or self.rfOpenFiles.isChecked():
209 if not self.cSymlinks.isChecked(): 197 if not self.cSymlinks.isChecked():
210 options = QFileDialog.Options( 198 options = QFileDialog.Option.DontResolveSymlinks
211 QFileDialog.Option.DontResolveSymlinks) 199 else:
212 else: 200 options = QFileDialog.Option(0)
213 options = QFileDialog.Options()
214 options = self.__adjustOptions(options) 201 options = self.__adjustOptions(options)
215 QFileDialog.getOpenFileNames( 202 QFileDialog.getOpenFileNames(
216 None, 203 None,
217 self.eCaption.text(), 204 self.eCaption.text(),
218 self.eStartWith.text(), 205 self.eStartWith.text(),
219 self.eFilters.text(), 206 self.eFilters.text(),
220 self.eInitialFilter.text(), 207 self.eInitialFilter.text(),
221 options) 208 options)
222 elif self.rOpenFileUrls.isChecked(): 209 elif self.rOpenFileUrls.isChecked():
223 if not self.cSymlinks.isChecked(): 210 if not self.cSymlinks.isChecked():
224 options = QFileDialog.Options( 211 options = QFileDialog.Option.DontResolveSymlinks
225 QFileDialog.Option.DontResolveSymlinks) 212 else:
226 else: 213 options = QFileDialog.Option(0)
227 options = QFileDialog.Options() 214 options = self.__adjustOptions(options)
228 options = self.__adjustOptions(options) 215 QFileDialog.getOpenFileUrls(
229 try: 216 None,
230 QFileDialog.getOpenFileUrls( 217 self.eCaption.text(),
231 None, 218 QUrl(self.eStartWith.text()),
232 self.eCaption.text(), 219 self.eFilters.text(),
233 QUrl(self.eStartWith.text()), 220 self.eInitialFilter.text(),
234 self.eFilters.text(), 221 options,
235 self.eInitialFilter.text(), 222 self.schemesEdit.text().split())
236 options,
237 self.schemesEdit.text().split())
238 except TypeError:
239 # PyQt5 < 5.13.0 contains an error
240 QFileDialog.getOpenFileUrls(
241 None,
242 self.eCaption.text(),
243 self.eStartWith.text(),
244 self.eFilters.text(),
245 self.eInitialFilter.text(),
246 options,
247 self.schemesEdit.text().split())
248 elif self.rSaveFile.isChecked() or self.rfSaveFile.isChecked(): 223 elif self.rSaveFile.isChecked() or self.rfSaveFile.isChecked():
249 if not self.cSymlinks.isChecked(): 224 if not self.cSymlinks.isChecked():
250 options = QFileDialog.Options( 225 options = QFileDialog.Option.DontResolveSymlinks
251 QFileDialog.Option.DontResolveSymlinks) 226 else:
252 else: 227 options = QFileDialog.Option(0)
253 options = QFileDialog.Options()
254 options = self.__adjustOptions(options) 228 options = self.__adjustOptions(options)
255 QFileDialog.getSaveFileName( 229 QFileDialog.getSaveFileName(
256 None, 230 None,
257 self.eCaption.text(), 231 self.eCaption.text(),
258 self.eStartWith.text(), 232 self.eStartWith.text(),
259 self.eFilters.text(), 233 self.eFilters.text(),
260 self.eInitialFilter.text(), 234 self.eInitialFilter.text(),
261 options) 235 options)
262 elif self.rSaveFileUrl.isChecked(): 236 elif self.rSaveFileUrl.isChecked():
263 if not self.cSymlinks.isChecked(): 237 if not self.cSymlinks.isChecked():
264 options = QFileDialog.Options( 238 options = QFileDialog.Option.DontResolveSymlinks
265 QFileDialog.Option.DontResolveSymlinks) 239 else:
266 else: 240 options = QFileDialog.Option(0)
267 options = QFileDialog.Options() 241 options = self.__adjustOptions(options)
268 options = self.__adjustOptions(options) 242 QFileDialog.getSaveFileUrl(
269 try: 243 None,
270 QFileDialog.getSaveFileUrl( 244 self.eCaption.text(),
271 None, 245 QUrl(self.eStartWith.text()),
272 self.eCaption.text(), 246 self.eFilters.text(),
273 QUrl(self.eStartWith.text()), 247 self.eInitialFilter.text(),
274 self.eFilters.text(), 248 options,
275 self.eInitialFilter.text(), 249 self.schemesEdit.text().split())
276 options,
277 self.schemesEdit.text().split())
278 except TypeError:
279 # PyQt5 < 5.13.0 contains an error
280 QFileDialog.getSaveFileUrl(
281 None,
282 self.eCaption.text(),
283 self.eStartWith.text(),
284 self.eFilters.text(),
285 self.eInitialFilter.text(),
286 options,
287 self.schemesEdit.text().split())
288 elif self.rDirectory.isChecked(): 250 elif self.rDirectory.isChecked():
289 options = QFileDialog.Options() 251 options = QFileDialog.Option(0)
290 if not self.cSymlinks.isChecked(): 252 if not self.cSymlinks.isChecked():
291 options |= QFileDialog.Options( 253 options |= QFileDialog.Option.DontResolveSymlinks
292 QFileDialog.Option.DontResolveSymlinks)
293 if self.cDirOnly.isChecked(): 254 if self.cDirOnly.isChecked():
294 options |= QFileDialog.Options(QFileDialog.Option.ShowDirsOnly) 255 options |= QFileDialog.Option.ShowDirsOnly
295 else: 256 else:
296 options |= QFileDialog.Options(QFileDialog.Option(0)) 257 options |= QFileDialog.Option(0)
297 options = self.__adjustOptions(options) 258 options = self.__adjustOptions(options)
298 QFileDialog.getExistingDirectory( 259 QFileDialog.getExistingDirectory(
299 None, 260 None,
300 self.eCaption.text(), 261 self.eCaption.text(),
301 self.eWorkDir.text(), 262 self.eWorkDir.text(),
302 options) 263 options)
303 elif self.rDirectoryUrl.isChecked(): 264 elif self.rDirectoryUrl.isChecked():
304 options = QFileDialog.Options() 265 options = QFileDialog.Option(0)
305 if not self.cSymlinks.isChecked(): 266 if not self.cSymlinks.isChecked():
306 options |= QFileDialog.Options( 267 options |= QFileDialog.Option.DontResolveSymlinks
307 QFileDialog.Option.DontResolveSymlinks)
308 if self.cDirOnly.isChecked(): 268 if self.cDirOnly.isChecked():
309 options |= QFileDialog.Options(QFileDialog.Option.ShowDirsOnly) 269 options |= QFileDialog.Option.ShowDirsOnly
310 else: 270 else:
311 options |= QFileDialog.Options(QFileDialog.Option(0)) 271 options |= QFileDialog.Option(0)
312 options = self.__adjustOptions(options) 272 options = self.__adjustOptions(options)
313 try: 273 try:
314 QFileDialog.getExistingDirectoryUrl( 274 QFileDialog.getExistingDirectoryUrl(
315 None, 275 None,
316 self.eCaption.text(), 276 self.eCaption.text(),
487 fmt = 'self.tr("{0}")' 447 fmt = 'self.tr("{0}")'
488 initialFilter = fmt.format(self.eInitialFilter.text()) 448 initialFilter = fmt.format(self.eInitialFilter.text())
489 code += ',{0}{1}{2}'.format(os.linesep, istring, initialFilter) 449 code += ',{0}{1}{2}'.format(os.linesep, istring, initialFilter)
490 if not self.cSymlinks.isChecked(): 450 if not self.cSymlinks.isChecked():
491 code += ( 451 code += (
492 ',{0}{1}{2}.Options({2}{3}.DontResolveSymlinks)' 452 ',{0}{1}{2}{3}.DontResolveSymlinks'
493 .format(os.linesep, istring, dialogType, optionStr) 453 .format(os.linesep, istring, dialogType, optionStr)
494 ) 454 )
495 if self.rOpenFileUrl.isChecked() and bool(self.schemesEdit.text()): 455 if self.rOpenFileUrl.isChecked() and bool(self.schemesEdit.text()):
496 code += ',{0}{1}{2}'.format( 456 code += ',{0}{1}{2}'.format(
497 os.linesep, istring, self.__prepareSchemesList()) 457 os.linesep, istring, self.__prepareSchemesList())
552 fmt = 'self.tr("{0}")' 512 fmt = 'self.tr("{0}")'
553 initialFilter = fmt.format(self.eInitialFilter.text()) 513 initialFilter = fmt.format(self.eInitialFilter.text())
554 code += ',{0}{1}{2}'.format(os.linesep, istring, initialFilter) 514 code += ',{0}{1}{2}'.format(os.linesep, istring, initialFilter)
555 if not self.cSymlinks.isChecked(): 515 if not self.cSymlinks.isChecked():
556 code += ( 516 code += (
557 ',{0}{1}{2}.Options({2}{3}.DontResolveSymlinks)' 517 ',{0}{1}{2}{3}.DontResolveSymlinks'
558 .format(os.linesep, istring, dialogType, optionStr) 518 .format(os.linesep, istring, dialogType, optionStr)
559 ) 519 )
560 if ( 520 if (
561 self.rOpenFileUrls.isChecked() and 521 self.rOpenFileUrls.isChecked() and
562 bool(self.schemesEdit.text()) 522 bool(self.schemesEdit.text())
622 code += ',{0}{1}{2}'.format(os.linesep, istring, initialFilter) 582 code += ',{0}{1}{2}'.format(os.linesep, istring, initialFilter)
623 if ( 583 if (
624 (not self.cSymlinks.isChecked()) or 584 (not self.cSymlinks.isChecked()) or
625 (not self.cConfirmOverwrite.isChecked()) 585 (not self.cConfirmOverwrite.isChecked())
626 ): 586 ):
627 code += ',{0}{1}{2}.Options('.format( 587 code += ',{0}{1}'.format(os.linesep, istring)
628 os.linesep, istring, dialogType)
629 if not self.cSymlinks.isChecked(): 588 if not self.cSymlinks.isChecked():
630 code += '{0}{1}.DontResolveSymlinks'.format( 589 code += '{0}{1}.DontResolveSymlinks'.format(
631 dialogType, optionStr) 590 dialogType, optionStr)
632 if ( 591 if (
633 (not self.cSymlinks.isChecked()) and 592 (not self.cSymlinks.isChecked()) and
635 ): 594 ):
636 code += ' | ' 595 code += ' | '
637 if not self.cConfirmOverwrite.isChecked(): 596 if not self.cConfirmOverwrite.isChecked():
638 code += '{0}{1}.DontConfirmOverwrite'.format( 597 code += '{0}{1}.DontConfirmOverwrite'.format(
639 dialogType, optionStr) 598 dialogType, optionStr)
640 code += ')'
641 if ( 599 if (
642 self.rSaveFileUrl.isChecked() and 600 self.rSaveFileUrl.isChecked() and
643 bool(self.schemesEdit.text()) 601 bool(self.schemesEdit.text())
644 ): 602 ):
645 code += ',{0}{1}{2}'.format( 603 code += ',{0}{1}{2}'.format(
675 if self.cWorkDir.isChecked(): 633 if self.cWorkDir.isChecked():
676 fmt = '{0}' 634 fmt = '{0}'
677 else: 635 else:
678 fmt = '"{0}"' 636 fmt = '"{0}"'
679 code += fmt.format(self.eWorkDir.text()) 637 code += fmt.format(self.eWorkDir.text())
680 code += ',{0}{1}{2}.Options('.format(os.linesep, istring, 638 code += ',{0}{1}'.format(os.linesep, istring)
681 dialogType) 639 if (
682 if not self.cSymlinks.isChecked(): 640 (not self.cSymlinks.isChecked()) or
683 code += '{0}{1}.DontResolveSymlinks | '.format( 641 self.cDirOnly.isChecked()
684 dialogType, optionStr) 642 ):
685 if self.cDirOnly.isChecked(): 643 if not self.cSymlinks.isChecked():
686 code += '{0}{1}.ShowDirsOnly'.format( 644 code += '{0}{1}.DontResolveSymlinks'.format(
687 dialogType, optionStr) 645 dialogType, optionStr)
646 if (
647 (not self.cSymlinks.isChecked()) and
648 self.cDirOnly.isChecked()
649 ):
650 code += ' | '
651 if self.cDirOnly.isChecked():
652 code += '{0}{1}.ShowDirsOnly'.format(
653 dialogType, optionStr)
688 else: 654 else:
689 code += '{0}.Option(0)'.format(dialogType) 655 code += '{0}.Option(0)'.format(dialogType)
690 code += ')'
691 if self.rDirectoryUrl.isChecked(): 656 if self.rDirectoryUrl.isChecked():
692 code += ',{0}{1}{2}'.format( 657 code += ',{0}{1}{2}'.format(
693 os.linesep, istring, self.__prepareSchemesList()) 658 os.linesep, istring, self.__prepareSchemesList())
694 code += '){0}'.format(estring) 659 code += '){0}'.format(estring)
695 660

eric ide

mercurial