--- a/src/eric7/EricXML/ProjectReader.py Wed Nov 16 10:10:06 2022 +0100 +++ b/src/eric7/EricXML/ProjectReader.py Wed Nov 16 10:53:40 2022 +0100 @@ -46,45 +46,64 @@ if self.version not in self.supportedVersions: self.raiseUnsupportedFormatVersion(self.version) elif self.name() == "Language": - self.project.pdata["SPELLLANGUAGE"] = self.readElementText() + self.project.setProjectData( + self.readElementText(), dataKey="SPELLLANGUAGE" + ) elif self.name() == "ProjectWordList": - self.project.pdata["SPELLWORDS"] = Utilities.toNativeSeparators( - self.readElementText() + self.project.setProjectData( + Utilities.toNativeSeparators(self.readElementText()), + dataKey="SPELLWORDS", ) elif self.name() == "ProjectExcludeList": - self.project.pdata["SPELLEXCLUDES"] = Utilities.toNativeSeparators( - self.readElementText() + self.project.setProjectData( + Utilities.toNativeSeparators(self.readElementText()), + dataKey="SPELLEXCLUDES", ) elif self.name() == "Hash": - self.project.pdata["HASH"] = self.readElementText() + self.project.setProjectData(self.readElementText(), dataKey="HASH") elif self.name() == "ProgLanguage": - self.project.pdata["MIXEDLANGUAGE"] = int( - self.attribute("mixed", "0") + self.project.setProjectData( + int(self.attribute("mixed", "0")), + dataKey="MIXEDLANGUAGE", + ) + self.project.setProjectData( + self.readElementText(), dataKey="PROGLANGUAGE" ) - self.project.pdata["PROGLANGUAGE"] = self.readElementText() - if self.project.pdata["PROGLANGUAGE"] == "Python": + if self.project.getProjectData(dataKey="PROGLANGUAGE") == "Python": # convert Python to the more specific Python3 - self.project.pdata["PROGLANGUAGE"] = "Python3" + self.project.setProjectData("Python3", dataKey="PROGLANGUAGE") elif self.name() == "ProjectType": - self.project.pdata["PROJECTTYPE"] = self.readElementText() + self.project.setProjectData( + self.readElementText(), dataKey="PROJECTTYPE" + ) elif self.name() == "Description": - self.project.pdata["DESCRIPTION"] = self.readElementText() + self.project.setProjectData( + self.readElementText(), dataKey="DESCRIPTION" + ) elif self.name() == "Version": - self.project.pdata["VERSION"] = self.readElementText() + self.project.setProjectData( + self.readElementText(), dataKey="VERSION" + ) elif self.name() == "Author": - self.project.pdata["AUTHOR"] = self.readElementText() + self.project.setProjectData( + self.readElementText(), dataKey="AUTHOR" + ) elif self.name() == "Email": - self.project.pdata["EMAIL"] = self.readElementText() + self.project.setProjectData(self.readElementText(), dataKey="EMAIL") elif self.name() == "TranslationPattern": - self.project.pdata[ - "TRANSLATIONPATTERN" - ] = Utilities.toNativeSeparators(self.readElementText()) + self.project.setProjectData( + Utilities.toNativeSeparators(self.readElementText()), + dataKey="TRANSLATIONPATTERN", + ) elif self.name() == "TranslationsBinPath": - self.project.pdata[ - "TRANSLATIONSBINPATH" - ] = Utilities.toNativeSeparators(self.readElementText()) + self.project.setProjectData( + Utilities.toNativeSeparators(self.readElementText()), + dataKey="TRANSLATIONSBINPATH", + ) elif self.name() == "Eol": - self.project.pdata["EOL"] = int(self.attribute("index", "0")) + self.project.setProjectData( + int(self.attribute("index", "0")), dataKey="EOL" + ) elif self.name() == "Sources": self.__readFiles("Sources", "Source", "SOURCES") elif self.name() == "Forms": @@ -106,8 +125,9 @@ elif self.name() == "Others": self.__readFiles("Others", "Other", "OTHERS") elif self.name() == "MainScript": - self.project.pdata["MAINSCRIPT"] = Utilities.toNativeSeparators( - self.readElementText() + self.project.setProjectData( + Utilities.toNativeSeparators(self.readElementText()), + dataKey="MAINSCRIPT", ) elif self.name() == "Vcs": self.__readVcs() @@ -130,7 +150,9 @@ "RccCompiler", "RccCompilerParameters", "RCCPARAMS" ) elif self.name() == "DocstringStyle": - self.project.pdata["DOCSTRING"] = self.readElementText() + self.project.setProjectData( + self.readElementText(), dataKey="DOCSTRING" + ) elif self.name() == "ProjectTypeSpecific": self.__readBasicDataField( "ProjectTypeSpecific", @@ -173,9 +195,11 @@ if self.isStartElement(): if self.name() == listTag: - self.project.pdata[dataKey].append( + fileList = self.project.getProjectData(dataKey=dataKey) + fileList.append( Utilities.toNativeSeparators(self.readElementText()) ) + self.project.setProjectData(fileList, dataKey=dataKey) else: self.raiseUnexpectedStartTag(self.name()) @@ -194,7 +218,7 @@ if self.isStartElement(): if self.name() == dataTag: - self.project.pdata[dataKey] = self._readBasics() + self.project.setProjectData(self._readBasics(), dataKey=dataKey) else: self.raiseUnexpectedStartTag(self.name()) @@ -209,11 +233,15 @@ if self.isStartElement(): if self.name() == "VcsType": - self.project.pdata["VCS"] = self.readElementText() + self.project.setProjectData(self.readElementText(), dataKey="VCS") elif self.name() == "VcsOptions": - self.project.pdata["VCSOPTIONS"] = self._readBasics() + self.project.setProjectData( + self._readBasics(), dataKey="VCSOPTIONS" + ) elif self.name() == "VcsOtherData": - self.project.pdata["VCSOTHERDATA"] = self._readBasics() + self.project.setProjectData( + self._readBasics(), dataKey="VCSOTHERDATA" + ) else: self.raiseUnexpectedStartTag(self.name()) @@ -231,7 +259,9 @@ pattern = self.attribute("pattern", "") filetype = self.attribute("type", "OTHERS") if pattern: - self.project.pdata["FILETYPES"][pattern] = filetype + fileTypes = self.project.getProjectData(dataKey="FILETYPES") + fileTypes[pattern] = filetype + self.project.setProjectData(fileTypes, dataKey="FILETYPES") else: self.raiseUnexpectedStartTag(self.name()) @@ -249,6 +279,8 @@ pattern = self.attribute("pattern", "") lexer = self.attribute("lexer") if pattern: - self.project.pdata["LEXERASSOCS"][pattern] = lexer + assocs = self.project.getProjectData(dataKey="LEXERASSOCS") + assocs[pattern] = lexer + self.project.setProjectData(assocs, dataKey="LEXERASSOCS") else: self.raiseUnexpectedStartTag(self.name())