diff -r 74666c6679af -r 4ba7a9b26020 eric6/Plugins/WizardPlugins/FileDialogWizard/FileDialogWizardDialog.py --- a/eric6/Plugins/WizardPlugins/FileDialogWizard/FileDialogWizardDialog.py Tue Sep 03 19:27:46 2019 +0200 +++ b/eric6/Plugins/WizardPlugins/FileDialogWizard/FileDialogWizardDialog.py Tue Sep 03 19:31:20 2019 +0200 @@ -11,7 +11,7 @@ import os -from PyQt5.QtCore import pyqtSlot +from PyQt5.QtCore import pyqtSlot, QUrl from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QFileDialog, \ QButtonGroup @@ -22,20 +22,22 @@ import Globals -# TODO: adjust this to Qt5 QFileDialog and Eric E5FileDialog class FileDialogWizardDialog(QDialog, Ui_FileDialogWizardDialog): """ Class implementing the color dialog wizard dialog. - It displays a dialog for entering the parameters - for the QFileDialog code generator. + It displays a dialog for entering the parameters for the + E5FileDialog or QFileDialog code generator. """ - def __init__(self, pyqtVariant, parent=None): + def __init__(self, dialogVariant, parent=None): """ Constructor - @param pyqtVariant variant of PyQt (integer; 0, 4 or 5) - @param parent parent widget (QWidget) + @param dialogVariant variant of the file dialog to be generated + (-1 = E5FileDialog, 0 = unknown, 4 = PyQt4, 5 = PyQt5) + @type int + @param parent parent widget + @type QWidget """ super(FileDialogWizardDialog, self).__init__(parent) self.setupUi(self) @@ -43,7 +45,7 @@ self.eStartWithCompleter = E5FileCompleter(self.eStartWith) self.eWorkDirCompleter = E5DirCompleter(self.eWorkDir) - self.__pyqtVariant = pyqtVariant + self.__dialogVariant = dialogVariant self.__typeButtonsGroup = QButtonGroup(self) self.__typeButtonsGroup.setExclusive(True) @@ -53,21 +55,36 @@ self.__typeButtonsGroup.addButton(self.rfOpenFile, 11) self.__typeButtonsGroup.addButton(self.rfOpenFiles, 12) self.__typeButtonsGroup.addButton(self.rfSaveFile, 13) - self.__typeButtonsGroup.addButton(self.rDirectory, 20) + self.__typeButtonsGroup.addButton(self.rOpenFileUrl, 21) + self.__typeButtonsGroup.addButton(self.rOpenFileUrls, 22) + self.__typeButtonsGroup.addButton(self.rSaveFileUrl, 23) + self.__typeButtonsGroup.addButton(self.rDirectory, 30) + self.__typeButtonsGroup.addButton(self.rDirectoryUrl, 31) self.__typeButtonsGroup.buttonClicked[int].connect( self.__toggleInitialFilterAndResult) self.__toggleInitialFilterAndResult(1) - self.pyqtComboBox.addItems(["PyQt4", "PyQt5"]) - self.__pyqtVariant = pyqtVariant - if self.__pyqtVariant == 5: - self.pyqtComboBox.setCurrentIndex(1) + self.__dialogVariant = dialogVariant + if self.__dialogVariant == -1: + self.pyqtComboBox.addItems(["eric"]) + self.setWindowTitle(self.tr("E5FileDialog Wizard")) + self.pyqtComboBox.setCurrentIndex(0) + self.pyqtComboBox.setEnabled(False) else: - self.pyqtComboBox.setCurrentIndex(0) + self.pyqtComboBox.addItems(["PyQt5", "PyQt4"]) + self.setWindowTitle(self.tr("QFileDialog Wizard")) + if self.__dialogVariant == 5: + self.pyqtComboBox.setCurrentIndex(0) + elif self.__dialogVariant == 4: + self.pyqtComboBox.setCurrentIndex(1) + else: + self.pyqtComboBox.setCurrentIndex(0) self.rSaveFile.toggled[bool].connect(self.__toggleConfirmCheckBox) self.rfSaveFile.toggled[bool].connect(self.__toggleConfirmCheckBox) + self.rSaveFileUrl.toggled[bool].connect(self.__toggleConfirmCheckBox) self.rDirectory.toggled[bool].connect(self.__toggleGroupsAndTest) + self.rDirectoryUrl.toggled[bool].connect(self.__toggleGroupsAndTest) self.cStartWith.toggled[bool].connect(self.__toggleGroupsAndTest) self.cWorkDir.toggled[bool].connect(self.__toggleGroupsAndTest) self.cFilters.toggled[bool].connect(self.__toggleGroupsAndTest) @@ -96,9 +113,14 @@ @param txt text of the selected combo box entry (string) """ - self.rfOpenFile.setEnabled(txt == "PyQt4") - self.rfOpenFiles.setEnabled(txt == "PyQt4") - self.rfSaveFile.setEnabled(txt == "PyQt4") + self.rfOpenFile.setEnabled(txt in ("eric", "PyQt4")) + self.rfOpenFiles.setEnabled(txt in ("eric", "PyQt4")) + self.rfSaveFile.setEnabled(txt in ("eric", "PyQt4")) + + self.rOpenFileUrl.setEnabled(txt == "PyQt5") + self.rOpenFileUrls.setEnabled(txt == "PyQt5") + self.rSaveFileUrl.setEnabled(txt == "PyQt5") + self.rDirectoryUrl.setEnabled(txt == "PyQt5") if txt == "PyQt5": if self.rfOpenFile.isChecked(): @@ -107,8 +129,25 @@ self.rOpenFiles.setChecked(True) elif self.rfSaveFile.isChecked(): self.rSaveFile.setChecked(True) + else: + if self.rOpenFileUrl.isChecked(): + self.rOpenFile.setChecked(True) + if self.rOpenFileUrls.isChecked(): + self.rOpenFiles.setChecked(True) + if self.rSaveFileUrl.isChecked(): + self.rSaveFile.setChecked(True) + if self.rDirectoryUrl.isChecked(): + self.rDirectory.setChecked(True) - self.__pyqtVariant = 5 if txt == "PyQt5" else 4 + if txt == "eric": + self.__dialogVariant = -1 + elif txt == "PyQt5": + self.__dialogVariant = 5 + elif txt == "PyQt4": + self.__dialogVariant = 4 + else: + # default is PyQt5 + self.__dialogVariant = 5 self.__toggleInitialFilterAndResult( self.__typeButtonsGroup.checkedId()) @@ -133,117 +172,114 @@ else: options = QFileDialog.Options() options = self.__adjustOptions(options) - if self.rOpenFile.isChecked() and self.__pyqtVariant == 4: - try: - QFileDialog.getOpenFileName( - None, - self.eCaption.text(), - self.eStartWith.text(), - self.eFilters.text(), - options) - except TypeError: - QFileDialog.getOpenFileName( - None, - self.eCaption.text(), - self.eStartWith.text(), - self.eFilters.text(), - self.eInitialFilter.text(), - options) + QFileDialog.getOpenFileName( + None, + self.eCaption.text(), + self.eStartWith.text(), + self.eFilters.text(), + self.eInitialFilter.text(), + options) + elif self.rOpenFileUrl.isChecked(): + if not self.cSymlinks.isChecked(): + options = QFileDialog.Options(QFileDialog.DontResolveSymlinks) else: - try: - QFileDialog.getOpenFileNameAndFilter( - None, - self.eCaption.text(), - self.eStartWith.text(), - self.eFilters.text(), - self.eInitialFilter.text(), - options) - except AttributeError: - QFileDialog.getOpenFileName( - None, - self.eCaption.text(), - self.eStartWith.text(), - self.eFilters.text(), - self.eInitialFilter.text(), - options) + options = QFileDialog.Options() + options = self.__adjustOptions(options) + try: + QFileDialog.getOpenFileUrl( + None, + self.eCaption.text(), + QUrl(self.eStartWith.text()), + self.eFilters.text(), + self.eInitialFilter.text(), + options, + self.schemesEdit.text().split()) + except TypeError: + # PyQt5 < 5.13.0 contains an error + QFileDialog.getOpenFileUrl( + None, + self.eCaption.text(), + self.eStartWith.text(), + self.eFilters.text(), + self.eInitialFilter.text(), + options, + self.schemesEdit.text().split()) elif self.rOpenFiles.isChecked() or self.rfOpenFiles.isChecked(): if not self.cSymlinks.isChecked(): options = QFileDialog.Options(QFileDialog.DontResolveSymlinks) else: options = QFileDialog.Options() options = self.__adjustOptions(options) - if self.rOpenFiles.isChecked() and self.__pyqtVariant == 4: - try: - QFileDialog.getOpenFileNames( - None, - self.eCaption.text(), - self.eStartWith.text(), - self.eFilters.text(), - options) - except TypeError: - QFileDialog.getOpenFileNames( - None, - self.eCaption.text(), - self.eStartWith.text(), - self.eFilters.text(), - self.eInitialFilter.text(), - options) + QFileDialog.getOpenFileNames( + None, + self.eCaption.text(), + self.eStartWith.text(), + self.eFilters.text(), + self.eInitialFilter.text(), + options) + elif self.rOpenFileUrls.isChecked(): + if not self.cSymlinks.isChecked(): + options = QFileDialog.Options(QFileDialog.DontResolveSymlinks) else: - try: - QFileDialog.getOpenFileNamesAndFilter( - None, - self.eCaption.text(), - self.eStartWith.text(), - self.eFilters.text(), - self.eInitialFilter.text(), - options) - except AttributeError: - QFileDialog.getOpenFileNames( - None, - self.eCaption.text(), - self.eStartWith.text(), - self.eFilters.text(), - self.eInitialFilter.text(), - options) + options = QFileDialog.Options() + options = self.__adjustOptions(options) + try: + QFileDialog.getOpenFileUrls( + None, + self.eCaption.text(), + QUrl(self.eStartWith.text()), + self.eFilters.text(), + self.eInitialFilter.text(), + options, + self.schemesEdit.text().split()) + except TypeError: + # PyQt5 < 5.13.0 contains an error + QFileDialog.getOpenFileUrls( + None, + self.eCaption.text(), + self.eStartWith.text(), + self.eFilters.text(), + self.eInitialFilter.text(), + options, + self.schemesEdit.text().split()) elif self.rSaveFile.isChecked() or self.rfSaveFile.isChecked(): if not self.cSymlinks.isChecked(): options = QFileDialog.Options(QFileDialog.DontResolveSymlinks) else: options = QFileDialog.Options() options = self.__adjustOptions(options) - if self.rSaveFile.isChecked() and self.__pyqtVariant == 4: - try: - QFileDialog.getSaveFileName( - None, - self.eCaption.text(), - self.eStartWith.text(), - self.eFilters.text(), - options) - except TypeError: - QFileDialog.getSaveFileName( - None, - self.eCaption.text(), - self.eStartWith.text(), - self.eFilters.text(), - self.eInitialFilter.text(), - options) + QFileDialog.getSaveFileName( + None, + self.eCaption.text(), + self.eStartWith.text(), + self.eFilters.text(), + self.eInitialFilter.text(), + options) + elif self.rSaveFileUrl.isChecked(): + if not self.cSymlinks.isChecked(): + options = QFileDialog.Options(QFileDialog.DontResolveSymlinks) else: - try: - QFileDialog.getSaveFileNameAndFilter( - None, - self.eCaption.text(), - self.eStartWith.text(), - self.eFilters.text(), - self.eInitialFilter.text(), - options) - except AttributeError: - QFileDialog.getSaveFileName( - None, - self.eCaption.text(), - self.eStartWith.text(), - self.eFilters.text(), - self.eInitialFilter.text(), - options) + options = QFileDialog.Options() + options = self.__adjustOptions(options) + try: + QFileDialog.getSaveFileUrl( + None, + self.eCaption.text(), + QUrl(self.eStartWith.text()), + self.eFilters.text(), + self.eInitialFilter.text(), + options, + self.schemesEdit.text().split()) + except TypeError: + # PyQt5 < 5.13.0 contains an error + QFileDialog.getSaveFileUrl( + None, + self.eCaption.text(), + self.eStartWith.text(), + self.eFilters.text(), + self.eInitialFilter.text(), + options, + self.schemesEdit.text().split()) elif self.rDirectory.isChecked(): options = QFileDialog.Options() if not self.cSymlinks.isChecked(): @@ -258,19 +294,44 @@ self.eCaption.text(), self.eWorkDir.text(), options) + elif self.rDirectoryUrl.isChecked(): + options = QFileDialog.Options() + if not self.cSymlinks.isChecked(): + options |= QFileDialog.Options(QFileDialog.DontResolveSymlinks) + if self.cDirOnly.isChecked(): + options |= QFileDialog.Options(QFileDialog.ShowDirsOnly) + else: + options |= QFileDialog.Options(QFileDialog.Option(0)) + options = self.__adjustOptions(options) + try: + QFileDialog.getExistingDirectoryUrl( + None, + self.eCaption.text(), + QUrl(self.eWorkDir.text()), + options, + self.schemesEdit.text().split()) + except TypeError: + # PyQt5 < 5.13.0 contains an error + QFileDialog.getExistingDirectoryUrl( + None, + self.eCaption.text(), + self.eWorkDir.text(), + options, + self.schemesEdit.text().split()) def __toggleConfirmCheckBox(self): """ Private slot to enable/disable the confirmation check box. """ self.cConfirmOverwrite.setEnabled( - self.rSaveFile.isChecked() or self.rfSaveFile.isChecked()) + self.rSaveFile.isChecked() or self.rfSaveFile.isChecked() or + self.rSaveFileUrl.isChecked()) def __toggleGroupsAndTest(self): """ Private slot to enable/disable certain groups and the test button. """ - if self.rDirectory.isChecked(): + if self.rDirectory.isChecked() or self.rDirectoryUrl.isChecked(): self.filePropertiesGroup.setEnabled(False) self.dirPropertiesGroup.setEnabled(True) self.bTest.setDisabled(self.cWorkDir.isChecked()) @@ -287,17 +348,19 @@ @param checkedId id of the clicked button (integer) """ - if (self.__pyqtVariant == 4 and checkedId in [11, 12, 13]) or \ - (self.__pyqtVariant == 5 and checkedId in [1, 2, 3]): - enable = True - else: - enable = False + enable = ( + (self.__dialogVariant in (-1, 4) and checkedId in [11, 12, 13]) or + (self.__dialogVariant == 5 and checkedId in [1, 2, 3, 21, 22, 23]) + ) + self.lInitialFilter.setEnabled(enable) self.eInitialFilter.setEnabled(enable) self.cInitialFilter.setEnabled(enable) self.lFilterVariable.setEnabled(enable) self.eFilterVariable.setEnabled(enable) + + self.urlPropertiesGroup.setEnabled(checkedId in (21, 22, 23, 31)) def getCode(self, indLevel, indString): """ @@ -338,10 +401,10 @@ nameVariable = "res" filterVariable = self.eFilterVariable.text() if not filterVariable: - if (self.__pyqtVariant == 4 and + if (self.__dialogVariant in (-1, 4) and self.__typeButtonsGroup.checkedButton() in [ self.rfOpenFile, self.rfOpenFiles, self.rfSaveFile]) or \ - (self.__pyqtVariant == 5 and + (self.__dialogVariant == 5 and self.__typeButtonsGroup.checkedButton() in [ self.rOpenFile, self.rOpenFiles, self.rSaveFile]): filterVariable = ", selectedFilter" @@ -350,10 +413,18 @@ else: filterVariable = ", " + filterVariable - code = '{0}{1} = QFileDialog.'.format(nameVariable, filterVariable) - if self.rOpenFile.isChecked() or self.rfOpenFile.isChecked(): + if self.__dialogVariant == -1: + dialogType = "E5FileDialog" + else: + dialogType = "QFileDialog" + + code = '{0}{1} = {2}.'.format(nameVariable, filterVariable, dialogType) + if self.rOpenFile.isChecked() or self.rfOpenFile.isChecked() or \ + self.rOpenFileUrl.isChecked(): if self.rOpenFile.isChecked(): code += 'getOpenFileName({0}{1}'.format(os.linesep, istring) + elif self.rOpenFileUrl.isChecked(): + code += 'getOpenFileUrl({0}{1}'.format(os.linesep, istring) else: code += 'getOpenFileNameAndFilter({0}{1}'.format( os.linesep, istring) @@ -363,14 +434,26 @@ else: code += 'self.tr("{0}"),{1}{2}'.format( self.eCaption.text(), os.linesep, istring) - if not self.eStartWith.text(): - code += '"",{0}{1}'.format(os.linesep, istring) + if self.rOpenFileUrl.isChecked(): + if not self.eStartWith.text(): + code += 'QUrl(),{0}{1}'.format(os.linesep, istring) + else: + if self.cStartWith.isChecked(): + fmt = '{0},{1}{2}' + else: + fmt = 'QUrl("{0}"),{1}{2}' + code += fmt.format(self.eStartWith.text(), os.linesep, + istring) else: - if self.cStartWith.isChecked(): - fmt = '{0},{1}{2}' + if not self.eStartWith.text(): + code += '"",{0}{1}'.format(os.linesep, istring) else: - fmt = 'self.tr("{0}"),{1}{2}' - code += fmt.format(self.eStartWith.text(), os.linesep, istring) + if self.cStartWith.isChecked(): + fmt = '{0},{1}{2}' + else: + fmt = '"{0}",{1}{2}' + code += fmt.format(self.eStartWith.text(), os.linesep, + istring) if self.eFilters.text() == "": code += '""' else: @@ -379,7 +462,70 @@ else: fmt = 'self.tr("{0}")' code += fmt.format(self.eFilters.text()) - if self.rfOpenFile.isChecked() or self.__pyqtVariant == 5: + if self.rfOpenFile.isChecked() or self.__dialogVariant == 5: + if self.eInitialFilter.text() == "": + initialFilter = "None" + else: + if self.cInitialFilter.isChecked(): + fmt = '{0}' + else: + fmt = 'self.tr("{0}")' + initialFilter = fmt.format(self.eInitialFilter.text()) + code += ',{0}{1}{2}'.format(os.linesep, istring, initialFilter) + if not self.cSymlinks.isChecked(): + code += \ + ',{0}{1}{2}.Options(' \ + '{2}.DontResolveSymlinks)' \ + .format(os.linesep, istring, dialogType) + if self.rOpenFileUrl.isChecked() and bool(self.schemesEdit.text()): + code += \ + ',{0}{1}{2}'.format(os.linesep, istring, + self.__prepareSchemesList()) + code += '){0}'.format(estring) + elif self.rOpenFiles.isChecked() or self.rfOpenFiles.isChecked() or \ + self.rOpenFileUrls.isChecked(): + if self.rOpenFiles.isChecked(): + code += 'getOpenFileNames({0}{1}'.format(os.linesep, istring) + elif self.rOpenFileUrls.isChecked(): + code += 'getOpenFileUrls({0}{1}'.format(os.linesep, istring) + else: + code += 'getOpenFileNamesAndFilter({0}{1}'.format( + os.linesep, istring) + code += '{0},{1}{2}'.format(parent, os.linesep, istring) + if not self.eCaption.text(): + code += '"",{0}{1}'.format(os.linesep, istring) + else: + code += 'self.tr("{0}"),{1}{2}'.format( + self.eCaption.text(), os.linesep, istring) + if self.rOpenFileUrls.isChecked(): + if not self.eStartWith.text(): + code += 'QUrl(),{0}{1}'.format(os.linesep, istring) + else: + if self.cStartWith.isChecked(): + fmt = '{0},{1}{2}' + else: + fmt = 'QUrl("{0}"),{1}{2}' + code += fmt.format(self.eStartWith.text(), os.linesep, + istring) + else: + if not self.eStartWith.text(): + code += '"",{0}{1}'.format(os.linesep, istring) + else: + if self.cStartWith.isChecked(): + fmt = '{0},{1}{2}' + else: + fmt = '"{0}",{1}{2}' + code += fmt.format(self.eStartWith.text(), os.linesep, + istring) + if not self.eFilters.text(): + code += '""' + else: + if self.cFilters.isChecked(): + fmt = '{0}' + else: + fmt = 'self.tr("{0}")' + code += fmt.format(self.eFilters.text()) + if self.rfOpenFiles.isChecked() or self.__dialogVariant == 5: if self.eInitialFilter.text() == "": initialFilter = "None" else: @@ -391,57 +537,21 @@ code += ',{0}{1}{2}'.format(os.linesep, istring, initialFilter) if not self.cSymlinks.isChecked(): code += \ - ',{0}{1}QFileDialog.Options(' \ - 'QFileDialog.DontResolveSymlinks)' \ - .format(os.linesep, istring) + ',{0}{1}{2}.Options(' \ + '{2}.DontResolveSymlinks)' \ + .format(os.linesep, istring, dialogType) + if self.rOpenFileUrls.isChecked() and \ + bool(self.schemesEdit.text()): + code += \ + ',{0}{1}{2}'.format(os.linesep, istring, + self.__prepareSchemesList()) code += '){0}'.format(estring) - elif self.rOpenFiles.isChecked() or self.rfOpenFiles.isChecked(): - if self.rOpenFiles.isChecked(): - code += 'getOpenFileNames({0}{1}'.format(os.linesep, istring) - else: - code += 'getOpenFileNamesAndFilter({0}{1}'.format( - os.linesep, istring) - code += '{0},{1}{2}'.format(parent, os.linesep, istring) - if not self.eCaption.text(): - code += '"",{0}{1}'.format(os.linesep, istring) - else: - code += 'self.tr("{0}"),{1}{2}'.format( - self.eCaption.text(), os.linesep, istring) - if not self.eStartWith.text(): - code += '"",{0}{1}'.format(os.linesep, istring) - else: - if self.cStartWith.isChecked(): - fmt = '{0},{1}{2}' - else: - fmt = 'self.tr("{0}"),{1}{2}' - code += fmt.format(self.eStartWith.text(), os.linesep, istring) - if not self.eFilters.text(): - code += '""' - else: - if self.cFilters.isChecked(): - fmt = '{0}' - else: - fmt = 'self.tr("{0}")' - code += fmt.format(self.eFilters.text()) - if self.rfOpenFiles.isChecked() or self.__pyqtVariant == 5: - if self.eInitialFilter.text() == "": - initialFilter = "None" - else: - if self.cInitialFilter.isChecked(): - fmt = '{0}' - else: - fmt = 'self.tr("{0}")' - initialFilter = fmt.format(self.eInitialFilter.text()) - code += ',{0}{1}{2}'.format(os.linesep, istring, initialFilter) - if not self.cSymlinks.isChecked(): - code += \ - ',{0}{1}QFileDialog.Options(' \ - 'QFileDialog.DontResolveSymlinks)' \ - .format(os.linesep, istring) - code += '){0}'.format(estring) - elif self.rSaveFile.isChecked() or self.rfSaveFile.isChecked(): + elif self.rSaveFile.isChecked() or self.rfSaveFile.isChecked() or \ + self.rSaveFileUrl.isChecked(): if self.rSaveFile.isChecked(): code += 'getSaveFileName({0}{1}'.format(os.linesep, istring) + elif self.rSaveFileUrl.isChecked(): + code += 'getSaveFileUrl({0}{1}'.format(os.linesep, istring) else: code += 'getSaveFileNameAndFilter({0}{1}'.format( os.linesep, istring) @@ -451,14 +561,26 @@ else: code += 'self.tr("{0}"),{1}{2}'.format( self.eCaption.text(), os.linesep, istring) - if not self.eStartWith.text(): - code += '"",{0}{1}'.format(os.linesep, istring) + if self.rSaveFileUrl.isChecked(): + if not self.eStartWith.text(): + code += 'QUrl(),{0}{1}'.format(os.linesep, istring) + else: + if self.cStartWith.isChecked(): + fmt = '{0},{1}{2}' + else: + fmt = 'QUrl("{0}"),{1}{2}' + code += fmt.format(self.eStartWith.text(), os.linesep, + istring) else: - if self.cStartWith.isChecked(): - fmt = '{0},{1}{2}' + if not self.eStartWith.text(): + code += '"",{0}{1}'.format(os.linesep, istring) else: - fmt = 'self.tr("{0}"),{1}{2}' - code += fmt.format(self.eStartWith.text(), os.linesep, istring) + if self.cStartWith.isChecked(): + fmt = '{0},{1}{2}' + else: + fmt = '"{0}",{1}{2}' + code += fmt.format(self.eStartWith.text(), os.linesep, + istring) if not self.eFilters.text(): code += '""' else: @@ -467,7 +589,7 @@ else: fmt = 'self.tr("{0}")' code += fmt.format(self.eFilters.text()) - if self.rfSaveFile.isChecked() or self.__pyqtVariant == 5: + if self.rfSaveFile.isChecked() or self.__dialogVariant == 5: if self.eInitialFilter.text() == "": initialFilter = "None" else: @@ -479,40 +601,75 @@ code += ',{0}{1}{2}'.format(os.linesep, istring, initialFilter) if (not self.cSymlinks.isChecked()) or \ (not self.cConfirmOverwrite.isChecked()): - code += ',{0}{1}QFileDialog.Options('.format( - os.linesep, istring) + code += ',{0}{1}{2}.Options('.format( + os.linesep, istring, dialogType) if not self.cSymlinks.isChecked(): - code += 'QFileDialog.DontResolveSymlinks' + code += '{0}.DontResolveSymlinks'.format(dialogType) if (not self.cSymlinks.isChecked()) and \ (not self.cConfirmOverwrite.isChecked()): code += ' | ' if not self.cConfirmOverwrite.isChecked(): - code += 'QFileDialog.DontConfirmOverwrite' + code += '{0}.DontConfirmOverwrite'.format(dialogType) code += ')' + if self.rSaveFileUrl.isChecked() and \ + bool(self.schemesEdit.text()): + code += \ + ',{0}{1}{2}'.format(os.linesep, istring, + self.__prepareSchemesList()) code += '){0}'.format(estring) - elif self.rDirectory.isChecked(): - code += 'getExistingDirectory({0}{1}'.format(os.linesep, istring) + elif self.rDirectory.isChecked() or self.rDirectoryUrl.isChecked(): + if self.rDirectory.isChecked(): + code += 'getExistingDirectory({0}{1}'.format( + os.linesep, istring) + else: + code += 'getExistingDirectoryUrl({0}{1}'.format( + os.linesep, istring) code += '{0},{1}{2}'.format(parent, os.linesep, istring) if not self.eCaption.text(): code += '"",{0}{1}'.format(os.linesep, istring) else: code += 'self.tr("{0}"),{1}{2}'.format( self.eCaption.text(), os.linesep, istring) - if not self.eWorkDir.text(): - code += '""' + if self.rDirectoryUrl.isChecked(): + if not self.eWorkDir.text(): + code += 'QUrl()' + else: + if self.cWorkDir.isChecked(): + fmt = '{0}' + else: + fmt = 'QUrl("{0}")' + code += fmt.format(self.eWorkDir.text()) else: - if self.cWorkDir.isChecked(): - fmt = '{0}' + if not self.eWorkDir.text(): + code += '""' else: - fmt = 'self.tr("{0}")' - code += fmt.format(self.eWorkDir.text()) - code += ',{0}{1}QFileDialog.Options('.format(os.linesep, istring) + if self.cWorkDir.isChecked(): + fmt = '{0}' + else: + fmt = '"{0}"' + code += fmt.format(self.eWorkDir.text()) + code += ',{0}{1}{2}.Options('.format(os.linesep, istring, + dialogType) if not self.cSymlinks.isChecked(): - code += 'QFileDialog.DontResolveSymlinks | ' + code += '{0}.DontResolveSymlinks | '.format(dialogType) if self.cDirOnly.isChecked(): - code += 'QFileDialog.ShowDirsOnly' + code += '{0}.ShowDirsOnly'.format(dialogType) else: - code += 'QFileDialog.Option(0)' - code += ')){0}'.format(estring) + code += '{0}.Option(0)'.format(dialogType) + code += ')' + if self.rDirectoryUrl.isChecked(): + code += \ + ',{0}{1}{2}'.format(os.linesep, istring, + self.__prepareSchemesList()) + code += '){0}'.format(estring) return code + + def __prepareSchemesList(self): + """ + Private method to prepare the list of supported schemes. + + @return string representation of the supported schemes + @rtype str + """ + return repr(self.schemesEdit.text().strip().split())