diff --git a/labelme/widgets/label_list_widget.py b/labelme/widgets/label_list_widget.py index bdd4ae497b37cfeab6c03bc48269da6900bc3071..68e4d371cc677df55f7d7a96d37eadb0edc54c6d 100644 --- a/labelme/widgets/label_list_widget.py +++ b/labelme/widgets/label_list_widget.py @@ -94,18 +94,27 @@ class LabelListWidgetItem(QtGui.QStandardItem): return '{}("{}")'.format(self.__class__.__name__, self.text()) +class StandardItemModel(QtGui.QStandardItemModel): + + itemDropped = QtCore.Signal() + + def removeRows(self, *args, **kwargs): + ret = super().removeRows(*args, **kwargs) + self.itemDropped.emit() + return ret + + class LabelListWidget(QtWidgets.QListView): itemDoubleClicked = QtCore.Signal(LabelListWidgetItem) itemSelectionChanged = QtCore.Signal(list, list) - itemDropped = QtCore.Signal() def __init__(self): super(LabelListWidget, self).__init__() self._selectedItems = [] self.setWindowFlags(Qt.Window) - self.setModel(QtGui.QStandardItemModel()) + self.setModel(StandardItemModel()) self.model().setItemPrototype(LabelListWidgetItem()) self.setItemDelegate(HTMLDelegate()) self.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) @@ -127,9 +136,9 @@ class LabelListWidget(QtWidgets.QListView): for i in range(len(self)): yield self[i] - def dropEvent(self, event): - super(LabelListWidget, self).dropEvent(event) - self.itemDropped.emit() + @property + def itemDropped(self): + return self.model().itemDropped @property def itemChanged(self):