|
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) |