src/eric7/Project/ProjectBrowserModel.py

branch
server
changeset 10631
00f5aae565a3
parent 10610
bb0149571d94
child 10680
306373ccf8fd
diff -r 552a790fd9bc -r 00f5aae565a3 src/eric7/Project/ProjectBrowserModel.py
--- a/src/eric7/Project/ProjectBrowserModel.py	Fri Mar 08 15:30:23 2024 +0100
+++ b/src/eric7/Project/ProjectBrowserModel.py	Fri Mar 08 15:30:53 2024 +0100
@@ -342,63 +342,106 @@
         """
         self._addWatchedItem(parentItem)
 
-        qdir = QDir(parentItem.dirName())
+        dirName = parentItem.dirName()
+        if FileSystemUtilities.isPlainFileName(dirName):
+            qdir = QDir(parentItem.dirName())
 
-        fileFilter = (
-            (QDir.Filter.AllEntries | QDir.Filter.Hidden | QDir.Filter.NoDotAndDotDot)
-            if Preferences.getProject("BrowsersListHiddenFiles")
-            else QDir.Filter.AllEntries | QDir.Filter.NoDotAndDotDot
-        )
-        entryInfoList = qdir.entryInfoList(fileFilter)
+            fileFilter = (
+                (
+                    QDir.Filter.AllEntries
+                    | QDir.Filter.Hidden
+                    | QDir.Filter.NoDotAndDotDot
+                )
+                if Preferences.getProject("BrowsersListHiddenFiles")
+                else QDir.Filter.AllEntries | QDir.Filter.NoDotAndDotDot
+            )
+            entryInfoList = qdir.entryInfoList(fileFilter)
 
-        if len(entryInfoList) > 0:
-            if repopulate:
-                self.beginInsertRows(
-                    self.createIndex(parentItem.row(), 0, parentItem),
-                    0,
-                    len(entryInfoList) - 1,
-                )
-            states = {}
-            if self.project.vcs is not None:
-                for f in entryInfoList:
-                    fname = f.absoluteFilePath()
-                    states[os.path.normcase(fname)] = 0
-                dname = parentItem.dirName()
-                self.project.vcs.clearStatusCache()
-                states = self.project.vcs.vcsAllRegisteredStates(states, dname)
+            if len(entryInfoList) > 0:
+                if repopulate:
+                    self.beginInsertRows(
+                        self.createIndex(parentItem.row(), 0, parentItem),
+                        0,
+                        len(entryInfoList) - 1,
+                    )
+                states = {}
+                if self.project.vcs is not None:
+                    for f in entryInfoList:
+                        fname = f.absoluteFilePath()
+                        states[os.path.normcase(fname)] = 0
+                    dname = parentItem.dirName()
+                    self.project.vcs.clearStatusCache()
+                    states = self.project.vcs.vcsAllRegisteredStates(states, dname)
 
-            for f in entryInfoList:
-                node = (
-                    ProjectBrowserDirectoryItem(
-                        parentItem,
-                        FileSystemUtilities.toNativeSeparators(f.absoluteFilePath()),
-                        parentItem.getProjectTypes()[0],
-                        False,
-                        fsInterface=self.__remotefsInterface,
-                    )
-                    if f.isDir()
-                    else ProjectBrowserFileItem(
-                        parentItem,
-                        FileSystemUtilities.toNativeSeparators(f.absoluteFilePath()),
-                        parentItem.getProjectTypes()[0],
-                        fsInterface=self.__remotefsInterface,
+                for f in entryInfoList:
+                    node = (
+                        ProjectBrowserDirectoryItem(
+                            parentItem,
+                            FileSystemUtilities.toNativeSeparators(
+                                f.absoluteFilePath()
+                            ),
+                            parentItem.getProjectTypes()[0],
+                            False,
+                            fsInterface=self.__remotefsInterface,
+                        )
+                        if f.isDir()
+                        else ProjectBrowserFileItem(
+                            parentItem,
+                            FileSystemUtilities.toNativeSeparators(
+                                f.absoluteFilePath()
+                            ),
+                            parentItem.getProjectTypes()[0],
+                            fsInterface=self.__remotefsInterface,
+                        )
                     )
-                )
-                if self.project.vcs is not None:
-                    fname = f.absoluteFilePath()
-                    if (
-                        states[os.path.normcase(fname)]
-                        == VersionControlState.Controlled
-                    ):
-                        node.addVcsStatus(self.project.vcs.vcsName())
-                        self.project.clearStatusMonitorCachedState(f.absoluteFilePath())
+                    if self.project.vcs is not None:
+                        fname = f.absoluteFilePath()
+                        if (
+                            states[os.path.normcase(fname)]
+                            == VersionControlState.Controlled
+                        ):
+                            node.addVcsStatus(self.project.vcs.vcsName())
+                            self.project.clearStatusMonitorCachedState(
+                                f.absoluteFilePath()
+                            )
+                        else:
+                            node.addVcsStatus(self.tr("local"))
                     else:
-                        node.addVcsStatus(self.tr("local"))
-                else:
+                        node.addVcsStatus("")
+                    self._addItem(node, parentItem)
+                if repopulate:
+                    self.endInsertRows()
+
+        elif FileSystemUtilities.isRemoteFileName(dirName):
+            entriesList = self.__remotefsInterface.listdir(dirName)[2]
+            if len(entriesList) > 0:
+                if repopulate:
+                    self.beginInsertRows(
+                        self.createIndex(parentItem.row(), 0, parentItem),
+                        0,
+                        len(entryInfoList) - 1,
+                    )
+                for entry in entriesList:
+                    node = (
+                        ProjectBrowserDirectoryItem(
+                            parentItem,
+                            entry["path"],
+                            parentItem.getProjectTypes()[0],
+                            False,
+                            fsInterface=self.__remotefsInterface,
+                        )
+                        if entry["is_dir"]
+                        else ProjectBrowserFileItem(
+                            parentItem,
+                            entry["path"],
+                            parentItem.getProjectTypes()[0],
+                            fsInterface=self.__remotefsInterface,
+                        )
+                    )
                     node.addVcsStatus("")
-                self._addItem(node, parentItem)
-            if repopulate:
-                self.endInsertRows()
+                    self._addItem(node, parentItem)
+                if repopulate:
+                    self.endInsertRows()
 
     def projectClosed(self):
         """
@@ -427,7 +470,9 @@
         states = {}
         fileCategories = self.project.getFileCategories()
 
-        if self.project.vcs is not None:
+        if self.project.vcs is not None and not FileSystemUtilities.isRemoteFileName(
+            self.project.ppath
+        ):
             for fileCategory in fileCategories:
                 for fn in self.project.getProjectData(dataKey=fileCategory):
                     states[os.path.normcase(os.path.join(self.project.ppath, fn))] = 0
@@ -479,7 +524,10 @@
                     )
                 )
                 self._addItem(itm, parentItem)
-                if self.project.vcs is not None:
+                if (
+                    self.project.vcs is not None
+                    and not FileSystemUtilities.isRemoteFileName(self.project.ppath)
+                ):
                     if (
                         states[os.path.normcase(fname)]
                         == VersionControlState.Controlled

eric ide

mercurial