Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py

changeset 5270
7758f0c7d9f6
parent 5104
0b9420dc1093
child 5276
c8055cb37262
diff -r 748e4c50523b -r 7758f0c7d9f6 Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py
--- a/Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py	Mon Oct 24 19:55:05 2016 +0200
+++ b/Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py	Tue Oct 25 19:33:11 2016 +0200
@@ -212,6 +212,8 @@
             self.tr("Pull Large Files"), self.__lfPullActTriggered)
         self.__lfPullAct.setToolTip(self.tr(
             "Pull large files for selected revisions"))
+        self.__fetchAct = self.__actionsMenu.addAction(
+            self.tr("Fetch Changes"), self.__fetchActTriggered)
         
         self.__actionsMenu.addSeparator()
         
@@ -225,6 +227,11 @@
         self.__pushAllAct.setToolTip(self.tr(
             "Push all changes to a remote repository"))
         
+        self.__actionsMenu.addSeparator()
+        
+        self.__stripAct = self.__actionsMenu.addAction(
+            self.tr("Strip Changesets"), self.__stripActTriggered)
+        
         self.actionsButton.setIcon(
             UI.PixmapCache.getIcon("actionsToolButton.png"))
         self.actionsButton.setMenu(self.__actionsMenu)
@@ -1233,17 +1240,31 @@
             self.__tagAct.setEnabled(len(self.logTree.selectedItems()) == 1)
             self.__switchAct.setEnabled(len(self.logTree.selectedItems()) == 1)
             
-            if self.__lfPullAct is not None:
-                if self.vcs.isExtensionActive("largefiles"):
-                    self.__lfPullAct.setEnabled(bool(
-                        self.logTree.selectedItems()))
-                else:
-                    self.__lfPullAct.setEnabled(False)
+            if self.vcs.canPull():
+                self.__pullAct.setEnabled(True)
+                self.__lfPullAct.setEnabled(
+                    self.vcs.isExtensionActive("largefiles") and
+                    bool(self.logTree.selectedItems()))
+                self.__fetchAct.setEnabled(
+                    self.vcs.isExtensionActive("fetch"))
+            else:
+                self.__pullAct.setEnabled(False)
+                self.__lfPullAct.setEnabled(False)
+                self.__fetchAct.setEnabled(False)
             
-            self.__pushAct.setEnabled(
-                len(self.logTree.selectedItems()) == 1 and
-                self.logTree.selectedItems()[0].text(self.PhaseColumn) ==
-                self.phases["draft"])
+            if self.vcs.canPush():
+                self.__pushAct.setEnabled(
+                    len(self.logTree.selectedItems()) == 1 and
+                    self.logTree.selectedItems()[0].text(self.PhaseColumn) ==
+                    self.phases["draft"])
+                self.__pushAllAct.setEnabled(True)
+            else:
+                self.__pushAct.setEnabled(False)
+                self.__pushAllAct.setEnabled(False)
+            
+            self.__stripAct.setEnabled(
+                self.vcs.isExtensionActive("strip") and
+                len(self.logTree.selectedItems()) == 1)
             
             self.actionsButton.setEnabled(True)
         else:
@@ -1716,6 +1737,14 @@
                 self.repodir, revisions=revs)
     
     @pyqtSlot()
+    def __fetchActTriggered(self):
+        """
+        Private slot to fetch changes from a remote repository.
+        """
+        self.vcs.getExtensionObject("fetch").hgFetch(self.repodir)
+        self.on_refreshButton_clicked()
+    
+    @pyqtSlot()
     def __pullActTriggered(self):
         """
         Private slot to pull changes from a remote repository.
@@ -1743,6 +1772,16 @@
         self.vcs.hgPush(self.repodir)
         self.on_refreshButton_clicked()
     
+    @pyqtSlot()
+    def __stripActTriggered(self):
+        """
+        Private slot to strip changesets from the repository.
+        """
+        itm = self.logTree.selectedItems()[0]
+        rev = itm.text(self.RevisionColumn).strip().split(":", 1)[1]
+        self.vcs.getExtensionObject("strip").hgStrip(self.repodir, rev=rev)
+        self.on_refreshButton_clicked()
+    
     def __actionMode(self):
         """
         Private method to get the selected action mode.

eric ide

mercurial