Helpviewer/Bookmarks/XbelReader.py

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

eric ide

mercurial