src/eric7/IconEditor/IconEditorWindow.py

branch
server
changeset 10631
00f5aae565a3
parent 10439
21c28b0f9e41
child 10633
dda7e43934dc
--- a/src/eric7/IconEditor/IconEditorWindow.py	Fri Mar 08 15:30:23 2024 +0100
+++ b/src/eric7/IconEditor/IconEditorWindow.py	Fri Mar 08 15:30:53 2024 +0100
@@ -11,7 +11,7 @@
 import os
 import pathlib
 
-from PyQt6.QtCore import QEvent, QSignalMapper, QSize, Qt, pyqtSignal
+from PyQt6.QtCore import QBuffer, QByteArray, QEvent, QSignalMapper, QSize, Qt, pyqtSignal
 from PyQt6.QtGui import QImage, QImageReader, QImageWriter, QKeySequence, QPalette
 from PyQt6.QtWidgets import QDockWidget, QLabel, QScrollArea, QWhatsThis
 
@@ -19,8 +19,10 @@
 from eric7.EricGui import EricPixmapCache
 from eric7.EricGui.EricAction import EricAction, createActionGroup
 from eric7.EricWidgets import EricFileDialog, EricMessageBox
+from eric7.EricWidgets.EricApplication import ericApp
 from eric7.EricWidgets.EricMainWindow import EricMainWindow
 from eric7.EricWidgets.EricZoomWidget import EricZoomWidget
+from eric7.SystemUtilities import FileSystemUtilities
 
 from .IconEditorGrid import IconEditorGrid, IconEditorTool
 
@@ -1282,7 +1284,28 @@
         @param fileName name of the icon file to load
         @type str
         """
-        img = QImage(fileName)
+        img = QImage()
+        if self.fromEric and FileSystemUtilities.isRemoteFileName(fileName):
+            try:
+                data = (
+                    ericApp()
+                    .getObject("EricServer")
+                    .getServiceInterface("FileSystem")
+                    .readFile(fileName)
+                )
+                img.loadFromData(data)
+            except OSError as err:
+                EricMessageBox.warning(
+                    self,
+                    self.tr("eric Icon Editor"),
+                    self.tr(
+                        """<p>The file <b>{0}</b> cannot be loaded.</p>"""
+                        """<p>Reason: {1}</p>"""
+                    ).format(fileName, str(err)),
+                )
+                return
+        else:
+            img.load(fileName)
         if img.isNull():
             EricMessageBox.warning(
                 self,
@@ -1303,7 +1326,30 @@
         @rtype bool
         """
         img = self.__editor.iconImage()
-        res = img.save(fileName)
+        if self.fromEric and FileSystemUtilities.isRemoteFileName(fileName):
+            fsInterface = (
+                ericApp().getObject("EricServer").getServiceInterface("FileSystem")
+            )
+            imageFormat = fsInterface.splitext(fileName)[1][1:].upper()
+            data = QByteArray()
+            buffer = QBuffer(data)
+            res = img.save(buffer, imageFormat)
+            if res:
+                try:
+                    fsInterface.writeFile(fileName, data)
+                except OSError as err:
+                    EricMessageBox.warning(
+                        self,
+                        self.tr("eric Icon Editor"),
+                        self.tr(
+                            """<p>The file <b>{0}</b> cannot be written.</p>"""
+                            """<p>Reason: {1}</p>"""
+                        ).format(fileName, str(err)),
+                    )
+                    self.__checkActions()
+                    return False
+        else:
+            res = img.save(fileName)
 
         if not res:
             EricMessageBox.warning(
@@ -1311,9 +1357,7 @@
                 self.tr("eric Icon Editor"),
                 self.tr("Cannot write file '{0}'.").format(fileName),
             )
-
             self.__checkActions()
-
             return False
 
         self.__editor.setDirty(False, setCleanState=True)

eric ide

mercurial