diff --git a/scotus-pull.py b/scotus-pull.py index 75466c9..6b25d74 100755 --- a/scotus-pull.py +++ b/scotus-pull.py @@ -1,22 +1,24 @@ #!venv/bin/python3 import datetime -import re import sys from typing import Any, cast from PySide6.QtCore import ( QCoreApplication, + QDate, + QEvent, QModelIndex, + QObject, QPersistentModelIndex, QRect, QSize, + Qt, Signal, Slot, ) from PySide6.QtGui import QColor, QPainter, QTextDocument from PySide6.QtSql import ( QSqlDatabase, - QSqlQuery, QSqlTableModel, ) from PySide6.QtWidgets import ( @@ -31,7 +33,6 @@ from PySide6.QtWidgets import ( ) from docketModel import docketModel -from lib.utils import query_error from ui.MainWindow import Ui_MainWindow from workers import loadCases, updateThread @@ -39,9 +40,8 @@ translate = QCoreApplication.translate class dateDelegate(QStyledItemDelegate): - def displayText(self, value: int, _: Any) -> str: - date = datetime.date.fromtimestamp(value) - return date.strftime("%B %-d, %Y") + def displayText(self, value: QDate, _: Any) -> str: + return value.toString("MMMM d, yyyy") class QStyleOptionViewItemInit(QStyleOptionViewItem): @@ -61,7 +61,7 @@ class activeDelegate(QStyledItemDelegate): options = cast(QStyleOptionViewItemInit, option) super().initStyleOption(options, index) assert isinstance(index, QModelIndex) - if index.siblingAtColumn(6).data() == 0: + if index.siblingAtColumn(5).data() == 0: options.backgroundBrush = QColor(0x444444) return @@ -80,6 +80,16 @@ class documentDelegate(QStyledItemDelegate): options.backgroundBrush = QColor(0x444444) return + def eventFilter(self, object: QObject, event: QEvent) -> bool: + if event.type() in [ QEvent.Type.MouseButtonPress, + QEvent.Type.MouseButtonRelease]: + return False + return super().eventFilter(object, event) + + def event(self, ev:QEvent) -> bool: + print(ev) + return super(documentDelegate,self).event(ev) + def paint( self, painter: QPainter, @@ -130,15 +140,12 @@ class MainWindow(QMainWindow, Ui_MainWindow): self.loadThread.finished.connect(self.updateDone) self.loadThread.start() - # model = QSqlQueryModel() model = QSqlTableModel() - query = QSqlQuery( - "SELECT * FROM cases ORDER BY SUBSTR(docket_id,1,3), " - "CAST(SUBSTR(docket_id,4) AS INT)" - ) - if not query.exec(): - query_error(query) - model.setQuery(query) + model.setTable("cases") + model.select() + model.setHeaderData(1, Qt.Orientation.Horizontal, "Docket") + model.setHeaderData(2, Qt.Orientation.Horizontal, "Petitioners") + model.setHeaderData(3, Qt.Orientation.Horizontal, "Respondents") self.casesView.setModel(model) self.casesView.setSelectionMode( @@ -148,14 +155,13 @@ class MainWindow(QMainWindow, Ui_MainWindow): QAbstractItemView.SelectionBehavior.SelectRows ) self.casesView.hideColumn(0) - self.casesView.hideColumn(2) - self.casesView.setItemDelegateForColumn(5, dateDelegate()) self.casesView.setItemDelegate(activeDelegate()) + self.casesView.setItemDelegateForColumn(4, dateDelegate()) self.casesView.resizeColumnToContents(1) self.casesView.resizeColumnToContents(5) header = self.casesView.horizontalHeader() + header.setSectionResizeMode(2, QHeaderView.ResizeMode.Fixed) header.setSectionResizeMode(3, QHeaderView.ResizeMode.Fixed) - header.setSectionResizeMode(4, QHeaderView.ResizeMode.Fixed) self.show() remaining = ( self.casesView.width() @@ -163,8 +169,8 @@ class MainWindow(QMainWindow, Ui_MainWindow): - header.sectionSize(5) - 5 ) + self.casesView.setColumnWidth(2, int(remaining * 0.5)) self.casesView.setColumnWidth(3, int(remaining * 0.5)) - self.casesView.setColumnWidth(4, int(remaining * 0.5)) self.casesView.verticalHeader().hide() self.casesView.resizeRowsToContents() self.casesView.doubleClicked.connect(self.rowClicked) @@ -205,6 +211,11 @@ class MainWindow(QMainWindow, Ui_MainWindow): self.updateThread.start() return + @Slot(QModelIndex) # type: ignore + def on_docketView_clicked(self, index: QModelIndex) -> None: + print(f"view clicked, cell: {index.column()}, {index.row()}") + return + @Slot() def updateDone(self) -> None: self.updateThread = None