src/eric7/Project/Project.py

branch
server
changeset 10631
00f5aae565a3
parent 10610
bb0149571d94
child 10632
1109854f15f9
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:

eric ide

mercurial