Helpviewer/Bookmarks/XbelReader.py

branch
Py2 comp.
changeset 3057
10516539f238
parent 2525
8b507a9a2d40
parent 3002
6ffc581f00f1
child 3145
a9de05d4a22f
equal deleted inserted replaced
3056:9986ec0e559a 3057:10516539f238
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 __future__ import unicode_literals # __IGNORE_WARNING__ 10 from __future__ import unicode_literals # __IGNORE_WARNING__
11 11
12 from PyQt4.QtCore import QXmlStreamReader, QXmlStreamEntityResolver, QIODevice, \ 12 from PyQt4.QtCore import QXmlStreamReader, QXmlStreamEntityResolver, \
13 QFile, QCoreApplication, QXmlStreamNamespaceDeclaration, QDateTime, Qt 13 QIODevice, QFile, QCoreApplication, QXmlStreamNamespaceDeclaration, \
14 QDateTime, Qt
14 15
15 from .BookmarkNode import BookmarkNode 16 from .BookmarkNode import BookmarkNode
16 17
17 18
18 class XmlEntityResolver(QXmlStreamEntityResolver): 19 class XmlEntityResolver(QXmlStreamEntityResolver):
69 if self.name() == "xbel" and \ 70 if self.name() == "xbel" and \
70 (not version or version == "1.0"): 71 (not version or version == "1.0"):
71 self.__readXBEL(root) 72 self.__readXBEL(root)
72 else: 73 else:
73 self.raiseError(QCoreApplication.translate( 74 self.raiseError(QCoreApplication.translate(
74 "XbelReader", "The file is not an XBEL version 1.0 file.")) 75 "XbelReader",
76 "The file is not an XBEL version 1.0 file."))
75 77
76 return root 78 return root
77 79
78 def __readXBEL(self, node): 80 def __readXBEL(self, node):
79 """ 81 """
108 if not self.isStartElement() and self.name() != "folder": 110 if not self.isStartElement() and self.name() != "folder":
109 return 111 return
110 112
111 folder = BookmarkNode(BookmarkNode.Folder, node) 113 folder = BookmarkNode(BookmarkNode.Folder, node)
112 folder.expanded = self.attributes().value("folded") == "no" 114 folder.expanded = self.attributes().value("folded") == "no"
113 folder.added = QDateTime.fromString(self.attributes().value("added"), Qt.ISODate) 115 folder.added = QDateTime.fromString(
116 self.attributes().value("added"), Qt.ISODate)
114 117
115 while not self.atEnd(): 118 while not self.atEnd():
116 self.readNext() 119 self.readNext()
117 if self.isEndElement(): 120 if self.isEndElement():
118 break 121 break
135 138
136 def __readTitle(self, node): 139 def __readTitle(self, node):
137 """ 140 """
138 Private method to read the title element. 141 Private method to read the title element.
139 142
140 @param node reference to the bookmark node title belongs to (BookmarkNode) 143 @param node reference to the bookmark node title belongs to
144 (BookmarkNode)
141 """ 145 """
142 if not self.isStartElement() and self.name() != "title": 146 if not self.isStartElement() and self.name() != "title":
143 return 147 return
144 148
145 node.title = self.readElementText() 149 node.title = self.readElementText()
146 150
147 def __readDescription(self, node): 151 def __readDescription(self, node):
148 """ 152 """
149 Private method to read the desc element. 153 Private method to read the desc element.
150 154
151 @param node reference to the bookmark node desc belongs to (BookmarkNode) 155 @param node reference to the bookmark node desc belongs to
156 (BookmarkNode)
152 """ 157 """
153 if not self.isStartElement() and self.name() != "desc": 158 if not self.isStartElement() and self.name() != "desc":
154 return 159 return
155 160
156 node.desc = self.readElementText() 161 node.desc = self.readElementText()
157 162
158 def __readSeparator(self, node): 163 def __readSeparator(self, node):
159 """ 164 """
160 Private method to read a separator element. 165 Private method to read a separator element.
161 166
162 @param node reference to the bookmark node the separator belongs to (BookmarkNode) 167 @param node reference to the bookmark node the separator belongs to
168 (BookmarkNode)
163 """ 169 """
164 sep = BookmarkNode(BookmarkNode.Separator, node) 170 sep = BookmarkNode(BookmarkNode.Separator, node)
165 sep.added = QDateTime.fromString(self.attributes().value("added"), Qt.ISODate) 171 sep.added = QDateTime.fromString(
172 self.attributes().value("added"), Qt.ISODate)
166 173
167 # empty elements have a start and end element 174 # empty elements have a start and end element
168 while not self.atEnd(): 175 while not self.atEnd():
169 self.readNext() 176 self.readNext()
170 if self.isEndElement(): 177 if self.isEndElement():
208 self.__readInfo() 215 self.__readInfo()
209 else: 216 else:
210 self.__skipUnknownElement() 217 self.__skipUnknownElement()
211 218
212 if not bookmark.title: 219 if not bookmark.title:
213 bookmark.title = QCoreApplication.translate("XbelReader", "Unknown title") 220 bookmark.title = QCoreApplication.translate(
221 "XbelReader", "Unknown title")
214 222
215 def __readInfo(self): 223 def __readInfo(self):
216 """ 224 """
217 Private method to read and parse an info subtree. 225 Private method to read and parse an info subtree.
218 """ 226 """
219 self.addExtraNamespaceDeclaration( 227 self.addExtraNamespaceDeclaration(QXmlStreamNamespaceDeclaration(
220 QXmlStreamNamespaceDeclaration("bookmark", "http://www.python.org")) 228 "bookmark", "http://www.python.org"))
221 self.skipCurrentElement() 229 self.skipCurrentElement()
222 230
223 def __skipUnknownElement(self): 231 def __skipUnknownElement(self):
224 """ 232 """
225 Private method to skip over all unknown elements. 233 Private method to skip over all unknown elements.

eric ide

mercurial