eric6/E5XML/TemplatesReader.py

changeset 6942
2602857055c5
parent 6645
ad476851d7e0
child 7229
53054eb5b15a
equal deleted inserted replaced
6941:f99d60d6b59b 6942:2602857055c5
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing a class for reading an XML templates file.
8 """
9
10 from __future__ import unicode_literals
11
12 from .Config import templatesFileFormatVersion
13 from .XMLStreamReaderBase import XMLStreamReaderBase
14
15
16 class TemplatesReader(XMLStreamReaderBase):
17 """
18 Class for reading an XML tasks file.
19 """
20 supportedVersions = ["4.0"]
21
22 def __init__(self, device, viewer):
23 """
24 Constructor
25
26 @param device reference to the I/O device to read from (QIODevice)
27 @param viewer reference to the template viewer object (TemplateViewer)
28 """
29 XMLStreamReaderBase.__init__(self, device)
30
31 self.__viewer = viewer
32
33 self.version = ""
34 self.groupName = "DEFAULT"
35
36 def readXML(self):
37 """
38 Public method to read and parse the XML document.
39 """
40 while not self.atEnd():
41 self.readNext()
42 if self.isStartElement():
43 if self.name() == "Templates":
44 self.version = self.attribute(
45 "version", templatesFileFormatVersion)
46 if self.version not in self.supportedVersions:
47 self.raiseUnsupportedFormatVersion(self.version)
48 elif self.name() == "TemplateGroup":
49 self.__readTemplateGroup()
50 else:
51 self.raiseUnexpectedStartTag(self.name())
52
53 self.showErrorMessage()
54
55 def __readTemplateGroup(self):
56 """
57 Private method to read a template group.
58 """
59 self.groupName = self.attribute('name', "DEFAULT")
60 language = self.attribute('language', "All")
61 self.__viewer.addGroup(self.groupName, language)
62
63 while not self.atEnd():
64 self.readNext()
65 if self.isEndElement() and self.name() == "TemplateGroup":
66 break
67
68 if self.isStartElement():
69 if self.name() == "Template":
70 self.__readTemplate()
71 else:
72 self.raiseUnexpectedStartTag(self.name())
73
74 def __readTemplate(self):
75 """
76 Private method to read the template definition.
77 """
78 templateName = self.attribute('name', '')
79 templateDescription = ""
80 templateText = ""
81
82 while not self.atEnd():
83 self.readNext()
84 if self.isEndElement() and \
85 self.name() == "Template" and \
86 templateName:
87 self.__viewer.addEntry(self.groupName, templateName,
88 templateDescription, templateText,
89 quiet=True)
90 break
91
92 if self.isStartElement():
93 if self.name() == "TemplateDescription":
94 templateDescription = self.readElementText()
95 elif self.name() == "TemplateText":
96 templateText = self.readElementText()
97 else:
98 self.raiseUnexpectedStartTag(self.name())

eric ide

mercurial