diff -r 275334bc9607 -r 0f023e61a9b5 src/eric7/EricXML/ProjectReader.py --- a/src/eric7/EricXML/ProjectReader.py Wed Nov 16 11:04:18 2022 +0100 +++ b/src/eric7/EricXML/ProjectReader.py Wed Nov 16 18:11:52 2022 +0100 @@ -38,6 +38,8 @@ """ Public method to read and parse the XML document. """ + fileCategoryTags = [s.capitalize() for s in self.project.getFileCategories()] + while not self.atEnd(): self.readNext() if self.isStartElement(): @@ -47,87 +49,89 @@ self.raiseUnsupportedFormatVersion(self.version) elif self.name() == "Language": self.project.setProjectData( - self.readElementText(), dataKey="SPELLLANGUAGE" + self.readElementText(), dataKey="SPELLLANGUAGE", setDirty=False ) elif self.name() == "ProjectWordList": self.project.setProjectData( Utilities.toNativeSeparators(self.readElementText()), dataKey="SPELLWORDS", + setDirty=False, ) elif self.name() == "ProjectExcludeList": self.project.setProjectData( Utilities.toNativeSeparators(self.readElementText()), dataKey="SPELLEXCLUDES", + setDirty=False, ) elif self.name() == "Hash": - self.project.setProjectData(self.readElementText(), dataKey="HASH") + self.project.setProjectData( + self.readElementText(), dataKey="HASH", setDirty=False + ) elif self.name() == "ProgLanguage": self.project.setProjectData( int(self.attribute("mixed", "0")), dataKey="MIXEDLANGUAGE", + setDirty=False, ) self.project.setProjectData( - self.readElementText(), dataKey="PROGLANGUAGE" + self.readElementText(), dataKey="PROGLANGUAGE", setDirty=False ) if self.project.getProjectData(dataKey="PROGLANGUAGE") == "Python": # convert Python to the more specific Python3 - self.project.setProjectData("Python3", dataKey="PROGLANGUAGE") + self.project.setProjectData( + "Python3", dataKey="PROGLANGUAGE", setDirty=False + ) elif self.name() == "ProjectType": self.project.setProjectData( - self.readElementText(), dataKey="PROJECTTYPE" + self.readElementText(), dataKey="PROJECTTYPE", setDirty=False ) elif self.name() == "Description": self.project.setProjectData( - self.readElementText(), dataKey="DESCRIPTION" + self.readElementText(), dataKey="DESCRIPTION", setDirty=False ) elif self.name() == "Version": self.project.setProjectData( - self.readElementText(), dataKey="VERSION" + self.readElementText(), dataKey="VERSION", setDirty=False ) elif self.name() == "Author": self.project.setProjectData( - self.readElementText(), dataKey="AUTHOR" + self.readElementText(), dataKey="AUTHOR", setDirty=False ) elif self.name() == "Email": - self.project.setProjectData(self.readElementText(), dataKey="EMAIL") + self.project.setProjectData( + self.readElementText(), dataKey="EMAIL", setDirty=False + ) elif self.name() == "TranslationPattern": self.project.setProjectData( Utilities.toNativeSeparators(self.readElementText()), dataKey="TRANSLATIONPATTERN", + setDirty=False, ) elif self.name() == "TranslationsBinPath": self.project.setProjectData( Utilities.toNativeSeparators(self.readElementText()), dataKey="TRANSLATIONSBINPATH", + setDirty=False, ) elif self.name() == "Eol": self.project.setProjectData( - int(self.attribute("index", "0")), dataKey="EOL" + int(self.attribute("index", "0")), dataKey="EOL", setDirty=False ) - elif self.name() == "Sources": - self.__readFiles("Sources", "Source", "SOURCES") - elif self.name() == "Forms": - self.__readFiles("Forms", "Form", "FORMS") - elif self.name() == "Translations": - self.__readFiles("Translations", "Translation", "TRANSLATIONS") + elif self.name() in fileCategoryTags: + self.__readFiles( + self.name(), self.name()[:-1], self.name().upper() + ) elif self.name() == "TranslationExceptions": self.__readFiles( "TranslationExceptions", "TranslationException", "TRANSLATIONEXCEPTIONS", ) - elif self.name() == "Resources": - self.__readFiles("Resources", "Resource", "RESOURCES") - elif self.name() == "Interfaces": - self.__readFiles("Interfaces", "Interface", "INTERFACES") - elif self.name() == "Protocols": - self.__readFiles("Protocols", "Protocol", "PROTOCOLS") - elif self.name() == "Others": - self.__readFiles("Others", "Other", "OTHERS") elif self.name() == "MainScript": self.project.setProjectData( Utilities.toNativeSeparators(self.readElementText()), dataKey="MAINSCRIPT", + setDirty=False, ) elif self.name() == "Vcs": self.__readVcs() @@ -151,7 +155,7 @@ ) elif self.name() == "DocstringStyle": self.project.setProjectData( - self.readElementText(), dataKey="DOCSTRING" + self.readElementText(), dataKey="DOCSTRING", setDirty=False ) elif self.name() == "ProjectTypeSpecific": self.__readBasicDataField( @@ -199,7 +203,9 @@ fileList.append( Utilities.toNativeSeparators(self.readElementText()) ) - self.project.setProjectData(fileList, dataKey=dataKey) + self.project.setProjectData( + fileList, dataKey=dataKey, setDirty=False + ) else: self.raiseUnexpectedStartTag(self.name()) @@ -218,7 +224,9 @@ if self.isStartElement(): if self.name() == dataTag: - self.project.setProjectData(self._readBasics(), dataKey=dataKey) + self.project.setProjectData( + self._readBasics(), dataKey=dataKey, setDirty=False + ) else: self.raiseUnexpectedStartTag(self.name()) @@ -233,14 +241,16 @@ if self.isStartElement(): if self.name() == "VcsType": - self.project.setProjectData(self.readElementText(), dataKey="VCS") + self.project.setProjectData( + self.readElementText(), dataKey="VCS", setDirty=False + ) elif self.name() == "VcsOptions": self.project.setProjectData( - self._readBasics(), dataKey="VCSOPTIONS" + self._readBasics(), dataKey="VCSOPTIONS", setDirty=False ) elif self.name() == "VcsOtherData": self.project.setProjectData( - self._readBasics(), dataKey="VCSOTHERDATA" + self._readBasics(), dataKey="VCSOTHERDATA", setDirty=False ) else: self.raiseUnexpectedStartTag(self.name()) @@ -261,7 +271,9 @@ if pattern: fileTypes = self.project.getProjectData(dataKey="FILETYPES") fileTypes[pattern] = filetype - self.project.setProjectData(fileTypes, dataKey="FILETYPES") + self.project.setProjectData( + fileTypes, dataKey="FILETYPES", setDirty=False + ) else: self.raiseUnexpectedStartTag(self.name()) @@ -281,6 +293,8 @@ if pattern: assocs = self.project.getProjectData(dataKey="LEXERASSOCS") assocs[pattern] = lexer - self.project.setProjectData(assocs, dataKey="LEXERASSOCS") + self.project.setProjectData( + assocs, dataKey="LEXERASSOCS", setDirty=False + ) else: self.raiseUnexpectedStartTag(self.name())