Helpviewer/Bookmarks/XbelReader.py

changeset 1729
66b9dc45f2bd
parent 1509
c0b5e693b0eb
child 1730
5d7ce61b64aa
--- a/Helpviewer/Bookmarks/XbelReader.py	Wed Mar 21 20:14:45 2012 +0100
+++ b/Helpviewer/Bookmarks/XbelReader.py	Sat Mar 24 16:10:48 2012 +0100
@@ -8,7 +8,7 @@
 """
 
 from PyQt4.QtCore import QXmlStreamReader, QXmlStreamEntityResolver, QIODevice, \
-    QFile, QCoreApplication
+    QFile, QCoreApplication, QXmlStreamNamespaceDeclaration
 
 from .BookmarkNode import BookmarkNode
 
@@ -125,6 +125,8 @@
                     self.__readBookmarkNode(folder)
                 elif self.name() == "separator":
                     self.__readSeparator(folder)
+                elif self.name() == "info":
+                    self.__readInfo()
                 else:
                     self.__skipUnknownElement()
     
@@ -157,8 +159,18 @@
         @param node reference to the bookmark node the separator belongs to (BookmarkNode)
         """
         BookmarkNode(BookmarkNode.Separator, node)
+        
         # empty elements have a start and end element
-        self.readNext()
+        while not self.atEnd():
+            self.readNext()
+            if self.isEndElement():
+                break
+            
+            if self.isStartElement():
+                if self.name() == "info":
+                    self.__readInfo()
+                else:
+                    self.__skipUnknownElement()
     
     def __readBookmarkNode(self, node):
         """
@@ -182,23 +194,24 @@
                     self.__readTitle(bookmark)
                 elif self.name() == "desc":
                     self.__readDescription(bookmark)
+                elif self.name() == "info":
+                    self.__readInfo()
                 else:
                     self.__skipUnknownElement()
         
         if not bookmark.title:
             bookmark.title = QCoreApplication.translate("XbelReader", "Unknown title")
     
+    def __readInfo(self):
+        """
+        Private method to read and parse an info subtree.
+        """
+        self.addExtraNamespaceDeclaration(
+            QXmlStreamNamespaceDeclaration("bookmark", "http://www.python.org"))
+        self.skipCurrentElement()
+    
     def __skipUnknownElement(self):
         """
         Private method to skip over all unknown elements.
         """
-        if not self.isStartElement():
-            return
-        
-        while not self.atEnd():
-            self.readNext()
-            if self.isEndElement():
-                break
-            
-            if self.isStartElement():
-                self.__skipUnknownElement()
+        self.skipCurrentElement()

eric ide

mercurial