diff -r e9e7eca7efee -r bf71ee032bb4 src/eric7/EricXML/MultiProjectReader.py --- a/src/eric7/EricXML/MultiProjectReader.py Wed Jul 13 11:16:20 2022 +0200 +++ b/src/eric7/EricXML/MultiProjectReader.py Wed Jul 13 14:55:47 2022 +0200 @@ -19,23 +19,24 @@ """ Class for reading an XML multi project file. """ + supportedVersions = ["4.2", "5.0", "5.1"] - + def __init__(self, device, multiProject): """ Constructor - + @param device reference to the I/O device to read from (QIODevice) @param multiProject Reference to the multi project object to store the information into. """ XMLStreamReaderBase.__init__(self, device) - + self.multiProject = multiProject self.path = os.path.dirname(device.fileName()) - + self.version = "" - + def readXML(self): """ Public method to read and parse the XML document. @@ -45,8 +46,8 @@ if self.isStartElement(): if self.name() == "MultiProject": self.version = self.attribute( - "version", - multiProjectFileFormatVersion) + "version", multiProjectFileFormatVersion + ) if self.version not in self.supportedVersions: self.raiseUnsupportedFormatVersion(self.version) elif self.name() == "Description": @@ -55,9 +56,9 @@ self.__readProjects() else: self.raiseUnexpectedStartTag(self.name()) - + self.showErrorMessage() - + def __readProjects(self): """ Private method to read the project infos. @@ -66,19 +67,19 @@ self.readNext() if self.isEndElement() and self.name() == "Projects": break - + if self.isStartElement(): if self.name() == "Project": self.__readProject() else: self.raiseUnexpectedStartTag(self.name()) - + def __readProject(self): """ Private method to read the project info. """ project = {} - + project["master"] = self.toBool(self.attribute("isMaster", "False")) uid = self.attribute("uid", "") if uid: @@ -86,23 +87,25 @@ else: # upgrade from pre 5.1 format from PyQt6.QtCore import QUuid + project["uid"] = QUuid.createUuid().toString() - + while not self.atEnd(): self.readNext() if self.isEndElement() and self.name() == "Project": - if 'category' not in project: + if "category" not in project: # upgrade from 4.2 format project["category"] = "" self.multiProject.addProject(project) break - + if self.isStartElement(): if self.name() == "ProjectName": project["name"] = self.readElementText() elif self.name() == "ProjectFile": project["file"] = Utilities.absoluteUniversalPath( - self.readElementText(), self.path) + self.readElementText(), self.path + ) elif self.name() == "ProjectDescription": project["description"] = self.readElementText() elif self.name() == "ProjectCategory":