src/eric7/Graphics/UMLDialog.py

branch
server
changeset 10631
00f5aae565a3
parent 10595
59579e8aff98
child 10633
dda7e43934dc
diff -r 552a790fd9bc -r 00f5aae565a3 src/eric7/Graphics/UMLDialog.py
--- a/src/eric7/Graphics/UMLDialog.py	Fri Mar 08 15:30:23 2024 +0100
+++ b/src/eric7/Graphics/UMLDialog.py	Fri Mar 08 15:30:53 2024 +0100
@@ -17,7 +17,10 @@
 
 from eric7.EricGui import EricPixmapCache
 from eric7.EricWidgets import EricFileDialog, EricMessageBox
+from eric7.EricWidgets.EricApplication import ericApp
 from eric7.EricWidgets.EricMainWindow import EricMainWindow
+from eric7.RemoteServerInterface import EricServerFileDialog
+from eric7.SystemUtilities import FileSystemUtilities
 
 from .ApplicationDiagramBuilder import ApplicationDiagramBuilder
 from .ImportsDiagramBuilder import ImportsDiagramBuilder
@@ -86,6 +89,9 @@
 
         self.__project = project
         self.__diagramType = diagramType
+        self.__remotefsInterface = (
+            ericApp().getObject("EricServer").getServiceInterface("FileSystem")
+        )
 
         self.scene = QGraphicsScene(0.0, 0.0, 800.0, 600.0)
         self.umlView = UMLGraphicsView(self.scene, parent=self)
@@ -243,34 +249,56 @@
         @type str
         """
         if not filename:
-            fname, selectedFilter = EricFileDialog.getSaveFileNameAndFilter(
-                self,
-                self.tr("Save Diagram"),
-                "",
-                self.tr("Eric Graphics File (*.egj);;All Files (*)"),
-                "",
-                EricFileDialog.DontConfirmOverwrite,
-            )
-            if not fname:
-                return
+            if FileSystemUtilities.isRemoteFileName(self.__project.getProjectPath()):
+                fname, selectedFilter = EricServerFileDialog.getSaveFileNameAndFilter(
+                    self,
+                    self.tr("Save Diagram"),
+                    self.__project.getProjectPath(),
+                    self.tr("Eric Graphics File (*.egj);;All Files (*)"),
+                    "",
+                )
+                if not fname:
+                    return
 
-            fpath = pathlib.Path(fname)
-            if not fpath.suffix:
-                ex = selectedFilter.split("(*")[1].split(")")[0]
-                if ex:
-                    fpath = fpath.with_suffix(ex)
-            if fpath.exists():
+                ext = self.__remotefsInterface.splitext(fname)[1]
+                if not ext:
+                    ex = selectedFilter.split("(*")[1].split(")")[0]
+                    if ex:
+                        fname += ex
+                filename = fname
+                fileExists = self.__remotefsInterface.exists(filename)
+            else:
+                fname, selectedFilter = EricFileDialog.getSaveFileNameAndFilter(
+                    self,
+                    self.tr("Save Diagram"),
+                    self.__project.getProjectPath(),
+                    self.tr("Eric Graphics File (*.egj);;All Files (*)"),
+                    "",
+                    EricFileDialog.DontConfirmOverwrite,
+                )
+                if not fname:
+                    return
+
+                fpath = pathlib.Path(fname)
+                if not fpath.suffix:
+                    ex = selectedFilter.split("(*")[1].split(")")[0]
+                    if ex:
+                        fpath = fpath.with_suffix(ex)
+                fileExists = fpath.exists()
+                filename = str(fpath)
+
+            if fileExists:
                 res = EricMessageBox.yesNo(
                     self,
                     self.tr("Save Diagram"),
                     self.tr(
-                        "<p>The file <b>{0}</b> already exists. Overwrite it?</p>"
-                    ).format(fpath),
+                        "<p>The file <b>{0}</b> exists already. Overwrite it?</p>"
+                    ).format(filename),
                     icon=EricMessageBox.Warning,
                 )
                 if not res:
                     return
-            filename = str(fpath)
+            ##filename = str(fpath)
 
         res = self.__writeJsonGraphicsFile(filename)
 
@@ -289,12 +317,20 @@
         @rtype bool
         """
         if not filename:
-            filename = EricFileDialog.getOpenFileName(
-                self,
-                self.tr("Load Diagram"),
-                "",
-                self.tr("Eric Graphics File (*.egj);;All Files (*)"),
-            )
+            if FileSystemUtilities.isRemoteFileName(self.__project.getProjectPath()):
+                filename = EricServerFileDialog.getOpenFileName(
+                    self,
+                    self.tr("Load Diagram"),
+                    self.__project.getProjectPath(),
+                    self.tr("Eric Graphics File (*.egj);;All Files (*)"),
+                )
+            else:
+                filename = EricFileDialog.getOpenFileName(
+                    self,
+                    self.tr("Load Diagram"),
+                    self.__project.getProjectPath(),
+                    self.tr("Eric Graphics File (*.egj);;All Files (*)"),
+                )
             if not filename:
                 # Canceled by user
                 return False
@@ -343,8 +379,11 @@
 
         try:
             jsonString = json.dumps(data, indent=2)
-            with open(filename, "w") as f:
-                f.write(jsonString)
+            if FileSystemUtilities.isRemoteFileName(filename):
+                self.__remotefsInterface.writeFile(filename, jsonString.encode("utf-8"))
+            else:
+                with open(filename, "w") as f:
+                    f.write(jsonString)
             return True
         except (OSError, TypeError) as err:
             EricMessageBox.critical(
@@ -368,8 +407,12 @@
         @rtype bool
         """
         try:
-            with open(filename, "r") as f:
-                jsonString = f.read()
+            if FileSystemUtilities.isRemoteFileName(filename):
+                bdata = self.__remotefsInterface.readFile(filename)
+                jsonString = bdata.decode("utf-8")
+            else:
+                with open(filename, "r") as f:
+                    jsonString = f.read()
             data = json.loads(jsonString)
         except (OSError, json.JSONDecodeError) as err:
             EricMessageBox.critical(

eric ide

mercurial