diff -r f991944e859c -r a36eecf45b2e E4XML/ProjectWriter.py --- a/E4XML/ProjectWriter.py Tue Jan 12 07:38:28 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,225 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2004 - 2010 Detlev Offenbach <detlev@die-offenbachs.de> -# - -""" -Module implementing the writer class for writing an XML project file. -""" - -import os -import time - -from E4Gui.E4Application import e4App - -from .XMLWriterBase import XMLWriterBase -from .Config import projectFileFormatVersion - -import Preferences -import Utilities - -class ProjectWriter(XMLWriterBase): - """ - Class implementing the writer class for writing an XML project file. - """ - def __init__(self, file, projectName): - """ - Constructor - - @param file open file (like) object for writing - @param projectName name of the project (string) - """ - XMLWriterBase.__init__(self, file) - - self.pdata = e4App().getObject("Project").pdata - self.name = projectName - - def writeXML(self): - """ - Public method to write the XML to the file. - """ - XMLWriterBase.writeXML(self) - - self._write('<!DOCTYPE Project SYSTEM "Project-%s.dtd">' % \ - projectFileFormatVersion) - - # add some generation comments - self._write("<!-- eric5 project file for project %s -->" % self.name) - if Preferences.getProject("XMLTimestamp"): - self._write("<!-- Saved: %s -->" % time.strftime('%Y-%m-%d, %H:%M:%S')) - self._write("<!-- Copyright (C) %s %s, %s -->" % \ - (time.strftime('%Y'), - self.escape(self.pdata["AUTHOR"][0]), - self.escape(self.pdata["EMAIL"][0]))) - - # add the main tag - self._write('<Project version="%s">' % projectFileFormatVersion) - - # do the language (used for spell checking) - self._write(' <Language>%s</Language>' % self.pdata["SPELLLANGUAGE"][0]) - if len(self.pdata["SPELLWORDS"][0]) > 0: - self._write(" <ProjectWordList>%s</ProjectWordList>" % \ - Utilities.fromNativeSeparators(self.pdata["SPELLWORDS"][0])) - if len(self.pdata["SPELLEXCLUDES"][0]) > 0: - self._write(" <ProjectExcludeList>%s</ProjectExcludeList>" % \ - Utilities.fromNativeSeparators(self.pdata["SPELLEXCLUDES"][0])) - - # do the programming language - self._write(' <ProgLanguage mixed="%d">%s</ProgLanguage>' % \ - (self.pdata["MIXEDLANGUAGE"][0], self.pdata["PROGLANGUAGE"][0])) - - # do the UI type - self._write(' <ProjectType>%s</ProjectType>' % self.pdata["PROJECTTYPE"][0]) - - # do description - if self.pdata["DESCRIPTION"]: - self._write(" <Description>%s</Description>" % \ - self.escape(self.encodedNewLines(self.pdata["DESCRIPTION"][0]))) - - # do version, author and email - for key in ["VERSION", "AUTHOR", "EMAIL"]: - element = key.capitalize() - if self.pdata[key]: - self._write(" <%s>%s</%s>" % \ - (element, self.escape(self.pdata[key][0]), element)) - - # do the translation pattern - if self.pdata["TRANSLATIONPATTERN"]: - self._write(" <TranslationPattern>%s</TranslationPattern>" % \ - Utilities.fromNativeSeparators(self.pdata["TRANSLATIONPATTERN"][0])) - - # do the binary translations path - if self.pdata["TRANSLATIONSBINPATH"]: - self._write(" <TranslationsBinPath>%s</TranslationsBinPath>" % \ - Utilities.fromNativeSeparators(self.pdata["TRANSLATIONSBINPATH"][0])) - - # do the sources - self._write(" <Sources>") - for name in self.pdata["SOURCES"]: - self._write(" <Source>%s</Source>" % \ - Utilities.fromNativeSeparators(name)) - self._write(" </Sources>") - - # do the forms - self._write(" <Forms>") - for name in self.pdata["FORMS"]: - self._write(" <Form>%s</Form>" % \ - Utilities.fromNativeSeparators(name)) - self._write(" </Forms>") - - # do the translations - self._write(" <Translations>") - for name in self.pdata["TRANSLATIONS"]: - self._write(" <Translation>%s</Translation>" % \ - Utilities.fromNativeSeparators(name)) - self._write(" </Translations>") - - # do the translation exceptions - if self.pdata["TRANSLATIONEXCEPTIONS"]: - self._write(" <TranslationExceptions>") - for name in self.pdata["TRANSLATIONEXCEPTIONS"]: - self._write(" <TranslationException>%s</TranslationException>" % \ - Utilities.fromNativeSeparators(name)) - self._write(" </TranslationExceptions>") - - # do the resources - self._write(" <Resources>") - for name in self.pdata["RESOURCES"]: - self._write(" <Resource>%s</Resource>" % \ - Utilities.fromNativeSeparators(name)) - self._write(" </Resources>") - - # do the interfaces (IDL) - self._write(" <Interfaces>") - for name in self.pdata["INTERFACES"]: - self._write(" <Interface>%s</Interface>" % \ - Utilities.fromNativeSeparators(name)) - self._write(" </Interfaces>") - - # do the others - self._write(" <Others>") - for name in self.pdata["OTHERS"]: - self._write(" <Other>%s</Other>" % \ - Utilities.fromNativeSeparators(name)) - self._write(" </Others>") - - # do the main script - if self.pdata["MAINSCRIPT"]: - self._write(" <MainScript>%s</MainScript>" % \ - Utilities.fromNativeSeparators(self.pdata["MAINSCRIPT"][0])) - - # do the vcs stuff - self._write(" <Vcs>") - if self.pdata["VCS"]: - self._write(" <VcsType>%s</VcsType>" % self.pdata["VCS"][0]) - if self.pdata["VCSOPTIONS"]: - self._write(" <VcsOptions>") - self._writeBasics(self.pdata["VCSOPTIONS"][0], 3) - self._write(" </VcsOptions>") - if self.pdata["VCSOTHERDATA"]: - self._write(" <VcsOtherData>") - self._writeBasics(self.pdata["VCSOTHERDATA"][0], 3) - self._write(" </VcsOtherData>") - self._write(" </Vcs>") - - # do the filetype associations - self._write(" <FiletypeAssociations>") - for pattern, filetype in list(self.pdata["FILETYPES"].items()): - self._write(' <FiletypeAssociation pattern="%s" type="%s" />' % \ - (pattern, filetype)) - self._write(" </FiletypeAssociations>") - - # do the lexer associations - if self.pdata["LEXERASSOCS"]: - self._write(" <LexerAssociations>") - for pattern, lexer in list(self.pdata["LEXERASSOCS"].items()): - self._write(' <LexerAssociation pattern="%s" lexer="%s" />' % \ - (pattern, lexer)) - self._write(" </LexerAssociations>") - - # do the extra project data stuff - if len(self.pdata["PROJECTTYPESPECIFICDATA"]): - self._write(" <ProjectTypeSpecific>") - if self.pdata["PROJECTTYPESPECIFICDATA"]: - self._write(" <ProjectTypeSpecificData>") - self._writeBasics(self.pdata["PROJECTTYPESPECIFICDATA"], 3) - self._write(" </ProjectTypeSpecificData>") - self._write(" </ProjectTypeSpecific>") - - # do the documentation generators stuff - if len(self.pdata["DOCUMENTATIONPARMS"]): - self._write(" <Documentation>") - if self.pdata["DOCUMENTATIONPARMS"]: - self._write(" <DocumentationParams>") - self._writeBasics(self.pdata["DOCUMENTATIONPARMS"], 3) - self._write(" </DocumentationParams>") - self._write(" </Documentation>") - - # do the packagers stuff - if len(self.pdata["PACKAGERSPARMS"]): - self._write(" <Packagers>") - if self.pdata["PACKAGERSPARMS"]: - self._write(" <PackagersParams>") - self._writeBasics(self.pdata["PACKAGERSPARMS"], 3) - self._write(" </PackagersParams>") - self._write(" </Packagers>") - - # do the checkers stuff - if len(self.pdata["CHECKERSPARMS"]): - self._write(" <Checkers>") - if self.pdata["CHECKERSPARMS"]: - self._write(" <CheckersParams>") - self._writeBasics(self.pdata["CHECKERSPARMS"], 3) - self._write(" </CheckersParams>") - self._write(" </Checkers>") - - # do the other tools stuff - if len(self.pdata["OTHERTOOLSPARMS"]): - self._write(" <OtherTools>") - if self.pdata["OTHERTOOLSPARMS"]: - self._write(" <OtherToolsParams>") - self._writeBasics(self.pdata["OTHERTOOLSPARMS"], 3) - self._write(" </OtherToolsParams>") - self._write(" </OtherTools>") - - self._write("</Project>", newline = False) \ No newline at end of file