--- 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)