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.