eric6/Project/CreateDialogCodeDialog.py

changeset 7635
0cdead130a81
parent 7494
268c297df637
child 7759
51aa6c6b66f7
equal deleted inserted replaced
7634:8c3d033e5044 7635:0cdead130a81
286 mapped = bytes(type_).decode() 286 mapped = bytes(type_).decode()
287 287
288 # I. always check for * 288 # I. always check for *
289 mapped = mapped.replace("*", "") 289 mapped = mapped.replace("*", "")
290 290
291 if ( 291 # 1. check for const
292 self.project.getProjectLanguage() != "Python2" or 292 mapped = mapped.replace("const ", "")
293 self.project.getProjectType in ("PySide", "PySide2") 293
294 ): 294 # 2. replace QString and QStringList
295 # 1. check for const 295 mapped = (
296 mapped = mapped.replace("const ", "") 296 mapped
297 297 .replace("QStringList", "list")
298 # 2. replace QString and QStringList 298 .replace("QString", "str")
299 mapped = ( 299 )
300 mapped 300
301 .replace("QStringList", "list") 301 # 3. replace double by float
302 .replace("QString", "str") 302 mapped = mapped.replace("double", "float")
303 )
304
305 # 3. replace double by float
306 mapped = mapped.replace("double", "float")
307 303
308 return mapped 304 return mapped
309 305
310 def __updateSlotsModel(self): 306 def __updateSlotsModel(self):
311 """ 307 """
375 ): 371 ):
376 self.__generatePythonCode() 372 self.__generatePythonCode()
377 elif self.filenameEdit.text().endswith(".rb"): 373 elif self.filenameEdit.text().endswith(".rb"):
378 pass 374 pass
379 # second decide on project language 375 # second decide on project language
380 elif self.project.getProjectLanguage() in ["Python2", "Python3"]: 376 elif self.project.getProjectLanguage() == "Python3":
381 self.__generatePythonCode() 377 self.__generatePythonCode()
382 elif self.project.getProjectLanguage() == "Ruby": 378 elif self.project.getProjectLanguage() == "Ruby":
383 pass 379 pass
384 else: 380 else:
385 # assume Python (our global default) 381 # assume Python (our global default)
387 383
388 def __generatePythonCode(self): 384 def __generatePythonCode(self):
389 """ 385 """
390 Private slot to generate Python code as requested by the user. 386 Private slot to generate Python code as requested by the user.
391 """ 387 """
388 if self.project.getProjectLanguage() != "Python3":
389 E5MessageBox.critical(
390 self,
391 self.tr("Code Generation"),
392 self.tr(
393 """<p>Code generation for project language"""
394 """ "{0}" is not supported.</p>""")
395 .format(self.project.getProjectLanguage()))
396 return
397
392 # init some variables 398 # init some variables
393 sourceImpl = [] 399 sourceImpl = []
394 appendAtIndex = -1 400 appendAtIndex = -1
395 indentStr = " " 401 indentStr = " "
396 slotsCode = [] 402 slotsCode = []
397 403
398 if self.__module is None: 404 if self.__module is None:
399 # new file 405 # new file
400 try: 406 try:
401 if self.project.getProjectLanguage() == "Python2": 407 if self.project.getProjectType() == "PySide2":
402 if self.project.getProjectType() == "PySide": 408 tmplName = os.path.join(
403 tmplName = os.path.join( 409 getConfig('ericCodeTemplatesDir'),
404 getConfig('ericCodeTemplatesDir'), 410 "impl_pyside2.py.tmpl")
405 "impl_pyside.py2.tmpl") 411 elif self.project.getProjectType() in [
406 elif self.project.getProjectType() == "PySide2": 412 "PyQt5", "E6Plugin"]:
407 tmplName = os.path.join( 413 tmplName = os.path.join(
408 getConfig('ericCodeTemplatesDir'), 414 getConfig('ericCodeTemplatesDir'),
409 "impl_pyside2.py2.tmpl") 415 "impl_pyqt5.py.tmpl")
410 elif self.project.getProjectType() == "PyQt5":
411 tmplName = os.path.join(
412 getConfig('ericCodeTemplatesDir'),
413 "impl_pyqt5.py2.tmpl")
414 else:
415 tmplName = os.path.join(
416 getConfig('ericCodeTemplatesDir'),
417 "impl_pyqt.py2.tmpl")
418 else: 416 else:
419 if self.project.getProjectType() == "PySide": 417 E5MessageBox.critical(
420 tmplName = os.path.join( 418 self,
421 getConfig('ericCodeTemplatesDir'), 419 self.tr("Code Generation"),
422 "impl_pyside.py.tmpl") 420 self.tr(
423 elif self.project.getProjectType() == "PySide2": 421 """<p>No code template file available for"""
424 tmplName = os.path.join( 422 """ project type "{0}".</p>""")
425 getConfig('ericCodeTemplatesDir'), 423 .format(self.project.getProjectType()))
426 "impl_pyside2.py.tmpl") 424 return
427 elif self.project.getProjectType() in [
428 "PyQt5", "E6Plugin"]:
429 tmplName = os.path.join(
430 getConfig('ericCodeTemplatesDir'),
431 "impl_pyqt5.py.tmpl")
432 else:
433 tmplName = os.path.join(
434 getConfig('ericCodeTemplatesDir'),
435 "impl_pyqt.py.tmpl")
436 tmplFile = open(tmplName, 'r', encoding="utf-8") 425 tmplFile = open(tmplName, 'r', encoding="utf-8")
437 template = tmplFile.read() 426 template = tmplFile.read()
438 tmplFile.close() 427 tmplFile.close()
439 except IOError as why: 428 except IOError as why:
440 E5MessageBox.critical( 429 E5MessageBox.critical(
501 if line.lstrip().startswith("def __init__"): 490 if line.lstrip().startswith("def __init__"):
502 indentStr = line.replace(line.lstrip(), "") 491 indentStr = line.replace(line.lstrip(), "")
503 break 492 break
504 493
505 # do the coding stuff 494 # do the coding stuff
506 if self.project.getProjectLanguage() == "Python2": 495 if self.project.getProjectType() in ("PySide2",):
507 if self.project.getProjectType() in ("PySide", "PySide2"): 496 pyqtSignatureFormat = '@Slot({0})'
508 pyqtSignatureFormat = '@Slot({0})'
509 elif self.project.getProjectType() == "PyQt5":
510 pyqtSignatureFormat = '@pyqtSlot({0})'
511 else:
512 pyqtSignatureFormat = '@pyqtSignature("{0}")'
513 else: 497 else:
514 if self.project.getProjectType() in ("PySide", "PySide2"): 498 pyqtSignatureFormat = '@pyqtSlot({0})'
515 pyqtSignatureFormat = '@Slot({0})'
516 else:
517 pyqtSignatureFormat = '@pyqtSlot({0})'
518 for row in range(self.slotsModel.rowCount()): 499 for row in range(self.slotsModel.rowCount()):
519 topItem = self.slotsModel.item(row) 500 topItem = self.slotsModel.item(row)
520 for childRow in range(topItem.rowCount()): 501 for childRow in range(topItem.rowCount()):
521 child = topItem.child(childRow) 502 child = topItem.child(childRow)
522 if ( 503 if (

eric ide

mercurial