Skip to content
Snippets Groups Projects
group_edit_controller.py 3.21 KiB
Newer Older
from PyQt5.QtWidgets import QLineEdit
from model.qtmodels.person_table_model import PersonTableModel
from utils.person_table import PersonTable
from windows import groupedit
from PyQt5 import QtWidgets as Qt
Jakub Štercl's avatar
Jakub Štercl committed
class GroupEdit(Qt.QWidget, groupedit.Ui_Form):
    NEW_GROUP = 0
    def __init__(self, main_window, group, parent=None):
Jakub Štercl's avatar
Jakub Štercl committed
        super(GroupEdit, self).__init__(parent)
        self.main_window = main_window
        if group == self.NEW_GROUP:
            self.setGroup(Group(Group.NEW_GROUP))
        else:
            self.setGroup(group)
        self._editName = QLineEdit()

        self.btnDelete.clicked.connect(self.deleteGroup)
        self.btnChangeName.clicked.connect(self.editName)

    def setGroup(self, group):
        self.group = group
        self.personTable = PersonTable(num_of_buttons=2, button_titles=("View", "-",), data=group.getMembers())
        self.layoutMembers.insertWidget(1, self.personTable)
        self.lblName.setText(group.name)

    def editName(self):
        self.btnChangeName.setText("OK")
        # hide label and remove it from layout
        self.lblName.hide()
        self.layoutName.removeWidget(self.lblName)
        # make line edit the same size
        if self.lblName.width() > 100:
            self._editName.setFixedWidth(self.lblName.width())
        else:
            self._editName.setFixedWidth(100)
        self._editName.setFixedHeight(self.lblName.height())
        # fill it with current name
        self._editName.setText(self.lblName.text())
        # add line edit to layout
        self.layoutName.insertWidget(1, self._editName)
        self._editName.show()
        # change signals of button
        self.btnChangeName.clicked.disconnect(self.editName)
        self.btnChangeName.clicked.connect(self.changeName)

        try:
            self.group.changeName(self._editName.text())
        except ValueError as e:
            msg = Qt.QMessageBox(self)
            msg.setIcon(Qt.QMessageBox.Critical)
            msg.setText(e.args[0])
            msg.setWindowTitle("Nelze přejmenovat skupinu")
            msg.setStandardButtons(Qt.QMessageBox.Ok)
            msg.exec()
            self._editName.setFocus()
            return
        self.btnChangeName.setText("Edit")
        # hide line edit
        self._editName.hide()
        self.layoutName.removeWidget(self._editName)
        #show updated label
        self.layoutName.insertWidget(1, self.lblName)
        self.lblName.setText(self._editName.text())
        self.lblName.show()
        # change signals of button
        self.btnChangeName.clicked.disconnect(self.changeName)
        self.btnChangeName.clicked.connect(self.editName)
        msg = Qt.QMessageBox(self)
        msg.setIcon(Qt.QMessageBox.Question)
        msg.setWindowTitle("Opravdu?")
        msg.setText("Opravdu chcete smazat skupinu " + self.group.name + "?")
        msg.setStandardButtons(Qt.QMessageBox.Ok|Qt.QMessageBox.Cancel)
        if (msg.exec() == Qt.QMessageBox.Ok):
            self.group.delete()
            self.main_window.dataChanged()
            self.main_window.goBack()