E5XML/MultiProjectWriter.py

changeset 50
a36eecf45b2e
parent 15
f6ccc31d6e72
child 53
c3eb7cc1ff8b
equal deleted inserted replaced
49:f991944e859c 50:a36eecf45b2e
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2008 - 2010 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 E4Gui.E4Application import e4App
14
15 from .XMLWriterBase import XMLWriterBase
16 from .Config import multiProjectFileFormatVersion
17
18 import Preferences
19 import Utilities
20
21 class MultiProjectWriter(XMLWriterBase):
22 """
23 Class implementing the writer class for writing an XML project file.
24 """
25 def __init__(self, multiProject, file, multiProjectName):
26 """
27 Constructor
28
29 @param multiProject Reference to the multi project object
30 @param file open file (like) object for writing
31 @param projectName name of the project (string)
32 """
33 XMLWriterBase.__init__(self, file)
34
35 self.name = multiProjectName
36 self.multiProject = multiProject
37
38 def writeXML(self):
39 """
40 Public method to write the XML to the file.
41 """
42 XMLWriterBase.writeXML(self)
43
44 self._write('<!DOCTYPE MultiProject SYSTEM "MultiProject-%s.dtd">' % \
45 multiProjectFileFormatVersion)
46
47 # add some generation comments
48 self._write("<!-- eric5 multi project file for multi project %s -->" % self.name)
49 if Preferences.getMultiProject("XMLTimestamp"):
50 self._write("<!-- Saved: %s -->" % time.strftime('%Y-%m-%d, %H:%M:%S'))
51 self._write("<!-- Copyright (C) %s -->" % time.strftime('%Y'))
52
53 # add the main tag
54 self._write('<MultiProject version="%s">' % multiProjectFileFormatVersion)
55
56 # do description
57 self._write(" <Description>%s</Description>" % \
58 self.escape(self.encodedNewLines(self.multiProject.description)))
59
60 # do the projects
61 self._write(" <Projects>")
62 for project in self.multiProject.getProjects():
63 self._write(' <Project isMaster="%s">' % project['master'])
64 self._write(" <ProjectName>%s</ProjectName>" % \
65 self.escape(project['name']))
66 self._write(" <ProjectFile>%s</ProjectFile>" % \
67 Utilities.fromNativeSeparators(project['file']))
68 self._write(" <ProjectDescription>%s</ProjectDescription>" % \
69 self.escape(self.encodedNewLines(project['name'])))
70 self._write(" </Project>")
71 self._write(" </Projects>")
72
73 self._write("</MultiProject>", newline = False)

eric ide

mercurial