src/eric7/EricXML/ProjectReader.py

branch
eric7
changeset 9516
0f023e61a9b5
parent 9514
2b104ad132a4
child 9531
155b2646799a
equal deleted inserted replaced
9515:275334bc9607 9516:0f023e61a9b5
36 36
37 def readXML(self): 37 def readXML(self):
38 """ 38 """
39 Public method to read and parse the XML document. 39 Public method to read and parse the XML document.
40 """ 40 """
41 fileCategoryTags = [s.capitalize() for s in self.project.getFileCategories()]
42
41 while not self.atEnd(): 43 while not self.atEnd():
42 self.readNext() 44 self.readNext()
43 if self.isStartElement(): 45 if self.isStartElement():
44 if self.name() == "Project": 46 if self.name() == "Project":
45 self.version = self.attribute("version", projectFileFormatVersion) 47 self.version = self.attribute("version", projectFileFormatVersion)
46 if self.version not in self.supportedVersions: 48 if self.version not in self.supportedVersions:
47 self.raiseUnsupportedFormatVersion(self.version) 49 self.raiseUnsupportedFormatVersion(self.version)
48 elif self.name() == "Language": 50 elif self.name() == "Language":
49 self.project.setProjectData( 51 self.project.setProjectData(
50 self.readElementText(), dataKey="SPELLLANGUAGE" 52 self.readElementText(), dataKey="SPELLLANGUAGE", setDirty=False
51 ) 53 )
52 elif self.name() == "ProjectWordList": 54 elif self.name() == "ProjectWordList":
53 self.project.setProjectData( 55 self.project.setProjectData(
54 Utilities.toNativeSeparators(self.readElementText()), 56 Utilities.toNativeSeparators(self.readElementText()),
55 dataKey="SPELLWORDS", 57 dataKey="SPELLWORDS",
58 setDirty=False,
56 ) 59 )
57 elif self.name() == "ProjectExcludeList": 60 elif self.name() == "ProjectExcludeList":
58 self.project.setProjectData( 61 self.project.setProjectData(
59 Utilities.toNativeSeparators(self.readElementText()), 62 Utilities.toNativeSeparators(self.readElementText()),
60 dataKey="SPELLEXCLUDES", 63 dataKey="SPELLEXCLUDES",
64 setDirty=False,
61 ) 65 )
62 elif self.name() == "Hash": 66 elif self.name() == "Hash":
63 self.project.setProjectData(self.readElementText(), dataKey="HASH") 67 self.project.setProjectData(
68 self.readElementText(), dataKey="HASH", setDirty=False
69 )
64 elif self.name() == "ProgLanguage": 70 elif self.name() == "ProgLanguage":
65 self.project.setProjectData( 71 self.project.setProjectData(
66 int(self.attribute("mixed", "0")), 72 int(self.attribute("mixed", "0")),
67 dataKey="MIXEDLANGUAGE", 73 dataKey="MIXEDLANGUAGE",
68 ) 74 setDirty=False,
69 self.project.setProjectData( 75 )
70 self.readElementText(), dataKey="PROGLANGUAGE" 76 self.project.setProjectData(
77 self.readElementText(), dataKey="PROGLANGUAGE", setDirty=False
71 ) 78 )
72 if self.project.getProjectData(dataKey="PROGLANGUAGE") == "Python": 79 if self.project.getProjectData(dataKey="PROGLANGUAGE") == "Python":
73 # convert Python to the more specific Python3 80 # convert Python to the more specific Python3
74 self.project.setProjectData("Python3", dataKey="PROGLANGUAGE") 81 self.project.setProjectData(
82 "Python3", dataKey="PROGLANGUAGE", setDirty=False
83 )
75 elif self.name() == "ProjectType": 84 elif self.name() == "ProjectType":
76 self.project.setProjectData( 85 self.project.setProjectData(
77 self.readElementText(), dataKey="PROJECTTYPE" 86 self.readElementText(), dataKey="PROJECTTYPE", setDirty=False
78 ) 87 )
79 elif self.name() == "Description": 88 elif self.name() == "Description":
80 self.project.setProjectData( 89 self.project.setProjectData(
81 self.readElementText(), dataKey="DESCRIPTION" 90 self.readElementText(), dataKey="DESCRIPTION", setDirty=False
82 ) 91 )
83 elif self.name() == "Version": 92 elif self.name() == "Version":
84 self.project.setProjectData( 93 self.project.setProjectData(
85 self.readElementText(), dataKey="VERSION" 94 self.readElementText(), dataKey="VERSION", setDirty=False
86 ) 95 )
87 elif self.name() == "Author": 96 elif self.name() == "Author":
88 self.project.setProjectData( 97 self.project.setProjectData(
89 self.readElementText(), dataKey="AUTHOR" 98 self.readElementText(), dataKey="AUTHOR", setDirty=False
90 ) 99 )
91 elif self.name() == "Email": 100 elif self.name() == "Email":
92 self.project.setProjectData(self.readElementText(), dataKey="EMAIL") 101 self.project.setProjectData(
102 self.readElementText(), dataKey="EMAIL", setDirty=False
103 )
93 elif self.name() == "TranslationPattern": 104 elif self.name() == "TranslationPattern":
94 self.project.setProjectData( 105 self.project.setProjectData(
95 Utilities.toNativeSeparators(self.readElementText()), 106 Utilities.toNativeSeparators(self.readElementText()),
96 dataKey="TRANSLATIONPATTERN", 107 dataKey="TRANSLATIONPATTERN",
108 setDirty=False,
97 ) 109 )
98 elif self.name() == "TranslationsBinPath": 110 elif self.name() == "TranslationsBinPath":
99 self.project.setProjectData( 111 self.project.setProjectData(
100 Utilities.toNativeSeparators(self.readElementText()), 112 Utilities.toNativeSeparators(self.readElementText()),
101 dataKey="TRANSLATIONSBINPATH", 113 dataKey="TRANSLATIONSBINPATH",
114 setDirty=False,
102 ) 115 )
103 elif self.name() == "Eol": 116 elif self.name() == "Eol":
104 self.project.setProjectData( 117 self.project.setProjectData(
105 int(self.attribute("index", "0")), dataKey="EOL" 118 int(self.attribute("index", "0")), dataKey="EOL", setDirty=False
106 ) 119 )
107 elif self.name() == "Sources": 120 elif self.name() in fileCategoryTags:
108 self.__readFiles("Sources", "Source", "SOURCES") 121 self.__readFiles(
109 elif self.name() == "Forms": 122 self.name(), self.name()[:-1], self.name().upper()
110 self.__readFiles("Forms", "Form", "FORMS") 123 )
111 elif self.name() == "Translations":
112 self.__readFiles("Translations", "Translation", "TRANSLATIONS")
113 elif self.name() == "TranslationExceptions": 124 elif self.name() == "TranslationExceptions":
114 self.__readFiles( 125 self.__readFiles(
115 "TranslationExceptions", 126 "TranslationExceptions",
116 "TranslationException", 127 "TranslationException",
117 "TRANSLATIONEXCEPTIONS", 128 "TRANSLATIONEXCEPTIONS",
118 ) 129 )
119 elif self.name() == "Resources":
120 self.__readFiles("Resources", "Resource", "RESOURCES")
121 elif self.name() == "Interfaces":
122 self.__readFiles("Interfaces", "Interface", "INTERFACES")
123 elif self.name() == "Protocols":
124 self.__readFiles("Protocols", "Protocol", "PROTOCOLS")
125 elif self.name() == "Others":
126 self.__readFiles("Others", "Other", "OTHERS")
127 elif self.name() == "MainScript": 130 elif self.name() == "MainScript":
128 self.project.setProjectData( 131 self.project.setProjectData(
129 Utilities.toNativeSeparators(self.readElementText()), 132 Utilities.toNativeSeparators(self.readElementText()),
130 dataKey="MAINSCRIPT", 133 dataKey="MAINSCRIPT",
134 setDirty=False,
131 ) 135 )
132 elif self.name() == "Vcs": 136 elif self.name() == "Vcs":
133 self.__readVcs() 137 self.__readVcs()
134 elif self.name() == "FiletypeAssociations": 138 elif self.name() == "FiletypeAssociations":
135 self.__readFiletypeAssociations() 139 self.__readFiletypeAssociations()
149 self.__readBasicDataField( 153 self.__readBasicDataField(
150 "RccCompiler", "RccCompilerParameters", "RCCPARAMS" 154 "RccCompiler", "RccCompilerParameters", "RCCPARAMS"
151 ) 155 )
152 elif self.name() == "DocstringStyle": 156 elif self.name() == "DocstringStyle":
153 self.project.setProjectData( 157 self.project.setProjectData(
154 self.readElementText(), dataKey="DOCSTRING" 158 self.readElementText(), dataKey="DOCSTRING", setDirty=False
155 ) 159 )
156 elif self.name() == "ProjectTypeSpecific": 160 elif self.name() == "ProjectTypeSpecific":
157 self.__readBasicDataField( 161 self.__readBasicDataField(
158 "ProjectTypeSpecific", 162 "ProjectTypeSpecific",
159 "ProjectTypeSpecificData", 163 "ProjectTypeSpecificData",
197 if self.name() == listTag: 201 if self.name() == listTag:
198 fileList = self.project.getProjectData(dataKey=dataKey) 202 fileList = self.project.getProjectData(dataKey=dataKey)
199 fileList.append( 203 fileList.append(
200 Utilities.toNativeSeparators(self.readElementText()) 204 Utilities.toNativeSeparators(self.readElementText())
201 ) 205 )
202 self.project.setProjectData(fileList, dataKey=dataKey) 206 self.project.setProjectData(
207 fileList, dataKey=dataKey, setDirty=False
208 )
203 else: 209 else:
204 self.raiseUnexpectedStartTag(self.name()) 210 self.raiseUnexpectedStartTag(self.name())
205 211
206 def __readBasicDataField(self, tag, dataTag, dataKey): 212 def __readBasicDataField(self, tag, dataTag, dataKey):
207 """ 213 """
216 if self.isEndElement() and self.name() == tag: 222 if self.isEndElement() and self.name() == tag:
217 break 223 break
218 224
219 if self.isStartElement(): 225 if self.isStartElement():
220 if self.name() == dataTag: 226 if self.name() == dataTag:
221 self.project.setProjectData(self._readBasics(), dataKey=dataKey) 227 self.project.setProjectData(
228 self._readBasics(), dataKey=dataKey, setDirty=False
229 )
222 else: 230 else:
223 self.raiseUnexpectedStartTag(self.name()) 231 self.raiseUnexpectedStartTag(self.name())
224 232
225 def __readVcs(self): 233 def __readVcs(self):
226 """ 234 """
231 if self.isEndElement() and self.name() == "Vcs": 239 if self.isEndElement() and self.name() == "Vcs":
232 break 240 break
233 241
234 if self.isStartElement(): 242 if self.isStartElement():
235 if self.name() == "VcsType": 243 if self.name() == "VcsType":
236 self.project.setProjectData(self.readElementText(), dataKey="VCS") 244 self.project.setProjectData(
245 self.readElementText(), dataKey="VCS", setDirty=False
246 )
237 elif self.name() == "VcsOptions": 247 elif self.name() == "VcsOptions":
238 self.project.setProjectData( 248 self.project.setProjectData(
239 self._readBasics(), dataKey="VCSOPTIONS" 249 self._readBasics(), dataKey="VCSOPTIONS", setDirty=False
240 ) 250 )
241 elif self.name() == "VcsOtherData": 251 elif self.name() == "VcsOtherData":
242 self.project.setProjectData( 252 self.project.setProjectData(
243 self._readBasics(), dataKey="VCSOTHERDATA" 253 self._readBasics(), dataKey="VCSOTHERDATA", setDirty=False
244 ) 254 )
245 else: 255 else:
246 self.raiseUnexpectedStartTag(self.name()) 256 self.raiseUnexpectedStartTag(self.name())
247 257
248 def __readFiletypeAssociations(self): 258 def __readFiletypeAssociations(self):
259 pattern = self.attribute("pattern", "") 269 pattern = self.attribute("pattern", "")
260 filetype = self.attribute("type", "OTHERS") 270 filetype = self.attribute("type", "OTHERS")
261 if pattern: 271 if pattern:
262 fileTypes = self.project.getProjectData(dataKey="FILETYPES") 272 fileTypes = self.project.getProjectData(dataKey="FILETYPES")
263 fileTypes[pattern] = filetype 273 fileTypes[pattern] = filetype
264 self.project.setProjectData(fileTypes, dataKey="FILETYPES") 274 self.project.setProjectData(
275 fileTypes, dataKey="FILETYPES", setDirty=False
276 )
265 else: 277 else:
266 self.raiseUnexpectedStartTag(self.name()) 278 self.raiseUnexpectedStartTag(self.name())
267 279
268 def __readLexerAssociations(self): 280 def __readLexerAssociations(self):
269 """ 281 """
279 pattern = self.attribute("pattern", "") 291 pattern = self.attribute("pattern", "")
280 lexer = self.attribute("lexer") 292 lexer = self.attribute("lexer")
281 if pattern: 293 if pattern:
282 assocs = self.project.getProjectData(dataKey="LEXERASSOCS") 294 assocs = self.project.getProjectData(dataKey="LEXERASSOCS")
283 assocs[pattern] = lexer 295 assocs[pattern] = lexer
284 self.project.setProjectData(assocs, dataKey="LEXERASSOCS") 296 self.project.setProjectData(
285 else: 297 assocs, dataKey="LEXERASSOCS", setDirty=False
286 self.raiseUnexpectedStartTag(self.name()) 298 )
299 else:
300 self.raiseUnexpectedStartTag(self.name())

eric ide

mercurial