eric7/E5XML/MultiProjectWriter.py

branch
eric7
changeset 8351
7d13e08ddb3f
parent 8350
74a3b2a6a944
child 8352
879dc528461f
equal deleted inserted replaced
8350:74a3b2a6a944 8351:7d13e08ddb3f
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2008 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing the writer class for writing an XML multi project file.
8 """
9
10 import os
11 import time
12
13 from .XMLStreamWriterBase import XMLStreamWriterBase
14 from .Config import multiProjectFileFormatVersion
15
16 import Preferences
17 import Utilities
18
19
20 class MultiProjectWriter(XMLStreamWriterBase):
21 """
22 Class implementing the writer class for writing an XML project file.
23 """
24 def __init__(self, device, multiProject, multiProjectName):
25 """
26 Constructor
27
28 @param device reference to the I/O device to write to (QIODevice)
29 @param multiProject Reference to the multi project object
30 @param multiProjectName name of the project (string)
31 """
32 XMLStreamWriterBase.__init__(self, device)
33
34 self.name = multiProjectName
35 self.multiProject = multiProject
36 self.path = os.path.dirname(device.fileName())
37
38 def writeXML(self):
39 """
40 Public method to write the XML to the file.
41 """
42 XMLStreamWriterBase.writeXML(self)
43
44 self.writeDTD('<!DOCTYPE MultiProject SYSTEM "MultiProject-{0}.dtd">'
45 .format(multiProjectFileFormatVersion))
46
47 # add some generation comments
48 self.writeComment(" eric multi project file for multi project {0} "
49 .format(self.name))
50 if Preferences.getMultiProject("TimestampFile"):
51 self.writeComment(
52 " Saved: {0} ".format(time.strftime('%Y-%m-%d, %H:%M:%S')))
53 self.writeComment(
54 " Copyright (C) {0} ".format(time.strftime('%Y')))
55
56 # add the main tag
57 self.writeStartElement("MultiProject")
58 self.writeAttribute("version", multiProjectFileFormatVersion)
59
60 # do description
61 self.writeTextElement("Description", self.multiProject.description)
62
63 # do the projects
64 self.writeStartElement("Projects")
65 for project in self.multiProject.getProjects():
66 self.writeStartElement("Project")
67 self.writeAttribute("isMaster", str(project['master']))
68 self.writeAttribute("uid", project["uid"])
69 self.writeTextElement("ProjectName", project['name'])
70 self.writeTextElement(
71 "ProjectFile",
72 Utilities.relativeUniversalPath(project['file'], self.path))
73 self.writeTextElement("ProjectDescription", project['description'])
74 self.writeTextElement("ProjectCategory", project['category'])
75 self.writeEndElement()
76 self.writeEndElement()
77
78 self.writeEndElement()
79 self.writeEndDocument()

eric ide

mercurial