eric6/Project/ProjectSourcesBrowser.py

changeset 7266
d001bc703c29
parent 7229
53054eb5b15a
child 7360
9190402e4505
equal deleted inserted replaced
7265:0665c4d509c9 7266:d001bc703c29
13 from PyQt5.QtCore import pyqtSignal 13 from PyQt5.QtCore import pyqtSignal
14 from PyQt5.QtWidgets import QDialog, QInputDialog, QMenu 14 from PyQt5.QtWidgets import QDialog, QInputDialog, QMenu
15 15
16 from E5Gui import E5MessageBox 16 from E5Gui import E5MessageBox
17 17
18 from UI.BrowserModel import BrowserFileItem, BrowserClassItem, \ 18 from UI.BrowserModel import (
19 BrowserMethodItem, BrowserClassAttributeItem, BrowserImportItem 19 BrowserFileItem, BrowserClassItem, BrowserMethodItem,
20 20 BrowserClassAttributeItem, BrowserImportItem
21 from .ProjectBrowserModel import ProjectBrowserFileItem, \ 21 )
22 ProjectBrowserSimpleDirectoryItem, ProjectBrowserDirectoryItem, \ 22
23 ProjectBrowserSourceType 23 from .ProjectBrowserModel import (
24 ProjectBrowserFileItem, ProjectBrowserSimpleDirectoryItem,
25 ProjectBrowserDirectoryItem, ProjectBrowserSourceType
26 )
24 from .ProjectBaseBrowser import ProjectBaseBrowser 27 from .ProjectBaseBrowser import ProjectBaseBrowser
25 28
26 import Utilities 29 import Utilities
27 import UI.PixmapCache 30 import UI.PixmapCache
28 31
44 @param parent parent widget of this browser (QWidget) 47 @param parent parent widget of this browser (QWidget)
45 """ 48 """
46 ProjectBaseBrowser.__init__(self, project, ProjectBrowserSourceType, 49 ProjectBaseBrowser.__init__(self, project, ProjectBrowserSourceType,
47 parent) 50 parent)
48 51
49 self.selectedItemsFilter = \ 52 self.selectedItemsFilter = [ProjectBrowserFileItem,
50 [ProjectBrowserFileItem, ProjectBrowserSimpleDirectoryItem] 53 ProjectBrowserSimpleDirectoryItem]
51 54
52 self.setWindowTitle(self.tr('Sources')) 55 self.setWindowTitle(self.tr('Sources'))
53 56
54 self.setWhatsThis(self.tr( 57 self.setWhatsThis(self.tr(
55 """<b>Project Sources Browser</b>""" 58 """<b>Project Sources Browser</b>"""
593 BrowserMethodItem, ProjectBrowserSimpleDirectoryItem, 596 BrowserMethodItem, ProjectBrowserSimpleDirectoryItem,
594 BrowserClassAttributeItem, BrowserImportItem]) 597 BrowserClassAttributeItem, BrowserImportItem])
595 cnt = categories["sum"] 598 cnt = categories["sum"]
596 599
597 bfcnt = categories[str(ProjectBrowserFileItem)] 600 bfcnt = categories[str(ProjectBrowserFileItem)]
598 cmcnt = categories[str(BrowserClassItem)] + \ 601 cmcnt = (
599 categories[str(BrowserMethodItem)] + \ 602 categories[str(BrowserClassItem)] +
600 categories[str(BrowserClassAttributeItem)] + \ 603 categories[str(BrowserMethodItem)] +
604 categories[str(BrowserClassAttributeItem)] +
601 categories[str(BrowserImportItem)] 605 categories[str(BrowserImportItem)]
606 )
602 sdcnt = categories[str(ProjectBrowserSimpleDirectoryItem)] 607 sdcnt = categories[str(ProjectBrowserSimpleDirectoryItem)]
603 if cnt > 1 and cnt == bfcnt: 608 if cnt > 1 and cnt == bfcnt:
604 self.multiMenu.popup(self.mapToGlobal(coord)) 609 self.multiMenu.popup(self.mapToGlobal(coord))
605 elif cnt > 1 and cnt == sdcnt: 610 elif cnt > 1 and cnt == sdcnt:
606 self.dirMultiMenu.popup(self.mapToGlobal(coord)) 611 self.dirMultiMenu.popup(self.mapToGlobal(coord))
646 self.importsDiagramAction.setEnabled(True) 651 self.importsDiagramAction.setEnabled(True)
647 self.unittestAction.setEnabled(True) 652 self.unittestAction.setEnabled(True)
648 self.checksMenu.menuAction().setEnabled( 653 self.checksMenu.menuAction().setEnabled(
649 True) 654 True)
650 self.sourceMenu.popup(self.mapToGlobal(coord)) 655 self.sourceMenu.popup(self.mapToGlobal(coord))
651 elif isinstance(itm, BrowserClassItem) or \ 656 elif isinstance(
652 isinstance(itm, BrowserMethodItem) or \ 657 itm,
653 isinstance(itm, BrowserImportItem): 658 (BrowserClassItem, BrowserMethodItem,
659 BrowserImportItem)
660 ):
654 self.menu.popup(self.mapToGlobal(coord)) 661 self.menu.popup(self.mapToGlobal(coord))
655 elif isinstance(itm, BrowserClassAttributeItem): 662 elif isinstance(itm, BrowserClassAttributeItem):
656 self.attributeMenu.popup(self.mapToGlobal(coord)) 663 self.attributeMenu.popup(self.mapToGlobal(coord))
657 else: 664 else:
658 self.backMenu.popup(self.mapToGlobal(coord)) 665 self.backMenu.popup(self.mapToGlobal(coord))
718 fn = self.project.getMainScript(True) 725 fn = self.project.getMainScript(True)
719 if fn is not None: 726 if fn is not None:
720 tfn = Utilities.getTestFileName(fn) 727 tfn = Utilities.getTestFileName(fn)
721 basename = os.path.splitext(fn)[0] 728 basename = os.path.splitext(fn)[0]
722 tbasename = os.path.splitext(tfn)[0] 729 tbasename = os.path.splitext(tfn)[0]
723 prEnable = prEnable or \ 730 prEnable = (
724 os.path.isfile("{0}.profile".format(basename)) or \ 731 prEnable or
732 os.path.isfile("{0}.profile".format(basename)) or
725 os.path.isfile("{0}.profile".format(tbasename)) 733 os.path.isfile("{0}.profile".format(tbasename))
726 coEnable = (coEnable or 734 )
727 os.path.isfile("{0}.coverage".format(basename)) or 735 coEnable = (
728 os.path.isfile("{0}.coverage".format(tbasename))) and \ 736 (coEnable or
729 (self.project.isPy3Project() or self.project.isPy2Project()) 737 os.path.isfile("{0}.coverage".format(basename)) or
738 os.path.isfile("{0}.coverage".format(tbasename))) and
739 (self.project.isPy3Project() or
740 self.project.isPy2Project())
741 )
730 742
731 # now check the selected item 743 # now check the selected item
732 itm = self.model().item(self.currentIndex()) 744 itm = self.model().item(self.currentIndex())
733 fn = itm.fileName() 745 fn = itm.fileName()
734 if fn is not None: 746 if fn is not None:
735 basename = os.path.splitext(fn)[0] 747 basename = os.path.splitext(fn)[0]
736 prEnable = prEnable or \ 748 prEnable = (
749 prEnable or
737 os.path.isfile("{0}.profile".format(basename)) 750 os.path.isfile("{0}.profile".format(basename))
738 coEnable = (coEnable or 751 )
739 os.path.isfile("{0}.coverage".format(basename))) and \ 752 coEnable = (
753 (coEnable or
754 os.path.isfile("{0}.coverage".format(basename))) and
740 (itm.isPython3File() or itm.isPython2File()) 755 (itm.isPython3File() or itm.isPython2File())
756 )
741 757
742 self.profileMenuAction.setEnabled(prEnable) 758 self.profileMenuAction.setEnabled(prEnable)
743 self.coverageMenuAction.setEnabled(coEnable) 759 self.coverageMenuAction.setEnabled(coEnable)
744 760
745 self.showMenu.emit("Show", self.menuShow) 761 self.showMenu.emit("Show", self.menuShow)
782 def __addNewPackage(self): 798 def __addNewPackage(self):
783 """ 799 """
784 Private method to add a new package to the project. 800 Private method to add a new package to the project.
785 """ 801 """
786 itm = self.model().item(self.currentIndex()) 802 itm = self.model().item(self.currentIndex())
787 if isinstance(itm, ProjectBrowserFileItem) or \ 803 if isinstance(
788 isinstance(itm, BrowserClassItem) or \ 804 itm,
789 isinstance(itm, BrowserMethodItem): 805 (ProjectBrowserFileItem, BrowserClassItem, BrowserMethodItem)
806 ):
790 dn = os.path.dirname(itm.fileName()) 807 dn = os.path.dirname(itm.fileName())
791 elif isinstance(itm, ProjectBrowserSimpleDirectoryItem) or \ 808 elif isinstance(
792 isinstance(itm, ProjectBrowserDirectoryItem): 809 itm,
810 (ProjectBrowserSimpleDirectoryItem, ProjectBrowserDirectoryItem)
811 ):
793 dn = itm.dirName() 812 dn = itm.dirName()
794 else: 813 else:
795 dn = "" 814 dn = ""
796 815
797 dn = self.project.getRelativePath(dn) 816 dn = self.project.getRelativePath(dn)
841 def __addSourceFiles(self): 860 def __addSourceFiles(self):
842 """ 861 """
843 Private method to add a source file to the project. 862 Private method to add a source file to the project.
844 """ 863 """
845 itm = self.model().item(self.currentIndex()) 864 itm = self.model().item(self.currentIndex())
846 if isinstance(itm, ProjectBrowserFileItem) or \ 865 if isinstance(
847 isinstance(itm, BrowserClassItem) or \ 866 itm,
848 isinstance(itm, BrowserMethodItem): 867 (ProjectBrowserFileItem, BrowserClassItem, BrowserMethodItem)
868 ):
849 dn = os.path.dirname(itm.fileName()) 869 dn = os.path.dirname(itm.fileName())
850 elif isinstance(itm, ProjectBrowserSimpleDirectoryItem) or \ 870 elif isinstance(
851 isinstance(itm, ProjectBrowserDirectoryItem): 871 itm,
872 (ProjectBrowserSimpleDirectoryItem, ProjectBrowserDirectoryItem)
873 ):
852 dn = itm.dirName() 874 dn = itm.dirName()
853 else: 875 else:
854 dn = None 876 dn = None
855 self.project.addFiles('source', dn) 877 self.project.addFiles('source', dn)
856 878
857 def __addSourceDirectory(self): 879 def __addSourceDirectory(self):
858 """ 880 """
859 Private method to add source files of a directory to the project. 881 Private method to add source files of a directory to the project.
860 """ 882 """
861 itm = self.model().item(self.currentIndex()) 883 itm = self.model().item(self.currentIndex())
862 if isinstance(itm, ProjectBrowserFileItem) or \ 884 if isinstance(
863 isinstance(itm, BrowserClassItem) or \ 885 itm,
864 isinstance(itm, BrowserMethodItem): 886 (ProjectBrowserFileItem, BrowserClassItem, BrowserMethodItem)
887 ):
865 dn = os.path.dirname(itm.fileName()) 888 dn = os.path.dirname(itm.fileName())
866 elif isinstance(itm, ProjectBrowserSimpleDirectoryItem) or \ 889 elif isinstance(
867 isinstance(itm, ProjectBrowserDirectoryItem): 890 itm,
891 (ProjectBrowserSimpleDirectoryItem, ProjectBrowserDirectoryItem)
892 ):
868 dn = itm.dirName() 893 dn = itm.dirName()
869 else: 894 else:
870 dn = None 895 dn = None
871 self.project.addDirectory('source', dn) 896 self.project.addDirectory('source', dn)
872 897
882 fn2 = itm.fileName() 907 fn2 = itm.fileName()
883 fullNames.append(fn2) 908 fullNames.append(fn2)
884 fn = self.project.getRelativePath(fn2) 909 fn = self.project.getRelativePath(fn2)
885 files.append(fn) 910 files.append(fn)
886 911
887 from UI.DeleteFilesConfirmationDialog import \ 912 from UI.DeleteFilesConfirmationDialog import (
888 DeleteFilesConfirmationDialog 913 DeleteFilesConfirmationDialog
914 )
889 dlg = DeleteFilesConfirmationDialog( 915 dlg = DeleteFilesConfirmationDialog(
890 self.parent(), 916 self.parent(),
891 self.tr("Delete files"), 917 self.tr("Delete files"),
892 self.tr( 918 self.tr(
893 "Do you really want to delete these files from the project?"), 919 "Do you really want to delete these files from the project?"),

eric ide

mercurial