Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py

changeset 6461
48bf6c3f084f
parent 6458
97480c872ea9
child 6467
56ef1ae1629d
--- 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.

eric ide

mercurial