E4XML/MultiProjectWriter.py

changeset 0
de9c2efb9d02
child 12
1d8dd9706f46
equal deleted inserted replaced
-1:000000000000 0:de9c2efb9d02
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2008 - 2009 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("<!-- eric4 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