--- a/src/eric7/Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py Sun Dec 01 14:55:31 2024 +0100 +++ b/src/eric7/Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py Sun Dec 01 18:17:51 2024 +0100 @@ -41,30 +41,34 @@ from .GpgExtension.ProjectHelper import GpgProjectHelper from .HisteditExtension.ProjectHelper import HisteditProjectHelper from .LargefilesExtension.ProjectHelper import LargefilesProjectHelper - from .PurgeExtension.ProjectHelper import PurgeProjectHelper + from .PurgeBuiltin.ProjectHelper import PurgeProjectHelper from .QueuesExtension.ProjectHelper import QueuesProjectHelper from .RebaseExtension.ProjectHelper import RebaseProjectHelper - from .ShelveExtension.ProjectHelper import ShelveProjectHelper + from .ShelveBuiltin.ProjectHelper import ShelveProjectHelper super().__init__(vcsObject, projectObject, parent, name) + # instantiate interfaces for additional built-in functions + self.__builtins = { + "purge": PurgeProjectHelper(), + "shelve": ShelveProjectHelper(), + } + self.__builtinMenuTitles = { + self.__builtins[b].menuTitle(): b for b in self.__builtins + } + # instantiate the extensions self.__extensions = { - "mq": QueuesProjectHelper(), - "purge": PurgeProjectHelper(), + "closehead": CloseheadProjectHelper(), "gpg": GpgProjectHelper(), - "rebase": RebaseProjectHelper(), - "shelve": ShelveProjectHelper(), - "largefiles": LargefilesProjectHelper(), "histedit": HisteditProjectHelper(), - "closehead": CloseheadProjectHelper(), + "largefiles": LargefilesProjectHelper(), + "mq": QueuesProjectHelper(), + "rebase": RebaseProjectHelper(), } - - self.__extensionMenuTitles = {} - for extension in self.__extensions: - self.__extensionMenuTitles[self.__extensions[extension].menuTitle()] = ( - extension - ) + self.__extensionMenuTitles = { + self.__extensions[e].menuTitle(): e for e in self.__extensions + } self.__toolbarManager = None @@ -80,6 +84,9 @@ self.vcs = vcsObject self.project = projectObject + for builtin in self.__builtins.values(): + builtin.setObjects(vcsObject, projectObject) + for extension in self.__extensions.values(): extension.setObjects(vcsObject, projectObject) @@ -1786,6 +1793,15 @@ bookmarksMenu.addAction(self.hgBookmarkPushAllAct) self.subMenus.append(bookmarksMenu) + self.__builtinsMenu = QMenu(self.tr("Other Functions"), menu) + self.__builtinsMenu.setTearOffEnabled(True) + self.__builtinMenus = {} + for builtinMenuTitle in sorted(self.__builtinMenuTitles): + builtinName = self.__builtinMenuTitles[builtinMenuTitle] + builtinMenu = self.__builtins[builtinName].initMenu(self.__builtinsMenu) + self.__builtinMenus[builtinName] = builtinMenu + self.__builtinsMenu.addMenu(builtinMenu) + self.__extensionsMenu = QMenu(self.tr("Extensions"), menu) self.__extensionsMenu.setTearOffEnabled(True) self.__extensionsMenu.aboutToShow.connect(self.__showExtensionMenu) @@ -1864,6 +1880,7 @@ menu.addAction(self.vcsDiffAct) menu.addAction(self.hgExtDiffAct) menu.addSeparator() + menu.addMenu(self.__builtinsMenu) menu.addMenu(self.__extensionsMenu) menu.addSeparator() menu.addAction(self.vcsSwitchAct)