diff -r f991944e859c -r a36eecf45b2e E5XML/MultiProjectWriter.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/E5XML/MultiProjectWriter.py Tue Jan 12 17:55:24 2010 +0000 @@ -0,0 +1,73 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2008 - 2010 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing the writer class for writing an XML multi project file. +""" + +import os +import time + +from E4Gui.E4Application import e4App + +from .XMLWriterBase import XMLWriterBase +from .Config import multiProjectFileFormatVersion + +import Preferences +import Utilities + +class MultiProjectWriter(XMLWriterBase): + """ + Class implementing the writer class for writing an XML project file. + """ + def __init__(self, multiProject, file, multiProjectName): + """ + Constructor + + @param multiProject Reference to the multi project object + @param file open file (like) object for writing + @param projectName name of the project (string) + """ + XMLWriterBase.__init__(self, file) + + self.name = multiProjectName + self.multiProject = multiProject + + def writeXML(self): + """ + Public method to write the XML to the file. + """ + XMLWriterBase.writeXML(self) + + self._write('<!DOCTYPE MultiProject SYSTEM "MultiProject-%s.dtd">' % \ + multiProjectFileFormatVersion) + + # add some generation comments + self._write("<!-- eric5 multi project file for multi project %s -->" % self.name) + if Preferences.getMultiProject("XMLTimestamp"): + self._write("<!-- Saved: %s -->" % time.strftime('%Y-%m-%d, %H:%M:%S')) + self._write("<!-- Copyright (C) %s -->" % time.strftime('%Y')) + + # add the main tag + self._write('<MultiProject version="%s">' % multiProjectFileFormatVersion) + + # do description + self._write(" <Description>%s</Description>" % \ + self.escape(self.encodedNewLines(self.multiProject.description))) + + # do the projects + self._write(" <Projects>") + for project in self.multiProject.getProjects(): + self._write(' <Project isMaster="%s">' % project['master']) + self._write(" <ProjectName>%s</ProjectName>" % \ + self.escape(project['name'])) + self._write(" <ProjectFile>%s</ProjectFile>" % \ + Utilities.fromNativeSeparators(project['file'])) + self._write(" <ProjectDescription>%s</ProjectDescription>" % \ + self.escape(self.encodedNewLines(project['name']))) + self._write(" </Project>") + self._write(" </Projects>") + + self._write("</MultiProject>", newline = False) \ No newline at end of file