src/eric7/Plugins/VcsPlugins/vcsMercurial/HgMergeDialog.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 merge operation.
8 """
9
10 from PyQt6.QtCore import pyqtSlot
11 from PyQt6.QtWidgets import QDialog, QDialogButtonBox
12
13 from .Ui_HgMergeDialog import Ui_HgMergeDialog
14
15
16 class HgMergeDialog(QDialog, Ui_HgMergeDialog):
17 """
18 Class implementing a dialog to enter the data for a merge operation.
19 """
20 def __init__(self, tagsList, branchesList, bookmarksList=None,
21 parent=None):
22 """
23 Constructor
24
25 @param tagsList list of tags
26 @type list of str
27 @param branchesList list of branches
28 @type list of str
29 @param bookmarksList list of bookmarks
30 @type list of str
31 @param parent parent widget
32 @type QWidget
33 """
34 super().__init__(parent)
35 self.setupUi(self)
36
37 self.buttonBox.button(
38 QDialogButtonBox.StandardButton.Ok).setEnabled(False)
39
40 self.tagCombo.addItems(sorted(tagsList))
41 self.branchCombo.addItems(["default"] + sorted(branchesList))
42 if bookmarksList is not None:
43 self.bookmarkCombo.addItems(sorted(bookmarksList))
44 else:
45 self.bookmarkButton.setHidden(True)
46 self.bookmarkCombo.setHidden(True)
47
48 # connect various radio buttons and input fields
49 self.idButton.toggled.connect(self.__updateOK)
50 self.tagButton.toggled.connect(self.__updateOK)
51 self.branchButton.toggled.connect(self.__updateOK)
52 self.bookmarkButton.toggled.connect(self.__updateOK)
53 self.expressionButton.toggled.connect(self.__updateOK)
54
55 self.idEdit.textChanged.connect(self.__updateOK)
56 self.expressionEdit.textChanged.connect(self.__updateOK)
57
58 self.tagCombo.editTextChanged.connect(self.__updateOK)
59 self.branchCombo.editTextChanged.connect(self.__updateOK)
60 self.bookmarkCombo.editTextChanged.connect(self.__updateOK)
61
62 msh = self.minimumSizeHint()
63 self.resize(max(self.width(), msh.width()), msh.height())
64
65 @pyqtSlot()
66 def __updateOK(self):
67 """
68 Private slot to update the OK button.
69 """
70 enabled = True
71 if self.idButton.isChecked():
72 enabled = self.idEdit.text() != ""
73 elif self.tagButton.isChecked():
74 enabled = self.tagCombo.currentText() != ""
75 elif self.branchButton.isChecked():
76 enabled = self.branchCombo.currentText() != ""
77 elif self.bookmarkButton.isChecked():
78 enabled = self.bookmarkCombo.currentText() != ""
79 elif self.expressionButton.isChecked():
80 enabled = enabled and bool(self.expressionEdit.text())
81
82 self.buttonBox.button(
83 QDialogButtonBox.StandardButton.Ok).setEnabled(enabled)
84
85 def getParameters(self):
86 """
87 Public method to retrieve the merge data.
88
89 @return tuple naming the revision and a flag indicating a
90 forced merge
91 @rtype tuple of (str, bool)
92 """
93 if self.numberButton.isChecked():
94 rev = "rev({0})".format(self.numberSpinBox.value())
95 elif self.idButton.isChecked():
96 rev = "id({0})".format(self.idEdit.text())
97 elif self.tagButton.isChecked():
98 rev = self.tagCombo.currentText()
99 elif self.branchButton.isChecked():
100 rev = self.branchCombo.currentText()
101 elif self.bookmarkButton.isChecked():
102 rev = self.bookmarkCombo.currentText()
103 elif self.expressionButton.isChecked():
104 rev = self.expressionEdit.text()
105 else:
106 rev = ""
107
108 return rev, self.forceCheckBox.isChecked()

eric ide

mercurial