1# -*- coding: utf-8 -*-
2
3# Copyright (c) 2014 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
4#
5
6"""
7Module implementing a dialog to enter the data for a branch operation.
8"""
9
10from PyQt5.QtCore import pyqtSlot
11from PyQt5.QtWidgets import QDialog, QDialogButtonBox
12
13from .Ui_HgBranchInputDialog import Ui_HgBranchInputDialog
14
15
16class HgBranchInputDialog(QDialog, Ui_HgBranchInputDialog):
17    """
18    Class implementing a dialog to enter the data for a branch operation.
19    """
20    def __init__(self, branches, parent=None):
21        """
22        Constructor
23
24        @param branches branch names to populate the branch list with
25            (list of string)
26        @param parent reference to the parent widget (QWidget)
27        """
28        super().__init__(parent)
29        self.setupUi(self)
30
31        self.branchComboBox.addItems(sorted(branches))
32        self.branchComboBox.setEditText("")
33
34        self.buttonBox.button(
35            QDialogButtonBox.StandardButton.Ok).setEnabled(False)
36
37        msh = self.minimumSizeHint()
38        self.resize(max(self.width(), msh.width()), msh.height())
39
40    @pyqtSlot(str)
41    def on_branchComboBox_editTextChanged(self, txt):
42        """
43        Private slot handling a change of the branch name.
44
45        @param txt contents of the branch combo box (string)
46        """
47        self.buttonBox.button(
48            QDialogButtonBox.StandardButton.Ok).setEnabled(bool(txt))
49
50    def getData(self):
51        """
52        Public method to get the data.
53
54        @return tuple of branch name (string) and a flag indicating to
55            commit the branch (boolean)
56        """
57        return (self.branchComboBox.currentText().replace(" ", "_"),
58                self.commitCheckBox.isChecked())
59