from PyQt5.QtCore import Qt, pyqtSignal, pyqtSlot from PyQt5.QtWidgets import QLabel, QAbstractItemView, QHBoxLayout, QPushButton from utils.qtmodels.members_drag_drop_table_model import MembersDragDropTableModel from utils.table import ElemTable class MembersDragDropTable(ElemTable): deleteClicked = pyqtSignal(int) def __init__(self, id_, data, label_text, parent=None): super(MembersDragDropTable, self).__init__(MembersDragDropTableModel(id_, data, num_columns=2), 0, [], parent) self.id_ = id_ layout = QHBoxLayout() self.lblName = QLabel(label_text) layout.addWidget(self.lblName) btn = QPushButton("-") btn.clicked.connect(self.onDeleteClicked) layout.addStretch() layout.addWidget(btn) self.layout.insertLayout(0, layout) self.table.setDragDropMode(QAbstractItemView.DragDrop) self.table.setDefaultDropAction(Qt.MoveAction) self.table.setAcceptDrops(True) self.table.setDragEnabled(True) self.table.setDropIndicatorShown(False) def removeMember(self, member_id): self.source_model.removeMemberById(member_id) def isEmpty(self): return self.source_model.rowCount() <= 0 def getAllData(self): return self.source_model._people @property def name(self): return self.lblName.text() @property def id_(self): return self.id__ @id_.setter def id_(self, id_): self.id__ = id_ self.source_model.id_ = id_ @pyqtSlot() def onDeleteClicked(self): self.deleteClicked.emit(self.id_)