eric6/E5XML/TasksWriter.py

changeset 6942
2602857055c5
parent 6645
ad476851d7e0
child 7229
53054eb5b15a
equal deleted inserted replaced
6941:f99d60d6b59b 6942:2602857055c5
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2005 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing the writer class for writing an XML tasks file.
8 """
9
10 from __future__ import unicode_literals
11
12 import time
13
14 from E5Gui.E5Application import e5App
15
16 from .XMLStreamWriterBase import XMLStreamWriterBase
17 from .Config import tasksFileFormatVersion
18
19 import Preferences
20 import Utilities
21
22
23 class TasksWriter(XMLStreamWriterBase):
24 """
25 Class implementing the writer class for writing an XML tasks file.
26 """
27 def __init__(self, device, forProject=False, projectName=""):
28 """
29 Constructor
30
31 @param device reference to the I/O device to write to (QIODevice)
32 @param forProject flag indicating project related mode (boolean)
33 @param projectName name of the project (string)
34 """
35 XMLStreamWriterBase.__init__(self, device)
36
37 self.name = projectName
38 self.forProject = forProject
39
40 def writeXML(self):
41 """
42 Public method to write the XML to the file.
43 """
44 XMLStreamWriterBase.writeXML(self)
45
46 self.writeDTD('<!DOCTYPE Tasks SYSTEM "Tasks-{0}.dtd">'.format(
47 tasksFileFormatVersion))
48
49 # add some generation comments
50 if self.forProject:
51 self.writeComment(
52 " eric6 tasks file for project {0} ".format(self.name))
53 if Preferences.getProject("XMLTimestamp"):
54 self.writeComment(" Saved: {0} ".format(
55 time.strftime('%Y-%m-%d, %H:%M:%S')))
56 else:
57 self.writeComment(" eric6 tasks file ")
58 self.writeComment(
59 " Saved: {0} ".format(time.strftime('%Y-%m-%d, %H:%M:%S')))
60
61 # add the main tag
62 self.writeStartElement("Tasks")
63 self.writeAttribute("version", tasksFileFormatVersion)
64
65 # write the project scan filter
66 if self.forProject:
67 self.writeTextElement(
68 "ProjectScanFilter",
69 e5App().getObject("TaskViewer").projectTasksScanFilter.strip())
70
71 # do the tasks
72 if self.forProject:
73 tasks = e5App().getObject("TaskViewer").getProjectTasks()
74 else:
75 tasks = e5App().getObject("TaskViewer").getGlobalTasks()
76 for task in tasks:
77 self.writeStartElement("Task")
78 self.writeAttribute("priority", str(task.priority))
79 self.writeAttribute("completed", str(task.completed))
80 self.writeAttribute("type", str(task.taskType))
81 self.writeAttribute("uid", task.uid)
82 if task.parentUid:
83 self.writeAttribute("parent_uid", task.parentUid)
84 if task.childCount() > 0:
85 self.writeAttribute("expanded", str(task.isExpanded()))
86
87 self.writeTextElement("Summary", task.summary.strip())
88 self.writeTextElement("Description", task.description.strip())
89 self.writeTextElement("Created", time.strftime(
90 "%Y-%m-%d, %H:%M:%S", time.localtime(task.created)))
91 if task.filename:
92 self.writeStartElement("Resource")
93 self.writeTextElement(
94 "Filename",
95 Utilities.fromNativeSeparators(task.filename))
96 self.writeTextElement("Linenumber", str(task.lineno))
97 self.writeEndElement()
98 self.writeEndElement()
99
100 self.writeEndElement()
101 self.writeEndDocument()

eric ide

mercurial