src/eric7/Plugins/VcsPlugins/vcsMercurial/HgBackoutDialog.py

branch
eric7
changeset 9209
b99e7fd55fd3
parent 9025
9fe8cfa14542
child 9221
bf71ee032bb4
equal deleted inserted replaced
9208:3fc8dfeb6ebe 9209:b99e7fd55fd3
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2010 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing a dialog to enter the data for a backout operation.
8 """
9
10 from PyQt6.QtCore import pyqtSlot, QDateTime
11 from PyQt6.QtWidgets import QDialog, QDialogButtonBox
12
13 from EricWidgets.EricApplication import ericApp
14
15 from .Ui_HgBackoutDialog import Ui_HgBackoutDialog
16
17
18 class HgBackoutDialog(QDialog, Ui_HgBackoutDialog):
19 """
20 Class implementing a dialog to enter the data for a backout operation.
21 """
22 def __init__(self, tagsList, branchesList, bookmarksList=None,
23 parent=None):
24 """
25 Constructor
26
27 @param tagsList list of tags
28 @type list of str
29 @param branchesList list of branches
30 @type list of str
31 @param bookmarksList list of bookmarks
32 @type list of str
33 @param parent parent widget
34 @type QWidget
35 """
36 super().__init__(parent)
37 self.setupUi(self)
38
39 self.buttonBox.button(
40 QDialogButtonBox.StandardButton.Ok).setEnabled(False)
41
42 project = ericApp().getObject("Project")
43 pwl, pel = project.getProjectDictionaries()
44 language = project.getProjectSpellLanguage()
45 self.messageEdit.setLanguageWithPWL(
46 language, pwl or None, pel or None)
47
48 self.tagCombo.addItems(sorted(tagsList))
49 self.branchCombo.addItems(["default"] + sorted(branchesList))
50 if bookmarksList is not None:
51 self.bookmarkCombo.addItems(sorted(bookmarksList))
52 else:
53 self.bookmarkButton.setHidden(True)
54 self.bookmarkCombo.setHidden(True)
55
56 # connect various radio buttons and input fields
57 self.idButton.toggled.connect(self.__updateOK)
58 self.tagButton.toggled.connect(self.__updateOK)
59 self.branchButton.toggled.connect(self.__updateOK)
60 self.bookmarkButton.toggled.connect(self.__updateOK)
61 self.expressionButton.toggled.connect(self.__updateOK)
62 self.noneButton.toggled.connect(self.__updateOK)
63
64 self.idEdit.textChanged.connect(self.__updateOK)
65 self.expressionEdit.textChanged.connect(self.__updateOK)
66
67 self.tagCombo.editTextChanged.connect(self.__updateOK)
68 self.branchCombo.editTextChanged.connect(self.__updateOK)
69 self.bookmarkCombo.editTextChanged.connect(self.__updateOK)
70
71 self.__initDateTime = QDateTime.currentDateTime()
72 self.dateEdit.setDateTime(self.__initDateTime)
73
74 @pyqtSlot()
75 def __updateOK(self):
76 """
77 Private slot to update the OK button.
78 """
79 enabled = True
80 if self.noneButton.isChecked():
81 enabled = False
82 elif self.idButton.isChecked():
83 enabled = bool(self.idEdit.text())
84 elif self.tagButton.isChecked():
85 enabled = bool(self.tagCombo.currentText())
86 elif self.branchButton.isChecked():
87 enabled = bool(self.branchCombo.currentText())
88 elif self.bookmarkButton.isChecked():
89 enabled = bool(self.bookmarkCombo.currentText())
90 elif self.expressionButton.isChecked():
91 enabled = enabled and bool(self.expressionEdit.text())
92
93 self.buttonBox.button(
94 QDialogButtonBox.StandardButton.Ok).setEnabled(enabled)
95
96 def getParameters(self):
97 """
98 Public method to retrieve the backout data.
99
100 @return tuple naming the revision, a flag indicating a
101 merge, the commit date, the commit user and a commit message
102 @rtype tuple of (str, bool, str, str, str)
103 """
104 if self.numberButton.isChecked():
105 rev = "rev({0})".format(self.numberSpinBox.value())
106 elif self.idButton.isChecked():
107 rev = "id({0})".format(self.idEdit.text())
108 elif self.tagButton.isChecked():
109 rev = self.tagCombo.currentText()
110 elif self.branchButton.isChecked():
111 rev = self.branchCombo.currentText()
112 elif self.bookmarkButton.isChecked():
113 rev = self.bookmarkCombo.currentText()
114 elif self.expressionButton.isChecked():
115 rev = self.expressionEdit.text()
116 else:
117 rev = ""
118
119 date = (
120 self.dateEdit.dateTime().toString("yyyy-MM-dd hh:mm")
121 if self.dateEdit.dateTime() != self.__initDateTime else
122 ""
123 )
124
125 msg = (
126 self.messageEdit.toPlainText()
127 if self.messageEdit.toPlainText() else
128 self.tr("Backed out changeset <{0}>.").format(rev)
129 )
130
131 return (rev,
132 self.mergeCheckBox.isChecked,
133 date,
134 self.userEdit.text(),
135 msg
136 )

eric ide

mercurial