src/eric7/Graphics/SvgDiagram.py

branch
server
changeset 10631
00f5aae565a3
parent 10439
21c28b0f9e41
child 10633
dda7e43934dc
--- a/src/eric7/Graphics/SvgDiagram.py	Fri Mar 08 15:30:23 2024 +0100
+++ b/src/eric7/Graphics/SvgDiagram.py	Fri Mar 08 15:30:53 2024 +0100
@@ -15,8 +15,11 @@
 
 from eric7 import Preferences
 from eric7.EricGui import EricPixmapCache
+from eric7.EricWidgets import EricMessageBox
+from eric7.EricWidgets.EricApplication import ericApp
 from eric7.EricWidgets.EricMainWindow import EricMainWindow
 from eric7.EricWidgets.EricZoomWidget import EricZoomWidget
+from eric7.SystemUtilities import FileSystemUtilities
 
 
 class SvgDiagram(EricMainWindow):
@@ -102,8 +105,7 @@
         self.resize(QSize(800, 600).expandedTo(self.minimumSizeHint()))
 
         self.zoom = 1.0
-        self.svgFile = svgFile
-        self.svgWidget.load(self.svgFile)
+        self.__loadSvgFile(svgFile)
         self.svgWidget.resize(self.svgWidget.renderer().defaultSize())
 
         self.__initActions()
@@ -112,6 +114,36 @@
 
         self.grabGesture(Qt.GestureType.PinchGesture)
 
+    def __loadSvgFile(self, svgFile):
+        """
+        Private method to load a given SVG file.
+
+        @param svgFile file path of the SVG file
+        @type str
+        """
+        self.svgFile = svgFile
+        if FileSystemUtilities.isRemoteFileName(svgFile):
+            try:
+                data = (
+                    ericApp()
+                    .getObject("EricServer")
+                    .getServiceInterface("FileSystem")
+                    .readFile(svgFile)
+                )
+                self.svgWidget.load(data)
+            except OSError as err:
+                EricMessageBox.warning(
+                    self,
+                    self.tr("SVG-Viewer"),
+                    self.tr(
+                        "<p>The SVG file <b>{0}</b> could not be loaded.</p>"
+                        "<p>Reason: {1}</p>"
+                    ).format(svgFile, str(err)),
+                )
+                
+        else:
+            self.svgWidget.load(self.svgFile)
+
     def __initActions(self):
         """
         Private method to initialize the view actions.

eric ide

mercurial