eric7/EricWidgets/EricPathPicker.py

branch
eric7
changeset 8403
d9fd02e8c28b
parent 8366
2a9f5153c438
child 8881
54e42bc2437a
--- 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,

eric ide

mercurial