E5XML/TasksWriter.py

changeset 583
08bc660d6a15
parent 412
569efd7f2716
child 791
9ec2ac20e54e
diff -r 6b19bd357000 -r 08bc660d6a15 E5XML/TasksWriter.py
--- a/E5XML/TasksWriter.py	Fri Sep 10 12:41:22 2010 +0200
+++ b/E5XML/TasksWriter.py	Fri Sep 10 12:41:55 2010 +0200
@@ -11,25 +11,25 @@
 
 from E5Gui.E5Application import e5App
 
-from .XMLWriterBase import XMLWriterBase
+from .XMLStreamWriterBase import XMLStreamWriterBase
 from .Config import tasksFileFormatVersion
 
 import Preferences
 import Utilities
 
-class TasksWriter(XMLWriterBase):
+class TasksWriter(XMLStreamWriterBase):
     """
     Class implementing the writer class for writing an XML tasks file.
     """
-    def __init__(self, file, forProject = False, projectName=""):
+    def __init__(self, device, forProject = False, projectName = ""):
         """
         Constructor
         
-        @param file open file (like) object for writing
+        @param device reference to the I/O device to write to (QIODevice)
         @param forProject flag indicating project related mode (boolean)
         @param projectName name of the project (string)
         """
-        XMLWriterBase.__init__(self, file)
+        XMLStreamWriterBase.__init__(self, device)
         
         self.name = projectName
         self.forProject = forProject
@@ -38,23 +38,24 @@
         """
         Public method to write the XML to the file.
         """
-        XMLWriterBase.writeXML(self)
+        XMLStreamWriterBase.writeXML(self)
         
-        self._write('<!DOCTYPE Tasks SYSTEM "Tasks-{0}.dtd">'.format(
+        self.writeDTD('<!DOCTYPE Tasks SYSTEM "Tasks-{0}.dtd">'.format(
             tasksFileFormatVersion))
         
         # add some generation comments
         if self.forProject:
-            self._write("<!-- eric5 tasks file for project {0} -->".format(self.name))
+            self.writeComment(" eric5 tasks file for project {0} ".format(self.name))
             if Preferences.getProject("XMLTimestamp"):
-                self._write("<!-- Saved: {0} -->".format(
+                self.writeComment(" Saved: {0} ".format(
                     time.strftime('%Y-%m-%d, %H:%M:%S')))
         else:
-            self._write("<!-- eric5 tasks file -->")
-            self._write("<!-- Saved: {0} -->".format(time.strftime('%Y-%m-%d, %H:%M:%S')))
+            self.writeComment(" eric5 tasks file ")
+            self.writeComment(" Saved: {0} ".format(time.strftime('%Y-%m-%d, %H:%M:%S')))
         
         # add the main tag
-        self._write('<Tasks version="{0}">'.format(tasksFileFormatVersion))
+        self.writeStartElement("Tasks")
+        self.writeAttribute("version", tasksFileFormatVersion)
         
         # do the tasks
         if self.forProject:
@@ -62,20 +63,21 @@
         else:
             tasks = e5App().getObject("TaskViewer").getGlobalTasks()
         for task in tasks:
-            self._write('  <Task priority="{0:d}" completed="{1}" bugfix="{2}">'\
-                .format(task.priority, task.completed, task.isBugfixTask))
-            self._write('    <Summary>{0}</Summary>'.format(
-                self.escape("{0}".format(task.description.strip()))))
-            self._write('    <Description>{0}</Description>'.format(
-                self.escape(self.encodedNewLines(task.longtext.strip()))))
-            self._write('    <Created>{0}</Created>'.format(
-                time.strftime("%Y-%m-%d, %H:%M:%S", time.localtime(task.created))))
+            self.writeStartElement("Task")
+            self.writeAttribute("priority", str(task.priority))
+            self.writeAttribute("completed", str(task.completed))
+            self.writeAttribute("bugfix", str(task.isBugfixTask))
+            self.writeTextElement("Summary", task.description.strip())
+            self.writeTextElement("Description", task.longtext.strip())
+            self.writeTextElement("Created", 
+                time.strftime("%Y-%m-%d, %H:%M:%S", time.localtime(task.created)))
             if task.filename:
-                self._write('    <Resource>')
-                self._write('      <Filename>{0}</Filename>'.format(
-                    Utilities.fromNativeSeparators(task.filename)))
-                self._write('      <Linenumber>{0:d}</Linenumber>'.format(task.lineno))
-                self._write('    </Resource>')
-            self._write('  </Task>')
+                self.writeStartElement("Resource")
+                self.writeTextElement("Filename", 
+                    Utilities.fromNativeSeparators(task.filename))
+                self.writeTextElement("Linenumber", str(task.lineno))
+                self.writeEndElement()
+            self.writeEndElement()
         
-        self._write('</Tasks>', newline = False)
+        self.writeEndElement()
+        self.writeEndDocument()

eric ide

mercurial