diff --git a/spikeinterface_gui/mergeview.py b/spikeinterface_gui/mergeview.py index 1a6169f..66712ea 100644 --- a/spikeinterface_gui/mergeview.py +++ b/spikeinterface_gui/mergeview.py @@ -270,7 +270,7 @@ def _qt_make_layout(self): def _qt_refresh(self): from .myqt import QT - from .utils_qt import CustomItem + from .utils_qt import CustomItem, CustomItemUnitID self.table.clear() self.table.setSortingEnabled(False) @@ -287,6 +287,7 @@ def _qt_refresh(self): self.table.setColumnCount(len(labels)) self.table.setHorizontalHeaderLabels(labels) self.table.setRowCount(len(rows)) + unit_ids = self.controller.unit_ids for r, row in enumerate(rows): for c, label in enumerate(labels): @@ -298,7 +299,7 @@ def _qt_refresh(self): pix = QT.QPixmap(16, 16) pix.fill(color) icon = QT.QIcon(pix) - item = QT.QTableWidgetItem(name) + item = CustomItemUnitID(unit_ids, name) item.setData(QT.Qt.ItemDataRole.UserRole, unit_id) item.setFlags(QT.Qt.ItemIsEnabled | QT.Qt.ItemIsSelectable) self.table.setItem(r, c, item) diff --git a/spikeinterface_gui/utils_qt.py b/spikeinterface_gui/utils_qt.py index 4f18dd3..123508f 100644 --- a/spikeinterface_gui/utils_qt.py +++ b/spikeinterface_gui/utils_qt.py @@ -470,10 +470,14 @@ def __init__(self, unit_ids, *args, **kwargs): self.unit_ids = [f"{u}" for u in unit_ids] def __lt__(self, other): - ind = self.unit_ids.index(self.text()) - other_ind = self.unit_ids.index(other.text()) + # since mergeview has "{unit_id} (n={n_spikes})" as name, we split and keep the first part + unit_id = self.text().split(' ')[0] + other_unit_id = other.text().split(' ')[0] + ind = self.unit_ids.index(unit_id) + other_ind = self.unit_ids.index(other_unit_id) return ind < other_ind + class OrderableCheckItem(QT.QTableWidgetItem): # special case for checkbox def is_checked(self):