diff --git a/spikeinterface_gui/backend_qt.py b/spikeinterface_gui/backend_qt.py index f3e10cc..c68ccfb 100644 --- a/spikeinterface_gui/backend_qt.py +++ b/spikeinterface_gui/backend_qt.py @@ -347,11 +347,11 @@ def refresh(self): areas = { - 'right' : QT.Qt.RightDockWidgetArea, - 'left' : QT.Qt.LeftDockWidgetArea, + 'right' : QT.Qt.DockWidgetArea.RightDockWidgetArea, + 'left' : QT.Qt.DockWidgetArea.LeftDockWidgetArea, } orientations = { - 'horizontal' : QT.Qt.Horizontal, - 'vertical' : QT.Qt.Vertical, + 'horizontal' : QT.Qt.Orientation.Horizontal, + 'vertical' : QT.Qt.Orientation.Vertical, } diff --git a/spikeinterface_gui/curationview.py b/spikeinterface_gui/curationview.py index b6ed141..5e971dd 100644 --- a/spikeinterface_gui/curationview.py +++ b/spikeinterface_gui/curationview.py @@ -63,12 +63,12 @@ def _qt_make_layout(self): v = QT.QVBoxLayout() h.addLayout(v) v.addWidget(QT.QLabel("Merges")) - self.table_merge = QT.QTableWidget(selectionMode=QT.QAbstractItemView.SingleSelection, - selectionBehavior=QT.QAbstractItemView.SelectRows) + self.table_merge = QT.QTableWidget(selectionMode=QT.QAbstractItemView.SelectionMode.SingleSelection, + selectionBehavior=QT.QAbstractItemView.SelectionBehavior.SelectRows) # self.table_merge.setContextMenuPolicy(QT.Qt.CustomContextMenu) v.addWidget(self.table_merge) - self.table_merge.setContextMenuPolicy(QT.Qt.CustomContextMenu) + self.table_merge.setContextMenuPolicy(QT.ContextMenuPolicy.CustomContextMenu) self.table_merge.customContextMenuRequested.connect(self._qt_open_context_menu_merge) self.table_merge.itemSelectionChanged.connect(self._qt_on_item_selection_changed_merge) @@ -83,10 +83,10 @@ def _qt_make_layout(self): v = QT.QVBoxLayout() h.addLayout(v) v.addWidget(QT.QLabel("Deleted")) - self.table_delete = QT.QTableWidget(selectionMode=QT.QAbstractItemView.SingleSelection, - selectionBehavior=QT.QAbstractItemView.SelectRows) + self.table_delete = QT.QTableWidget(selectionMode=QT.QAbstractItemView.SelectionMode.SingleSelection, + selectionBehavior=QT.QAbstractItemView.SelectionBehavior.SelectRows) v.addWidget(self.table_delete) - self.table_delete.setContextMenuPolicy(QT.Qt.CustomContextMenu) + self.table_delete.setContextMenuPolicy(QT.ContextMenuPolicy.CustomContextMenu) self.table_delete.customContextMenuRequested.connect(self._qt_open_context_menu_delete) self.table_delete.itemSelectionChanged.connect(self._qt_on_item_selection_changed_delete) @@ -109,7 +109,7 @@ def _qt_refresh(self): self.table_merge.setSortingEnabled(False) for ix, group in enumerate(merged_units): item = QT.QTableWidgetItem(str(group)) - item.setFlags(QT.Qt.ItemIsEnabled|QT.Qt.ItemIsSelectable) + item.setFlags(QT.ItemFlag.ItemIsEnabled|QT.ItemFlag.ItemIsSelectable) self.table_merge.setItem(ix, 0, item) for i in range(self.table_merge.columnCount()): self.table_merge.resizeColumnToContents(i) @@ -127,7 +127,7 @@ def _qt_refresh(self): pix.fill(color) icon = QT.QIcon(pix) item = QT.QTableWidgetItem( f'{unit_id}') - item.setFlags(QT.Qt.ItemIsEnabled|QT.Qt.ItemIsSelectable) + item.setFlags(QT.ItemFlag.ItemIsEnabled|QT.ItemFlag.ItemIsSelectable) self.table_delete.setItem(i,0, item) item.setIcon(icon) item.unit_id = unit_id diff --git a/spikeinterface_gui/mergeview.py b/spikeinterface_gui/mergeview.py index 8f5fa76..9b309a4 100644 --- a/spikeinterface_gui/mergeview.py +++ b/spikeinterface_gui/mergeview.py @@ -205,9 +205,9 @@ def _qt_make_layout(self): self.sorting_column = 2 self.sorting_direction = QT.Qt.SortOrder.AscendingOrder - self.table = QT.QTableWidget(selectionMode=QT.QAbstractItemView.SingleSelection, - selectionBehavior=QT.QAbstractItemView.SelectRows) - self.table.setContextMenuPolicy(QT.Qt.CustomContextMenu) + self.table = QT.QTableWidget(selectionMode=QT.QAbstractItemView.SelectionMode.SingleSelection, + selectionBehavior=QT.QAbstractItemView.SelectionBehavior.SelectRows) + self.table.setContextMenuPolicy(QT.ContextMenuPolicy.CustomContextMenu) self.layout.addWidget(self.table) self.table.itemSelectionChanged.connect(self._qt_on_item_selection_changed) @@ -250,7 +250,7 @@ def _qt_refresh(self): icon = QT.QIcon(pix) item = QT.QTableWidgetItem(name) item.setData(QT.Qt.ItemDataRole.UserRole, unit_id) - item.setFlags(QT.Qt.ItemIsEnabled | QT.Qt.ItemIsSelectable) + item.setFlags(QT.ItemFlag.ItemIsEnabled | QT.ItemFlag.ItemIsSelectable) self.table.setItem(r, c, item) item.setIcon(icon) item.group_ids = row.get("group_ids", []) diff --git a/spikeinterface_gui/spikelist.py b/spikeinterface_gui/spikelist.py index 9058064..19e7b3a 100644 --- a/spikeinterface_gui/spikelist.py +++ b/spikeinterface_gui/spikelist.py @@ -45,7 +45,7 @@ def data(self, index, role): if not index.isValid(): return None - if role not in (QT.Qt.DisplayRole, QT.Qt.DecorationRole): + if role not in (QT.ItemDataRole.DisplayRole, QT.ItemDataRole.DecorationRole): return col = index.column() @@ -55,7 +55,7 @@ def data(self, index, role): spike = self.controller.spikes[abs_ind] unit_id = self.controller.unit_ids[spike['unit_index']] - if role ==QT.Qt.DisplayRole : + if role ==QT.ItemDataRole.DisplayRole : if col == 0: return '{}'.format(abs_ind) elif col == 1: @@ -70,7 +70,7 @@ def data(self, index, role): return '{}'.format(spike['rand_selected']) else: return None - elif role == QT.Qt.DecorationRole : + elif role == QT.ItemDataRole.DecorationRole : if col != 0: return None if unit_id in self.icons: @@ -84,10 +84,10 @@ def data(self, index, role): def flags(self, index): if not index.isValid(): return QT.Qt.NoItemFlags - return QT.Qt.ItemIsEnabled | QT.Qt.ItemIsSelectable #| Qt.ItemIsDragEnabled + return QT.ItemFlag.ItemIsEnabled | QT.ItemFlag.ItemIsSelectable #| Qt.ItemIsDragEnabled def headerData(self, section, orientation, role): - if orientation == QT.Qt.Horizontal and role == QT.Qt.DisplayRole: + if orientation == QT.Qt.Orientation.Horizontal and role == QT.ItemDataRole.DisplayRole: return self.columns[section] return @@ -158,8 +158,8 @@ def _qt_make_layout(self): but.clicked.connect(self.refresh) self.tree = QT.QTreeView(minimumWidth = 100, uniformRowHeights = True, - selectionMode= QT.QAbstractItemView.ExtendedSelection, selectionBehavior = QT.QTreeView.SelectRows, - contextMenuPolicy = QT.Qt.CustomContextMenu,) + selectionMode= QT.QAbstractItemView.SelectionMode.ExtendedSelection, selectionBehavior = QT.QAbstractItemView.SelectionBehavior.SelectRows, + contextMenuPolicy = QT.ContextMenuPolicy.CustomContextMenu,) self.layout.addWidget(self.tree) diff --git a/spikeinterface_gui/tracemapview.py b/spikeinterface_gui/tracemapview.py index 31c04e3..7d3f854 100644 --- a/spikeinterface_gui/tracemapview.py +++ b/spikeinterface_gui/tracemapview.py @@ -141,7 +141,7 @@ def _qt_make_layout(self, **kargs): self.plot.addItem(self.scatter) - self.scroll_time = QT.QScrollBar(orientation=QT.Qt.Horizontal) + self.scroll_time = QT.QScrollBar(orientation=QT.Qt.Orientation.Horizontal) g.addWidget(self.scroll_time, 1,1) self.scroll_time.valueChanged.connect(self._qt_on_scroll_time) diff --git a/spikeinterface_gui/traceview.py b/spikeinterface_gui/traceview.py index c2c00cb..41b38bd 100644 --- a/spikeinterface_gui/traceview.py +++ b/spikeinterface_gui/traceview.py @@ -406,7 +406,7 @@ def _qt_make_layout(self): self.scatter = pg.ScatterPlotItem(size=10, pxMode = True) self.plot.addItem(self.scatter) - self.scroll_time = QT.QScrollBar(orientation=QT.Qt.Horizontal) + self.scroll_time = QT.QScrollBar(orientation=QT.Qt.Orientation.Horizontal) g.addWidget(self.scroll_time, 1,1) self.scroll_time.valueChanged.connect(self._qt_on_scroll_time) diff --git a/spikeinterface_gui/unitlist.py b/spikeinterface_gui/unitlist.py index c13829d..9e48ca4 100644 --- a/spikeinterface_gui/unitlist.py +++ b/spikeinterface_gui/unitlist.py @@ -75,7 +75,7 @@ def _qt_make_layout(self): self.table.itemChanged.connect(self._qt_on_item_changed) self.table.cellDoubleClicked.connect(self._qt_on_double_clicked) self.shortcut_visible = QT.QShortcut(self.qt_widget) - self.shortcut_visible.setKey(QT.QKeySequence(QT.Key_Space)) + self.shortcut_visible.setKey(QT.QKeySequence(QT.Key.Key_Space)) self.shortcut_visible.activated.connect(self.on_visible_shortcut) # Enable column dragging @@ -93,11 +93,11 @@ def _qt_make_layout(self): act.triggered.connect(self.hide_all) self.shortcut_only_previous = QT.QShortcut(self.qt_widget) - self.shortcut_only_previous.setKey(QT.QKeySequence(QT.CTRL | QT.Key_Up)) + self.shortcut_only_previous.setKey(QT.QKeySequence(QT.KeyboardModifier.ControlModifier | QT.Key.Key_Up)) self.shortcut_only_previous.activated.connect(self._qt_on_only_previous_shortcut) self.shortcut_only_next = QT.QShortcut(self.qt_widget) - self.shortcut_only_next.setKey(QT.QKeySequence(QT.CTRL | QT.Key_Down)) + self.shortcut_only_next.setKey(QT.QKeySequence(QT.KeyboardModifier.ControlModifier | QT.Key.Key_Down)) self.shortcut_only_next.activated.connect(self._qt_on_only_next_shortcut) if self.controller.curation: @@ -158,10 +158,10 @@ def _qt_refresh_visibility_items(self): for unit_id in self.controller.unit_ids: item = self.items_visibility[unit_id] - item.setCheckState(QT.Qt.Unchecked) + item.setCheckState(QT.CheckState.Unchecked) for unit_id in self.controller.get_visible_unit_ids(): item = self.items_visibility[unit_id] - item.setCheckState(QT.Qt.Checked) + item.setCheckState(QT.CheckState.Checked) self._qt_refresh_color_icons() def _qt_refresh_color_icons(self): @@ -188,10 +188,17 @@ def _qt_refresh(self): def _qt_set_default_label(self, label): + selected_unit_ids = self.get_selected_unit_ids() for unit_id in selected_unit_ids: self.controller.set_label_to_unit(unit_id, "quality", label) - self._qt_full_table_refresh() + + selected_rows = self._qt_get_selected_rows() + for row in selected_rows: + curation_label = self.table.item(row, self.label_columns[0]) + curation_label.setText(label) + + self._qt_on_only_next_shortcut() def _qt_full_table_refresh(self): # TODO sam make this faster @@ -226,10 +233,10 @@ def _qt_full_table_refresh(self): self.table.setColumnCount(len(column_labels)) self.table.setHorizontalHeaderLabels(column_labels) - self.table.setContextMenuPolicy(QT.Qt.CustomContextMenu) + self.table.setContextMenuPolicy(QT.ContextMenuPolicy.CustomContextMenu) self.table.customContextMenuRequested.connect(self._qt_on_open_context_menu) - self.table.setSelectionMode(QT.QAbstractItemView.ExtendedSelection) - self.table.setSelectionBehavior(QT.QAbstractItemView.SelectRows) + self.table.setSelectionMode(QT.QAbstractItemView.SelectionMode.ExtendedSelection) + self.table.setSelectionBehavior(QT.QAbstractItemView.SelectionBehavior.SelectRows) unit_ids = self.controller.unit_ids @@ -250,15 +257,15 @@ def _qt_full_table_refresh(self): # item = QT.QTableWidgetItem( f'{unit_id}') item = CustomItemUnitID(unit_ids, f'{unit_id}') - item.setFlags(QT.Qt.ItemIsEnabled|QT.Qt.ItemIsSelectable) + item.setFlags(QT.ItemFlag.ItemIsEnabled|QT.ItemFlag.ItemIsSelectable) self.table.setItem(i,0, item) item.setIcon(icon) self.items_icon[unit_id] = item item = OrderableCheckItem('') - item.setFlags(QT.Qt.ItemIsEnabled|QT.Qt.ItemIsSelectable|QT.Qt.ItemIsUserCheckable) + item.setFlags(QT.ItemFlag.ItemIsEnabled|QT.ItemFlag.ItemIsSelectable|QT.ItemFlag.ItemIsUserCheckable) - item.setCheckState({ False: QT.Qt.Unchecked, True : QT.Qt.Checked}[unit_id in visible_unit_ids]) + item.setCheckState({ False: QT.CheckState.Unchecked, True : QT.CheckState.Checked}[unit_id in visible_unit_ids]) self.table.setItem(i,1, item) item.unit_id = unit_id self.items_visibility[unit_id] = item @@ -266,12 +273,12 @@ def _qt_full_table_refresh(self): channel_index = self.controller.get_extremum_channel(unit_id) channel_id = self.controller.channel_ids[channel_index] item = CustomItem(f'{channel_id}') - item.setFlags(QT.Qt.ItemIsEnabled|QT.Qt.ItemIsSelectable) + item.setFlags(QT.ItemFlag.ItemIsEnabled|QT.ItemFlag.ItemIsSelectable) self.table.setItem(i, 2, item) num_chan = np.sum(self.controller.get_sparsity_mask()[i, :]) item = CustomItem(f'{num_chan}') - item.setFlags(QT.Qt.ItemIsEnabled|QT.Qt.ItemIsSelectable) + item.setFlags(QT.ItemFlag.ItemIsEnabled|QT.ItemFlag.ItemIsSelectable) self.table.setItem(i, 3, item) n_first = len(internal_column_names) diff --git a/spikeinterface_gui/utils_qt.py b/spikeinterface_gui/utils_qt.py index a5b5044..2240c6b 100644 --- a/spikeinterface_gui/utils_qt.py +++ b/spikeinterface_gui/utils_qt.py @@ -40,7 +40,7 @@ def add_stretch_to_qtoolbar(tb): # add an expending widget + a seprator empty = QT.QWidget() - empty.setSizePolicy(QT.QSizePolicy.Expanding, QT.QSizePolicy.Preferred) + empty.setSizePolicy(QT.QSizePolicy.Policy.Expanding, QT.QSizePolicy.Policy.Preferred) tb.addWidget(empty) tb.addSeparator() @@ -253,7 +253,7 @@ def __init__(self, parent = None, show_slider = True, show_spinbox = True) : self.setLayout(self.layout) if show_slider: - self.slider = QT.QSlider(orientation=QT.Qt.Horizontal, minimum=0, maximum=999) + self.slider = QT.QSlider(orientation=QT.Qt.Orientation.Horizontal, minimum=0, maximum=999) self.layout.addWidget(self.slider) self.slider.valueChanged.connect(self.slider_changed) else: @@ -470,7 +470,7 @@ def __lt__(self, other): class OrderableCheckItem(QT.QTableWidgetItem): # special case for checkbox def is_checked(self): - checked = {QT.Qt.Unchecked : False, QT.Qt.Checked : True}[self.checkState()] + checked = {QT.CheckState.Unchecked : False, QT.CheckState.Checked : True}[self.checkState()] return checked def __lt__(self, other):