eric6/Project/Project.py

branch
jsonfiles
changeset 8011
630a173cb137
parent 8010
7ce2b8bb0d9b
child 8020
eddc8c3d3f9e
--- a/eric6/Project/Project.py	Wed Jan 27 15:11:03 2021 +0100
+++ b/eric6/Project/Project.py	Wed Jan 27 18:27:52 2021 +0100
@@ -47,6 +47,8 @@
 
 from Sessions.SessionFile import SessionFile
 
+from Tasks.TasksFile import TasksFile
+
 
 class Project(QObject):
     """
@@ -194,6 +196,7 @@
         self.__userProjectFile = UserProjectFile(self)
         self.__debuggerPropertiesFile = DebuggerPropertiesFile(self)
         self.__sessionFile = SessionFile(False)
+        self.__tasksFile = TasksFile(False)
         
         self.recent = []
         self.__loadRecent()
@@ -1063,7 +1066,6 @@
             If this flag is true, no errors are reported.
         @param indicator indicator string (string)
         """
-        # TODO: write project session
         if self.pfile is None:
             if not quiet:
                 E5MessageBox.critical(
@@ -1107,7 +1109,7 @@
         
     def __readTasks(self):
         """
-        Private method to read in the project tasks file (.e6t).
+        Private method to read in the project tasks file (.etj or .e6t).
         """
         if self.pfile is None:
             E5MessageBox.critical(
@@ -1116,57 +1118,45 @@
                 self.tr("Please save the project first."))
             return
         
-        # TODO: read project tasks
         base, ext = os.path.splitext(os.path.basename(self.pfile))
         fn = os.path.join(self.getProjectManagementDir(),
-                          '{0}.e6t'.format(base))
-        if not os.path.exists(fn):
-            # try again with the old extension
+                          '{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}.e4t'.format(base))
-            if not os.path.exists(fn):
-                return
-        f = QFile(fn)
-        if f.open(QIODevice.ReadOnly):
-            from E5XML.TasksReader import TasksReader
-            reader = TasksReader(f, True)
-            reader.readXML()
-            f.close()
-        else:
-            E5MessageBox.critical(
-                self.ui,
-                self.tr("Read Tasks"),
-                self.tr(
-                    "<p>The tasks file <b>{0}</b> could not be read.</p>")
-                .format(fn))
+                              '{0}.e6t'.format(base))
+            if os.path.exists(fn):
+                f = QFile(fn)
+                if f.open(QIODevice.ReadOnly):
+                    from E5XML.TasksReader import TasksReader
+                    reader = TasksReader(f, True)
+                    reader.readXML()
+                    f.close()
+                else:
+                    E5MessageBox.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):
         """
-        Public method to write the tasks data to an XML file (.e6t).
+        Public method to write the tasks data to an JSON file (.etj).
         """
         if self.pfile is None:
             return
             
         fn, ext = os.path.splitext(os.path.basename(self.pfile))
         
-        # TODO: write project tasks
-        fn = os.path.join(self.getProjectManagementDir(), '{0}.e6t'.format(fn))
-        f = QFile(fn)
-        ok = f.open(QIODevice.WriteOnly)
-        if not ok:
-            E5MessageBox.critical(
-                self.ui,
-                self.tr("Save Tasks"),
-                self.tr(
-                    "<p>The tasks file <b>{0}</b> could not be written.</p>")
-                .format(fn))
-            return
-        
-        from E5XML.TasksWriter import TasksWriter
-        TasksWriter(
-            f, True, os.path.splitext(os.path.basename(fn))[0]).writeXML()
-        f.close()
-        
+        fn = os.path.join(self.getProjectManagementDir(),
+                          '{0}.etj'.format(fn))
+        self.__tasksFile.writeFile(fn)
+    
     def __showContextMenuDebugger(self):
         """
         Private slot called before the Debugger menu is shown.

eric ide

mercurial