--- a/src/eric7/Project/UserProjectFile.py Mon Feb 19 19:37:00 2024 +0100 +++ b/src/eric7/Project/UserProjectFile.py Thu Feb 22 16:26:46 2024 +0100 @@ -16,6 +16,8 @@ from eric7 import Preferences from eric7.EricGui.EricOverrideCursor import EricOverridenCursor from eric7.EricWidgets import EricMessageBox +from eric7.EricWidgets.EricApplication import ericApp +from eric7.SystemUtilities import FileSystemUtilities Project = typing.TypeVar("Project") @@ -47,6 +49,10 @@ @return flag indicating a successful write @rtype bool """ + fsInterface = ( + ericApp().getObject("EricServer").getServiceInterface("FileSystem") + ) + userProjectDict = { "header": { "comment": "eric user project file for project {0}".format( @@ -62,13 +68,18 @@ try: jsonString = json.dumps(userProjectDict, indent=2) + "\n" - with open(filename, "w") as f: - f.write(jsonString) + if FileSystemUtilities.isRemoteFileName(filename): + title = self.tr("Save Remote User Project Properties") + fsInterface.writeFile(filename, jsonString.encode("utf-8")) + else: + title = self.tr("Save User Project Properties") + with open(filename, "w") as f: + f.write(jsonString) except (OSError, TypeError) as err: with EricOverridenCursor(): EricMessageBox.critical( None, - self.tr("Save User Project Properties"), + title, self.tr( "<p>The user specific project properties file" " <b>{0}</b> could not be written.</p>" @@ -89,14 +100,23 @@ @return flag indicating a successful read @rtype bool """ + fsInterface = ( + ericApp().getObject("EricServer").getServiceInterface("FileSystem") + ) + try: - with open(filename, "r") as f: - jsonString = f.read() + if FileSystemUtilities.isRemoteFileName(filename): + title = self.tr("Read Remote User Project Properties") + jsonString = fsInterface.readFile(filename).decode("utf-8") + else: + title = self.tr("Read User Project Properties") + with open(filename, "r") as f: + jsonString = f.read() userProjectDict = json.loads(jsonString) except (OSError, json.JSONDecodeError) as err: EricMessageBox.critical( None, - self.tr("Read User Project Properties"), + title, self.tr( "<p>The user specific project properties file <b>{0}</b>" " could not be read.</p><p>Reason: {1}</p>"