mirror of
https://github.com/chidiwilliams/buzz.git
synced 2026-03-14 22:55:46 +01:00
Will remember column visibility and add context menu to table header (#929)
This commit is contained in:
parent
6723821cb8
commit
2dbe80f537
1 changed files with 28 additions and 1 deletions
|
|
@ -1,4 +1,5 @@
|
|||
import enum
|
||||
import logging
|
||||
import os
|
||||
from dataclasses import dataclass
|
||||
from datetime import datetime, timedelta
|
||||
|
|
@ -13,6 +14,7 @@ from PyQt6.QtSql import QSqlTableModel, QSqlRecord
|
|||
from PyQt6.QtWidgets import (
|
||||
QWidget,
|
||||
QMenu,
|
||||
QHeaderView,
|
||||
QTableView,
|
||||
QAbstractItemView,
|
||||
QStyledItemDelegate,
|
||||
|
|
@ -143,6 +145,28 @@ column_definitions = [
|
|||
),
|
||||
]
|
||||
|
||||
class TranscriptionTasksTableHeaderView(QHeaderView):
|
||||
def __init__(self, orientation, parent=None):
|
||||
super().__init__(orientation, parent)
|
||||
|
||||
def contextMenuEvent(self, event):
|
||||
menu = QMenu(self)
|
||||
for definition in column_definitions:
|
||||
if not definition.hidden_toggleable:
|
||||
continue
|
||||
action = menu.addAction(definition.header)
|
||||
action.setCheckable(True)
|
||||
action.setChecked(not self.isSectionHidden(definition.column.value))
|
||||
action.toggled.connect(
|
||||
lambda checked, column_index=definition.column.value: self.on_column_checked(
|
||||
column_index, checked
|
||||
)
|
||||
)
|
||||
menu.exec(event.globalPos())
|
||||
|
||||
def on_column_checked(self, column_index: int, checked: bool):
|
||||
self.setSectionHidden(column_index, not checked)
|
||||
self.parent().save_column_visibility()
|
||||
|
||||
class TranscriptionTasksTableWidget(QTableView):
|
||||
return_clicked = pyqtSignal()
|
||||
|
|
@ -150,6 +174,8 @@ class TranscriptionTasksTableWidget(QTableView):
|
|||
def __init__(self, parent: Optional[QWidget] = None):
|
||||
super().__init__(parent)
|
||||
|
||||
self.setHorizontalHeader(TranscriptionTasksTableHeaderView(Qt.Orientation.Horizontal, self))
|
||||
|
||||
self._model = QSqlTableModel()
|
||||
self._model.setTable("transcription")
|
||||
self._model.setEditStrategy(QSqlTableModel.EditStrategy.OnManualSubmit)
|
||||
|
|
@ -172,7 +198,8 @@ class TranscriptionTasksTableWidget(QTableView):
|
|||
definition.header,
|
||||
)
|
||||
|
||||
visible = self.settings.settings.value(definition.id, True)
|
||||
visible = self.settings.settings.value(definition.id, "true") == "true"
|
||||
|
||||
self.setColumnHidden(definition.column.value, not visible)
|
||||
if definition.width is not None:
|
||||
self.setColumnWidth(definition.column.value, definition.width)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue