eric6/Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py

changeset 6942
2602857055c5
parent 6645
ad476851d7e0
child 6985
6a2cab507874
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric6/Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py	Sun Apr 14 15:09:21 2019 +0200
@@ -0,0 +1,2069 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the VCS project helper for Mercurial.
+"""
+
+from __future__ import unicode_literals
+
+import os
+
+from PyQt5.QtWidgets import QMenu, QToolBar
+
+from E5Gui import E5MessageBox
+from E5Gui.E5Application import e5App
+
+from VCS.ProjectHelper import VcsProjectHelper
+
+from E5Gui.E5Action import E5Action
+
+import UI.PixmapCache
+import Preferences
+
+
+class HgProjectHelper(VcsProjectHelper):
+    """
+    Class implementing the VCS project helper for Mercurial.
+    """
+    def __init__(self, vcsObject, projectObject, parent=None, name=None):
+        """
+        Constructor
+        
+        @param vcsObject reference to the vcs object
+        @param projectObject reference to the project object
+        @param parent parent widget (QWidget)
+        @param name name of this object (string)
+        """
+        VcsProjectHelper.__init__(self, vcsObject, projectObject, parent, name)
+        
+        # instantiate the extensions
+        from .QueuesExtension.ProjectHelper import QueuesProjectHelper
+        from .FetchExtension.ProjectHelper import FetchProjectHelper
+        from .PurgeExtension.ProjectHelper import PurgeProjectHelper
+        from .GpgExtension.ProjectHelper import GpgProjectHelper
+        from .RebaseExtension.ProjectHelper import RebaseProjectHelper
+        from .ShelveExtension.ProjectHelper import ShelveProjectHelper
+        from .LargefilesExtension.ProjectHelper import LargefilesProjectHelper
+        from .StripExtension.ProjectHelper import StripProjectHelper
+        from .HisteditExtension.ProjectHelper import HisteditProjectHelper
+        self.__extensions = {
+            "mq": QueuesProjectHelper(),
+            "fetch": FetchProjectHelper(),
+            "purge": PurgeProjectHelper(),
+            "gpg": GpgProjectHelper(),
+            "rebase": RebaseProjectHelper(),
+            "shelve": ShelveProjectHelper(),
+            "largefiles": LargefilesProjectHelper(),
+            "strip": StripProjectHelper(),
+            "histedit": HisteditProjectHelper(),
+        }
+        
+        self.__extensionMenuTitles = {}
+        for extension in self.__extensions:
+            self.__extensionMenuTitles[
+                self.__extensions[extension].menuTitle()] = extension
+        
+        self.__toolbarManager = None
+    
+    def setObjects(self, vcsObject, projectObject):
+        """
+        Public method to set references to the vcs and project objects.
+        
+        @param vcsObject reference to the vcs object
+        @param projectObject reference to the project object
+        """
+        self.vcs = vcsObject
+        self.project = projectObject
+        
+        for extension in self.__extensions.values():
+            extension.setObjects(vcsObject, projectObject)
+        
+        self.vcs.iniFileChanged.connect(self.__checkActions)
+        
+        title = self.__toolbar.windowTitle()
+        if self.vcs.version >= (3, 9):
+            self.actions.append(self.hgBookmarkPullCurrentAct)
+            self.__toolbarManager.addAction(self.hgBookmarkPullCurrentAct,
+                                            title)
+        
+        if self.vcs.version >= (3, 8):
+            self.actions.append(self.hgBookmarkPushCurrentAct)
+            self.__toolbarManager.addAction(self.hgBookmarkPushCurrentAct,
+                                            title)
+        
+        if self.vcs.version < (4, 7, 0):
+            self.hgGraftStopAct.setEnabled(False)
+            self.hgGraftAbortAct.setEnabled(False)
+    
+    def getProject(self):
+        """
+        Public method to get a reference to the project object.
+        
+        @return reference to the project object (Project)
+        """
+        return self.project
+    
+    def getActions(self):
+        """
+        Public method to get a list of all actions.
+        
+        @return list of all actions (list of E5Action)
+        """
+        actions = self.actions[:]
+        for extension in self.__extensions.values():
+            actions.extend(extension.getActions())
+        return actions
+    
+    def initActions(self):
+        """
+        Public method to generate the action objects.
+        """
+        self.vcsNewAct = E5Action(
+            self.tr('New from repository'),
+            UI.PixmapCache.getIcon("vcsCheckout.png"),
+            self.tr('&New from repository...'), 0, 0,
+            self, 'mercurial_new')
+        self.vcsNewAct.setStatusTip(self.tr(
+            'Create (clone) a new project from a Mercurial repository'
+        ))
+        self.vcsNewAct.setWhatsThis(self.tr(
+            """<b>New from repository</b>"""
+            """<p>This creates (clones) a new local project from """
+            """a Mercurial repository.</p>"""
+        ))
+        self.vcsNewAct.triggered.connect(self._vcsCheckout)
+        self.actions.append(self.vcsNewAct)
+        
+        self.hgIncomingAct = E5Action(
+            self.tr('Show incoming log'),
+            UI.PixmapCache.getIcon("vcsUpdate.png"),
+            self.tr('Show incoming log'),
+            0, 0, self, 'mercurial_incoming')
+        self.hgIncomingAct.setStatusTip(self.tr(
+            'Show the log of incoming changes'
+        ))
+        self.hgIncomingAct.setWhatsThis(self.tr(
+            """<b>Show incoming log</b>"""
+            """<p>This shows the log of changes coming into the"""
+            """ repository.</p>"""
+        ))
+        self.hgIncomingAct.triggered.connect(self.__hgIncoming)
+        self.actions.append(self.hgIncomingAct)
+        
+        self.hgPullAct = E5Action(
+            self.tr('Pull changes'),
+            UI.PixmapCache.getIcon("vcsUpdate.png"),
+            self.tr('Pull changes'),
+            0, 0, self, 'mercurial_pull')
+        self.hgPullAct.setStatusTip(self.tr(
+            'Pull changes from a remote repository'
+        ))
+        self.hgPullAct.setWhatsThis(self.tr(
+            """<b>Pull changes</b>"""
+            """<p>This pulls changes from a remote repository into the """
+            """local repository.</p>"""
+        ))
+        self.hgPullAct.triggered.connect(self.__hgPull)
+        self.actions.append(self.hgPullAct)
+        
+        self.vcsUpdateAct = E5Action(
+            self.tr('Update from repository'),
+            UI.PixmapCache.getIcon("vcsUpdate.png"),
+            self.tr('&Update from repository'), 0, 0, self,
+            'mercurial_update')
+        self.vcsUpdateAct.setStatusTip(self.tr(
+            'Update the local project from the Mercurial repository'
+        ))
+        self.vcsUpdateAct.setWhatsThis(self.tr(
+            """<b>Update from repository</b>"""
+            """<p>This updates the local project from the Mercurial"""
+            """ repository.</p>"""
+        ))
+        self.vcsUpdateAct.triggered.connect(self._vcsUpdate)
+        self.actions.append(self.vcsUpdateAct)
+        
+        self.vcsCommitAct = E5Action(
+            self.tr('Commit changes to repository'),
+            UI.PixmapCache.getIcon("vcsCommit.png"),
+            self.tr('&Commit changes to repository...'), 0, 0, self,
+            'mercurial_commit')
+        self.vcsCommitAct.setStatusTip(self.tr(
+            'Commit changes to the local project to the Mercurial repository'
+        ))
+        self.vcsCommitAct.setWhatsThis(self.tr(
+            """<b>Commit changes to repository</b>"""
+            """<p>This commits changes to the local project to the """
+            """Mercurial repository.</p>"""
+        ))
+        self.vcsCommitAct.triggered.connect(self._vcsCommit)
+        self.actions.append(self.vcsCommitAct)
+        
+        self.hgOutgoingAct = E5Action(
+            self.tr('Show outgoing log'),
+            UI.PixmapCache.getIcon("vcsCommit.png"),
+            self.tr('Show outgoing log'),
+            0, 0, self, 'mercurial_outgoing')
+        self.hgOutgoingAct.setStatusTip(self.tr(
+            'Show the log of outgoing changes'
+        ))
+        self.hgOutgoingAct.setWhatsThis(self.tr(
+            """<b>Show outgoing log</b>"""
+            """<p>This shows the log of changes outgoing out of the"""
+            """ repository.</p>"""
+        ))
+        self.hgOutgoingAct.triggered.connect(self.__hgOutgoing)
+        self.actions.append(self.hgOutgoingAct)
+        
+        self.hgPushAct = E5Action(
+            self.tr('Push changes'),
+            UI.PixmapCache.getIcon("vcsCommit.png"),
+            self.tr('Push changes'),
+            0, 0, self, 'mercurial_push')
+        self.hgPushAct.setStatusTip(self.tr(
+            'Push changes to a remote repository'
+        ))
+        self.hgPushAct.setWhatsThis(self.tr(
+            """<b>Push changes</b>"""
+            """<p>This pushes changes from the local repository to a """
+            """remote repository.</p>"""
+        ))
+        self.hgPushAct.triggered.connect(self.__hgPush)
+        self.actions.append(self.hgPushAct)
+        
+        self.hgPushForcedAct = E5Action(
+            self.tr('Push changes (force)'),
+            UI.PixmapCache.getIcon("vcsCommit.png"),
+            self.tr('Push changes (force)'),
+            0, 0, self, 'mercurial_push_forced')
+        self.hgPushForcedAct.setStatusTip(self.tr(
+            'Push changes to a remote repository with force option'
+        ))
+        self.hgPushForcedAct.setWhatsThis(self.tr(
+            """<b>Push changes (force)</b>"""
+            """<p>This pushes changes from the local repository to a """
+            """remote repository using the 'force' option.</p>"""
+        ))
+        self.hgPushForcedAct.triggered.connect(self.__hgPushForced)
+        self.actions.append(self.hgPushForcedAct)
+        
+        self.vcsExportAct = E5Action(
+            self.tr('Export from repository'),
+            UI.PixmapCache.getIcon("vcsExport.png"),
+            self.tr('&Export from repository...'),
+            0, 0, self, 'mercurial_export_repo')
+        self.vcsExportAct.setStatusTip(self.tr(
+            'Export a project from the repository'
+        ))
+        self.vcsExportAct.setWhatsThis(self.tr(
+            """<b>Export from repository</b>"""
+            """<p>This exports a project from the repository.</p>"""
+        ))
+        self.vcsExportAct.triggered.connect(self._vcsExport)
+        self.actions.append(self.vcsExportAct)
+        
+        self.hgLogBrowserAct = E5Action(
+            self.tr('Show log browser'),
+            UI.PixmapCache.getIcon("vcsLog.png"),
+            self.tr('Show log browser'),
+            0, 0, self, 'mercurial_log_browser')
+        self.hgLogBrowserAct.setStatusTip(self.tr(
+            'Show a dialog to browse the log of the local project'
+        ))
+        self.hgLogBrowserAct.setWhatsThis(self.tr(
+            """<b>Show log browser</b>"""
+            """<p>This shows a dialog to browse the log of the local"""
+            """ project. A limited number of entries is shown first."""
+            """ More can be retrieved later on.</p>"""
+        ))
+        self.hgLogBrowserAct.triggered.connect(self._vcsLogBrowser)
+        self.actions.append(self.hgLogBrowserAct)
+        
+        self.vcsDiffAct = E5Action(
+            self.tr('Show differences'),
+            UI.PixmapCache.getIcon("vcsDiff.png"),
+            self.tr('Show &difference'),
+            0, 0, self, 'mercurial_diff')
+        self.vcsDiffAct.setStatusTip(self.tr(
+            'Show the difference of the local project to the repository'
+        ))
+        self.vcsDiffAct.setWhatsThis(self.tr(
+            """<b>Show differences</b>"""
+            """<p>This shows differences of the local project to the"""
+            """ repository.</p>"""
+        ))
+        self.vcsDiffAct.triggered.connect(self._vcsDiff)
+        self.actions.append(self.vcsDiffAct)
+        
+        self.hgExtDiffAct = E5Action(
+            self.tr('Show differences (extended)'),
+            UI.PixmapCache.getIcon("vcsDiff.png"),
+            self.tr('Show differences (extended)'),
+            0, 0, self, 'mercurial_extendeddiff')
+        self.hgExtDiffAct.setStatusTip(self.tr(
+            'Show the difference of revisions of the project to the repository'
+        ))
+        self.hgExtDiffAct.setWhatsThis(self.tr(
+            """<b>Show differences (extended)</b>"""
+            """<p>This shows differences of selectable revisions of the"""
+            """ project.</p>"""
+        ))
+        self.hgExtDiffAct.triggered.connect(self.__hgExtendedDiff)
+        self.actions.append(self.hgExtDiffAct)
+        
+        self.vcsStatusAct = E5Action(
+            self.tr('Show status'),
+            UI.PixmapCache.getIcon("vcsStatus.png"),
+            self.tr('Show &status...'),
+            0, 0, self, 'mercurial_status')
+        self.vcsStatusAct.setStatusTip(self.tr(
+            'Show the status of the local project'
+        ))
+        self.vcsStatusAct.setWhatsThis(self.tr(
+            """<b>Show status</b>"""
+            """<p>This shows the status of the local project.</p>"""
+        ))
+        self.vcsStatusAct.triggered.connect(self._vcsStatus)
+        self.actions.append(self.vcsStatusAct)
+        
+        self.hgSummaryAct = E5Action(
+            self.tr('Show Summary'),
+            UI.PixmapCache.getIcon("vcsSummary.png"),
+            self.tr('Show summary...'),
+            0, 0, self, 'mercurial_summary')
+        self.hgSummaryAct.setStatusTip(self.tr(
+            'Show summary information of the working directory status'
+        ))
+        self.hgSummaryAct.setWhatsThis(self.tr(
+            """<b>Show summary</b>"""
+            """<p>This shows some summary information of the working"""
+            """ directory status.</p>"""
+        ))
+        self.hgSummaryAct.triggered.connect(self.__hgSummary)
+        self.actions.append(self.hgSummaryAct)
+        
+        self.hgHeadsAct = E5Action(
+            self.tr('Show heads'),
+            self.tr('Show heads'),
+            0, 0, self, 'mercurial_heads')
+        self.hgHeadsAct.setStatusTip(self.tr(
+            'Show the heads of the repository'
+        ))
+        self.hgHeadsAct.setWhatsThis(self.tr(
+            """<b>Show heads</b>"""
+            """<p>This shows the heads of the repository.</p>"""
+        ))
+        self.hgHeadsAct.triggered.connect(self.__hgHeads)
+        self.actions.append(self.hgHeadsAct)
+        
+        self.hgParentsAct = E5Action(
+            self.tr('Show parents'),
+            self.tr('Show parents'),
+            0, 0, self, 'mercurial_parents')
+        self.hgParentsAct.setStatusTip(self.tr(
+            'Show the parents of the repository'
+        ))
+        self.hgParentsAct.setWhatsThis(self.tr(
+            """<b>Show parents</b>"""
+            """<p>This shows the parents of the repository.</p>"""
+        ))
+        self.hgParentsAct.triggered.connect(self.__hgParents)
+        self.actions.append(self.hgParentsAct)
+        
+        self.hgTipAct = E5Action(
+            self.tr('Show tip'),
+            self.tr('Show tip'),
+            0, 0, self, 'mercurial_tip')
+        self.hgTipAct.setStatusTip(self.tr(
+            'Show the tip of the repository'
+        ))
+        self.hgTipAct.setWhatsThis(self.tr(
+            """<b>Show tip</b>"""
+            """<p>This shows the tip of the repository.</p>"""
+        ))
+        self.hgTipAct.triggered.connect(self.__hgTip)
+        self.actions.append(self.hgTipAct)
+        
+        self.vcsRevertAct = E5Action(
+            self.tr('Revert changes'),
+            UI.PixmapCache.getIcon("vcsRevert.png"),
+            self.tr('Re&vert changes'),
+            0, 0, self, 'mercurial_revert')
+        self.vcsRevertAct.setStatusTip(self.tr(
+            'Revert all changes made to the local project'
+        ))
+        self.vcsRevertAct.setWhatsThis(self.tr(
+            """<b>Revert changes</b>"""
+            """<p>This reverts all changes made to the local project.</p>"""
+        ))
+        self.vcsRevertAct.triggered.connect(self.__hgRevert)
+        self.actions.append(self.vcsRevertAct)
+        
+        self.vcsMergeAct = E5Action(
+            self.tr('Merge'),
+            UI.PixmapCache.getIcon("vcsMerge.png"),
+            self.tr('Mer&ge changes...'),
+            0, 0, self, 'mercurial_merge')
+        self.vcsMergeAct.setStatusTip(self.tr(
+            'Merge changes of a revision into the local project'
+        ))
+        self.vcsMergeAct.setWhatsThis(self.tr(
+            """<b>Merge</b>"""
+            """<p>This merges changes of a revision into the local"""
+            """ project.</p>"""
+        ))
+        self.vcsMergeAct.triggered.connect(self._vcsMerge)
+        self.actions.append(self.vcsMergeAct)
+        
+        self.hgCancelMergeAct = E5Action(
+            self.tr('Cancel uncommitted merge'),
+            self.tr('Cancel uncommitted merge'),
+            0, 0, self, 'mercurial_cancel_merge')
+        self.hgCancelMergeAct.setStatusTip(self.tr(
+            'Cancel an uncommitted merge and lose all changes'
+        ))
+        self.hgCancelMergeAct.setWhatsThis(self.tr(
+            """<b>Cancel uncommitted merge</b>"""
+            """<p>This cancels an uncommitted merge causing all changes"""
+            """ to be lost.</p>"""
+        ))
+        self.hgCancelMergeAct.triggered.connect(self.__hgCancelMerge)
+        self.actions.append(self.hgCancelMergeAct)
+        
+        self.hgReMergeAct = E5Action(
+            self.tr('Re-Merge'),
+            UI.PixmapCache.getIcon("vcsMerge.png"),
+            self.tr('Re-Merge'),
+            0, 0, self, 'mercurial_remerge')
+        self.hgReMergeAct.setStatusTip(self.tr(
+            'Re-Merge all conflicting, unresolved files of the project'
+        ))
+        self.hgReMergeAct.setWhatsThis(self.tr(
+            """<b>Re-Merge</b>"""
+            """<p>This re-merges all conflicting, unresolved files of the"""
+            """ project discarding any previous merge attempt.</p>"""
+        ))
+        self.hgReMergeAct.triggered.connect(self.__hgReMerge)
+        self.actions.append(self.hgReMergeAct)
+        
+        self.hgShowConflictsAct = E5Action(
+            self.tr('Show conflicts'),
+            self.tr('Show conflicts...'),
+            0, 0, self, 'mercurial_show_conflicts')
+        self.hgShowConflictsAct.setStatusTip(self.tr(
+            'Show a dialog listing all files with conflicts'
+        ))
+        self.hgShowConflictsAct.setWhatsThis(self.tr(
+            """<b>Show conflicts</b>"""
+            """<p>This shows a dialog listing all files which had or still"""
+            """ have conflicts.</p>"""
+        ))
+        self.hgShowConflictsAct.triggered.connect(self.__hgShowConflicts)
+        self.actions.append(self.hgShowConflictsAct)
+        
+        self.vcsResolveAct = E5Action(
+            self.tr('Conflicts resolved'),
+            self.tr('Con&flicts resolved'),
+            0, 0, self, 'mercurial_resolve')
+        self.vcsResolveAct.setStatusTip(self.tr(
+            'Mark all conflicts of the local project as resolved'
+        ))
+        self.vcsResolveAct.setWhatsThis(self.tr(
+            """<b>Conflicts resolved</b>"""
+            """<p>This marks all conflicts of the local project as"""
+            """ resolved.</p>"""
+        ))
+        self.vcsResolveAct.triggered.connect(self.__hgResolved)
+        self.actions.append(self.vcsResolveAct)
+        
+        self.hgUnresolveAct = E5Action(
+            self.tr('Conflicts unresolved'),
+            self.tr('Conflicts unresolved'),
+            0, 0, self, 'mercurial_unresolve')
+        self.hgUnresolveAct.setStatusTip(self.tr(
+            'Mark all conflicts of the local project as unresolved'
+        ))
+        self.hgUnresolveAct.setWhatsThis(self.tr(
+            """<b>Conflicts unresolved</b>"""
+            """<p>This marks all conflicts of the local project as"""
+            """ unresolved.</p>"""
+        ))
+        self.hgUnresolveAct.triggered.connect(self.__hgUnresolved)
+        self.actions.append(self.hgUnresolveAct)
+        
+        self.vcsTagAct = E5Action(
+            self.tr('Tag in repository'),
+            UI.PixmapCache.getIcon("vcsTag.png"),
+            self.tr('&Tag in repository...'),
+            0, 0, self, 'mercurial_tag')
+        self.vcsTagAct.setStatusTip(self.tr(
+            'Tag the local project in the repository'
+        ))
+        self.vcsTagAct.setWhatsThis(self.tr(
+            """<b>Tag in repository</b>"""
+            """<p>This tags the local project in the repository.</p>"""
+        ))
+        self.vcsTagAct.triggered.connect(self._vcsTag)
+        self.actions.append(self.vcsTagAct)
+        
+        self.hgTagListAct = E5Action(
+            self.tr('List tags'),
+            self.tr('List tags...'),
+            0, 0, self, 'mercurial_list_tags')
+        self.hgTagListAct.setStatusTip(self.tr(
+            'List tags of the project'
+        ))
+        self.hgTagListAct.setWhatsThis(self.tr(
+            """<b>List tags</b>"""
+            """<p>This lists the tags of the project.</p>"""
+        ))
+        self.hgTagListAct.triggered.connect(self.__hgTagList)
+        self.actions.append(self.hgTagListAct)
+        
+        self.hgBranchListAct = E5Action(
+            self.tr('List branches'),
+            self.tr('List branches...'),
+            0, 0, self, 'mercurial_list_branches')
+        self.hgBranchListAct.setStatusTip(self.tr(
+            'List branches of the project'
+        ))
+        self.hgBranchListAct.setWhatsThis(self.tr(
+            """<b>List branches</b>"""
+            """<p>This lists the branches of the project.</p>"""
+        ))
+        self.hgBranchListAct.triggered.connect(self.__hgBranchList)
+        self.actions.append(self.hgBranchListAct)
+        
+        self.hgBranchAct = E5Action(
+            self.tr('Create branch'),
+            UI.PixmapCache.getIcon("vcsBranch.png"),
+            self.tr('Create &branch...'),
+            0, 0, self, 'mercurial_branch')
+        self.hgBranchAct.setStatusTip(self.tr(
+            'Create a new branch for the local project in the repository'
+        ))
+        self.hgBranchAct.setWhatsThis(self.tr(
+            """<b>Create branch</b>"""
+            """<p>This creates a new branch for the local project """
+            """in the repository.</p>"""
+        ))
+        self.hgBranchAct.triggered.connect(self.__hgBranch)
+        self.actions.append(self.hgBranchAct)
+        
+        self.hgPushBranchAct = E5Action(
+            self.tr('Push new branch'),
+            self.tr('Push new branch'),
+            0, 0, self, 'mercurial_push_branch')
+        self.hgPushBranchAct.setStatusTip(self.tr(
+            'Push the current branch of the local project as a new named'
+            ' branch'
+        ))
+        self.hgPushBranchAct.setWhatsThis(self.tr(
+            """<b>Push new branch</b>"""
+            """<p>This pushes the current branch of the local project"""
+            """ as a new named branch.</p>"""
+        ))
+        self.hgPushBranchAct.triggered.connect(self.__hgPushNewBranch)
+        self.actions.append(self.hgPushBranchAct)
+        
+        self.hgCloseBranchAct = E5Action(
+            self.tr('Close branch'),
+            self.tr('Close branch'),
+            0, 0, self, 'mercurial_close_branch')
+        self.hgCloseBranchAct.setStatusTip(self.tr(
+            'Close the current branch of the local project'
+        ))
+        self.hgCloseBranchAct.setWhatsThis(self.tr(
+            """<b>Close branch</b>"""
+            """<p>This closes the current branch of the local project.</p>"""
+        ))
+        self.hgCloseBranchAct.triggered.connect(self.__hgCloseBranch)
+        self.actions.append(self.hgCloseBranchAct)
+        
+        self.hgShowBranchAct = E5Action(
+            self.tr('Show current branch'),
+            self.tr('Show current branch'),
+            0, 0, self, 'mercurial_show_branch')
+        self.hgShowBranchAct.setStatusTip(self.tr(
+            'Show the current branch of the project'
+        ))
+        self.hgShowBranchAct.setWhatsThis(self.tr(
+            """<b>Show current branch</b>"""
+            """<p>This shows the current branch of the project.</p>"""
+        ))
+        self.hgShowBranchAct.triggered.connect(self.__hgShowBranch)
+        self.actions.append(self.hgShowBranchAct)
+        
+        self.vcsSwitchAct = E5Action(
+            self.tr('Switch'),
+            UI.PixmapCache.getIcon("vcsSwitch.png"),
+            self.tr('S&witch...'),
+            0, 0, self, 'mercurial_switch')
+        self.vcsSwitchAct.setStatusTip(self.tr(
+            'Switch the working directory to another revision'
+        ))
+        self.vcsSwitchAct.setWhatsThis(self.tr(
+            """<b>Switch</b>"""
+            """<p>This switches the working directory to another"""
+            """ revision.</p>"""
+        ))
+        self.vcsSwitchAct.triggered.connect(self._vcsSwitch)
+        self.actions.append(self.vcsSwitchAct)
+        
+        self.vcsCleanupAct = E5Action(
+            self.tr('Cleanup'),
+            self.tr('Cleanu&p'),
+            0, 0, self, 'mercurial_cleanup')
+        self.vcsCleanupAct.setStatusTip(self.tr(
+            'Cleanup the local project'
+        ))
+        self.vcsCleanupAct.setWhatsThis(self.tr(
+            """<b>Cleanup</b>"""
+            """<p>This performs a cleanup of the local project.</p>"""
+        ))
+        self.vcsCleanupAct.triggered.connect(self._vcsCleanup)
+        self.actions.append(self.vcsCleanupAct)
+        
+        self.vcsCommandAct = E5Action(
+            self.tr('Execute command'),
+            self.tr('E&xecute command...'),
+            0, 0, self, 'mercurial_command')
+        self.vcsCommandAct.setStatusTip(self.tr(
+            'Execute an arbitrary Mercurial command'
+        ))
+        self.vcsCommandAct.setWhatsThis(self.tr(
+            """<b>Execute command</b>"""
+            """<p>This opens a dialog to enter an arbitrary Mercurial"""
+            """ command.</p>"""
+        ))
+        self.vcsCommandAct.triggered.connect(self._vcsCommand)
+        self.actions.append(self.vcsCommandAct)
+        
+        self.hgConfigAct = E5Action(
+            self.tr('Configure'),
+            self.tr('Configure...'),
+            0, 0, self, 'mercurial_configure')
+        self.hgConfigAct.setStatusTip(self.tr(
+            'Show the configuration dialog with the Mercurial page selected'
+        ))
+        self.hgConfigAct.setWhatsThis(self.tr(
+            """<b>Configure</b>"""
+            """<p>Show the configuration dialog with the Mercurial page"""
+            """ selected.</p>"""
+        ))
+        self.hgConfigAct.triggered.connect(self.__hgConfigure)
+        self.actions.append(self.hgConfigAct)
+        
+        self.hgEditUserConfigAct = E5Action(
+            self.tr('Edit user configuration'),
+            self.tr('Edit user configuration...'),
+            0, 0, self, 'mercurial_user_configure')
+        self.hgEditUserConfigAct.setStatusTip(self.tr(
+            'Show an editor to edit the user configuration file'
+        ))
+        self.hgEditUserConfigAct.setWhatsThis(self.tr(
+            """<b>Edit user configuration</b>"""
+            """<p>Show an editor to edit the user configuration file.</p>"""
+        ))
+        self.hgEditUserConfigAct.triggered.connect(self.__hgEditUserConfig)
+        self.actions.append(self.hgEditUserConfigAct)
+        
+        self.hgRepoConfigAct = E5Action(
+            self.tr('Edit repository configuration'),
+            self.tr('Edit repository configuration...'),
+            0, 0, self, 'mercurial_repo_configure')
+        self.hgRepoConfigAct.setStatusTip(self.tr(
+            'Show an editor to edit the repository configuration file'
+        ))
+        self.hgRepoConfigAct.setWhatsThis(self.tr(
+            """<b>Edit repository configuration</b>"""
+            """<p>Show an editor to edit the repository configuration"""
+            """ file.</p>"""
+        ))
+        self.hgRepoConfigAct.triggered.connect(self.__hgEditRepoConfig)
+        self.actions.append(self.hgRepoConfigAct)
+        
+        self.hgShowConfigAct = E5Action(
+            self.tr('Show combined configuration settings'),
+            self.tr('Show combined configuration settings...'),
+            0, 0, self, 'mercurial_show_config')
+        self.hgShowConfigAct.setStatusTip(self.tr(
+            'Show the combined configuration settings from all configuration'
+            ' files'
+        ))
+        self.hgShowConfigAct.setWhatsThis(self.tr(
+            """<b>Show combined configuration settings</b>"""
+            """<p>This shows the combined configuration settings"""
+            """ from all configuration files.</p>"""
+        ))
+        self.hgShowConfigAct.triggered.connect(self.__hgShowConfig)
+        self.actions.append(self.hgShowConfigAct)
+        
+        self.hgShowPathsAct = E5Action(
+            self.tr('Show paths'),
+            self.tr('Show paths...'),
+            0, 0, self, 'mercurial_show_paths')
+        self.hgShowPathsAct.setStatusTip(self.tr(
+            'Show the aliases for remote repositories'
+        ))
+        self.hgShowPathsAct.setWhatsThis(self.tr(
+            """<b>Show paths</b>"""
+            """<p>This shows the aliases for remote repositories.</p>"""
+        ))
+        self.hgShowPathsAct.triggered.connect(self.__hgShowPaths)
+        self.actions.append(self.hgShowPathsAct)
+        
+        self.hgVerifyAct = E5Action(
+            self.tr('Verify repository'),
+            self.tr('Verify repository...'),
+            0, 0, self, 'mercurial_verify')
+        self.hgVerifyAct.setStatusTip(self.tr(
+            'Verify the integrity of the repository'
+        ))
+        self.hgVerifyAct.setWhatsThis(self.tr(
+            """<b>Verify repository</b>"""
+            """<p>This verifies the integrity of the repository.</p>"""
+        ))
+        self.hgVerifyAct.triggered.connect(self.__hgVerify)
+        self.actions.append(self.hgVerifyAct)
+        
+        self.hgRecoverAct = E5Action(
+            self.tr('Recover'),
+            self.tr('Recover...'),
+            0, 0, self, 'mercurial_recover')
+        self.hgRecoverAct.setStatusTip(self.tr(
+            'Recover from an interrupted transaction'
+        ))
+        self.hgRecoverAct.setWhatsThis(self.tr(
+            """<b>Recover</b>"""
+            """<p>This recovers from an interrupted transaction.</p>"""
+        ))
+        self.hgRecoverAct.triggered.connect(self.__hgRecover)
+        self.actions.append(self.hgRecoverAct)
+        
+        self.hgIdentifyAct = E5Action(
+            self.tr('Identify'),
+            self.tr('Identify...'),
+            0, 0, self, 'mercurial_identify')
+        self.hgIdentifyAct.setStatusTip(self.tr(
+            'Identify the project directory'
+        ))
+        self.hgIdentifyAct.setWhatsThis(self.tr(
+            """<b>Identify</b>"""
+            """<p>This identifies the project directory.</p>"""
+        ))
+        self.hgIdentifyAct.triggered.connect(self.__hgIdentify)
+        self.actions.append(self.hgIdentifyAct)
+        
+        self.hgCreateIgnoreAct = E5Action(
+            self.tr('Create .hgignore'),
+            self.tr('Create .hgignore'),
+            0, 0, self, 'mercurial_create ignore')
+        self.hgCreateIgnoreAct.setStatusTip(self.tr(
+            'Create a .hgignore file with default values'
+        ))
+        self.hgCreateIgnoreAct.setWhatsThis(self.tr(
+            """<b>Create .hgignore</b>"""
+            """<p>This creates a .hgignore file with default values.</p>"""
+        ))
+        self.hgCreateIgnoreAct.triggered.connect(self.__hgCreateIgnore)
+        self.actions.append(self.hgCreateIgnoreAct)
+        
+        self.hgBundleAct = E5Action(
+            self.tr('Create changegroup'),
+            UI.PixmapCache.getIcon("vcsCreateChangegroup.png"),
+            self.tr('Create changegroup...'),
+            0, 0, self, 'mercurial_bundle')
+        self.hgBundleAct.setStatusTip(self.tr(
+            'Create changegroup file collecting changesets'
+        ))
+        self.hgBundleAct.setWhatsThis(self.tr(
+            """<b>Create changegroup</b>"""
+            """<p>This creates a changegroup file collecting selected"""
+            """ changesets (hg bundle).</p>"""
+        ))
+        self.hgBundleAct.triggered.connect(self.__hgBundle)
+        self.actions.append(self.hgBundleAct)
+        
+        self.hgPreviewBundleAct = E5Action(
+            self.tr('Preview changegroup'),
+            UI.PixmapCache.getIcon("vcsPreviewChangegroup.png"),
+            self.tr('Preview changegroup...'),
+            0, 0, self, 'mercurial_preview_bundle')
+        self.hgPreviewBundleAct.setStatusTip(self.tr(
+            'Preview a changegroup file containing a collection of changesets'
+        ))
+        self.hgPreviewBundleAct.setWhatsThis(self.tr(
+            """<b>Preview changegroup</b>"""
+            """<p>This previews a changegroup file containing a collection"""
+            """ of changesets.</p>"""
+        ))
+        self.hgPreviewBundleAct.triggered.connect(self.__hgPreviewBundle)
+        self.actions.append(self.hgPreviewBundleAct)
+        
+        self.hgUnbundleAct = E5Action(
+            self.tr('Apply changegroups'),
+            UI.PixmapCache.getIcon("vcsApplyChangegroup.png"),
+            self.tr('Apply changegroups...'),
+            0, 0, self, 'mercurial_unbundle')
+        self.hgUnbundleAct.setStatusTip(self.tr(
+            'Apply one or several changegroup files'
+        ))
+        self.hgUnbundleAct.setWhatsThis(self.tr(
+            """<b>Apply changegroups</b>"""
+            """<p>This applies one or several changegroup files generated by"""
+            """ the 'Create changegroup' action (hg unbundle).</p>"""
+        ))
+        self.hgUnbundleAct.triggered.connect(self.__hgUnbundle)
+        self.actions.append(self.hgUnbundleAct)
+        
+        self.hgBisectGoodAct = E5Action(
+            self.tr('Mark as "good"'),
+            self.tr('Mark as "good"...'),
+            0, 0, self, 'mercurial_bisect_good')
+        self.hgBisectGoodAct.setStatusTip(self.tr(
+            'Mark a selectable changeset as good'
+        ))
+        self.hgBisectGoodAct.setWhatsThis(self.tr(
+            """<b>Mark as good</b>"""
+            """<p>This marks a selectable changeset as good.</p>"""
+        ))
+        self.hgBisectGoodAct.triggered.connect(self.__hgBisectGood)
+        self.actions.append(self.hgBisectGoodAct)
+        
+        self.hgBisectBadAct = E5Action(
+            self.tr('Mark as "bad"'),
+            self.tr('Mark as "bad"...'),
+            0, 0, self, 'mercurial_bisect_bad')
+        self.hgBisectBadAct.setStatusTip(self.tr(
+            'Mark a selectable changeset as bad'
+        ))
+        self.hgBisectBadAct.setWhatsThis(self.tr(
+            """<b>Mark as bad</b>"""
+            """<p>This marks a selectable changeset as bad.</p>"""
+        ))
+        self.hgBisectBadAct.triggered.connect(self.__hgBisectBad)
+        self.actions.append(self.hgBisectBadAct)
+        
+        self.hgBisectSkipAct = E5Action(
+            self.tr('Skip'),
+            self.tr('Skip...'),
+            0, 0, self, 'mercurial_bisect_skip')
+        self.hgBisectSkipAct.setStatusTip(self.tr(
+            'Skip a selectable changeset'
+        ))
+        self.hgBisectSkipAct.setWhatsThis(self.tr(
+            """<b>Skip</b>"""
+            """<p>This skips a selectable changeset.</p>"""
+        ))
+        self.hgBisectSkipAct.triggered.connect(self.__hgBisectSkip)
+        self.actions.append(self.hgBisectSkipAct)
+        
+        self.hgBisectResetAct = E5Action(
+            self.tr('Reset'),
+            self.tr('Reset'),
+            0, 0, self, 'mercurial_bisect_reset')
+        self.hgBisectResetAct.setStatusTip(self.tr(
+            'Reset the bisect search data'
+        ))
+        self.hgBisectResetAct.setWhatsThis(self.tr(
+            """<b>Reset</b>"""
+            """<p>This resets the bisect search data.</p>"""
+        ))
+        self.hgBisectResetAct.triggered.connect(self.__hgBisectReset)
+        self.actions.append(self.hgBisectResetAct)
+        
+        self.hgBackoutAct = E5Action(
+            self.tr('Back out changeset'),
+            self.tr('Back out changeset'),
+            0, 0, self, 'mercurial_backout')
+        self.hgBackoutAct.setStatusTip(self.tr(
+            'Back out changes of an earlier changeset'
+        ))
+        self.hgBackoutAct.setWhatsThis(self.tr(
+            """<b>Back out changeset</b>"""
+            """<p>This backs out changes of an earlier changeset.</p>"""
+        ))
+        self.hgBackoutAct.triggered.connect(self.__hgBackout)
+        self.actions.append(self.hgBackoutAct)
+        
+        self.hgRollbackAct = E5Action(
+            self.tr('Rollback last transaction'),
+            self.tr('Rollback last transaction'),
+            0, 0, self, 'mercurial_rollback')
+        self.hgRollbackAct.setStatusTip(self.tr(
+            'Rollback the last transaction'
+        ))
+        self.hgRollbackAct.setWhatsThis(self.tr(
+            """<b>Rollback last transaction</b>"""
+            """<p>This performs a rollback of the last transaction."""
+            """ Transactions are used to encapsulate the effects of all"""
+            """ commands that create new changesets or propagate existing"""
+            """ changesets into a repository. For example, the following"""
+            """ commands are transactional, and their effects can be"""
+            """ rolled back:<ul>"""
+            """<li>commit</li>"""
+            """<li>import</li>"""
+            """<li>pull</li>"""
+            """<li>push (with this repository as the destination)</li>"""
+            """<li>unbundle</li>"""
+            """</ul>"""
+            """</p><p><strong>This command is dangerous. Please use with"""
+            """ care. </strong></p>"""
+        ))
+        self.hgRollbackAct.triggered.connect(self.__hgRollback)
+        self.actions.append(self.hgRollbackAct)
+        
+        self.hgServeAct = E5Action(
+            self.tr('Serve project repository'),
+            self.tr('Serve project repository...'),
+            0, 0, self, 'mercurial_serve')
+        self.hgServeAct.setStatusTip(self.tr(
+            'Serve the project repository'
+        ))
+        self.hgServeAct.setWhatsThis(self.tr(
+            """<b>Serve project repository</b>"""
+            """<p>This serves the project repository.</p>"""
+        ))
+        self.hgServeAct.triggered.connect(self.__hgServe)
+        self.actions.append(self.hgServeAct)
+        
+        self.hgImportAct = E5Action(
+            self.tr('Import Patch'),
+            UI.PixmapCache.getIcon("vcsImportPatch.png"),
+            self.tr('Import Patch...'),
+            0, 0, self, 'mercurial_import')
+        self.hgImportAct.setStatusTip(self.tr(
+            'Import a patch from a patch file'
+        ))
+        self.hgImportAct.setWhatsThis(self.tr(
+            """<b>Import Patch</b>"""
+            """<p>This imports a patch from a patch file into the"""
+            """ project.</p>"""
+        ))
+        self.hgImportAct.triggered.connect(self.__hgImport)
+        self.actions.append(self.hgImportAct)
+        
+        self.hgExportAct = E5Action(
+            self.tr('Export Patches'),
+            UI.PixmapCache.getIcon("vcsExportPatch.png"),
+            self.tr('Export Patches...'),
+            0, 0, self, 'mercurial_export')
+        self.hgExportAct.setStatusTip(self.tr(
+            'Export revisions to patch files'
+        ))
+        self.hgExportAct.setWhatsThis(self.tr(
+            """<b>Export Patches</b>"""
+            """<p>This exports revisions of the project to patch files.</p>"""
+        ))
+        self.hgExportAct.triggered.connect(self.__hgExport)
+        self.actions.append(self.hgExportAct)
+        
+        self.hgPhaseAct = E5Action(
+            self.tr('Change Phase'),
+            self.tr('Change Phase...'),
+            0, 0, self, 'mercurial_change_phase')
+        self.hgPhaseAct.setStatusTip(self.tr(
+            'Change the phase of revisions'
+        ))
+        self.hgPhaseAct.setWhatsThis(self.tr(
+            """<b>Change Phase</b>"""
+            """<p>This changes the phase of revisions.</p>"""
+        ))
+        self.hgPhaseAct.triggered.connect(self.__hgPhase)
+        self.actions.append(self.hgPhaseAct)
+        
+        self.hgGraftAct = E5Action(
+            self.tr('Copy Changesets'),
+            UI.PixmapCache.getIcon("vcsGraft.png"),
+            self.tr('Copy Changesets'),
+            0, 0, self, 'mercurial_graft')
+        self.hgGraftAct.setStatusTip(self.tr(
+            'Copies changesets from another branch'
+        ))
+        self.hgGraftAct.setWhatsThis(self.tr(
+            """<b>Copy Changesets</b>"""
+            """<p>This copies changesets from another branch on top of the"""
+            """ current working directory with the user, date and"""
+            """ description of the original changeset.</p>"""
+        ))
+        self.hgGraftAct.triggered.connect(self.__hgGraft)
+        self.actions.append(self.hgGraftAct)
+        
+        self.hgGraftContinueAct = E5Action(
+            self.tr('Continue Copying Session'),
+            self.tr('Continue Copying Session'),
+            0, 0, self, 'mercurial_graft_continue')
+        self.hgGraftContinueAct.setStatusTip(self.tr(
+            'Continue the last copying session after conflicts were resolved'
+        ))
+        self.hgGraftContinueAct.setWhatsThis(self.tr(
+            """<b>Continue Copying Session</b>"""
+            """<p>This continues the last copying session after conflicts"""
+            """ were resolved.</p>"""
+        ))
+        self.hgGraftContinueAct.triggered.connect(self.__hgGraftContinue)
+        self.actions.append(self.hgGraftContinueAct)
+        
+        self.hgGraftStopAct = E5Action(
+            self.tr('Stop Copying Session'),
+            self.tr('Stop Copying Session'),
+            0, 0, self, 'mercurial_graft_stop')
+        self.hgGraftStopAct.setStatusTip(self.tr(
+            'Stop the interrupted copying session'
+        ))
+        self.hgGraftStopAct.setWhatsThis(self.tr(
+            """<b>Stop Copying Session</b>"""
+            """<p>This stops the interrupted copying session.</p>"""
+        ))
+        self.hgGraftStopAct.triggered.connect(self.__hgGraftStop)
+        self.actions.append(self.hgGraftStopAct)
+        
+        self.hgGraftAbortAct = E5Action(
+            self.tr('Abort Copying Session'),
+            self.tr('Abort Copying Session'),
+            0, 0, self, 'mercurial_graft_abort')
+        self.hgGraftAbortAct.setStatusTip(self.tr(
+            'Abort the interrupted copying session and rollback'
+        ))
+        self.hgGraftAbortAct.setWhatsThis(self.tr(
+            """<b>Abort Copying Session</b>"""
+            """<p>This aborts the interrupted copying session and"""
+            """ rollbacks to the state before the copy.</p>"""
+        ))
+        self.hgGraftAbortAct.triggered.connect(self.__hgGraftAbort)
+        self.actions.append(self.hgGraftAbortAct)
+        
+        self.hgAddSubrepoAct = E5Action(
+            self.tr('Add'),
+            UI.PixmapCache.getIcon("vcsAdd.png"),
+            self.tr('Add...'),
+            0, 0, self, 'mercurial_add_subrepo')
+        self.hgAddSubrepoAct.setStatusTip(self.tr(
+            'Add a sub-repository'
+        ))
+        self.hgAddSubrepoAct.setWhatsThis(self.tr(
+            """<b>Add...</b>"""
+            """<p>Add a sub-repository to the project.</p>"""
+        ))
+        self.hgAddSubrepoAct.triggered.connect(self.__hgAddSubrepository)
+        self.actions.append(self.hgAddSubrepoAct)
+        
+        self.hgRemoveSubreposAct = E5Action(
+            self.tr('Remove'),
+            UI.PixmapCache.getIcon("vcsRemove.png"),
+            self.tr('Remove...'),
+            0, 0, self, 'mercurial_remove_subrepos')
+        self.hgRemoveSubreposAct.setStatusTip(self.tr(
+            'Remove sub-repositories'
+        ))
+        self.hgRemoveSubreposAct.setWhatsThis(self.tr(
+            """<b>Remove...</b>"""
+            """<p>Remove sub-repositories from the project.</p>"""
+        ))
+        self.hgRemoveSubreposAct.triggered.connect(
+            self.__hgRemoveSubrepositories)
+        self.actions.append(self.hgRemoveSubreposAct)
+        
+        self.hgArchiveAct = E5Action(
+            self.tr('Create unversioned archive'),
+            UI.PixmapCache.getIcon("vcsExport.png"),
+            self.tr('Create unversioned archive...'),
+            0, 0, self, 'mercurial_archive')
+        self.hgArchiveAct.setStatusTip(self.tr(
+            'Create an unversioned archive from the repository'
+        ))
+        self.hgArchiveAct.setWhatsThis(self.tr(
+            """<b>Create unversioned archive...</b>"""
+            """<p>This creates an unversioned archive from the"""
+            """ repository.</p>"""
+        ))
+        self.hgArchiveAct.triggered.connect(self.__hgArchive)
+        self.actions.append(self.hgArchiveAct)
+        
+        self.hgBookmarksListAct = E5Action(
+            self.tr('List bookmarks'),
+            UI.PixmapCache.getIcon("listBookmarks.png"),
+            self.tr('List bookmarks...'),
+            0, 0, self, 'mercurial_list_bookmarks')
+        self.hgBookmarksListAct.setStatusTip(self.tr(
+            'List bookmarks of the project'
+        ))
+        self.hgBookmarksListAct.setWhatsThis(self.tr(
+            """<b>List bookmarks</b>"""
+            """<p>This lists the bookmarks of the project.</p>"""
+        ))
+        self.hgBookmarksListAct.triggered.connect(self.__hgBookmarksList)
+        self.actions.append(self.hgBookmarksListAct)
+    
+        self.hgBookmarkDefineAct = E5Action(
+            self.tr('Define bookmark'),
+            UI.PixmapCache.getIcon("addBookmark.png"),
+            self.tr('Define bookmark...'),
+            0, 0, self, 'mercurial_define_bookmark')
+        self.hgBookmarkDefineAct.setStatusTip(self.tr(
+            'Define a bookmark for the project'
+        ))
+        self.hgBookmarkDefineAct.setWhatsThis(self.tr(
+            """<b>Define bookmark</b>"""
+            """<p>This defines a bookmark for the project.</p>"""
+        ))
+        self.hgBookmarkDefineAct.triggered.connect(self.__hgBookmarkDefine)
+        self.actions.append(self.hgBookmarkDefineAct)
+    
+        self.hgBookmarkDeleteAct = E5Action(
+            self.tr('Delete bookmark'),
+            UI.PixmapCache.getIcon("deleteBookmark.png"),
+            self.tr('Delete bookmark...'),
+            0, 0, self, 'mercurial_delete_bookmark')
+        self.hgBookmarkDeleteAct.setStatusTip(self.tr(
+            'Delete a bookmark of the project'
+        ))
+        self.hgBookmarkDeleteAct.setWhatsThis(self.tr(
+            """<b>Delete bookmark</b>"""
+            """<p>This deletes a bookmark of the project.</p>"""
+        ))
+        self.hgBookmarkDeleteAct.triggered.connect(self.__hgBookmarkDelete)
+        self.actions.append(self.hgBookmarkDeleteAct)
+    
+        self.hgBookmarkRenameAct = E5Action(
+            self.tr('Rename bookmark'),
+            UI.PixmapCache.getIcon("renameBookmark.png"),
+            self.tr('Rename bookmark...'),
+            0, 0, self, 'mercurial_rename_bookmark')
+        self.hgBookmarkRenameAct.setStatusTip(self.tr(
+            'Rename a bookmark of the project'
+        ))
+        self.hgBookmarkRenameAct.setWhatsThis(self.tr(
+            """<b>Rename bookmark</b>"""
+            """<p>This renames a bookmark of the project.</p>"""
+        ))
+        self.hgBookmarkRenameAct.triggered.connect(self.__hgBookmarkRename)
+        self.actions.append(self.hgBookmarkRenameAct)
+    
+        self.hgBookmarkMoveAct = E5Action(
+            self.tr('Move bookmark'),
+            UI.PixmapCache.getIcon("moveBookmark.png"),
+            self.tr('Move bookmark...'),
+            0, 0, self, 'mercurial_move_bookmark')
+        self.hgBookmarkMoveAct.setStatusTip(self.tr(
+            'Move a bookmark of the project'
+        ))
+        self.hgBookmarkMoveAct.setWhatsThis(self.tr(
+            """<b>Move bookmark</b>"""
+            """<p>This moves a bookmark of the project to another"""
+            """ changeset.</p>"""
+        ))
+        self.hgBookmarkMoveAct.triggered.connect(self.__hgBookmarkMove)
+        self.actions.append(self.hgBookmarkMoveAct)
+        
+        self.hgBookmarkIncomingAct = E5Action(
+            self.tr('Show incoming bookmarks'),
+            UI.PixmapCache.getIcon("incomingBookmark.png"),
+            self.tr('Show incoming bookmarks'),
+            0, 0, self, 'mercurial_incoming_bookmarks')
+        self.hgBookmarkIncomingAct.setStatusTip(self.tr(
+            'Show a list of incoming bookmarks'
+        ))
+        self.hgBookmarkIncomingAct.setWhatsThis(self.tr(
+            """<b>Show incoming bookmarks</b>"""
+            """<p>This shows a list of new bookmarks available at the remote"""
+            """ repository.</p>"""
+        ))
+        self.hgBookmarkIncomingAct.triggered.connect(
+            self.__hgBookmarkIncoming)
+        self.actions.append(self.hgBookmarkIncomingAct)
+        
+        self.hgBookmarkPullAct = E5Action(
+            self.tr('Pull bookmark'),
+            UI.PixmapCache.getIcon("pullBookmark.png"),
+            self.tr('Pull bookmark'),
+            0, 0, self, 'mercurial_pull_bookmark')
+        self.hgBookmarkPullAct.setStatusTip(self.tr(
+            'Pull a bookmark from a remote repository'
+        ))
+        self.hgBookmarkPullAct.setWhatsThis(self.tr(
+            """<b>Pull bookmark</b>"""
+            """<p>This pulls a bookmark from a remote repository into the """
+            """local repository.</p>"""
+        ))
+        self.hgBookmarkPullAct.triggered.connect(self.__hgBookmarkPull)
+        self.actions.append(self.hgBookmarkPullAct)
+        
+        self.hgBookmarkPullCurrentAct = E5Action(
+            self.tr('Pull current bookmark'),
+            UI.PixmapCache.getIcon("pullBookmark.png"),
+            self.tr('Pull current bookmark'),
+            0, 0, self, 'mercurial_pull_current_bookmark')
+        self.hgBookmarkPullCurrentAct.setStatusTip(self.tr(
+            'Pull the current bookmark from a remote repository'
+        ))
+        self.hgBookmarkPullCurrentAct.setWhatsThis(self.tr(
+            """<b>Pull current bookmark</b>"""
+            """<p>This pulls the current bookmark from a remote"""
+            """ repository into the local repository.</p>"""
+        ))
+        self.hgBookmarkPullCurrentAct.triggered.connect(
+            self.__hgBookmarkPullCurrent)
+        
+        self.hgBookmarkOutgoingAct = E5Action(
+            self.tr('Show outgoing bookmarks'),
+            UI.PixmapCache.getIcon("outgoingBookmark.png"),
+            self.tr('Show outgoing bookmarks'),
+            0, 0, self, 'mercurial_outgoing_bookmarks')
+        self.hgBookmarkOutgoingAct.setStatusTip(self.tr(
+            'Show a list of outgoing bookmarks'
+        ))
+        self.hgBookmarkOutgoingAct.setWhatsThis(self.tr(
+            """<b>Show outgoing bookmarks</b>"""
+            """<p>This shows a list of new bookmarks available at the local"""
+            """ repository.</p>"""
+        ))
+        self.hgBookmarkOutgoingAct.triggered.connect(
+            self.__hgBookmarkOutgoing)
+        self.actions.append(self.hgBookmarkOutgoingAct)
+        
+        self.hgBookmarkPushAct = E5Action(
+            self.tr('Push bookmark'),
+            UI.PixmapCache.getIcon("pushBookmark.png"),
+            self.tr('Push bookmark'),
+            0, 0, self, 'mercurial_push_bookmark')
+        self.hgBookmarkPushAct.setStatusTip(self.tr(
+            'Push a bookmark to a remote repository'
+        ))
+        self.hgBookmarkPushAct.setWhatsThis(self.tr(
+            """<b>Push bookmark</b>"""
+            """<p>This pushes a bookmark from the local repository to a """
+            """remote repository.</p>"""
+        ))
+        self.hgBookmarkPushAct.triggered.connect(self.__hgBookmarkPush)
+        self.actions.append(self.hgBookmarkPushAct)
+    
+        self.hgBookmarkPushCurrentAct = E5Action(
+            self.tr('Push current bookmark'),
+            UI.PixmapCache.getIcon("pushBookmark.png"),
+            self.tr('Push current bookmark'),
+            0, 0, self, 'mercurial_push_current_bookmark')
+        self.hgBookmarkPushCurrentAct.setStatusTip(self.tr(
+            'Push the current bookmark to a remote repository'
+        ))
+        self.hgBookmarkPushCurrentAct.setWhatsThis(self.tr(
+            """<b>Push current bookmark</b>"""
+            """<p>This pushes the current bookmark from the local"""
+            """ repository to a remote repository.</p>"""
+        ))
+        self.hgBookmarkPushCurrentAct.triggered.connect(
+            self.__hgBookmarkPushCurrent)
+        self.actions.append(self.hgBookmarkPushCurrentAct)
+    
+        self.hgDeleteBackupsAct = E5Action(
+            self.tr('Delete all backups'),
+            UI.PixmapCache.getIcon("clearPrivateData.png"),
+            self.tr('Delete all backups'),
+            0, 0, self, 'mercurial_delete_all_backups')
+        self.hgDeleteBackupsAct.setStatusTip(self.tr(
+            'Delete all backup bundles stored in the backup area'
+        ))
+        self.hgDeleteBackupsAct.setWhatsThis(self.tr(
+            """<b>Delete all backups</b>"""
+            """<p>This deletes all backup bundles stored in the backup"""
+            """ area of the repository.</p>"""
+        ))
+        self.hgDeleteBackupsAct.triggered.connect(
+            self.__hgDeleteBackups)
+        self.actions.append(self.hgDeleteBackupsAct)
+    
+    def __checkActions(self):
+        """
+        Private slot to set the enabled status of actions.
+        """
+        self.hgPullAct.setEnabled(self.vcs.canPull())
+        self.hgIncomingAct.setEnabled(self.vcs.canPull())
+        self.hgBookmarkPullAct.setEnabled(self.vcs.canPull())
+        self.hgBookmarkIncomingAct.setEnabled(self.vcs.canPull())
+        if self.vcs.version >= (3, 9):
+            self.hgBookmarkPullCurrentAct.setEnabled(self.vcs.canPull())
+        
+        self.hgPushAct.setEnabled(self.vcs.canPush())
+        self.hgPushBranchAct.setEnabled(self.vcs.canPush())
+        self.hgPushForcedAct.setEnabled(self.vcs.canPush())
+        self.hgOutgoingAct.setEnabled(self.vcs.canPush())
+        self.hgBookmarkPushAct.setEnabled(self.vcs.canPush())
+        self.hgBookmarkOutgoingAct.setEnabled(self.vcs.canPush())
+        if self.vcs.version >= (3, 8):
+            self.hgBookmarkPushCurrentAct.setEnabled(self.vcs.canPull())
+    
+    def initMenu(self, menu):
+        """
+        Public method to generate the VCS menu.
+        
+        @param menu reference to the menu to be populated (QMenu)
+        """
+        menu.clear()
+        
+        self.subMenus = []
+        
+        adminMenu = QMenu(self.tr("Administration"), menu)
+        adminMenu.setTearOffEnabled(True)
+        adminMenu.addAction(self.hgHeadsAct)
+        adminMenu.addAction(self.hgParentsAct)
+        adminMenu.addAction(self.hgTipAct)
+        adminMenu.addAction(self.hgShowBranchAct)
+        adminMenu.addAction(self.hgIdentifyAct)
+        adminMenu.addSeparator()
+        adminMenu.addAction(self.hgShowPathsAct)
+        adminMenu.addSeparator()
+        adminMenu.addAction(self.hgShowConfigAct)
+        adminMenu.addAction(self.hgRepoConfigAct)
+        adminMenu.addSeparator()
+        adminMenu.addAction(self.hgCreateIgnoreAct)
+        adminMenu.addSeparator()
+        adminMenu.addAction(self.hgRecoverAct)
+        adminMenu.addSeparator()
+        adminMenu.addAction(self.hgBackoutAct)
+        adminMenu.addAction(self.hgRollbackAct)
+        adminMenu.addSeparator()
+        adminMenu.addAction(self.hgVerifyAct)
+        adminMenu.addSeparator()
+        adminMenu.addAction(self.hgDeleteBackupsAct)
+        self.subMenus.append(adminMenu)
+        
+        specialsMenu = QMenu(self.tr("Specials"), menu)
+        specialsMenu.setTearOffEnabled(True)
+        specialsMenu.addAction(self.hgArchiveAct)
+        specialsMenu.addSeparator()
+        specialsMenu.addAction(self.hgPushForcedAct)
+        specialsMenu.addSeparator()
+        specialsMenu.addAction(self.hgServeAct)
+        self.subMenus.append(specialsMenu)
+        
+        bundleMenu = QMenu(self.tr("Changegroup Management"), menu)
+        bundleMenu.setTearOffEnabled(True)
+        bundleMenu.addAction(self.hgBundleAct)
+        bundleMenu.addAction(self.hgPreviewBundleAct)
+        bundleMenu.addAction(self.hgUnbundleAct)
+        self.subMenus.append(bundleMenu)
+        
+        patchMenu = QMenu(self.tr("Patch Management"), menu)
+        patchMenu.setTearOffEnabled(True)
+        patchMenu.addAction(self.hgImportAct)
+        patchMenu.addAction(self.hgExportAct)
+        self.subMenus.append(patchMenu)
+        
+        bisectMenu = QMenu(self.tr("Bisect"), menu)
+        bisectMenu.setTearOffEnabled(True)
+        bisectMenu.addAction(self.hgBisectGoodAct)
+        bisectMenu.addAction(self.hgBisectBadAct)
+        bisectMenu.addAction(self.hgBisectSkipAct)
+        bisectMenu.addAction(self.hgBisectResetAct)
+        self.subMenus.append(bisectMenu)
+        
+        tagsMenu = QMenu(self.tr("Tags"), menu)
+        tagsMenu.setIcon(UI.PixmapCache.getIcon("vcsTag.png"))
+        tagsMenu.setTearOffEnabled(True)
+        tagsMenu.addAction(self.vcsTagAct)
+        tagsMenu.addAction(self.hgTagListAct)
+        self.subMenus.append(tagsMenu)
+        
+        branchesMenu = QMenu(self.tr("Branches"), menu)
+        branchesMenu.setIcon(UI.PixmapCache.getIcon("vcsBranch.png"))
+        branchesMenu.setTearOffEnabled(True)
+        branchesMenu.addAction(self.hgBranchAct)
+        branchesMenu.addAction(self.hgPushBranchAct)
+        branchesMenu.addAction(self.hgCloseBranchAct)
+        branchesMenu.addAction(self.hgBranchListAct)
+        self.subMenus.append(branchesMenu)
+        
+        bookmarksMenu = QMenu(self.tr("Bookmarks"), menu)
+        bookmarksMenu.setIcon(UI.PixmapCache.getIcon("bookmark22.png"))
+        bookmarksMenu.setTearOffEnabled(True)
+        bookmarksMenu.addAction(self.hgBookmarkDefineAct)
+        bookmarksMenu.addAction(self.hgBookmarkDeleteAct)
+        bookmarksMenu.addAction(self.hgBookmarkRenameAct)
+        bookmarksMenu.addAction(self.hgBookmarkMoveAct)
+        bookmarksMenu.addSeparator()
+        bookmarksMenu.addAction(self.hgBookmarksListAct)
+        bookmarksMenu.addSeparator()
+        bookmarksMenu.addAction(self.hgBookmarkIncomingAct)
+        bookmarksMenu.addAction(self.hgBookmarkPullAct)
+        if self.vcs.version >= (3, 9):
+            bookmarksMenu.addAction(self.hgBookmarkPullCurrentAct)
+        bookmarksMenu.addSeparator()
+        bookmarksMenu.addAction(self.hgBookmarkOutgoingAct)
+        bookmarksMenu.addAction(self.hgBookmarkPushAct)
+        if self.vcs.version >= (3, 8):
+            bookmarksMenu.addAction(self.hgBookmarkPushCurrentAct)
+        self.subMenus.append(bookmarksMenu)
+        
+        self.__extensionsMenu = QMenu(self.tr("Extensions"), menu)
+        self.__extensionsMenu.setTearOffEnabled(True)
+        self.__extensionsMenu.aboutToShow.connect(self.__showExtensionMenu)
+        self.extensionMenus = {}
+        for extensionMenuTitle in sorted(self.__extensionMenuTitles):
+            extensionName = self.__extensionMenuTitles[extensionMenuTitle]
+            self.extensionMenus[extensionName] = self.__extensionsMenu.addMenu(
+                self.__extensions[extensionName].initMenu(
+                    self.__extensionsMenu))
+        self.vcs.activeExtensionsChanged.connect(self.__showExtensionMenu)
+        
+        graftMenu = QMenu(self.tr("Copy Changesets"), menu)
+        graftMenu.setIcon(UI.PixmapCache.getIcon("vcsGraft.png"))
+        graftMenu.setTearOffEnabled(True)
+        graftMenu.addAction(self.hgGraftAct)
+        graftMenu.addAction(self.hgGraftContinueAct)
+        if self.vcs.version >= (4, 7, 0):
+            graftMenu.addAction(self.hgGraftStopAct)
+            graftMenu.addAction(self.hgGraftAbortAct)
+        
+        subrepoMenu = QMenu(self.tr("Sub-Repository"), menu)
+        subrepoMenu.setTearOffEnabled(True)
+        subrepoMenu.addAction(self.hgAddSubrepoAct)
+        subrepoMenu.addAction(self.hgRemoveSubreposAct)
+        
+        mergeMenu = QMenu(self.tr("Merge Changesets"), menu)
+        mergeMenu.setIcon(UI.PixmapCache.getIcon("vcsMerge.png"))
+        mergeMenu.setTearOffEnabled(True)
+        mergeMenu.addAction(self.vcsMergeAct)
+        mergeMenu.addAction(self.hgShowConflictsAct)
+        mergeMenu.addAction(self.vcsResolveAct)
+        mergeMenu.addAction(self.hgUnresolveAct)
+        mergeMenu.addAction(self.hgReMergeAct)
+        mergeMenu.addAction(self.hgCancelMergeAct)
+        
+        act = menu.addAction(
+            UI.PixmapCache.getIcon(
+                os.path.join("VcsPlugins", "vcsMercurial", "icons",
+                             "mercurial.png")),
+            self.vcs.vcsName(), self._vcsInfoDisplay)
+        font = act.font()
+        font.setBold(True)
+        act.setFont(font)
+        menu.addSeparator()
+        
+        menu.addAction(self.hgIncomingAct)
+        menu.addAction(self.hgPullAct)
+        menu.addAction(self.vcsUpdateAct)
+        menu.addSeparator()
+        menu.addAction(self.vcsCommitAct)
+        menu.addAction(self.hgOutgoingAct)
+        menu.addAction(self.hgPushAct)
+        menu.addSeparator()
+        menu.addAction(self.vcsRevertAct)
+        menu.addMenu(mergeMenu)
+        menu.addMenu(graftMenu)
+        menu.addAction(self.hgPhaseAct)
+        menu.addSeparator()
+        menu.addMenu(bundleMenu)
+        menu.addMenu(patchMenu)
+        menu.addSeparator()
+        menu.addMenu(tagsMenu)
+        menu.addMenu(branchesMenu)
+        menu.addMenu(bookmarksMenu)
+        menu.addSeparator()
+        menu.addAction(self.hgLogBrowserAct)
+        menu.addSeparator()
+        menu.addAction(self.vcsStatusAct)
+        menu.addAction(self.hgSummaryAct)
+        menu.addSeparator()
+        menu.addAction(self.vcsDiffAct)
+        menu.addAction(self.hgExtDiffAct)
+        menu.addSeparator()
+        menu.addMenu(self.__extensionsMenu)
+        menu.addSeparator()
+        menu.addAction(self.vcsSwitchAct)
+        menu.addSeparator()
+        menu.addMenu(subrepoMenu)
+        menu.addSeparator()
+        menu.addMenu(bisectMenu)
+        menu.addSeparator()
+        menu.addAction(self.vcsCleanupAct)
+        menu.addSeparator()
+        menu.addAction(self.vcsCommandAct)
+        menu.addSeparator()
+        menu.addMenu(adminMenu)
+        menu.addMenu(specialsMenu)
+        menu.addSeparator()
+        menu.addAction(self.hgEditUserConfigAct)
+        menu.addAction(self.hgConfigAct)
+        menu.addSeparator()
+        menu.addAction(self.vcsNewAct)
+        menu.addAction(self.vcsExportAct)
+    
+    def initToolbar(self, ui, toolbarManager):
+        """
+        Public slot to initialize the VCS toolbar.
+        
+        @param ui reference to the main window (UserInterface)
+        @param toolbarManager reference to a toolbar manager object
+            (E5ToolBarManager)
+        """
+        self.__toolbarManager = toolbarManager
+        
+        self.__toolbar = QToolBar(self.tr("Mercurial"), ui)
+        self.__toolbar.setIconSize(UI.Config.ToolBarIconSize)
+        self.__toolbar.setObjectName("MercurialToolbar")
+        self.__toolbar.setToolTip(self.tr('Mercurial'))
+        
+        self.__toolbar.addAction(self.hgLogBrowserAct)
+        self.__toolbar.addAction(self.vcsStatusAct)
+        self.__toolbar.addSeparator()
+        self.__toolbar.addAction(self.vcsDiffAct)
+        self.__toolbar.addSeparator()
+        self.__toolbar.addAction(self.vcsNewAct)
+        self.__toolbar.addAction(self.vcsExportAct)
+        self.__toolbar.addSeparator()
+        
+        title = self.__toolbar.windowTitle()
+        toolbarManager.addToolBar(self.__toolbar, title)
+        toolbarManager.addAction(self.hgPullAct, title)
+        toolbarManager.addAction(self.vcsUpdateAct, title)
+        toolbarManager.addAction(self.vcsCommitAct, title)
+        toolbarManager.addAction(self.hgPushAct, title)
+        toolbarManager.addAction(self.hgPushForcedAct, title)
+        toolbarManager.addAction(self.hgExtDiffAct, title)
+        toolbarManager.addAction(self.hgSummaryAct, title)
+        toolbarManager.addAction(self.vcsRevertAct, title)
+        toolbarManager.addAction(self.vcsMergeAct, title)
+        toolbarManager.addAction(self.hgReMergeAct, title)
+        toolbarManager.addAction(self.vcsTagAct, title)
+        toolbarManager.addAction(self.hgBranchAct, title)
+        toolbarManager.addAction(self.vcsSwitchAct, title)
+        toolbarManager.addAction(self.hgGraftAct, title)
+        toolbarManager.addAction(self.hgAddSubrepoAct, title)
+        toolbarManager.addAction(self.hgRemoveSubreposAct, title)
+        toolbarManager.addAction(self.hgArchiveAct, title)
+        toolbarManager.addAction(self.hgBookmarksListAct, title)
+        toolbarManager.addAction(self.hgBookmarkDefineAct, title)
+        toolbarManager.addAction(self.hgBookmarkDeleteAct, title)
+        toolbarManager.addAction(self.hgBookmarkRenameAct, title)
+        toolbarManager.addAction(self.hgBookmarkMoveAct, title)
+        toolbarManager.addAction(self.hgBookmarkPullAct, title)
+        toolbarManager.addAction(self.hgBookmarkPushAct, title)
+        toolbarManager.addAction(self.hgImportAct, title)
+        toolbarManager.addAction(self.hgExportAct, title)
+        toolbarManager.addAction(self.hgBundleAct, title)
+        toolbarManager.addAction(self.hgPreviewBundleAct, title)
+        toolbarManager.addAction(self.hgUnbundleAct, title)
+        
+        self.__toolbar.setEnabled(False)
+        self.__toolbar.setVisible(False)
+        
+        ui.registerToolbar("mercurial", self.__toolbar.windowTitle(),
+                           self.__toolbar)
+        ui.addToolBar(self.__toolbar)
+    
+    def removeToolbar(self, ui, toolbarManager):
+        """
+        Public method to remove a toolbar created by initToolbar().
+        
+        @param ui reference to the main window (UserInterface)
+        @param toolbarManager reference to a toolbar manager object
+            (E5ToolBarManager)
+        """
+        ui.removeToolBar(self.__toolbar)
+        ui.unregisterToolbar("mercurial")
+        
+        title = self.__toolbar.windowTitle()
+        toolbarManager.removeCategoryActions(title)
+        toolbarManager.removeToolBar(self.__toolbar)
+        
+        self.__toolbar.deleteLater()
+        self.__toolbar = None
+    
+    def showMenu(self):
+        """
+        Public slot called before the vcs menu is shown.
+        """
+        super(HgProjectHelper, self).showMenu()
+        
+        self.__checkActions()
+    
+    def shutdown(self):
+        """
+        Public method to perform shutdown actions.
+        """
+        self.vcs.activeExtensionsChanged.disconnect(self.__showExtensionMenu)
+        self.vcs.iniFileChanged.disconnect(self.__checkActions)
+        
+        # close torn off sub menus
+        for menu in self.subMenus:
+            if menu.isTearOffMenuVisible():
+                menu.hideTearOffMenu()
+        
+        # close torn off extension menus
+        for extensionName in self.extensionMenus:
+            self.__extensions[extensionName].shutdown()
+            menu = self.extensionMenus[extensionName].menu()
+            if menu.isTearOffMenuVisible():
+                menu.hideTearOffMenu()
+        
+        if self.__extensionsMenu.isTearOffMenuVisible():
+            self.__extensionsMenu.hideTearOffMenu()
+    
+    def __showExtensionMenu(self):
+        """
+        Private slot showing the extensions menu.
+        """
+        for extensionName in self.extensionMenus:
+            self.extensionMenus[extensionName].setEnabled(
+                self.vcs.isExtensionActive(extensionName))
+            if not self.extensionMenus[extensionName].isEnabled() and \
+                    self.extensionMenus[extensionName].menu()\
+                        .isTearOffMenuVisible():
+                self.extensionMenus[extensionName].menu().hideTearOffMenu()
+    
+    def __hgExtendedDiff(self):
+        """
+        Private slot used to perform a hg diff with the selection of revisions.
+        """
+        self.vcs.hgExtendedDiff(self.project.ppath)
+    
+    def __hgIncoming(self):
+        """
+        Private slot used to show the log of changes coming into the
+        repository.
+        """
+        self.vcs.hgIncoming(self.project.ppath)
+    
+    def __hgOutgoing(self):
+        """
+        Private slot used to show the log of changes going out of the
+        repository.
+        """
+        self.vcs.hgOutgoing(self.project.ppath)
+    
+    def __hgPull(self):
+        """
+        Private slot used to pull changes from a remote repository.
+        """
+        shouldReopen = self.vcs.hgPull(self.project.ppath)
+        if shouldReopen:
+            res = E5MessageBox.yesNo(
+                self.parent(),
+                self.tr("Pull"),
+                self.tr("""The project should be reread. Do this now?"""),
+                yesDefault=True)
+            if res:
+                self.project.reopenProject()
+    
+    def __hgPush(self):
+        """
+        Private slot used to push changes to a remote repository.
+        """
+        self.vcs.hgPush(self.project.ppath)
+    
+    def __hgPushForced(self):
+        """
+        Private slot used to push changes to a remote repository using
+        the force option.
+        """
+        self.vcs.hgPush(self.project.ppath, force=True)
+    
+    def __hgHeads(self):
+        """
+        Private slot used to show the heads of the repository.
+        """
+        self.vcs.hgInfo(self.project.ppath, mode="heads")
+    
+    def __hgParents(self):
+        """
+        Private slot used to show the parents of the repository.
+        """
+        self.vcs.hgInfo(self.project.ppath, mode="parents")
+    
+    def __hgTip(self):
+        """
+        Private slot used to show the tip of the repository.
+        """
+        self.vcs.hgInfo(self.project.ppath, mode="tip")
+    
+    def __hgResolved(self):
+        """
+        Private slot used to mark conflicts of the local project as being
+        resolved.
+        """
+        self.vcs.hgResolved(self.project.ppath)
+    
+    def __hgUnresolved(self):
+        """
+        Private slot used to mark conflicts of the local project as being
+        unresolved.
+        """
+        self.vcs.hgResolved(self.project.ppath, unresolve=True)
+    
+    def __hgCancelMerge(self):
+        """
+        Private slot used to cancel an uncommitted merge.
+        """
+        self.vcs.hgCancelMerge(self.project.ppath)
+    
+    def __hgShowConflicts(self):
+        """
+        Private slot used to list all files with conflicts.
+        """
+        self.vcs.hgConflicts(self.project.ppath)
+    
+    def __hgReMerge(self):
+        """
+        Private slot used to list all files with conflicts.
+        """
+        self.vcs.hgReMerge(self.project.ppath)
+    
+    def __hgTagList(self):
+        """
+        Private slot used to list the tags of the project.
+        """
+        self.vcs.hgListTagBranch(self.project.ppath, True)
+    
+    def __hgBranchList(self):
+        """
+        Private slot used to list the branches of the project.
+        """
+        self.vcs.hgListTagBranch(self.project.ppath, False)
+    
+    def __hgBranch(self):
+        """
+        Private slot used to create a new branch for the project.
+        """
+        self.vcs.hgBranch(self.project.ppath)
+    
+    def __hgShowBranch(self):
+        """
+        Private slot used to show the current branch for the project.
+        """
+        self.vcs.hgShowBranch(self.project.ppath)
+    
+    def __hgConfigure(self):
+        """
+        Private method to open the configuration dialog.
+        """
+        e5App().getObject("UserInterface").showPreferences("zzz_mercurialPage")
+    
+    def __hgCloseBranch(self):
+        """
+        Private slot used to close the current branch of the local project.
+        """
+        if Preferences.getVCS("AutoSaveProject"):
+            self.project.saveProject()
+        if Preferences.getVCS("AutoSaveFiles"):
+            self.project.saveAllScripts()
+        self.vcs.vcsCommit(self.project.ppath, '', closeBranch=True)
+    
+    def __hgPushNewBranch(self):
+        """
+        Private slot to push a new named branch.
+        """
+        self.vcs.hgPush(self.project.ppath, newBranch=True)
+    
+    def __hgEditUserConfig(self):
+        """
+        Private slot used to edit the user configuration file.
+        """
+        self.vcs.hgEditUserConfig()
+    
+    def __hgEditRepoConfig(self):
+        """
+        Private slot used to edit the repository configuration file.
+        """
+        self.vcs.hgEditConfig(self.project.ppath)
+    
+    def __hgShowConfig(self):
+        """
+        Private slot used to show the combined configuration.
+        """
+        self.vcs.hgShowConfig(self.project.ppath)
+    
+    def __hgVerify(self):
+        """
+        Private slot used to verify the integrity of the repository.
+        """
+        self.vcs.hgVerify(self.project.ppath)
+    
+    def __hgShowPaths(self):
+        """
+        Private slot used to show the aliases for remote repositories.
+        """
+        self.vcs.hgShowPaths(self.project.ppath)
+    
+    def __hgRecover(self):
+        """
+        Private slot used to recover from an interrupted transaction.
+        """
+        self.vcs.hgRecover(self.project.ppath)
+    
+    def __hgIdentify(self):
+        """
+        Private slot used to identify the project directory.
+        """
+        self.vcs.hgIdentify(self.project.ppath)
+    
+    def __hgCreateIgnore(self):
+        """
+        Private slot used to create a .hgignore file for the project.
+        """
+        self.vcs.hgCreateIgnoreFile(self.project.ppath, autoAdd=True)
+    
+    def __hgBundle(self):
+        """
+        Private slot used to create a changegroup file.
+        """
+        self.vcs.hgBundle(self.project.ppath)
+    
+    def __hgPreviewBundle(self):
+        """
+        Private slot used to preview a changegroup file.
+        """
+        self.vcs.hgPreviewBundle(self.project.ppath)
+    
+    def __hgUnbundle(self):
+        """
+        Private slot used to apply changegroup files.
+        """
+        shouldReopen = self.vcs.hgUnbundle(self.project.ppath)
+        if shouldReopen:
+            res = E5MessageBox.yesNo(
+                self.parent(),
+                self.tr("Apply changegroups"),
+                self.tr("""The project should be reread. Do this now?"""),
+                yesDefault=True)
+            if res:
+                self.project.reopenProject()
+    
+    def __hgBisectGood(self):
+        """
+        Private slot used to execute the bisect --good command.
+        """
+        self.vcs.hgBisect(self.project.ppath, "good")
+    
+    def __hgBisectBad(self):
+        """
+        Private slot used to execute the bisect --bad command.
+        """
+        self.vcs.hgBisect(self.project.ppath, "bad")
+    
+    def __hgBisectSkip(self):
+        """
+        Private slot used to execute the bisect --skip command.
+        """
+        self.vcs.hgBisect(self.project.ppath, "skip")
+    
+    def __hgBisectReset(self):
+        """
+        Private slot used to execute the bisect --reset command.
+        """
+        self.vcs.hgBisect(self.project.ppath, "reset")
+    
+    def __hgBackout(self):
+        """
+        Private slot used to back out changes of a changeset.
+        """
+        self.vcs.hgBackout(self.project.ppath)
+    
+    def __hgRollback(self):
+        """
+        Private slot used to rollback the last transaction.
+        """
+        self.vcs.hgRollback(self.project.ppath)
+    
+    def __hgServe(self):
+        """
+        Private slot used to serve the project.
+        """
+        self.vcs.hgServe(self.project.ppath)
+    
+    def __hgImport(self):
+        """
+        Private slot used to import a patch file.
+        """
+        shouldReopen = self.vcs.hgImport(self.project.ppath)
+        if shouldReopen:
+            res = E5MessageBox.yesNo(
+                self.parent(),
+                self.tr("Import Patch"),
+                self.tr("""The project should be reread. Do this now?"""),
+                yesDefault=True)
+            if res:
+                self.project.reopenProject()
+    
+    def __hgExport(self):
+        """
+        Private slot used to export revisions to patch files.
+        """
+        self.vcs.hgExport(self.project.ppath)
+    
+    def __hgRevert(self):
+        """
+        Private slot used to revert changes made to the local project.
+        """
+        shouldReopen = self.vcs.hgRevert(self.project.ppath)
+        if shouldReopen:
+            res = E5MessageBox.yesNo(
+                self.parent(),
+                self.tr("Revert Changes"),
+                self.tr("""The project should be reread. Do this now?"""),
+                yesDefault=True)
+            if res:
+                self.project.reopenProject()
+    
+    def __hgPhase(self):
+        """
+        Private slot used to change the phase of revisions.
+        """
+        self.vcs.hgPhase(self.project.ppath)
+    
+    def __hgGraft(self):
+        """
+        Private slot used to copy changesets from another branch.
+        """
+        shouldReopen = self.vcs.hgGraft(self.project.getProjectPath())
+        if shouldReopen:
+            res = E5MessageBox.yesNo(
+                None,
+                self.tr("Copy Changesets"),
+                self.tr("""The project should be reread. Do this now?"""),
+                yesDefault=True)
+            if res:
+                self.project.reopenProject()
+    
+    def __hgGraftContinue(self):
+        """
+        Private slot used to continue the last copying session after conflicts
+        were resolved.
+        """
+        shouldReopen = self.vcs.hgGraftContinue(self.project.getProjectPath())
+        if shouldReopen:
+            res = E5MessageBox.yesNo(
+                None,
+                self.tr("Copy Changesets (Continue)"),
+                self.tr("""The project should be reread. Do this now?"""),
+                yesDefault=True)
+            if res:
+                self.project.reopenProject()
+    
+    def __hgGraftStop(self):
+        """
+        Private slot used to stop an interrupted copying session.
+        """
+        shouldReopen = self.vcs.hgGraftStop(self.project.getProjectPath())
+        if shouldReopen:
+            res = E5MessageBox.yesNo(
+                None,
+                self.tr("Copy Changesets (Stop)"),
+                self.tr("""The project should be reread. Do this now?"""),
+                yesDefault=True)
+            if res:
+                self.project.reopenProject()
+    
+    def __hgGraftAbort(self):
+        """
+        Private slot used to abort an interrupted copying session and perform
+        a rollback.
+        """
+        shouldReopen = self.vcs.hgGraftAbort(self.project.getProjectPath())
+        if shouldReopen:
+            res = E5MessageBox.yesNo(
+                None,
+                self.tr("Copy Changesets (Abort)"),
+                self.tr("""The project should be reread. Do this now?"""),
+                yesDefault=True)
+            if res:
+                self.project.reopenProject()
+    
+    def __hgAddSubrepository(self):
+        """
+        Private slot used to add a sub-repository.
+        """
+        self.vcs.hgAddSubrepository()
+    
+    def __hgRemoveSubrepositories(self):
+        """
+        Private slot used to remove sub-repositories.
+        """
+        self.vcs.hgRemoveSubrepositories()
+    
+    def __hgSummary(self):
+        """
+        Private slot to show a working directory summary.
+        """
+        self.vcs.hgSummary()
+    
+    def __hgArchive(self):
+        """
+        Private slot to create an unversioned archive from the repository.
+        """
+        self.vcs.hgArchive()
+    
+    def __hgBookmarksList(self):
+        """
+        Private slot used to list the bookmarks.
+        """
+        self.vcs.hgListBookmarks(self.project.getProjectPath())
+    
+    def __hgBookmarkDefine(self):
+        """
+        Private slot used to define a bookmark.
+        """
+        self.vcs.hgBookmarkDefine(self.project.getProjectPath())
+    
+    def __hgBookmarkDelete(self):
+        """
+        Private slot used to delete a bookmark.
+        """
+        self.vcs.hgBookmarkDelete(self.project.getProjectPath())
+    
+    def __hgBookmarkRename(self):
+        """
+        Private slot used to rename a bookmark.
+        """
+        self.vcs.hgBookmarkRename(self.project.getProjectPath())
+    
+    def __hgBookmarkMove(self):
+        """
+        Private slot used to move a bookmark.
+        """
+        self.vcs.hgBookmarkMove(self.project.getProjectPath())
+    
+    def __hgBookmarkIncoming(self):
+        """
+        Private slot used to show a list of incoming bookmarks.
+        """
+        self.vcs.hgBookmarkIncoming(self.project.getProjectPath())
+    
+    def __hgBookmarkOutgoing(self):
+        """
+        Private slot used to show a list of outgoing bookmarks.
+        """
+        self.vcs.hgBookmarkOutgoing(self.project.getProjectPath())
+    
+    def __hgBookmarkPull(self):
+        """
+        Private slot used to pull a bookmark from a remote repository.
+        """
+        self.vcs.hgBookmarkPull(self.project.getProjectPath())
+    
+    def __hgBookmarkPullCurrent(self):
+        """
+        Private slot used to pull the current bookmark from a remote
+        repository.
+        """
+        self.vcs.hgBookmarkPull(self.project.getProjectPath(), current=True)
+    
+    def __hgBookmarkPush(self):
+        """
+        Private slot used to push a bookmark to a remote repository.
+        """
+        self.vcs.hgBookmarkPush(self.project.getProjectPath())
+    
+    def __hgBookmarkPushCurrent(self):
+        """
+        Private slot used to push the current bookmark to a remote repository.
+        """
+        self.vcs.hgBookmarkPush(self.project.getProjectPath(), current=True)
+    
+    def __hgDeleteBackups(self):
+        """
+        Private slot used to delete all backup bundles.
+        """
+        self.vcs.hgDeleteBackups()

eric ide

mercurial