diff --git a/MainWindow.py b/MainWindow.py index 469d87a..b0407e0 100644 --- a/MainWindow.py +++ b/MainWindow.py @@ -1,15 +1,18 @@ from typing import Any, cast from PySide6.QtCore import ( + QByteArray, QDate, QModelIndex, QPersistentModelIndex, QPoint, + QSettings, Qt, Signal, Slot, ) from PySide6.QtGui import ( + QCloseEvent, QColor, ) from PySide6.QtSql import QSqlTableModel @@ -22,7 +25,7 @@ from PySide6.QtWidgets import ( ) from docketModel import docketModel -from lib.utils import QStyleOptionViewItemInit +from lib.utils import QStyleOptionViewItemInit, readGeometry, writeGeometry from ui.MainWindow import Ui_MainWindow from workers import updateThread @@ -118,6 +121,7 @@ class MainWindow(QMainWindow, Ui_MainWindow): def __init__(self) -> None: super(MainWindow, self).__init__() self.setupUi(self) + readGeometry(self) model = casesModel() model.setTable("cases") @@ -167,6 +171,10 @@ class MainWindow(QMainWindow, Ui_MainWindow): ) return + def closeEvent(self, event: QCloseEvent) -> None: + writeGeometry(self) + super().closeEvent(event) + return @Slot(QModelIndex) # type: ignore def rowClicked(self, index: QModelIndex) -> None: if not index.isValid(): diff --git a/lib/utils.py b/lib/utils.py index 8f952f4..2d859e2 100644 --- a/lib/utils.py +++ b/lib/utils.py @@ -1,6 +1,6 @@ from typing import NoReturn, cast -from PySide6.QtCore import QCoreApplication, QObject, QRect, Signal +from PySide6.QtCore import QByteArray, QCoreApplication, QObject, QRect, QSettings, Signal from PySide6.QtGui import QColor, QFont from PySide6.QtSql import QSqlQuery from PySide6.QtWidgets import QStyleOptionViewItem, QWidget @@ -28,3 +28,24 @@ class QStyleOptionViewItemInit(QStyleOptionViewItem): widget: QWidget font: QFont text: str + +def openSettings(group:str|None = None) -> QSettings: + settings = QSettings("Troglodite Services", "SCOTUS Watch") + if group is not None: + settings.beginGroup(group) + return settings + +def readGeometry(widget:QWidget) -> None: + settings = openSettings(widget.objectName()) + geometry = settings.value('geometry', QByteArray()) + assert isinstance(geometry, QByteArray) + if not geometry.isEmpty(): + widget.restoreGeometry(geometry) + settings.endGroup() + return + +def writeGeometry(widget: QWidget) -> None: + settings = openSettings(widget.objectName()) + settings.setValue('geometry', widget.saveGeometry()) + settings.endGroup() + return diff --git a/pdfView.py b/pdfView.py index 09a3768..3a854f1 100644 --- a/pdfView.py +++ b/pdfView.py @@ -1,10 +1,12 @@ import math from PySide6.QtCore import QFile, QModelIndex, QPoint, Signal, Slot +from PySide6.QtGui import QCloseEvent from PySide6.QtPdf import QPdfBookmarkModel, QPdfDocument from PySide6.QtPdfWidgets import QPdfView from PySide6.QtWidgets import QComboBox, QDialog, QMenuBar, QSpinBox, QWidget +from lib.utils import readGeometry, writeGeometry from ui.pdfViewer import Ui_pdfViewer ZOOM_MULTIPLIER = math.sqrt(2.0) @@ -81,7 +83,9 @@ class PDFViewer(QDialog, Ui_pdfViewer): def __init__(self, parent: QWidget | None) -> None: super(PDFViewer, self).__init__(parent) self.setupUi(self) - + self.setObjectName('PDFViewer') + readGeometry(self) + print(self.objectName()) self.zoomSelector = ZoomSelector(self) self.pageSelector = QSpinBox(self) self.document = QPdfDocument(self) @@ -113,6 +117,11 @@ class PDFViewer(QDialog, Ui_pdfViewer): ) return + def closeEvent(self, event: QCloseEvent) -> None: + writeGeometry(self) + super().closeEvent(event) + return + @Slot(QFile) # type: ignore def open(self, file: QFile) -> None: # assert file.exists() diff --git a/scotus-pull.py b/scotus-pull.py index ba2afe0..f97b94f 100755 --- a/scotus-pull.py +++ b/scotus-pull.py @@ -2,6 +2,7 @@ import faulthandler import sys +from PySide6.QtCore import QSettings from PySide6.QtSql import ( QSqlDatabase, ) @@ -9,6 +10,8 @@ from PySide6.QtWidgets import ( QApplication, ) +from lib.utils import openSettings + faulthandler.enable() from MainWindow import MainWindow @@ -17,11 +20,13 @@ from MainWindow import MainWindow def main() -> int: # app = QApplication(sys.argv) + settings = openSettings('database') db = QSqlDatabase.addDatabase("QMYSQL") - db.setHostName("ceph5") - db.setDatabaseName("scotus") - db.setUserName("scotus") - db.setPassword("lechOtvirf8Om/") + db.setHostName(settings.value("hostname")) + db.setDatabaseName(settings.value("databasename","scotus")) # type: ignore + db.setUserName(settings.value("user","scotus")) # type: ignore + db.setPassword(settings.value("password")) + settings.endGroup() db.open() import lib.dbConfig diff --git a/tracker.org b/tracker.org deleted file mode 100644 index 0e7f661..0000000 --- a/tracker.org +++ /dev/null @@ -1,3 +0,0 @@ -#+AUTHOR: Christopher T. Johnson -#+STARTUP: indent -#+OPTIONS: num:nil toc:nil