src/eric7/Project/Project.py

branch
eric7
changeset 10595
59579e8aff98
parent 10593
b7ebfc2e47d4
child 10598
79c6ea2cb2e7
child 10607
96cb59c9c3f4
--- a/src/eric7/Project/Project.py	Mon Feb 19 19:17:04 2024 +0100
+++ b/src/eric7/Project/Project.py	Wed Feb 21 10:56:24 2024 +0100
@@ -23,8 +23,6 @@
 from PyQt6.QtCore import (
     QByteArray,
     QCryptographicHash,
-    QFile,
-    QIODevice,
     QObject,
     QProcess,
     pyqtSignal,
@@ -45,11 +43,6 @@
 from eric7.EricWidgets.EricApplication import ericApp
 from eric7.EricWidgets.EricListSelectionDialog import EricListSelectionDialog
 from eric7.EricWidgets.EricProgressDialog import EricProgressDialog
-from eric7.EricXML.DebuggerPropertiesReader import DebuggerPropertiesReader
-from eric7.EricXML.ProjectReader import ProjectReader
-from eric7.EricXML.SessionReader import SessionReader
-from eric7.EricXML.TasksReader import TasksReader
-from eric7.EricXML.UserProjectReader import UserProjectReader
 from eric7.Globals import recentNameProject
 from eric7.Sessions.SessionFile import SessionFile
 from eric7.SystemUtilities import (
@@ -875,7 +868,6 @@
             "*.rst": "OTHERS",
             "README": "OTHERS",
             "README.*": "OTHERS",
-            "*.e4p": "OTHERS",
             "*.epj": "OTHERS",
             "GNUmakefile": "OTHERS",
             "makefile": "OTHERS",
@@ -1118,46 +1110,15 @@
 
     def __readProject(self, fn):
         """
-        Private method to read in a project (.epj or .e4p) file.
+        Private method to read in a project (.epj) file.
 
         @param fn filename of the project file to be read
         @type str
         @return flag indicating success
         @rtype bool
         """
-        if os.path.splitext(fn)[1] == ".epj":
-            # new JSON based format
-            with EricOverrideCursor():
-                res = self.__projectFile.readFile(fn)
-        else:
-            # old XML based format
-            f = QFile(fn)
-            if f.open(QIODevice.OpenModeFlag.ReadOnly):
-                reader = ProjectReader(f, self)
-                reader.readXML()
-                res = not reader.hasError()
-                f.close()
-
-                # create hash value, if it doesn't have one
-                if reader.version.startswith("5.") and not self.__pdata["HASH"]:
-                    hashStr = str(
-                        QCryptographicHash.hash(
-                            QByteArray(self.ppath.encode("utf-8")),
-                            QCryptographicHash.Algorithm.Sha1,
-                        ).toHex(),
-                        encoding="utf-8",
-                    )
-                    self.__pdata["HASH"] = hashStr
-                    self.setDirty(True)
-            else:
-                EricMessageBox.critical(
-                    self.ui,
-                    self.tr("Read Project File"),
-                    self.tr(
-                        "<p>The project file <b>{0}</b> could not be read.</p>"
-                    ).format(fn),
-                )
-                res = False
+        with EricOverrideCursor():
+            res = self.__projectFile.readFile(fn)
 
         if res:
             self.pfile = os.path.abspath(fn)
@@ -1247,8 +1208,7 @@
 
     def __readUserProperties(self):
         """
-        Private method to read in the user specific project file (.eqj or
-        .e4q).
+        Private method to read in the user specific project file (.eqj).
         """
         if self.pfile is None:
             return
@@ -1256,26 +1216,7 @@
         fn1, ext = os.path.splitext(os.path.basename(self.pfile))
         fn = os.path.join(self.getProjectManagementDir(), "{0}.eqj".format(fn1))
         if os.path.exists(fn):
-            # try the new JSON based format first
             self.__userProjectFile.readFile(fn)
-        else:
-            # try the old XML based format second
-            fn = os.path.join(self.getProjectManagementDir(), "{0}.e4q".format(fn1))
-            if os.path.exists(fn):
-                f = QFile(fn)
-                if f.open(QIODevice.OpenModeFlag.ReadOnly):
-                    reader = UserProjectReader(f, self)
-                    reader.readXML()
-                    f.close()
-                else:
-                    EricMessageBox.critical(
-                        self.ui,
-                        self.tr("Read User Project Properties"),
-                        self.tr(
-                            "<p>The user specific project properties file"
-                            " <b>{0}</b> could not be read.</p>"
-                        ).format(fn),
-                    )
 
     def __writeUserProperties(self):
         """
@@ -1299,16 +1240,15 @@
             enable = False
         else:
             fn, ext = os.path.splitext(os.path.basename(self.pfile))
-            fn_new = os.path.join(self.getProjectManagementDir(), "{0}.esj".format(fn))
-            fn_old = os.path.join(self.getProjectManagementDir(), "{0}.e5s".format(fn))
-            enable = os.path.exists(fn_new) or os.path.exists(fn_old)
+            fn_sess = os.path.join(self.getProjectManagementDir(), "{0}.esj".format(fn))
+            enable = os.path.exists(fn_sess)
         self.sessActGrp.findChild(QAction, "project_load_session").setEnabled(enable)
         self.sessActGrp.findChild(QAction, "project_delete_session").setEnabled(enable)
 
     @pyqtSlot()
     def __readSession(self, quiet=False, indicator=""):
         """
-        Private method to read in the project session file (.esj or .e5s).
+        Private method to read in the project session file (.esj).
 
         @param quiet flag indicating quiet operations.
                 If this flag is true, no errors are reported.
@@ -1330,29 +1270,7 @@
             self.getProjectManagementDir(), "{0}{1}.esj".format(fn1, indicator)
         )
         if os.path.exists(fn):
-            # try the new JSON based format first
             self.__sessionFile.readFile(fn)
-        else:
-            # try the old XML based format second
-            fn = os.path.join(
-                self.getProjectManagementDir(), "{0}{1}.e5s".format(fn1, indicator)
-            )
-            if os.path.exists(fn):
-                f = QFile(fn)
-                if f.open(QIODevice.OpenModeFlag.ReadOnly):
-                    reader = SessionReader(f, False)
-                    reader.readXML(quiet=quiet)
-                    f.close()
-                else:
-                    if not quiet:
-                        EricMessageBox.critical(
-                            self.ui,
-                            self.tr("Read project session"),
-                            self.tr(
-                                "<p>The project session file <b>{0}</b> could"
-                                " not be read.</p>"
-                            ).format(fn),
-                        )
 
     @pyqtSlot()
     def __writeSession(self, quiet=False, indicator=""):
@@ -1395,26 +1313,23 @@
 
         fname, ext = os.path.splitext(os.path.basename(self.pfile))
 
-        for ext in (".esj", ".e5s", ".e4s"):
-            fn = os.path.join(
-                self.getProjectManagementDir(), "{0}{1}".format(fname, ext)
-            )
-            if os.path.exists(fn):
-                try:
-                    os.remove(fn)
-                except OSError:
-                    EricMessageBox.critical(
-                        self.ui,
-                        self.tr("Delete Project Session"),
-                        self.tr(
-                            "<p>The project session file <b>{0}</b> could"
-                            " not be deleted.</p>"
-                        ).format(fn),
-                    )
+        fn = os.path.join(self.getProjectManagementDir(), f"{fname}.esj")
+        if os.path.exists(fn):
+            try:
+                os.remove(fn)
+            except OSError:
+                EricMessageBox.critical(
+                    self.ui,
+                    self.tr("Delete Project Session"),
+                    self.tr(
+                        "<p>The project session file <b>{0}</b> could"
+                        " not be deleted.</p>"
+                    ).format(fn),
+                )
 
     def __readTasks(self):
         """
-        Private method to read in the project tasks file (.etj or .e6t).
+        Private method to read in the project tasks file (.etj).
         """
         if self.pfile is None:
             EricMessageBox.critical(
@@ -1427,25 +1342,7 @@
         base, ext = os.path.splitext(os.path.basename(self.pfile))
         fn = os.path.join(self.getProjectManagementDir(), "{0}.etj".format(base))
         if os.path.exists(fn):
-            # try new style JSON file first
             self.__tasksFile.readFile(fn)
-        else:
-            # try old style XML file second
-            fn = os.path.join(self.getProjectManagementDir(), "{0}.e6t".format(base))
-            if os.path.exists(fn):
-                f = QFile(fn)
-                if f.open(QIODevice.OpenModeFlag.ReadOnly):
-                    reader = TasksReader(f, True)
-                    reader.readXML()
-                    f.close()
-                else:
-                    EricMessageBox.critical(
-                        self.ui,
-                        self.tr("Read Tasks"),
-                        self.tr(
-                            "<p>The tasks file <b>{0}</b> could not be read.</p>"
-                        ).format(fn),
-                    )
 
     def writeTasks(self):
         """
@@ -1468,11 +1365,7 @@
             enable = False
         else:
             fn, ext = os.path.splitext(os.path.basename(self.pfile))
-            # try new style file first
             fn = os.path.join(self.getProjectManagementDir(), "{0}.edj".format(fn))
-            if not os.path.exists(fn):
-                # try old style file second
-                fn = os.path.join(self.getProjectManagementDir(), "{0}.e4d".format(fn))
             enable = os.path.exists(fn)
         self.dbgActGrp.findChild(
             QAction, "project_debugger_properties_load"
@@ -1484,8 +1377,7 @@
     @pyqtSlot()
     def __readDebugProperties(self, quiet=False):
         """
-        Private method to read in the project debugger properties file
-        (.edj or .e4d).
+        Private method to read in the project debugger properties file (.edj).
 
         @param quiet flag indicating quiet operations.
             If this flag is true, no errors are reported.
@@ -1502,32 +1394,12 @@
 
         fn1, ext = os.path.splitext(os.path.basename(self.pfile))
         fn = os.path.join(self.getProjectManagementDir(), "{0}.edj".format(fn1))
-        if os.path.exists(fn):
-            # try the new JSON based format first
-            if self.__debuggerPropertiesFile.readFile(fn):
-                self.debugPropertiesLoaded = True
-                self.debugPropertiesChanged = False
-        else:
-            # try the old XML based format second
-            fn = os.path.join(self.getProjectManagementDir(), "{0}.e4d".format(fn1))
-
-            f = QFile(fn)
-            if f.open(QIODevice.OpenModeFlag.ReadOnly):
-                reader = DebuggerPropertiesReader(f, self)
-                reader.readXML(quiet=quiet)
-                f.close()
-                self.debugPropertiesLoaded = True
-                self.debugPropertiesChanged = False
-            else:
-                if not quiet:
-                    EricMessageBox.critical(
-                        self.ui,
-                        self.tr("Read Debugger Properties"),
-                        self.tr(
-                            "<p>The project debugger properties file"
-                            " <b>{0}</b> could not be read.</p>"
-                        ).format(fn),
-                    )
+        if (
+            os.path.exists(fn)
+            and self.__debuggerPropertiesFile.readFile(fn)
+        ):
+            self.debugPropertiesLoaded = True
+            self.debugPropertiesChanged = False
 
     @pyqtSlot()
     def __writeDebugProperties(self, quiet=False):
@@ -1555,8 +1427,7 @@
 
     def __deleteDebugProperties(self):
         """
-        Private method to delete the project debugger properties file
-        (.edj or .e4d).
+        Private method to delete the project debugger properties file (.edj).
         """
         if self.pfile is None:
             EricMessageBox.critical(
@@ -1568,22 +1439,19 @@
 
         fname, ext = os.path.splitext(os.path.basename(self.pfile))
 
-        for ext in (".edj", ".e4d"):
-            fn = os.path.join(
-                self.getProjectManagementDir(), "{0}{1}".format(fname, ext)
-            )
-            if os.path.exists(fn):
-                try:
-                    os.remove(fn)
-                except OSError:
-                    EricMessageBox.critical(
-                        self.ui,
-                        self.tr("Delete Debugger Properties"),
-                        self.tr(
-                            "<p>The project debugger properties file"
-                            " <b>{0}</b> could not be deleted.</p>"
-                        ).format(fn),
-                    )
+        fn = os.path.join(self.getProjectManagementDir(), f"{fname}.edj")
+        if os.path.exists(fn):
+            try:
+                os.remove(fn)
+            except OSError:
+                EricMessageBox.critical(
+                    self.ui,
+                    self.tr("Delete Debugger Properties"),
+                    self.tr(
+                        "<p>The project debugger properties file"
+                        " <b>{0}</b> could not be deleted.</p>"
+                    ).format(fn),
+                )
 
     def __initDebugProperties(self):
         """
@@ -3247,7 +3115,7 @@
                 self.parent(),
                 self.tr("Open project"),
                 Preferences.getMultiProject("Workspace") or OSUtilities.getHomeDir(),
-                self.tr("Project Files (*.epj);;XML Project Files (*.e4p)"),
+                self.tr("Project Files (*.epj)"),
             )
 
         if fn and self.closeProject():
@@ -3423,9 +3291,6 @@
         """
         if self.isDirty():
             if len(self.pfile) > 0:
-                if self.pfile.endswith(".e4p"):
-                    self.pfile = self.pfile.replace(".e4p", ".epj")
-                    self.__syncRecent()
                 ok = self.__writeProject()
             else:
                 ok = self.saveProjectAs()

eric ide

mercurial