src/eric7/EricXML/ProjectReader.py

branch
eric7
changeset 9514
2b104ad132a4
parent 9473
3f23dbf37dbe
child 9516
0f023e61a9b5
equal deleted inserted replaced
9513:6e260b424396 9514:2b104ad132a4
44 if self.name() == "Project": 44 if self.name() == "Project":
45 self.version = self.attribute("version", projectFileFormatVersion) 45 self.version = self.attribute("version", projectFileFormatVersion)
46 if self.version not in self.supportedVersions: 46 if self.version not in self.supportedVersions:
47 self.raiseUnsupportedFormatVersion(self.version) 47 self.raiseUnsupportedFormatVersion(self.version)
48 elif self.name() == "Language": 48 elif self.name() == "Language":
49 self.project.pdata["SPELLLANGUAGE"] = self.readElementText() 49 self.project.setProjectData(
50 self.readElementText(), dataKey="SPELLLANGUAGE"
51 )
50 elif self.name() == "ProjectWordList": 52 elif self.name() == "ProjectWordList":
51 self.project.pdata["SPELLWORDS"] = Utilities.toNativeSeparators( 53 self.project.setProjectData(
52 self.readElementText() 54 Utilities.toNativeSeparators(self.readElementText()),
55 dataKey="SPELLWORDS",
53 ) 56 )
54 elif self.name() == "ProjectExcludeList": 57 elif self.name() == "ProjectExcludeList":
55 self.project.pdata["SPELLEXCLUDES"] = Utilities.toNativeSeparators( 58 self.project.setProjectData(
56 self.readElementText() 59 Utilities.toNativeSeparators(self.readElementText()),
60 dataKey="SPELLEXCLUDES",
57 ) 61 )
58 elif self.name() == "Hash": 62 elif self.name() == "Hash":
59 self.project.pdata["HASH"] = self.readElementText() 63 self.project.setProjectData(self.readElementText(), dataKey="HASH")
60 elif self.name() == "ProgLanguage": 64 elif self.name() == "ProgLanguage":
61 self.project.pdata["MIXEDLANGUAGE"] = int( 65 self.project.setProjectData(
62 self.attribute("mixed", "0") 66 int(self.attribute("mixed", "0")),
63 ) 67 dataKey="MIXEDLANGUAGE",
64 self.project.pdata["PROGLANGUAGE"] = self.readElementText() 68 )
65 if self.project.pdata["PROGLANGUAGE"] == "Python": 69 self.project.setProjectData(
70 self.readElementText(), dataKey="PROGLANGUAGE"
71 )
72 if self.project.getProjectData(dataKey="PROGLANGUAGE") == "Python":
66 # convert Python to the more specific Python3 73 # convert Python to the more specific Python3
67 self.project.pdata["PROGLANGUAGE"] = "Python3" 74 self.project.setProjectData("Python3", dataKey="PROGLANGUAGE")
68 elif self.name() == "ProjectType": 75 elif self.name() == "ProjectType":
69 self.project.pdata["PROJECTTYPE"] = self.readElementText() 76 self.project.setProjectData(
77 self.readElementText(), dataKey="PROJECTTYPE"
78 )
70 elif self.name() == "Description": 79 elif self.name() == "Description":
71 self.project.pdata["DESCRIPTION"] = self.readElementText() 80 self.project.setProjectData(
81 self.readElementText(), dataKey="DESCRIPTION"
82 )
72 elif self.name() == "Version": 83 elif self.name() == "Version":
73 self.project.pdata["VERSION"] = self.readElementText() 84 self.project.setProjectData(
85 self.readElementText(), dataKey="VERSION"
86 )
74 elif self.name() == "Author": 87 elif self.name() == "Author":
75 self.project.pdata["AUTHOR"] = self.readElementText() 88 self.project.setProjectData(
89 self.readElementText(), dataKey="AUTHOR"
90 )
76 elif self.name() == "Email": 91 elif self.name() == "Email":
77 self.project.pdata["EMAIL"] = self.readElementText() 92 self.project.setProjectData(self.readElementText(), dataKey="EMAIL")
78 elif self.name() == "TranslationPattern": 93 elif self.name() == "TranslationPattern":
79 self.project.pdata[ 94 self.project.setProjectData(
80 "TRANSLATIONPATTERN" 95 Utilities.toNativeSeparators(self.readElementText()),
81 ] = Utilities.toNativeSeparators(self.readElementText()) 96 dataKey="TRANSLATIONPATTERN",
97 )
82 elif self.name() == "TranslationsBinPath": 98 elif self.name() == "TranslationsBinPath":
83 self.project.pdata[ 99 self.project.setProjectData(
84 "TRANSLATIONSBINPATH" 100 Utilities.toNativeSeparators(self.readElementText()),
85 ] = Utilities.toNativeSeparators(self.readElementText()) 101 dataKey="TRANSLATIONSBINPATH",
102 )
86 elif self.name() == "Eol": 103 elif self.name() == "Eol":
87 self.project.pdata["EOL"] = int(self.attribute("index", "0")) 104 self.project.setProjectData(
105 int(self.attribute("index", "0")), dataKey="EOL"
106 )
88 elif self.name() == "Sources": 107 elif self.name() == "Sources":
89 self.__readFiles("Sources", "Source", "SOURCES") 108 self.__readFiles("Sources", "Source", "SOURCES")
90 elif self.name() == "Forms": 109 elif self.name() == "Forms":
91 self.__readFiles("Forms", "Form", "FORMS") 110 self.__readFiles("Forms", "Form", "FORMS")
92 elif self.name() == "Translations": 111 elif self.name() == "Translations":
104 elif self.name() == "Protocols": 123 elif self.name() == "Protocols":
105 self.__readFiles("Protocols", "Protocol", "PROTOCOLS") 124 self.__readFiles("Protocols", "Protocol", "PROTOCOLS")
106 elif self.name() == "Others": 125 elif self.name() == "Others":
107 self.__readFiles("Others", "Other", "OTHERS") 126 self.__readFiles("Others", "Other", "OTHERS")
108 elif self.name() == "MainScript": 127 elif self.name() == "MainScript":
109 self.project.pdata["MAINSCRIPT"] = Utilities.toNativeSeparators( 128 self.project.setProjectData(
110 self.readElementText() 129 Utilities.toNativeSeparators(self.readElementText()),
130 dataKey="MAINSCRIPT",
111 ) 131 )
112 elif self.name() == "Vcs": 132 elif self.name() == "Vcs":
113 self.__readVcs() 133 self.__readVcs()
114 elif self.name() == "FiletypeAssociations": 134 elif self.name() == "FiletypeAssociations":
115 self.__readFiletypeAssociations() 135 self.__readFiletypeAssociations()
128 elif self.name() == "RccCompiler": 148 elif self.name() == "RccCompiler":
129 self.__readBasicDataField( 149 self.__readBasicDataField(
130 "RccCompiler", "RccCompilerParameters", "RCCPARAMS" 150 "RccCompiler", "RccCompilerParameters", "RCCPARAMS"
131 ) 151 )
132 elif self.name() == "DocstringStyle": 152 elif self.name() == "DocstringStyle":
133 self.project.pdata["DOCSTRING"] = self.readElementText() 153 self.project.setProjectData(
154 self.readElementText(), dataKey="DOCSTRING"
155 )
134 elif self.name() == "ProjectTypeSpecific": 156 elif self.name() == "ProjectTypeSpecific":
135 self.__readBasicDataField( 157 self.__readBasicDataField(
136 "ProjectTypeSpecific", 158 "ProjectTypeSpecific",
137 "ProjectTypeSpecificData", 159 "ProjectTypeSpecificData",
138 "PROJECTTYPESPECIFICDATA", 160 "PROJECTTYPESPECIFICDATA",
171 if self.isEndElement() and self.name() == tag: 193 if self.isEndElement() and self.name() == tag:
172 break 194 break
173 195
174 if self.isStartElement(): 196 if self.isStartElement():
175 if self.name() == listTag: 197 if self.name() == listTag:
176 self.project.pdata[dataKey].append( 198 fileList = self.project.getProjectData(dataKey=dataKey)
199 fileList.append(
177 Utilities.toNativeSeparators(self.readElementText()) 200 Utilities.toNativeSeparators(self.readElementText())
178 ) 201 )
202 self.project.setProjectData(fileList, dataKey=dataKey)
179 else: 203 else:
180 self.raiseUnexpectedStartTag(self.name()) 204 self.raiseUnexpectedStartTag(self.name())
181 205
182 def __readBasicDataField(self, tag, dataTag, dataKey): 206 def __readBasicDataField(self, tag, dataTag, dataKey):
183 """ 207 """
192 if self.isEndElement() and self.name() == tag: 216 if self.isEndElement() and self.name() == tag:
193 break 217 break
194 218
195 if self.isStartElement(): 219 if self.isStartElement():
196 if self.name() == dataTag: 220 if self.name() == dataTag:
197 self.project.pdata[dataKey] = self._readBasics() 221 self.project.setProjectData(self._readBasics(), dataKey=dataKey)
198 else: 222 else:
199 self.raiseUnexpectedStartTag(self.name()) 223 self.raiseUnexpectedStartTag(self.name())
200 224
201 def __readVcs(self): 225 def __readVcs(self):
202 """ 226 """
207 if self.isEndElement() and self.name() == "Vcs": 231 if self.isEndElement() and self.name() == "Vcs":
208 break 232 break
209 233
210 if self.isStartElement(): 234 if self.isStartElement():
211 if self.name() == "VcsType": 235 if self.name() == "VcsType":
212 self.project.pdata["VCS"] = self.readElementText() 236 self.project.setProjectData(self.readElementText(), dataKey="VCS")
213 elif self.name() == "VcsOptions": 237 elif self.name() == "VcsOptions":
214 self.project.pdata["VCSOPTIONS"] = self._readBasics() 238 self.project.setProjectData(
239 self._readBasics(), dataKey="VCSOPTIONS"
240 )
215 elif self.name() == "VcsOtherData": 241 elif self.name() == "VcsOtherData":
216 self.project.pdata["VCSOTHERDATA"] = self._readBasics() 242 self.project.setProjectData(
243 self._readBasics(), dataKey="VCSOTHERDATA"
244 )
217 else: 245 else:
218 self.raiseUnexpectedStartTag(self.name()) 246 self.raiseUnexpectedStartTag(self.name())
219 247
220 def __readFiletypeAssociations(self): 248 def __readFiletypeAssociations(self):
221 """ 249 """
229 if self.isStartElement(): 257 if self.isStartElement():
230 if self.name() == "FiletypeAssociation": 258 if self.name() == "FiletypeAssociation":
231 pattern = self.attribute("pattern", "") 259 pattern = self.attribute("pattern", "")
232 filetype = self.attribute("type", "OTHERS") 260 filetype = self.attribute("type", "OTHERS")
233 if pattern: 261 if pattern:
234 self.project.pdata["FILETYPES"][pattern] = filetype 262 fileTypes = self.project.getProjectData(dataKey="FILETYPES")
263 fileTypes[pattern] = filetype
264 self.project.setProjectData(fileTypes, dataKey="FILETYPES")
235 else: 265 else:
236 self.raiseUnexpectedStartTag(self.name()) 266 self.raiseUnexpectedStartTag(self.name())
237 267
238 def __readLexerAssociations(self): 268 def __readLexerAssociations(self):
239 """ 269 """
247 if self.isStartElement(): 277 if self.isStartElement():
248 if self.name() == "LexerAssociation": 278 if self.name() == "LexerAssociation":
249 pattern = self.attribute("pattern", "") 279 pattern = self.attribute("pattern", "")
250 lexer = self.attribute("lexer") 280 lexer = self.attribute("lexer")
251 if pattern: 281 if pattern:
252 self.project.pdata["LEXERASSOCS"][pattern] = lexer 282 assocs = self.project.getProjectData(dataKey="LEXERASSOCS")
253 else: 283 assocs[pattern] = lexer
254 self.raiseUnexpectedStartTag(self.name()) 284 self.project.setProjectData(assocs, dataKey="LEXERASSOCS")
285 else:
286 self.raiseUnexpectedStartTag(self.name())

eric ide

mercurial