diff -r af9e529d0fb6 -r 48bf6c3f084f Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py --- a/Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py Sat Aug 04 14:05:07 2018 +0200 +++ b/Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py Sat Aug 04 14:48:27 2018 +0200 @@ -971,8 +971,6 @@ self.hgPhaseAct.triggered.connect(self.__hgPhase) self.actions.append(self.hgPhaseAct) - # TODO: Mercurial 4.7: add action for graft --stop - # TODO: Mercurial 4.7: add action for graft --abort self.hgGraftAct = E5Action( self.tr('Copy Changesets'), UI.PixmapCache.getIcon("vcsGraft.png"), @@ -1005,6 +1003,36 @@ self.hgGraftContinueAct.triggered.connect(self.__hgGraftContinue) self.actions.append(self.hgGraftContinueAct) + if self.vcs.version >= (4, 7, 0): + 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"), @@ -1377,13 +1405,14 @@ self.__extensionsMenu)) self.vcs.activeExtensionsChanged.connect(self.__showExtensionMenu) - # TODO: Mercurial 4.7: add action for graft --stop - # TODO: Mercurial 4.7: add action for graft --abort 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) @@ -1910,6 +1939,35 @@ 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.