eric6/Plugins/VcsPlugins/vcsMercurial/HgBackoutDialog.py

changeset 6942
2602857055c5
parent 6645
ad476851d7e0
child 7229
53054eb5b15a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric6/Plugins/VcsPlugins/vcsMercurial/HgBackoutDialog.py	Sun Apr 14 15:09:21 2019 +0200
@@ -0,0 +1,183 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a dialog to enter the data for a backout operation.
+"""
+
+from __future__ import unicode_literals
+
+from PyQt5.QtCore import pyqtSlot, QDateTime
+from PyQt5.QtWidgets import QDialog, QDialogButtonBox
+
+from .Ui_HgBackoutDialog import Ui_HgBackoutDialog
+
+
+class HgBackoutDialog(QDialog, Ui_HgBackoutDialog):
+    """
+    Class implementing a dialog to enter the data for a backout operation.
+    """
+    def __init__(self, tagsList, branchesList, bookmarksList=None,
+                 parent=None):
+        """
+        Constructor
+        
+        @param tagsList list of tags (list of strings)
+        @param branchesList list of branches (list of strings)
+        @param bookmarksList list of bookmarks (list of strings)
+        @param parent parent widget (QWidget)
+        """
+        super(HgBackoutDialog, self).__init__(parent)
+        self.setupUi(self)
+        
+        self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(False)
+        
+        self.tagCombo.addItems(sorted(tagsList))
+        self.branchCombo.addItems(["default"] + sorted(branchesList))
+        if bookmarksList is not None:
+            self.bookmarkCombo.addItems(sorted(bookmarksList))
+        else:
+            self.bookmarkButton.setHidden(True)
+            self.bookmarkCombo.setHidden(True)
+        
+        self.__initDateTime = QDateTime.currentDateTime()
+        self.dateEdit.setDateTime(self.__initDateTime)
+    
+    def __updateOK(self):
+        """
+        Private slot to update the OK button.
+        """
+        enabled = True
+        if self.noneButton.isChecked():
+            enabled = False
+        elif self.idButton.isChecked():
+            enabled = self.idEdit.text() != ""
+        elif self.tagButton.isChecked():
+            enabled = self.tagCombo.currentText() != ""
+        elif self.branchButton.isChecked():
+            enabled = self.branchCombo.currentText() != ""
+        elif self.bookmarkButton.isChecked():
+            enabled = self.bookmarkCombo.currentText() != ""
+        
+        self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(enabled)
+    
+    @pyqtSlot(bool)
+    def on_idButton_toggled(self, checked):
+        """
+        Private slot to handle changes of the ID select button.
+        
+        @param checked state of the button (boolean)
+        """
+        self.__updateOK()
+    
+    @pyqtSlot(bool)
+    def on_tagButton_toggled(self, checked):
+        """
+        Private slot to handle changes of the Tag select button.
+        
+        @param checked state of the button (boolean)
+        """
+        self.__updateOK()
+    
+    @pyqtSlot(bool)
+    def on_branchButton_toggled(self, checked):
+        """
+        Private slot to handle changes of the Branch select button.
+        
+        @param checked state of the button (boolean)
+        """
+        self.__updateOK()
+    
+    @pyqtSlot(bool)
+    def on_bookmarkButton_toggled(self, checked):
+        """
+        Private slot to handle changes of the Bookmark select button.
+        
+        @param checked state of the button (boolean)
+        """
+        self.__updateOK()
+    
+    @pyqtSlot(bool)
+    def on_noneButton_toggled(self, checked):
+        """
+        Private slot to handle the toggling of the None revision button.
+        
+        @param checked flag indicating the checked state (boolean)
+        """
+        self.__updateOK()
+    
+    @pyqtSlot(str)
+    def on_idEdit_textChanged(self, txt):
+        """
+        Private slot to handle changes of the ID edit.
+        
+        @param txt text of the edit (string)
+        """
+        self.__updateOK()
+    
+    @pyqtSlot(str)
+    def on_tagCombo_editTextChanged(self, txt):
+        """
+        Private slot to handle changes of the Tag combo.
+        
+        @param txt text of the combo (string)
+        """
+        self.__updateOK()
+    
+    @pyqtSlot(str)
+    def on_branchCombo_editTextChanged(self, txt):
+        """
+        Private slot to handle changes of the Branch combo.
+        
+        @param txt text of the combo (string)
+        """
+        self.__updateOK()
+    
+    @pyqtSlot(str)
+    def on_bookmarkCombo_editTextChanged(self, txt):
+        """
+        Private slot to handle changes of the Bookmark combo.
+        
+        @param txt text of the combo (string)
+        """
+        self.__updateOK()
+    
+    def getParameters(self):
+        """
+        Public method to retrieve the backout data.
+        
+        @return tuple naming the revision, a flag indicating a
+            merge, the commit date, the commit user and a commit message
+            (string, boolean, string, string, string)
+        """
+        if self.numberButton.isChecked():
+            rev = "rev({0})".format(self.numberSpinBox.value())
+        elif self.idButton.isChecked():
+            rev = "id({0})".format(self.idEdit.text())
+        elif self.tagButton.isChecked():
+            rev = self.tagCombo.currentText()
+        elif self.branchButton.isChecked():
+            rev = self.branchCombo.currentText()
+        elif self.bookmarkButton.isChecked():
+            rev = self.bookmarkCombo.currentText()
+        else:
+            rev = ""
+        
+        if self.dateEdit.dateTime() != self.__initDateTime:
+            date = self.dateEdit.dateTime().toString("yyyy-MM-dd hh:mm")
+        else:
+            date = ""
+        
+        if self.messageEdit.toPlainText():
+            msg = self.messageEdit.toPlainText()
+        else:
+            msg = self.tr("Backed out changeset <{0}>.").format(rev)
+        
+        return (rev,
+                self.mergeCheckBox.isChecked,
+                date,
+                self.userEdit.text(),
+                msg
+                )

eric ide

mercurial