Skip to content

Changes needed to make PyQt6 work #154

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions spikeinterface_gui/backend_qt.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
}
16 changes: 8 additions & 8 deletions spikeinterface_gui/curationview.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,12 +63,12 @@ def _qt_make_layout(self):
v = QT.QVBoxLayout()
h.addLayout(v)
v.addWidget(QT.QLabel("<b>Merges</b>"))
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)

Expand All @@ -83,10 +83,10 @@ def _qt_make_layout(self):
v = QT.QVBoxLayout()
h.addLayout(v)
v.addWidget(QT.QLabel("<b>Deleted</b>"))
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)

Expand All @@ -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)
Expand All @@ -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
Expand Down
8 changes: 4 additions & 4 deletions spikeinterface_gui/mergeview.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down Expand Up @@ -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", [])
Expand Down
14 changes: 7 additions & 7 deletions spikeinterface_gui/spikelist.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand All @@ -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:
Expand All @@ -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:
Expand All @@ -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

Expand Down Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion spikeinterface_gui/tracemapview.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
2 changes: 1 addition & 1 deletion spikeinterface_gui/traceview.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
35 changes: 21 additions & 14 deletions spikeinterface_gui/unitlist.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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:
Expand Down Expand Up @@ -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):
Expand All @@ -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
Expand Down Expand Up @@ -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

Expand All @@ -250,28 +257,28 @@ 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

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)
Expand Down
6 changes: 3 additions & 3 deletions spikeinterface_gui/utils_qt.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()

Expand Down Expand Up @@ -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:
Expand Down Expand Up @@ -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):
Expand Down