--- 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