eric6/Project/ProjectFile.py

changeset 8107
7d3932bde11b
parent 8031
ce5858a237d2
child 8125
9e789fa8f38e
diff -r 81bf8fe10735 -r 7d3932bde11b eric6/Project/ProjectFile.py
--- a/eric6/Project/ProjectFile.py	Mon Feb 15 19:56:28 2021 +0100
+++ b/eric6/Project/ProjectFile.py	Tue Feb 16 17:12:48 2021 +0100
@@ -17,6 +17,7 @@
 from E5Gui.E5OverrideCursor import E5OverridenCursor
 
 import Preferences
+import Utilities
 
 Project = typing.TypeVar("Project")
 
@@ -63,9 +64,33 @@
         
         projectDict["project"] = self.__project.pdata
         
+        # modify paths to contain universal separators
+        for key in (
+            "SOURCES", "FORMS", "TRANSLATIONS", "TRANSLATIONEXCEPTIONS",
+            "RESOURCES", "INTERFACES", "PROTOCOLS", "OTHERS"
+        ):
+            try:
+                projectDict["project"][key] = [
+                    Utilities.fromNativeSeparators(f)
+                    for f in projectDict["project"][key]
+                ]
+            except KeyError:
+                # ignore non-existent elements
+                pass
+        for key in (
+            "SPELLWORDS", "SPELLEXCLUDES", "TRANSLATIONPATTERN",
+            "TRANSLATIONSBINPATH", "MAINSCRIPT"
+        ):
+            try:
+                projectDict["project"][key] = Utilities.fromNativeSeparators(
+                    projectDict["project"][key])
+            except KeyError:
+                # ignore non-existent elements
+                pass
+        
         try:
             jsonString = json.dumps(projectDict, indent=2)
-            with open(filename, "w") as f:
+            with open(filename, "w", newline="") as f:
                 f.write(jsonString)
         except (TypeError, EnvironmentError) as err:
             with E5OverridenCursor():
@@ -105,6 +130,30 @@
             )
             return False
         
+        # modify paths to contain native separators
+        for key in (
+            "SOURCES", "FORMS", "TRANSLATIONS", "TRANSLATIONEXCEPTIONS",
+            "RESOURCES", "INTERFACES", "PROTOCOLS", "OTHERS"
+        ):
+            try:
+                projectDict["project"][key] = [
+                    Utilities.toNativeSeparators(f)
+                    for f in projectDict["project"][key]
+                ]
+            except KeyError:
+                # ignore non-existent elements
+                pass
+        for key in (
+            "SPELLWORDS", "SPELLEXCLUDES", "TRANSLATIONPATTERN",
+            "TRANSLATIONSBINPATH", "MAINSCRIPT"
+        ):
+            try:
+                projectDict["project"][key] = Utilities.toNativeSeparators(
+                    projectDict["project"][key])
+            except KeyError:
+                # ignore non-existent elements
+                pass
+        
         self.__project.pdata = projectDict["project"]
         
         return True

eric ide

mercurial