Project/Project.py

changeset 2040
4cefd094353b
parent 2034
8de0fc1f7fef
child 2171
c7dd548d67d8
equal deleted inserted replaced
2039:fa41ccd7f7bc 2040:4cefd094353b
194 """ 194 """
195 super().__init__(parent) 195 super().__init__(parent)
196 196
197 self.ui = parent 197 self.ui = parent
198 198
199 self.__progLanguages = [
200 "Python2",
201 "Python3",
202 "Ruby",
203 ]
204
199 self.sourceExtensions = { 205 self.sourceExtensions = {
200 "Python2": Preferences.getPython("PythonExtensions"), 206 "Python2": Preferences.getPython("PythonExtensions"),
201 "Python3": Preferences.getPython("Python3Extensions"), 207 "Python3": Preferences.getPython("Python3Extensions"),
202 "Ruby": ['.rb'], 208 "Ruby": ['.rb'],
203 "Mixed": Preferences.getPython("Python3Extensions") + ['.rb'], 209 "Mixed": Preferences.getPython("Python3Extensions") + ['.rb'],
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:

eric ide

mercurial