Create names for columns
Addresses #17 but it feels like we should have these definitions in the dbConfig. Which leads to the question of moving from QtSql to Pony ORM
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import enum
|
||||
from typing import Any, cast
|
||||
|
||||
from PySide6.QtCore import (
|
||||
@@ -79,11 +80,19 @@ class activeDelegate(QStyledItemDelegate):
|
||||
|
||||
|
||||
class casesModel(QSqlTableModel):
|
||||
class ColumnNames(enum.IntEnum):
|
||||
case_id = 0
|
||||
docket_id = 1
|
||||
petitioners = 2
|
||||
respondents = 3
|
||||
date = 4
|
||||
active = 5
|
||||
|
||||
def flags(self, index: QModelIndex | QPersistentModelIndex) -> Qt.ItemFlag:
|
||||
if not index.isValid():
|
||||
return Qt.ItemFlag.NoItemFlags
|
||||
flags = super(casesModel, self).flags(index)
|
||||
if index.column() == 5:
|
||||
if index.column() == casesModel.ColumnNames.active:
|
||||
flags = (
|
||||
Qt.ItemFlag.ItemIsEnabled
|
||||
| Qt.ItemFlag.ItemIsEditable
|
||||
@@ -98,7 +107,7 @@ class casesModel(QSqlTableModel):
|
||||
) -> Any:
|
||||
if not index.isValid():
|
||||
return None
|
||||
if index.column() == 5:
|
||||
if index.column() == casesModel.ColumnNames.active:
|
||||
if role == Qt.ItemDataRole.CheckStateRole:
|
||||
value = super(casesModel, self).data(index)
|
||||
return (
|
||||
@@ -116,7 +125,7 @@ class casesModel(QSqlTableModel):
|
||||
value: Any,
|
||||
role: int = Qt.ItemDataRole.DisplayRole,
|
||||
) -> bool:
|
||||
if role == Qt.ItemDataRole.CheckStateRole and index.column() == 5:
|
||||
if role == Qt.ItemDataRole.CheckStateRole and index.column() == casesModel.ColumnNames.active:
|
||||
super(casesModel, self).setData(index, 1 if value else 0)
|
||||
return True
|
||||
return super().setData(index, value, role)
|
||||
@@ -139,11 +148,11 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
"1=1 ORDER BY SUBSTRING(docket_id, 1, 3), CAST(SUBSTRING(docket_id,4) AS INTEGER)"
|
||||
)
|
||||
model.select()
|
||||
model.setHeaderData(1, Qt.Orientation.Horizontal, "Docket")
|
||||
model.setHeaderData(2, Qt.Orientation.Horizontal, "Petitioners")
|
||||
model.setHeaderData(3, Qt.Orientation.Horizontal, "Respondents")
|
||||
model.setHeaderData(4, Qt.Orientation.Horizontal, "Date")
|
||||
model.setHeaderData(5, Qt.Orientation.Horizontal, "Active")
|
||||
model.setHeaderData(casesModel.ColumnNames.docket_id, Qt.Orientation.Horizontal, "Docket")
|
||||
model.setHeaderData(casesModel.ColumnNames.petitioners, Qt.Orientation.Horizontal, "Petitioners")
|
||||
model.setHeaderData(casesModel.ColumnNames.respondents, Qt.Orientation.Horizontal, "Respondents")
|
||||
model.setHeaderData(casesModel.ColumnNames.date, Qt.Orientation.Horizontal, "Date")
|
||||
model.setHeaderData(casesModel.ColumnNames.active, Qt.Orientation.Horizontal, "Active")
|
||||
self.casesView.setModel(model)
|
||||
|
||||
self.casesView.setSelectionMode(
|
||||
@@ -152,23 +161,23 @@ class MainWindow(QMainWindow, Ui_MainWindow):
|
||||
self.casesView.setSelectionBehavior(
|
||||
QAbstractItemView.SelectionBehavior.SelectRows
|
||||
)
|
||||
self.casesView.hideColumn(0)
|
||||
self.casesView.hideColumn(casesModel.ColumnNames.case_id)
|
||||
self.casesView.setItemDelegate(activeDelegate())
|
||||
self.casesView.setItemDelegateForColumn(4, dateDelegate())
|
||||
self.casesView.resizeColumnToContents(1)
|
||||
self.casesView.resizeColumnToContents(4)
|
||||
self.casesView.setItemDelegateForColumn(casesModel.ColumnNames.date, dateDelegate())
|
||||
self.casesView.resizeColumnToContents(casesModel.ColumnNames.docket_id)
|
||||
self.casesView.resizeColumnToContents(casesModel.ColumnNames.date)
|
||||
header = self.casesView.horizontalHeader()
|
||||
header.setSectionResizeMode(2, QHeaderView.ResizeMode.Fixed)
|
||||
header.setSectionResizeMode(3, QHeaderView.ResizeMode.Fixed)
|
||||
header.setSectionResizeMode(casesModel.ColumnNames.petitioners, QHeaderView.ResizeMode.Fixed)
|
||||
header.setSectionResizeMode(casesModel.ColumnNames.respondents, QHeaderView.ResizeMode.Fixed)
|
||||
self.show()
|
||||
remaining = (
|
||||
self.casesView.width()
|
||||
- header.sectionSize(1)
|
||||
- header.sectionSize(4)
|
||||
- header.sectionSize(casesModel.ColumnNames.docket_id)
|
||||
- header.sectionSize(casesModel.ColumnNames.date)
|
||||
- 5
|
||||
)
|
||||
self.casesView.setColumnWidth(2, int(remaining * 0.5))
|
||||
self.casesView.setColumnWidth(3, int(remaining * 0.5))
|
||||
self.casesView.setColumnWidth(casesModel.ColumnNames.petitioners, int(remaining * 0.5))
|
||||
self.casesView.setColumnWidth(casesModel.ColumnNames.respondents, int(remaining * 0.5))
|
||||
self.casesView.verticalHeader().hide()
|
||||
self.casesView.resizeRowsToContents()
|
||||
self.casesView.doubleClicked.connect(self.rowClicked)
|
||||
|
||||
Reference in New Issue
Block a user