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