7 Module implementing the writer class for writing an XML templates file. |
7 Module implementing the writer class for writing an XML templates file. |
8 """ |
8 """ |
9 |
9 |
10 import time |
10 import time |
11 |
11 |
12 from .XMLWriterBase import XMLWriterBase |
12 from .XMLStreamWriterBase import XMLStreamWriterBase |
13 from .Config import templatesFileFormatVersion |
13 from .Config import templatesFileFormatVersion |
14 |
14 |
15 class TemplatesWriter(XMLWriterBase): |
15 class TemplatesWriter(XMLStreamWriterBase): |
16 """ |
16 """ |
17 Class implementing the writer class for writing an XML templates file. |
17 Class implementing the writer class for writing an XML templates file. |
18 """ |
18 """ |
19 def __init__(self, file, templatesViewer): |
19 def __init__(self, device, templatesViewer): |
20 """ |
20 """ |
21 Constructor |
21 Constructor |
22 |
22 |
23 @param file open file (like) object for writing |
23 @param device reference to the I/O device to write to (QIODevice) |
|
24 @param templatesViewer reference to the templates viewer object (TemplateViewer) |
24 """ |
25 """ |
25 XMLWriterBase.__init__(self, file) |
26 XMLStreamWriterBase.__init__(self, device) |
26 |
27 |
27 self.templatesViewer = templatesViewer |
28 self.templatesViewer = templatesViewer |
28 |
29 |
29 def writeXML(self): |
30 def writeXML(self): |
30 """ |
31 """ |
31 Public method to write the XML to the file. |
32 Public method to write the XML to the file. |
32 """ |
33 """ |
33 XMLWriterBase.writeXML(self) |
34 XMLStreamWriterBase.writeXML(self) |
34 |
35 |
35 self._write('<!DOCTYPE Templates SYSTEM "Templates-{0}.dtd">'.format( |
36 self.writeDTD('<!DOCTYPE Templates SYSTEM "Templates-{0}.dtd">'.format( |
36 templatesFileFormatVersion)) |
37 templatesFileFormatVersion)) |
37 |
38 |
38 # add some generation comments |
39 # add some generation comments |
39 self._write("<!-- eric5 templates file -->") |
40 self.writeComment(" eric5 templates file ") |
40 self._write("<!-- Saved: {0} -->".format(time.strftime('%Y-%m-%d, %H:%M:%S'))) |
41 self.writeComment(" Saved: {0} ".format(time.strftime('%Y-%m-%d, %H:%M:%S'))) |
|
42 ## self._write("<!-- eric5 templates file -->") |
|
43 ## self._write("<!-- Saved: {0} -->".format(time.strftime('%Y-%m-%d, %H:%M:%S'))) |
41 |
44 |
42 # add the main tag |
45 # add the main tag |
43 self._write('<Templates version="{0}">'.format(templatesFileFormatVersion)) |
46 self.writeStartElement("Templates") |
|
47 self.writeAttribute("version", templatesFileFormatVersion) |
|
48 ## self._write('<Templates version="{0}">'.format(templatesFileFormatVersion)) |
44 |
49 |
45 # do the template groups |
50 # do the template groups |
46 groups = self.templatesViewer.getAllGroups() |
51 groups = self.templatesViewer.getAllGroups() |
47 for group in groups: |
52 for group in groups: |
48 self._write(' <TemplateGroup name="{0}" language="{1}">'.format( |
53 self.writeStartElement("TemplateGroup") |
49 group.getName(), group.getLanguage())) |
54 self.writeAttribute("name", group.getName()) |
|
55 self.writeAttribute("language", group.getLanguage()) |
|
56 ## self._write(' <TemplateGroup name="{0}" language="{1}">'.format( |
|
57 ## group.getName(), group.getLanguage())) |
50 # do the templates |
58 # do the templates |
51 templates = group.getAllEntries() |
59 templates = group.getAllEntries() |
52 for template in templates: |
60 for template in templates: |
53 self._write(' <Template name="{0}">'.format( |
61 self.writeStartElement("Template") |
54 self.escape(template.getName(), True))) |
62 self.writeAttribute("name", template.getName()) |
55 self._write(' <TemplateDescription>{0}</TemplateDescription>'.format( |
63 self.writeTextElement("TemplateDescription", template.getDescription()) |
56 self.escape("{0}".format(template.getDescription())))) |
64 self.writeTextElement("TemplateText", template.getTemplateText()) |
57 self._write(' <TemplateText>{0}</TemplateText>'.format( |
65 self.writeEndElement() |
58 self.escape("{0}".format(template.getTemplateText())))) |
66 self.writeEndElement() |
59 self._write(' </Template>') |
|
60 self._write(' </TemplateGroup>') |
|
61 |
67 |
62 self._write('</Templates>', newline = False) |
68 self.writeEndElement() |
|
69 self.writeEndDocument() |
|
70 ## self._write(' <Template name="{0}">'.format( |
|
71 ## self.escape(template.getName(), True))) |
|
72 ## self._write(' <TemplateDescription>{0}</TemplateDescription>'.format( |
|
73 ## self.escape("{0}".format(template.getDescription())))) |
|
74 ## self._write(' <TemplateText>{0}</TemplateText>'.format( |
|
75 ## self.escape("{0}".format(template.getTemplateText())))) |
|
76 ## self._write(' </Template>') |
|
77 ## self._write(' </TemplateGroup>') |
|
78 ## |
|
79 ## self._write('</Templates>', newline = False) |