233 self.codecoverage = None |
239 self.codecoverage = None |
234 self.profiledata = None |
240 self.profiledata = None |
235 self.applicationDiagram = None |
241 self.applicationDiagram = None |
236 self.loadedDiagram = None |
242 self.loadedDiagram = None |
237 |
243 |
|
244 def getProgrammingLanguages(self): |
|
245 """ |
|
246 Public method to get the programming languages supported by project. |
|
247 |
|
248 @return list of supported programming languages (list of string) |
|
249 """ |
|
250 return self.__progLanguages[:] |
|
251 |
238 def __initProjectTypes(self): |
252 def __initProjectTypes(self): |
239 """ |
253 """ |
240 Private method to initialize the list of supported project types. |
254 Private method to initialize the list of supported project types. |
241 """ |
255 """ |
242 self.__projectTypes = {} |
256 self.__projectTypes = {} |
243 self.__fileTypeCallbacks = {} |
257 self.__fileTypeCallbacks = {} |
244 self.__lexerAssociationCallbacks = {} |
258 self.__lexerAssociationCallbacks = {} |
245 self.__binaryTranslationsCallbacks = {} |
259 self.__binaryTranslationsCallbacks = {} |
|
260 |
246 self.__projectTypes["Qt4"] = self.trUtf8("Qt4 GUI") |
261 self.__projectTypes["Qt4"] = self.trUtf8("Qt4 GUI") |
247 self.__projectTypes["Qt4C"] = self.trUtf8("Qt4 Console") |
262 self.__projectTypes["Qt4C"] = self.trUtf8("Qt4 Console") |
248 self.__projectTypes["E4Plugin"] = self.trUtf8("Eric Plugin") |
263 self.__projectTypes["E4Plugin"] = self.trUtf8("Eric Plugin") |
249 self.__projectTypes["Console"] = self.trUtf8("Console") |
264 self.__projectTypes["Console"] = self.trUtf8("Console") |
250 self.__projectTypes["Other"] = self.trUtf8("Other") |
265 self.__projectTypes["Other"] = self.trUtf8("Other") |
|
266 |
|
267 self.__projectProgLanguages = { |
|
268 "Python2": ["Qt4", "Qt4C", "E4Plugin", "Console", "Other"], |
|
269 "Python3": ["Qt4", "Qt4C", "E4Plugin", "Console", "Other"], |
|
270 "Ruby": ["Qt4", "Qt4C", "Console", "Other"], |
|
271 } |
|
272 |
251 if Utilities.checkPyside(): |
273 if Utilities.checkPyside(): |
252 self.__projectTypes["PySide"] = self.trUtf8("PySide GUI") |
274 self.__projectTypes["PySide"] = self.trUtf8("PySide GUI") |
253 self.__projectTypes["PySideC"] = self.trUtf8("PySide Console") |
275 self.__projectTypes["PySideC"] = self.trUtf8("PySide Console") |
|
276 self.__projectProgLanguages["Python2"].extend(["PySide", "PySideC"]) |
|
277 self.__projectProgLanguages["Python3"].extend(["PySide", "PySideC"]) |
254 else: |
278 else: |
255 pass |
279 pass |
256 |
280 |
257 def getProjectTypes(self): |
281 def getProjectTypes(self, progLanguage=""): |
258 """ |
282 """ |
259 Public method to get the list of supported project types. |
283 Public method to get the list of supported project types. |
260 |
284 |
|
285 @param progLanguage programming language to get project types for (string) |
261 @return reference to the dictionary of project types. |
286 @return reference to the dictionary of project types. |
262 """ |
287 """ |
263 return self.__projectTypes |
288 if progLanguage and progLanguage in self.__projectProgLanguages: |
264 |
289 ptypes = {} |
265 def hasProjectType(self, type_): |
290 for ptype in self.__projectProgLanguages[progLanguage]: |
|
291 ptypes[ptype] = self.__projectTypes[ptype] |
|
292 return ptypes |
|
293 else: |
|
294 return self.__projectTypes |
|
295 |
|
296 def hasProjectType(self, type_, progLanguage=""): |
266 """ |
297 """ |
267 Public method to check, if a project type is already registered. |
298 Public method to check, if a project type is already registered. |
268 |
299 |
269 @param type_ internal type designator to be unregistered (string) |
300 @param type_ internal type designator (string) |
270 """ |
301 @param progLanguage programming language of the project type (string) |
271 return type_ in self.__projectTypes |
302 @return flag indicating presence of the project type (boolean) |
|
303 """ |
|
304 if progLanguage: |
|
305 return progLanguage in self.__projectProgLanguages and \ |
|
306 type_ in self.__projectProgLanguages[progLanguage] |
|
307 else: |
|
308 return type_ in self.__projectTypes |
272 |
309 |
273 def registerProjectType(self, type_, description, fileTypeCallback=None, |
310 def registerProjectType(self, type_, description, fileTypeCallback=None, |
274 binaryTranslationsCallback=None, lexerAssociationCallback=None): |
311 binaryTranslationsCallback=None, lexerAssociationCallback=None, |
|
312 progLanguages=None): |
275 """ |
313 """ |
276 Public method to register a project type. |
314 Public method to register a project type. |
277 |
315 |
278 @param type_ internal type designator to be registered (string) |
316 @param type_ internal type designator to be registered (string) |
279 @param description more verbose type name (display string) (string) |
317 @param description more verbose type name (display string) (string) |
283 name of the binary translation file given the name of the raw |
321 name of the binary translation file given the name of the raw |
284 translation file |
322 translation file |
285 @keyparam lexerAssociationCallback reference to a method returning the |
323 @keyparam lexerAssociationCallback reference to a method returning the |
286 lexer type to be used for syntax highlighting given the name of |
324 lexer type to be used for syntax highlighting given the name of |
287 a file |
325 a file |
288 """ |
326 @keyparam progLanguages programming languages supported by the |
|
327 project type (list of string) |
|
328 """ |
|
329 if progLanguages: |
|
330 for progLanguage in progLanguages: |
|
331 if progLanguage not in self.__projectProgLanguages: |
|
332 E5MessageBox.critical(self.ui, |
|
333 self.trUtf8("Registering Project Type"), |
|
334 self.trUtf8("""<p>The Programming Language <b>{0}</b> is not""" |
|
335 """ supported.</p>""")\ |
|
336 .format(progLanguage) |
|
337 ) |
|
338 return |
|
339 |
|
340 if type_ in self.__projectProgLanguages[progLanguage]: |
|
341 E5MessageBox.critical(self.ui, |
|
342 self.trUtf8("Registering Project Type"), |
|
343 self.trUtf8("""<p>The Project type <b>{0}</b> is already""" |
|
344 """ registered with Programmin Language""" |
|
345 """ <b>{1}</b>.</p>""")\ |
|
346 .format(type_, progLanguage) |
|
347 ) |
|
348 return |
|
349 |
289 if type_ in self.__projectTypes: |
350 if type_ in self.__projectTypes: |
290 E5MessageBox.critical(self.ui, |
351 E5MessageBox.critical(self.ui, |
291 self.trUtf8("Registering Project Type"), |
352 self.trUtf8("Registering Project Type"), |
292 self.trUtf8("""<p>The Project type <b>{0}</b> already exists.</p>""")\ |
353 self.trUtf8("""<p>The Project type <b>{0}</b> is already""" |
293 .format(type_) |
354 """ registered.</p>""").format(type_) |
294 ) |
355 ) |
295 else: |
356 else: |
296 self.__projectTypes[type_] = description |
357 self.__projectTypes[type_] = description |
297 self.__fileTypeCallbacks[type_] = fileTypeCallback |
358 self.__fileTypeCallbacks[type_] = fileTypeCallback |
298 self.__lexerAssociationCallbacks[type_] = lexerAssociationCallback |
359 self.__lexerAssociationCallbacks[type_] = lexerAssociationCallback |
299 self.__binaryTranslationsCallbacks[type_] = binaryTranslationsCallback |
360 self.__binaryTranslationsCallbacks[type_] = binaryTranslationsCallback |
|
361 if progLanguages: |
|
362 for progLanguage in progLanguages: |
|
363 self.__projectProgLanguages[progLanguage].append(type_) |
|
364 else: |
|
365 # no specific programming languages given -> add to all |
|
366 for progLanguage in self.__projectProgLanguages: |
|
367 self.__projectProgLanguages[progLanguage].append(type_) |
300 |
368 |
301 def unregisterProjectType(self, type_): |
369 def unregisterProjectType(self, type_): |
302 """ |
370 """ |
303 Public method to unregister a project type. |
371 Public method to unregister a project type. |
304 |
372 |
305 @param type_ internal type designator to be unregistered (string) |
373 @param type_ internal type designator to be unregistered (string) |
306 """ |
374 """ |
|
375 for progLanguage in self.__projectProgLanguages: |
|
376 if type in self.__projectProgLanguages[progLanguage]: |
|
377 self.__projectProgLanguages[progLanguage].remove(type_) |
307 if type_ in self.__projectTypes: |
378 if type_ in self.__projectTypes: |
308 del self.__projectTypes[type_] |
379 del self.__projectTypes[type_] |
309 if type_ in self.__fileTypeCallbacks: |
380 if type_ in self.__fileTypeCallbacks: |
310 del self.__fileTypeCallbacks[type_] |
381 del self.__fileTypeCallbacks[type_] |
311 if type_ in self.__lexerAssociationCallbacks: |
382 if type_ in self.__lexerAssociationCallbacks: |