src/eric7/Plugins/VcsPlugins/vcsGit/GitBranchPushDialog.py

Wed, 04 Oct 2023 17:50:59 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 04 Oct 2023 17:50:59 +0200
branch
eric7
changeset 10217
7888177e7463
parent 9971
773ad1f1ed22
child 10438
4cd7e5a8b3cf
permissions
-rw-r--r--

Fixed in issue with several editable combo box selectors, that the value could not be changed if the edited text differed by case only. This was caused by the standard QComboBox completer.

# -*- coding: utf-8 -*-

# Copyright (c) 2014 - 2023 Detlev Offenbach <detlev@die-offenbachs.de>
#

"""
Module implementing a dialog to select the data for pushing a branch.
"""

from PyQt6.QtCore import pyqtSlot
from PyQt6.QtWidgets import QDialog, QDialogButtonBox

from .Ui_GitBranchPushDialog import Ui_GitBranchPushDialog


class GitBranchPushDialog(QDialog, Ui_GitBranchPushDialog):
    """
    Class implementing a dialog to select the data for pushing a branch.
    """

    def __init__(self, branches, remotes, delete=False, parent=None):
        """
        Constructor

        @param branches list of branch names (list of string)
        @param remotes list of remote names (list of string)
        @param delete flag indicating a delete branch action (boolean)
        @param parent reference to the parent widget (QWidget)
        """
        super().__init__(parent)
        self.setupUi(self)

        self.__okButton = self.buttonBox.button(QDialogButtonBox.StandardButton.Ok)

        self.__allBranches = self.tr("<all branches>")

        if "origin" in remotes:
            self.remoteComboBox.addItem("origin")
            remotes.remove("origin")
        self.remoteComboBox.addItems(sorted(remotes))

        if delete:
            self.branchComboBox.addItem("")
        else:
            self.branchComboBox.addItem(self.__allBranches)
        if "main" in branches:
            if not delete:
                self.branchComboBox.addItem("main")
            branches.remove("main")
        if "master" in branches:
            if not delete:
                self.branchComboBox.addItem("master")
            branches.remove("master")
        self.branchComboBox.addItems(sorted(branches))

        if delete:
            self.__okButton.setEnabled(False)
            self.branchComboBox.setEditable(True)

    @pyqtSlot(str)
    def on_branchComboBox_editTextChanged(self, txt):
        """
        Private slot to handle a change of the branch name.

        @param txt branch name (string)
        """
        self.__okButton.setEnabled(bool(txt))

    def getData(self):
        """
        Public method to get the selected data.

        @return tuple of selected branch name, remote name and a flag
            indicating all branches (tuple of two strings and a boolean)
        """
        return (
            self.branchComboBox.currentText(),
            self.remoteComboBox.currentText(),
            self.branchComboBox.currentText() == self.__allBranches,
        )

eric ide

mercurial