27 from Graphics.UMLClassDiagram import UMLClassDiagram |
27 from Graphics.UMLClassDiagram import UMLClassDiagram |
28 from Graphics.ImportsDiagram import ImportsDiagram |
28 from Graphics.ImportsDiagram import ImportsDiagram |
29 from Graphics.ApplicationDiagram import ApplicationDiagram |
29 from Graphics.ApplicationDiagram import ApplicationDiagram |
30 from Graphics.PackageDiagram import PackageDiagram |
30 from Graphics.PackageDiagram import PackageDiagram |
31 |
31 |
32 from ProjectBrowserModel import ProjectBrowserFileItem, \ |
32 from .ProjectBrowserModel import ProjectBrowserFileItem, \ |
33 ProjectBrowserSimpleDirectoryItem, ProjectBrowserDirectoryItem, \ |
33 ProjectBrowserSimpleDirectoryItem, ProjectBrowserDirectoryItem, \ |
34 ProjectBrowserSourceType |
34 ProjectBrowserSourceType |
35 from ProjectBaseBrowser import ProjectBaseBrowser |
35 from .ProjectBaseBrowser import ProjectBaseBrowser |
36 from NewPythonPackageDialog import NewPythonPackageDialog |
36 from .NewPythonPackageDialog import NewPythonPackageDialog |
37 |
37 |
38 import Utilities |
38 import Utilities |
39 |
39 |
40 class ProjectSourcesBrowser(ProjectBaseBrowser): |
40 class ProjectSourcesBrowser(ProjectBaseBrowser): |
41 """ |
41 """ |
394 categories = self.getSelectedItemsCountCategorized(\ |
394 categories = self.getSelectedItemsCountCategorized(\ |
395 [ProjectBrowserFileItem, BrowserClassItem, |
395 [ProjectBrowserFileItem, BrowserClassItem, |
396 BrowserMethodItem, ProjectBrowserSimpleDirectoryItem]) |
396 BrowserMethodItem, ProjectBrowserSimpleDirectoryItem]) |
397 cnt = categories["sum"] |
397 cnt = categories["sum"] |
398 |
398 |
399 bfcnt = categories[unicode(ProjectBrowserFileItem)] |
399 bfcnt = categories[str(ProjectBrowserFileItem)] |
400 cmcnt = categories[unicode(BrowserClassItem)] + \ |
400 cmcnt = categories[str(BrowserClassItem)] + \ |
401 categories[unicode(BrowserMethodItem)] |
401 categories[str(BrowserMethodItem)] |
402 sdcnt = categories[unicode(ProjectBrowserSimpleDirectoryItem)] |
402 sdcnt = categories[str(ProjectBrowserSimpleDirectoryItem)] |
403 if cnt > 1 and cnt == bfcnt: |
403 if cnt > 1 and cnt == bfcnt: |
404 self.multiMenu.popup(self.mapToGlobal(coord)) |
404 self.multiMenu.popup(self.mapToGlobal(coord)) |
405 elif cnt > 1 and cnt == sdcnt: |
405 elif cnt > 1 and cnt == sdcnt: |
406 self.dirMultiMenu.popup(self.mapToGlobal(coord)) |
406 self.dirMultiMenu.popup(self.mapToGlobal(coord)) |
407 else: |
407 else: |
412 if isinstance(itm, ProjectBrowserFileItem): |
412 if isinstance(itm, ProjectBrowserFileItem): |
413 fn = itm.fileName() |
413 fn = itm.fileName() |
414 if self.project.pdata["PROGLANGUAGE"][0] in \ |
414 if self.project.pdata["PROGLANGUAGE"][0] in \ |
415 ["Python", "Python3"]: |
415 ["Python", "Python3"]: |
416 if fn.endswith('.ptl'): |
416 if fn.endswith('.ptl'): |
417 for act in self.sourceMenuActions.values(): |
417 for act in list(self.sourceMenuActions.values()): |
418 act.setEnabled(False) |
418 act.setEnabled(False) |
419 self.classDiagramAction.setEnabled(True) |
419 self.classDiagramAction.setEnabled(True) |
420 self.importsDiagramAction.setEnabled(True) |
420 self.importsDiagramAction.setEnabled(True) |
421 self.unittestAction.setEnabled(False) |
421 self.unittestAction.setEnabled(False) |
422 self.checksMenu.menuAction().setEnabled(False) |
422 self.checksMenu.menuAction().setEnabled(False) |
423 elif fn.endswith('.rb'): # entry for mixed mode programs |
423 elif fn.endswith('.rb'): # entry for mixed mode programs |
424 for act in self.sourceMenuActions.values(): |
424 for act in list(self.sourceMenuActions.values()): |
425 act.setEnabled(False) |
425 act.setEnabled(False) |
426 self.classDiagramAction.setEnabled(True) |
426 self.classDiagramAction.setEnabled(True) |
427 self.importsDiagramAction.setEnabled(False) |
427 self.importsDiagramAction.setEnabled(False) |
428 self.unittestAction.setEnabled(False) |
428 self.unittestAction.setEnabled(False) |
429 self.checksMenu.menuAction().setEnabled(False) |
429 self.checksMenu.menuAction().setEnabled(False) |
430 else: # assume the source file is a Python file |
430 else: # assume the source file is a Python file |
431 for act in self.sourceMenuActions.values(): |
431 for act in list(self.sourceMenuActions.values()): |
432 act.setEnabled(True) |
432 act.setEnabled(True) |
433 self.classDiagramAction.setEnabled(True) |
433 self.classDiagramAction.setEnabled(True) |
434 self.importsDiagramAction.setEnabled(True) |
434 self.importsDiagramAction.setEnabled(True) |
435 self.unittestAction.setEnabled(True) |
435 self.unittestAction.setEnabled(True) |
436 self.checksMenu.menuAction().setEnabled(True) |
436 self.checksMenu.menuAction().setEnabled(True) |
581 for name in nameParts: |
581 for name in nameParts: |
582 packagePath = os.path.join(packagePath, name) |
582 packagePath = os.path.join(packagePath, name) |
583 if not os.path.exists(packagePath): |
583 if not os.path.exists(packagePath): |
584 try: |
584 try: |
585 os.mkdir(packagePath) |
585 os.mkdir(packagePath) |
586 except IOError, err: |
586 except IOError as err: |
587 QMessageBox.critical(None, |
587 QMessageBox.critical(None, |
588 self.trUtf8("Add new Python package"), |
588 self.trUtf8("Add new Python package"), |
589 self.trUtf8("""<p>The package directory <b>{0}</b> could""" |
589 self.trUtf8("""<p>The package directory <b>{0}</b> could""" |
590 """ not be created. Aborting...</p>""" |
590 """ not be created. Aborting...</p>""" |
591 """<p>Reason: {1}</p>""")\ |
591 """<p>Reason: {1}</p>""")\ |
592 .format(packagePath, unicode(err)), |
592 .format(packagePath, str(err)), |
593 QMessageBox.StandardButtons(\ |
593 QMessageBox.StandardButtons(\ |
594 QMessageBox.Ok)) |
594 QMessageBox.Ok)) |
595 return |
595 return |
596 packageFile = os.path.join(packagePath, "__init__.py") |
596 packageFile = os.path.join(packagePath, "__init__.py") |
597 if not os.path.exists(packageFile): |
597 if not os.path.exists(packageFile): |
598 try: |
598 try: |
599 f = open(packageFile, "wb") |
599 f = open(packageFile, "w") |
600 f.close() |
600 f.close() |
601 except IOError, err: |
601 except IOError as err: |
602 QMessageBox.critical(None, |
602 QMessageBox.critical(None, |
603 self.trUtf8("Add new Python package"), |
603 self.trUtf8("Add new Python package"), |
604 self.trUtf8("""<p>The package file <b>{0}</b> could""" |
604 self.trUtf8("""<p>The package file <b>{0}</b> could""" |
605 """ not be created. Aborting...</p>""" |
605 """ not be created. Aborting...</p>""" |
606 """<p>Reason: {1}</p>""")\ |
606 """<p>Reason: {1}</p>""")\ |
607 .format(packageFile, unicode(err)), |
607 .format(packageFile, str(err)), |
608 QMessageBox.StandardButtons(\ |
608 QMessageBox.StandardButtons(\ |
609 QMessageBox.Ok)) |
609 QMessageBox.Ok)) |
610 return |
610 return |
611 self.project.appendFile(packageFile) |
611 self.project.appendFile(packageFile) |
612 if packageFile: |
612 if packageFile: |