eric6/E5XML/MultiProjectWriter.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) 2008 - 2019 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 from __future__ import unicode_literals
11
12 import os
13 import time
14
15 from .XMLStreamWriterBase import XMLStreamWriterBase
16 from .Config import multiProjectFileFormatVersion
17
18 import Preferences
19 import Utilities
20
21
22 class MultiProjectWriter(XMLStreamWriterBase):
23 """
24 Class implementing the writer class for writing an XML project file.
25 """
26 def __init__(self, device, multiProject, multiProjectName):
27 """
28 Constructor
29
30 @param device reference to the I/O device to write to (QIODevice)
31 @param multiProject Reference to the multi project object
32 @param multiProjectName name of the project (string)
33 """
34 XMLStreamWriterBase.__init__(self, device)
35
36 self.name = multiProjectName
37 self.multiProject = multiProject
38 self.path = os.path.dirname(device.fileName())
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 MultiProject SYSTEM "MultiProject-{0}.dtd">'
47 .format(multiProjectFileFormatVersion))
48
49 # add some generation comments
50 self.writeComment(" eric6 multi project file for multi project {0} "
51 .format(self.name))
52 if Preferences.getMultiProject("XMLTimestamp"):
53 self.writeComment(
54 " Saved: {0} ".format(time.strftime('%Y-%m-%d, %H:%M:%S')))
55 self.writeComment(
56 " Copyright (C) {0} ".format(time.strftime('%Y')))
57
58 # add the main tag
59 self.writeStartElement("MultiProject")
60 self.writeAttribute("version", multiProjectFileFormatVersion)
61
62 # do description
63 self.writeTextElement("Description", self.multiProject.description)
64
65 # do the projects
66 self.writeStartElement("Projects")
67 for project in self.multiProject.getProjects():
68 self.writeStartElement("Project")
69 self.writeAttribute("isMaster", str(project['master']))
70 self.writeAttribute("uid", project["uid"])
71 self.writeTextElement("ProjectName", project['name'])
72 self.writeTextElement(
73 "ProjectFile",
74 Utilities.relativeUniversalPath(project['file'], self.path))
75 self.writeTextElement("ProjectDescription", project['description'])
76 self.writeTextElement("ProjectCategory", project['category'])
77 self.writeEndElement()
78 self.writeEndElement()
79
80 self.writeEndElement()
81 self.writeEndDocument()

eric ide

mercurial