diff -r 552a790fd9bc -r 00f5aae565a3 src/eric7/Project/Project.py --- a/src/eric7/Project/Project.py Fri Mar 08 15:30:23 2024 +0100 +++ b/src/eric7/Project/Project.py Fri Mar 08 15:30:53 2024 +0100 @@ -1145,6 +1145,8 @@ self.name = self.__remotefsInterface.splitext( self.__remotefsInterface.basename(fn) )[0] + # TODO: read in a file system cache of ppath + self.__remotefsInterface.populateFsCache(self.ppath) else: self.pfile = os.path.abspath(fn) self.ppath = os.path.abspath(os.path.dirname(fn)) @@ -1185,7 +1187,7 @@ for fn in self.__pdata[fileCategory]: dn = ( self.__remotefsInterface.dirname(fn) - if FileSystemUtilities.isRemoteFileName(fn) + if FileSystemUtilities.isRemoteFileName(self.ppath) else os.path.dirname(fn) ) if dn and dn not in self.subdirs: @@ -1651,7 +1653,9 @@ """ from .DebuggerPropertiesDialog import DebuggerPropertiesDialog - dlg = DebuggerPropertiesDialog(self) + dlg = DebuggerPropertiesDialog( + self, isRemote=FileSystemUtilities.isRemoteFileName(self.ppath) + ) if dlg.exec() == QDialog.DialogCode.Accepted: dlg.storeData() @@ -1664,7 +1668,10 @@ @return value of the property @rtype Any """ - if key == "INTERPRETER": + if ( + key == "INTERPRETER" + and not FileSystemUtilities.isRemoteFileName(self.ppath) + ): return ( ericApp() .getObject("VirtualEnvManager") @@ -2368,16 +2375,26 @@ isSourceFile = fn in self.__pdata["SOURCES"] if newfn is None: - newfn = EricFileDialog.getSaveFileName( - None, - self.tr("Rename file"), - oldfn, - "", - EricFileDialog.DontConfirmOverwrite, - ) + if isRemote: + newfn = EricServerFileDialog.getSaveFileName( + None, + self.tr("Rename File"), + oldfn, + "", + ) + else: + newfn = EricFileDialog.getSaveFileName( + None, + self.tr("Rename File"), + oldfn, + "", + options=EricFileDialog.DontConfirmOverwrite, + ) + if newfn: + newfn = FileSystemUtilities.toNativeSeparators(newfn) + if not newfn: return False - newfn = FileSystemUtilities.toNativeSeparators(newfn) if (not isRemote and os.path.exists(newfn)) or ( isRemote and self.__remotefsInterface.exists(newfn) @@ -2396,7 +2413,7 @@ try: if isRemote: - self.__remotefsInterface.rename(oldfn, newfn) + self.__remotefsInterface.replace(oldfn, newfn) else: os.rename(oldfn, newfn) except OSError as msg: @@ -4011,6 +4028,10 @@ self.ui.taskViewer.clearProjectTasks() self.ui.taskViewer.setProjectOpen(False) + # TODO: clear the file system cache for ppath if remote project + if FileSystemUtilities.isRemoteFileName(self.ppath): + self.__remotefsInterface.removeFromFsCache(self.ppath) + # now shutdown the vcs interface if not FileSystemUtilities.isRemoteFileName(self.ppath) and self.vcs: self.vcs.vcsShutdown() @@ -6439,6 +6460,9 @@ forProject = True override = False + if FileSystemUtilities.isRemoteFileName(self.ppath): + return None + if vcsSystem is None: if self.__pdata["VCS"] and self.__pdata["VCS"] != "None": vcsSystem = self.__pdata["VCS"] @@ -7902,6 +7926,8 @@ and self.opened and FileSystemUtilities.isRemoteFileName(self.pfile) ) + if not connected and FileSystemUtilities.isRemoteFileName(self.ppath): + self.closeProject(noSave=True) @pyqtSlot() def __openRemoteProject(self): @@ -7930,7 +7956,6 @@ defaultPath, self.tr("Project Files (*.epj)"), defaultFilter, - EricFileDialog.DontConfirmOverwrite, ) if fn: