E5XML/SessionReader.py

changeset 3600
7d17c492ab95
parent 3178
f25fc1364c88
child 3601
236578b22511
diff -r 37fdb72a2388 -r 7d17c492ab95 E5XML/SessionReader.py
--- a/E5XML/SessionReader.py	Wed May 21 18:47:56 2014 +0200
+++ b/E5XML/SessionReader.py	Wed May 21 19:45:39 2014 +0200
@@ -19,7 +19,7 @@
     """
     Class for reading an XML session file.
     """
-    supportedVersions = ["4.3", "4.4"]
+    supportedVersions = ["4.3", "4.4", "5.0"]
     
     def __init__(self, device, isGlobal):
         """
@@ -34,6 +34,7 @@
         self.isGlobal = isGlobal
         
         self.project = e5App().getObject("Project")
+        self.projectBrowser = e5App().getObject("ProjectBrowser")
         self.multiProject = e5App().getObject("MultiProject")
         self.vm = e5App().getObject("ViewManager")
         self.dbg = e5App().getObject("DebugUI")
@@ -89,6 +90,8 @@
                     self.__readDebugInfo()
                 elif self.name() == "Bookmarks":
                     self.__readBookmarks()
+                elif self.name() == "ProjectBrowserStates":
+                    self.__readProjectBrowserStates()
                 else:
                     self.raiseUnexpectedStartTag(self.name())
         
@@ -335,3 +338,45 @@
                     lineno = int(self.attribute("value", "0"))
                 else:
                     self.raiseUnexpectedStartTag(self.name())
+    
+    def __readProjectBrowserStates(self):
+        """
+        Private method to read the project browser state infos.
+        """
+        while not self.atEnd():
+            self.readNext()
+            if self.isEndElement() and self.name() == "ProjectBrowserStates":
+                break
+            
+            if self.isStartElement():
+                if self.name() == "ProjectBrowserState":
+                    browserName = self.attribute("name", "")
+                    if not browserName:
+                        self.raiseBadValue("ProjectBrowserState.name")
+                    self.__readProjectBrowserState(browserName)
+                else:
+                    self.raiseUnexpectedStartTag(self.name())
+        
+    def __readProjectBrowserState(self, browserName):
+        """
+        Private method to read the project browser state info.
+        
+        @param browserName name of the project browser (string)
+        """
+        expandedNames = []
+        
+        while not self.atEnd():
+            self.readNext()
+            if self.isEndElement() and self.name() == "ProjectBrowserState":
+                # TODO: implement the expand logic
+                print(browserName)
+                print(expandedNames)
+                break
+            
+            if self.isStartElement():
+                if self.name() == "ExpandedItemName":
+                    itemName = self.readElementText()
+                    if itemName:
+                        expandedNames.append(itemName)
+                else:
+                    self.raiseUnexpectedStartTag(self.name())

eric ide

mercurial