--- a/eric7/Plugins/VcsPlugins/vcsMercurial/HgRevisionSelectionDialog.py Wed Apr 13 18:16:23 2022 +0200 +++ b/eric7/Plugins/VcsPlugins/vcsMercurial/HgRevisionSelectionDialog.py Wed Apr 13 19:49:25 2022 +0200 @@ -18,15 +18,23 @@ Class implementing a dialog to select a revision. """ def __init__(self, tagsList, branchesList, bookmarksList=None, - noneLabel="", parent=None): + noneLabel="", revset=True, 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 noneLabel labeltext for "no revision selected" (string) - @param parent parent widget (QWidget) + @param tagsList list of tags + @type list of str + @param branchesList list of branches + @type list of str + @param bookmarksList list of bookmarks + @type list of str + @param noneLabel labeltext for "no revision selected" + @type str + @param revset flag indicating to allow the revision or ID given as a + revset + @type bool + @param parent parent widget + @type QWidget """ super().__init__(parent) self.setupUi(self) @@ -45,115 +53,60 @@ if noneLabel: self.noneButton.setText(noneLabel) + self.__revset = revset + self.expressionButton.setEnabled(revset) + + # connect various radio buttons and input fields + self.idButton.toggled.connect(self.__updateOK) + self.tagButton.toggled.connect(self.__updateOK) + self.branchButton.toggled.connect(self.__updateOK) + self.bookmarkButton.toggled.connect(self.__updateOK) + self.expressionButton.toggled.connect(self.__updateOK) + + self.idEdit.textChanged.connect(self.__updateOK) + self.expressionEdit.textChanged.connect(self.__updateOK) + + self.tagCombo.editTextChanged.connect(self.__updateOK) + self.branchCombo.editTextChanged.connect(self.__updateOK) + self.bookmarkCombo.editTextChanged.connect(self.__updateOK) + msh = self.minimumSizeHint() self.resize(max(self.width(), msh.width()), msh.height()) + @pyqtSlot() def __updateOK(self): """ Private slot to update the OK button. """ enabled = True if self.idButton.isChecked(): - enabled = self.idEdit.text() != "" + enabled = bool(self.idEdit.text()) elif self.tagButton.isChecked(): - enabled = self.tagCombo.currentText() != "" + enabled = bool(self.tagCombo.currentText()) elif self.branchButton.isChecked(): - enabled = self.branchCombo.currentText() != "" + enabled = bool(self.branchCombo.currentText()) elif self.bookmarkButton.isChecked(): - enabled = self.bookmarkCombo.currentText() != "" + enabled = bool(self.bookmarkCombo.currentText()) + elif self.expressionButton.isChecked(): + enabled = enabled and bool(self.expressionEdit.text()) self.buttonBox.button( QDialogButtonBox.StandardButton.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(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 getRevision(self, revset=True): + def getRevision(self): """ Public method to retrieve the selected revision. - @param revset flag indicating to get the revision or ID as a - revset - @type bool @return selected revision @rtype str """ if self.numberButton.isChecked(): - if revset: + if self.__revset: rev = "rev({0})".format(self.numberSpinBox.value()) else: rev = str(self.numberSpinBox.value()) elif self.idButton.isChecked(): - if revset: + if self.__revset: rev = "id({0})".format(self.idEdit.text()) else: rev = self.idEdit.text() @@ -163,6 +116,8 @@ rev = self.branchCombo.currentText() elif self.bookmarkButton.isChecked(): rev = self.bookmarkCombo.currentText() + elif self.expressionButton.isChecked(): + rev = self.expressionEdit.text() elif self.tipButton.isChecked(): rev = "tip" else: