Helpviewer/Bookmarks/XbelReader.py

changeset 1729
66b9dc45f2bd
parent 1509
c0b5e693b0eb
child 1730
5d7ce61b64aa
equal deleted inserted replaced
1727:9355815a4403 1729:66b9dc45f2bd
6 """ 6 """
7 Module implementing a class to read XBEL bookmark files. 7 Module implementing a class to read XBEL bookmark files.
8 """ 8 """
9 9
10 from PyQt4.QtCore import QXmlStreamReader, QXmlStreamEntityResolver, QIODevice, \ 10 from PyQt4.QtCore import QXmlStreamReader, QXmlStreamEntityResolver, QIODevice, \
11 QFile, QCoreApplication 11 QFile, QCoreApplication, QXmlStreamNamespaceDeclaration
12 12
13 from .BookmarkNode import BookmarkNode 13 from .BookmarkNode import BookmarkNode
14 14
15 15
16 class XmlEntityResolver(QXmlStreamEntityResolver): 16 class XmlEntityResolver(QXmlStreamEntityResolver):
123 self.__readFolder(folder) 123 self.__readFolder(folder)
124 elif self.name() == "bookmark": 124 elif self.name() == "bookmark":
125 self.__readBookmarkNode(folder) 125 self.__readBookmarkNode(folder)
126 elif self.name() == "separator": 126 elif self.name() == "separator":
127 self.__readSeparator(folder) 127 self.__readSeparator(folder)
128 elif self.name() == "info":
129 self.__readInfo()
128 else: 130 else:
129 self.__skipUnknownElement() 131 self.__skipUnknownElement()
130 132
131 def __readTitle(self, node): 133 def __readTitle(self, node):
132 """ 134 """
155 Private method to read a separator element. 157 Private method to read a separator element.
156 158
157 @param node reference to the bookmark node the separator belongs to (BookmarkNode) 159 @param node reference to the bookmark node the separator belongs to (BookmarkNode)
158 """ 160 """
159 BookmarkNode(BookmarkNode.Separator, node) 161 BookmarkNode(BookmarkNode.Separator, node)
162
160 # empty elements have a start and end element 163 # empty elements have a start and end element
161 self.readNext() 164 while not self.atEnd():
165 self.readNext()
166 if self.isEndElement():
167 break
168
169 if self.isStartElement():
170 if self.name() == "info":
171 self.__readInfo()
172 else:
173 self.__skipUnknownElement()
162 174
163 def __readBookmarkNode(self, node): 175 def __readBookmarkNode(self, node):
164 """ 176 """
165 Private method to read and parse a bookmark subtree. 177 Private method to read and parse a bookmark subtree.
166 178
180 if self.isStartElement(): 192 if self.isStartElement():
181 if self.name() == "title": 193 if self.name() == "title":
182 self.__readTitle(bookmark) 194 self.__readTitle(bookmark)
183 elif self.name() == "desc": 195 elif self.name() == "desc":
184 self.__readDescription(bookmark) 196 self.__readDescription(bookmark)
197 elif self.name() == "info":
198 self.__readInfo()
185 else: 199 else:
186 self.__skipUnknownElement() 200 self.__skipUnknownElement()
187 201
188 if not bookmark.title: 202 if not bookmark.title:
189 bookmark.title = QCoreApplication.translate("XbelReader", "Unknown title") 203 bookmark.title = QCoreApplication.translate("XbelReader", "Unknown title")
190 204
205 def __readInfo(self):
206 """
207 Private method to read and parse an info subtree.
208 """
209 self.addExtraNamespaceDeclaration(
210 QXmlStreamNamespaceDeclaration("bookmark", "http://www.python.org"))
211 self.skipCurrentElement()
212
191 def __skipUnknownElement(self): 213 def __skipUnknownElement(self):
192 """ 214 """
193 Private method to skip over all unknown elements. 215 Private method to skip over all unknown elements.
194 """ 216 """
195 if not self.isStartElement(): 217 self.skipCurrentElement()
196 return
197
198 while not self.atEnd():
199 self.readNext()
200 if self.isEndElement():
201 break
202
203 if self.isStartElement():
204 self.__skipUnknownElement()

eric ide

mercurial