E5XML/UserProjectWriter.py

changeset 606
cc26d1c27da5
parent 412
569efd7f2716
child 791
9ec2ac20e54e
equal deleted inserted replaced
605:9c7527ecbf6e 606:cc26d1c27da5
9 9
10 import time 10 import time
11 11
12 from E5Gui.E5Application import e5App 12 from E5Gui.E5Application import e5App
13 13
14 from .XMLWriterBase import XMLWriterBase 14 from .XMLStreamWriterBase import XMLStreamWriterBase
15 from .Config import userProjectFileFormatVersion 15 from .Config import userProjectFileFormatVersion
16 16
17 import Preferences 17 import Preferences
18 18
19 class UserProjectWriter(XMLWriterBase): 19 class UserProjectWriter(XMLStreamWriterBase):
20 """ 20 """
21 Class implementing the writer class for writing an XML user project properties file. 21 Class implementing the writer class for writing an XML user project properties file.
22 """ 22 """
23 def __init__(self, file, projectName): 23 def __init__(self, device, projectName):
24 """ 24 """
25 Constructor 25 Constructor
26 26
27 @param file open file (like) object for writing 27 @param device reference to the I/O device to write to (QIODevice)
28 @param projectName name of the project (string) 28 @param projectName name of the project (string)
29 """ 29 """
30 XMLWriterBase.__init__(self, file) 30 XMLStreamWriterBase.__init__(self, device)
31 31
32 self.pudata = e5App().getObject("Project").pudata 32 self.pudata = e5App().getObject("Project").pudata
33 self.pdata = e5App().getObject("Project").pdata 33 self.pdata = e5App().getObject("Project").pdata
34 self.name = projectName 34 self.name = projectName
35 35
36 def writeXML(self): 36 def writeXML(self):
37 """ 37 """
38 Public method to write the XML to the file. 38 Public method to write the XML to the file.
39 """ 39 """
40 XMLWriterBase.writeXML(self) 40 XMLStreamWriterBase.writeXML(self)
41 41
42 self._write('<!DOCTYPE UserProject SYSTEM "UserProject-{0}.dtd">'.format( 42 self.writeDTD('<!DOCTYPE UserProject SYSTEM "UserProject-{0}.dtd">'.format(
43 userProjectFileFormatVersion)) 43 userProjectFileFormatVersion))
44 44
45 # add some generation comments 45 # add some generation comments
46 self._write("<!-- eric5 user project file for project {0} -->".format(self.name)) 46 self.writeComment(" eric5 user project file for project {0} ".format(self.name))
47 if Preferences.getProject("XMLTimestamp"): 47 if Preferences.getProject("XMLTimestamp"):
48 self._write("<!-- Saved: {0} -->".format(time.strftime('%Y-%m-%d, %H:%M:%S'))) 48 self.writeComment(" Saved: {0} ".format(time.strftime('%Y-%m-%d, %H:%M:%S')))
49 self._write("<!-- Copyright (C) {0} {1}, {2} -->".format( 49 self.writeComment(" Copyright (C) {0} {1}, {2} ".format(
50 time.strftime('%Y'), 50 time.strftime('%Y'), self.pdata["AUTHOR"][0], self.pdata["EMAIL"][0]))
51 self.escape(self.pdata["AUTHOR"][0]),
52 self.escape(self.pdata["EMAIL"][0])))
53 51
54 # add the main tag 52 # add the main tag
55 self._write('<UserProject version="{0}">'.format(userProjectFileFormatVersion)) 53 self.writeStartElement("UserProject")
54 self.writeAttribute("version", userProjectFileFormatVersion)
56 55
57 # do the vcs override stuff 56 # do the vcs override stuff
58 if self.pudata["VCSOVERRIDE"]: 57 if self.pudata["VCSOVERRIDE"]:
59 self._write(" <VcsType>{0}</VcsType>".format(self.pudata["VCSOVERRIDE"][0])) 58 self.writeTextElement("VcsType", self.pudata["VCSOVERRIDE"][0])
60 if self.pudata["VCSSTATUSMONITORINTERVAL"]: 59 if self.pudata["VCSSTATUSMONITORINTERVAL"]:
61 self._write(' <VcsStatusMonitorInterval value="{0:d}" />'.format( 60 self.writeEmptyElement("VcsStatusMonitorInterval")
62 self.pudata["VCSSTATUSMONITORINTERVAL"][0])) 61 self.writeAttribute("value", str(self.pudata["VCSSTATUSMONITORINTERVAL"][0]))
63 62
64 self._write("</UserProject>", newline = False) 63 self.writeEndElement()
64 self.writeEndDocument()

eric ide

mercurial