Skip to content
Snippets Groups Projects
group_edit_controller.py 2.15 KiB
Newer Older
from PyQt5.QtWidgets import QLineEdit
from model.qtmodels.person_table_model import PersonTableModel
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.setupUi(self)
        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.tableMembers.setModel(PersonTableModel(group.getMembers(), 2))
        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())
        # 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)

    def changeName(self):
        self._checkName()
        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)

    def _checkName(self):
        ...

    def deleteGroup(self):
        self.group.delete()