--- a/eric7/EricWidgets/EricPathPicker.py Sun May 30 19:03:39 2021 +0200 +++ b/eric7/EricWidgets/EricPathPicker.py Thu Jun 03 15:58:59 2021 +0200 @@ -32,6 +32,7 @@ SAVE_FILE_OVERWRITE_MODE = 4 DIRECTORY_MODE = 5 DIRECTORY_SHOW_FILES_MODE = 6 + OPEN_FILES_AND_DIRS_MODE = 7 CUSTOM_MODE = 99 NO_MODE = 100 @@ -158,7 +159,10 @@ self._completer = EricFileCompleter(self._editor) # set inactive text - if mode == EricPathPickerModes.OPEN_FILES_MODE: + if mode in ( + EricPathPickerModes.OPEN_FILES_MODE, + EricPathPickerModes.OPEN_FILES_AND_DIRS_MODE, + ): self._editor.setPlaceholderText( self.tr("Enter Path Names separated by ';'")) else: @@ -242,7 +246,10 @@ a native format @type bool """ - if self.__mode == EricPathPickerModes.OPEN_FILES_MODE: + if self.__mode in ( + EricPathPickerModes.OPEN_FILES_MODE, + EricPathPickerModes.OPEN_FILES_AND_DIRS_MODE, + ): self._setEditorText(path) else: if toNative: @@ -261,7 +268,10 @@ @return current path @rtype str """ - if self.__mode == EricPathPickerModes.OPEN_FILES_MODE: + if self.__mode in ( + EricPathPickerModes.OPEN_FILES_MODE, + EricPathPickerModes.OPEN_FILES_AND_DIRS_MODE, + ): if toNative: return ";".join( [QDir.toNativeSeparators(path) @@ -333,7 +343,10 @@ @return entered paths @rtype list of str """ - if self.__mode == EricPathPickerModes.OPEN_FILES_MODE: + if self.__mode in ( + EricPathPickerModes.OPEN_FILES_MODE, + EricPathPickerModes.OPEN_FILES_AND_DIRS_MODE, + ): return self.path(toNative=toNative).split(";") else: return [self.path(toNative=toNative)] @@ -503,6 +516,8 @@ windowTitle = self.tr("Choose a file to open") elif self.__mode == EricPathPickerModes.OPEN_FILES_MODE: windowTitle = self.tr("Choose files to open") + elif self.__mode == EricPathPickerModes.OPEN_FILES_AND_DIRS_MODE: + windowTitle = self.tr("Choose files and directories") elif self.__mode in [ EricPathPickerModes.SAVE_FILE_MODE, EricPathPickerModes.SAVE_FILE_ENSURE_EXTENSION_MODE, @@ -516,7 +531,9 @@ directory = self.__defaultDirectory directory = ( os.path.expanduser(directory.split(";")[0]) - if self.__mode == EricPathPickerModes.OPEN_FILES_MODE else + if self.__mode in ( + EricPathPickerModes.OPEN_FILES_MODE, + EricPathPickerModes.OPEN_FILES_AND_DIRS_MODE) else os.path.expanduser(directory) ) if not os.path.isabs(directory) and self.__defaultDirectory: @@ -538,6 +555,14 @@ self.__filters) path = ";".join([QDir.toNativeSeparators(path) for path in paths]) + elif self.__mode == EricPathPickerModes.OPEN_FILES_AND_DIRS_MODE: + paths = EricFileDialog.getOpenFileAndDirNames( + self, + windowTitle, + directory, + self.__filters) + path = ";".join([QDir.toNativeSeparators(path) + for path in paths]) elif self.__mode == EricPathPickerModes.SAVE_FILE_MODE: path = EricFileDialog.getSaveFileName( self,