Skip to content
Snippets Groups Projects
members_drag_drop_table.py 1.59 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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=1), 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._data
    
    
        @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_)