18 |
18 |
19 from PyQt5.QtCore import pyqtSlot, Qt, QDate, QProcess, QTimer, QRegExp, \ |
19 from PyQt5.QtCore import pyqtSlot, Qt, QDate, QProcess, QTimer, QRegExp, \ |
20 QSize, QPoint |
20 QSize, QPoint |
21 from PyQt5.QtGui import QCursor, QColor, QPixmap, QPainter, QPen, QBrush, QIcon |
21 from PyQt5.QtGui import QCursor, QColor, QPixmap, QPainter, QPen, QBrush, QIcon |
22 from PyQt5.QtWidgets import QWidget, QDialogButtonBox, QHeaderView, \ |
22 from PyQt5.QtWidgets import QWidget, QDialogButtonBox, QHeaderView, \ |
23 QTreeWidgetItem, QApplication, QLineEdit, QMenu |
23 QTreeWidgetItem, QApplication, QLineEdit, QMenu, QInputDialog |
24 |
24 |
25 from E5Gui.E5Application import e5App |
25 from E5Gui.E5Application import e5App |
26 from E5Gui import E5MessageBox |
26 from E5Gui import E5MessageBox |
27 |
27 |
28 from .Ui_HgLogBrowserDialog import Ui_HgLogBrowserDialog |
28 from .Ui_HgLogBrowserDialog import Ui_HgLogBrowserDialog |
176 |
176 |
177 def __initActionsMenu(self): |
177 def __initActionsMenu(self): |
178 """ |
178 """ |
179 Private method to initialize the actions menu. |
179 Private method to initialize the actions menu. |
180 """ |
180 """ |
|
181 # TODO: add some eye candy |
181 self.__actionsMenu = QMenu() |
182 self.__actionsMenu = QMenu() |
182 self.__graftAct = self.__actionsMenu.addAction( |
183 self.__graftAct = self.__actionsMenu.addAction( |
183 self.tr("Copy Changesets"), self.__graftActTriggered) |
184 self.tr("Copy Changesets"), self.__graftActTriggered) |
184 self.__graftAct.setToolTip(self.tr( |
185 self.__graftAct.setToolTip(self.tr( |
185 "Copy the selected changesets to the current branch")) |
186 "Copy the selected changesets to the current branch")) |
199 |
200 |
200 self.__switchAct = self.__actionsMenu.addAction( |
201 self.__switchAct = self.__actionsMenu.addAction( |
201 self.tr("Switch"), self.__switchActTriggered) |
202 self.tr("Switch"), self.__switchActTriggered) |
202 self.__switchAct.setToolTip(self.tr( |
203 self.__switchAct.setToolTip(self.tr( |
203 "Switch the working directory to the selected revision")) |
204 "Switch the working directory to the selected revision")) |
|
205 |
|
206 self.__actionsMenu.addSeparator() |
|
207 |
|
208 self.__bookmarkAct = self.__actionsMenu.addAction( |
|
209 self.tr("Define Bookmark..."), self.__bookmarkActTriggered) |
|
210 self.__bookmarkAct.setToolTip( |
|
211 self.tr("Bookmark the selected revision")) |
|
212 self.__bookmarkMoveAct = self.__actionsMenu.addAction( |
|
213 self.tr("Move Bookmark..."), self.__bookmarkMoveActTriggered) |
|
214 self.__bookmarkMoveAct.setToolTip( |
|
215 self.tr("Move bookmark to the selected revision")) |
204 |
216 |
205 self.__actionsMenu.addSeparator() |
217 self.__actionsMenu.addSeparator() |
206 |
218 |
207 self.__pullAct = self.__actionsMenu.addAction( |
219 self.__pullAct = self.__actionsMenu.addAction( |
208 self.tr("Pull Changes"), self.__pullActTriggered) |
220 self.tr("Pull Changes"), self.__pullActTriggered) |
1241 # step 2: set the status of the graft action |
1253 # step 2: set the status of the graft action |
1242 self.__graftAct.setEnabled(otherBranches > 0) |
1254 self.__graftAct.setEnabled(otherBranches > 0) |
1243 |
1255 |
1244 self.__tagAct.setEnabled(len(self.logTree.selectedItems()) == 1) |
1256 self.__tagAct.setEnabled(len(self.logTree.selectedItems()) == 1) |
1245 self.__switchAct.setEnabled(len(self.logTree.selectedItems()) == 1) |
1257 self.__switchAct.setEnabled(len(self.logTree.selectedItems()) == 1) |
|
1258 self.__bookmarkAct.setEnabled( |
|
1259 len(self.logTree.selectedItems()) == 1) |
|
1260 self.__bookmarkMoveAct.setEnabled( |
|
1261 len(self.logTree.selectedItems()) == 1) |
1246 |
1262 |
1247 if self.vcs.canPull(): |
1263 if self.vcs.canPull(): |
1248 self.__pullAct.setEnabled(True) |
1264 self.__pullAct.setEnabled(True) |
1249 self.__lfPullAct.setEnabled( |
1265 self.__lfPullAct.setEnabled( |
1250 self.vcs.isExtensionActive("largefiles") and |
1266 self.vcs.isExtensionActive("largefiles") and |
1724 return |
1740 return |
1725 |
1741 |
1726 self.on_refreshButton_clicked() |
1742 self.on_refreshButton_clicked() |
1727 |
1743 |
1728 @pyqtSlot() |
1744 @pyqtSlot() |
|
1745 def __bookmarkActTriggered(self): |
|
1746 """ |
|
1747 Private slot to bookmark the selected revision. |
|
1748 """ |
|
1749 if len(self.logTree.selectedItems()) == 1: |
|
1750 itm = self.logTree.selectedItems()[0] |
|
1751 rev, changeset = \ |
|
1752 itm.text(self.RevisionColumn).strip().split(":", 1) |
|
1753 bookmark, ok = QInputDialog.getText( |
|
1754 self, |
|
1755 self.tr("Define Bookmark"), |
|
1756 self.tr('Enter bookmark name for changeset "{0}":').format( |
|
1757 changeset), |
|
1758 QLineEdit.Normal) |
|
1759 if ok and bool(bookmark): |
|
1760 self.vcs.hgBookmarkDefine( |
|
1761 self.repodir, revision="rev({0})".format(rev), |
|
1762 bookmark=bookmark) |
|
1763 self.on_refreshButton_clicked() |
|
1764 |
|
1765 @pyqtSlot() |
|
1766 def __bookmarkMoveActTriggered(self): |
|
1767 """ |
|
1768 Private slot to move a bookmark to the selected revision. |
|
1769 """ |
|
1770 if len(self.logTree.selectedItems()) == 1: |
|
1771 itm = self.logTree.selectedItems()[0] |
|
1772 rev, changeset = \ |
|
1773 itm.text(self.RevisionColumn).strip().split(":", 1) |
|
1774 bookmarksList = self.vcs.hgGetBookmarksList(self.repodir) |
|
1775 bookmark, ok = QInputDialog.getItem( |
|
1776 self, |
|
1777 self.tr("Move Bookmark"), |
|
1778 self.tr('Select the bookmark to be moved to changeset' |
|
1779 ' "{0}":').format(changeset), |
|
1780 [""] + bookmarksList, |
|
1781 0, False) |
|
1782 if ok and bool(bookmark): |
|
1783 self.vcs.hgBookmarkMove( |
|
1784 self.repodir, revision="rev({0})".format(rev), |
|
1785 bookmark=bookmark) |
|
1786 self.on_refreshButton_clicked() |
|
1787 |
|
1788 @pyqtSlot() |
1729 def __lfPullActTriggered(self): |
1789 def __lfPullActTriggered(self): |
1730 """ |
1790 """ |
1731 Private slot to pull large files of selected revisions. |
1791 Private slot to pull large files of selected revisions. |
1732 """ |
1792 """ |
1733 revs = [] |
1793 revs = [] |