E5XML/MultiProjectWriter.py

Sun, 12 Sep 2010 19:08:49 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 12 Sep 2010 19:08:49 +0200
branch
5_0_x
changeset 601
4f37cd1b9a1f
parent 96
9624a110667d
child 792
a13346916170
permissions
-rw-r--r--

Fixed an issue in the multi-project writer.

# -*- 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 time

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['description'])))
            self._write("    </Project>")
        self._write("  </Projects>")
        
        self._write("</MultiProject>", newline = False)

eric ide

mercurial