src/eric7/RemoteServerInterface/EricServerFileDialog.py

branch
server
changeset 10590
e7fe32611a80
parent 10561
be23a662d709
child 10597
fbe93720ee9f
--- a/src/eric7/RemoteServerInterface/EricServerFileDialog.py	Mon Feb 19 15:33:33 2024 +0100
+++ b/src/eric7/RemoteServerInterface/EricServerFileDialog.py	Mon Feb 19 15:34:15 2024 +0100
@@ -172,6 +172,9 @@
                 QAbstractItemView.SelectionMode.SingleSelection
             )
 
+        if mode == FileMode.Directory:
+            self.setNameFilters([self.tr("Directories")])
+
         self.__updateOkButton()
 
     def setNameFilters(self, filters):
@@ -182,12 +185,15 @@
             ("filter_name (pattern1 ... patternN)")
         @type list of str
         """
-        self.__filters = [
-            f.split(" (", 1)[1].split(")", 1)[0].split() for f in filters
-        ]
+        self.__filters = []
+        for f in filters:
+            if " (" in f and ")" in f:
+                self.__filters.append(f.split(" (", 1)[1].split(")", 1)[0].split())
+            elif f:
+                self.__filters.append(f)
 
         self.filterCombo.clear()
-        self.filterCombo.addItems(filters)
+        self.filterCombo.addItems([f for f in filters if f])
 
     def setNameFilter(self, filter):  # noqa: M132
         """
@@ -331,7 +337,6 @@
         """
         if (
             item.data(0, EricServerFileDialog.IsDirectoryRole)
-            and self.__fileMode != FileMode.Directory
         ):
             self.setDirectory(self.__getFullPath(item.text(0)))
         else:
@@ -426,7 +431,10 @@
             or self.__selectedDirectory is not None
         ):
             self.okButton.setIcon(EricPixmapCache.getIcon("dialog-ok"))
-            self.okButton.setText(self.tr("Open"))
+            if self.__fileMode != FileMode.Directory:
+                self.okButton.setText(self.tr("Open"))
+            else:
+                self.okButton.setText(self.tr("Choose"))
         else:
             self.okButton.setIcon(EricPixmapCache.getIcon("fileSave"))
             self.okButton.setText(self.tr("Save"))
@@ -446,9 +454,7 @@
                 all(n in self.__filenameCache for n in names)
             )
         elif self.__fileMode == FileMode.Directory:
-            self.okButton.setEnabled(
-                self.nameEdit.text() in self.__directoryCache
-            )
+            self.okButton.setEnabled(True)
         else:
             self.okButton.setEnabled(False)
 
@@ -533,7 +539,10 @@
                 itm.setTextAlignment(2, Qt.AlignmentFlag.AlignHCenter)
                 itm.setData(0, EricServerFileDialog.IsDirectoryRole, dirEntry["is_dir"])
 
-            filters = self.__filters[self.filterCombo.currentIndex()]
+            currentFilterIndex = self.filterCombo.currentIndex()
+            filters = (
+                [] if currentFilterIndex == -1 else self.__filters[currentFilterIndex]
+            )
             self.__filterList(filters)
 
             # 3. add the directory to the history
@@ -690,7 +699,10 @@
         @return selected files or current viewport path
         @rtype str
         """
-        return [self.__getFullPath(n) for n in self.__getNames()]
+        if self.__fileMode == FileMode.Directory and not self.nameEdit.text():
+            return [self.treeCombo.currentText()]
+        else:
+            return [self.__getFullPath(n) for n in self.__getNames()]
 
     def selectedNameFilter(self):
         """

eric ide

mercurial