Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py

changeset 5322
c2cabdca0734
parent 5276
c8055cb37262
child 5324
337c27027c66
diff -r 07b4da7d6833 -r c2cabdca0734 Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py
--- a/Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py	Mon Nov 14 19:24:11 2016 +0100
+++ b/Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py	Mon Nov 14 19:58:22 2016 +0100
@@ -20,7 +20,7 @@
     QSize, QPoint
 from PyQt5.QtGui import QCursor, QColor, QPixmap, QPainter, QPen, QBrush, QIcon
 from PyQt5.QtWidgets import QWidget, QDialogButtonBox, QHeaderView, \
-    QTreeWidgetItem, QApplication, QLineEdit, QMenu
+    QTreeWidgetItem, QApplication, QLineEdit, QMenu, QInputDialog
 
 from E5Gui.E5Application import e5App
 from E5Gui import E5MessageBox
@@ -178,6 +178,7 @@
         """
         Private method to initialize the actions menu.
         """
+        # TODO: add some eye candy
         self.__actionsMenu = QMenu()
         self.__graftAct = self.__actionsMenu.addAction(
             self.tr("Copy Changesets"), self.__graftActTriggered)
@@ -204,6 +205,17 @@
         
         self.__actionsMenu.addSeparator()
         
+        self.__bookmarkAct = self.__actionsMenu.addAction(
+            self.tr("Define Bookmark..."), self.__bookmarkActTriggered)
+        self.__bookmarkAct.setToolTip(
+            self.tr("Bookmark the selected revision"))
+        self.__bookmarkMoveAct = self.__actionsMenu.addAction(
+            self.tr("Move Bookmark..."), self.__bookmarkMoveActTriggered)
+        self.__bookmarkMoveAct.setToolTip(
+            self.tr("Move bookmark to the selected revision"))
+        
+        self.__actionsMenu.addSeparator()
+        
         self.__pullAct = self.__actionsMenu.addAction(
             self.tr("Pull Changes"), self.__pullActTriggered)
         self.__pullAct.setToolTip(self.tr(
@@ -1243,6 +1255,10 @@
             
             self.__tagAct.setEnabled(len(self.logTree.selectedItems()) == 1)
             self.__switchAct.setEnabled(len(self.logTree.selectedItems()) == 1)
+            self.__bookmarkAct.setEnabled(
+                len(self.logTree.selectedItems()) == 1)
+            self.__bookmarkMoveAct.setEnabled(
+                len(self.logTree.selectedItems()) == 1)
             
             if self.vcs.canPull():
                 self.__pullAct.setEnabled(True)
@@ -1726,6 +1742,50 @@
                 self.on_refreshButton_clicked()
     
     @pyqtSlot()
+    def __bookmarkActTriggered(self):
+        """
+        Private slot to bookmark the selected revision.
+        """
+        if len(self.logTree.selectedItems()) == 1:
+            itm = self.logTree.selectedItems()[0]
+            rev, changeset = \
+                itm.text(self.RevisionColumn).strip().split(":", 1)
+            bookmark, ok = QInputDialog.getText(
+                self,
+                self.tr("Define Bookmark"),
+                self.tr('Enter bookmark name for changeset "{0}":').format(
+                    changeset),
+                QLineEdit.Normal)
+            if ok and bool(bookmark):
+                self.vcs.hgBookmarkDefine(
+                    self.repodir, revision="rev({0})".format(rev),
+                    bookmark=bookmark)
+                self.on_refreshButton_clicked()
+    
+    @pyqtSlot()
+    def __bookmarkMoveActTriggered(self):
+        """
+        Private slot to move a bookmark to the selected revision.
+        """
+        if len(self.logTree.selectedItems()) == 1:
+            itm = self.logTree.selectedItems()[0]
+            rev, changeset = \
+                itm.text(self.RevisionColumn).strip().split(":", 1)
+            bookmarksList = self.vcs.hgGetBookmarksList(self.repodir)
+            bookmark, ok = QInputDialog.getItem(
+                self,
+                self.tr("Move Bookmark"),
+                self.tr('Select the bookmark to be moved  to changeset'
+                        ' "{0}":').format(changeset),
+                [""] + bookmarksList,
+                0, False)
+            if ok and bool(bookmark):
+                self.vcs.hgBookmarkMove(
+                    self.repodir, revision="rev({0})".format(rev),
+                    bookmark=bookmark)
+                self.on_refreshButton_clicked()
+    
+    @pyqtSlot()
     def __lfPullActTriggered(self):
         """
         Private slot to pull large files of selected revisions.

eric ide

mercurial