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 from model.group import Group class GroupEdit(Qt.QWidget, groupedit.Ui_Form): NEW_GROUP = 0 def __init__(self, main_window, group, parent=None): super(GroupEdit, self).__init__(parent) self.setupUi(self) self.main_window = main_window if group == self.NEW_GROUP: self.setGroup(Group(Group.NEW_GROUP)) else: self.setGroup(group) self._editName = QLineEdit() # insert others table self.othersTable = PersonTable() self.layoutOthers.insertWidget(1, self.othersTable) self.btnDelete.clicked.connect(self.deleteGroup) self.btnChangeName.clicked.connect(self.editName) def setGroup(self, group): self.group = group self.personTable = PersonTable(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()) # 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) #TODO database 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) # TODO check name (long enough (but not too much :)), unique ... def _checkName(self): ... # TODO confirmation (QMessage) def deleteGroup(self): self.group.delete() self.main_window.dataChanged() self.main_window.goBack()