src/eric7/EricXML/TemplatesReader.py

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