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())