Move to QSettings for database credentials.

fixes: #1
This commit is contained in:
Christopher T. Johnson
2025-02-24 16:32:12 -05:00
parent f68e6c65cc
commit 92ad7efaad
5 changed files with 50 additions and 10 deletions

View File

@@ -1,15 +1,18 @@
from typing import Any, cast from typing import Any, cast
from PySide6.QtCore import ( from PySide6.QtCore import (
QByteArray,
QDate, QDate,
QModelIndex, QModelIndex,
QPersistentModelIndex, QPersistentModelIndex,
QPoint, QPoint,
QSettings,
Qt, Qt,
Signal, Signal,
Slot, Slot,
) )
from PySide6.QtGui import ( from PySide6.QtGui import (
QCloseEvent,
QColor, QColor,
) )
from PySide6.QtSql import QSqlTableModel from PySide6.QtSql import QSqlTableModel
@@ -22,7 +25,7 @@ from PySide6.QtWidgets import (
) )
from docketModel import docketModel from docketModel import docketModel
from lib.utils import QStyleOptionViewItemInit from lib.utils import QStyleOptionViewItemInit, readGeometry, writeGeometry
from ui.MainWindow import Ui_MainWindow from ui.MainWindow import Ui_MainWindow
from workers import updateThread from workers import updateThread
@@ -118,6 +121,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self) -> None: def __init__(self) -> None:
super(MainWindow, self).__init__() super(MainWindow, self).__init__()
self.setupUi(self) self.setupUi(self)
readGeometry(self)
model = casesModel() model = casesModel()
model.setTable("cases") model.setTable("cases")
@@ -167,6 +171,10 @@ class MainWindow(QMainWindow, Ui_MainWindow):
) )
return return
def closeEvent(self, event: QCloseEvent) -> None:
writeGeometry(self)
super().closeEvent(event)
return
@Slot(QModelIndex) # type: ignore @Slot(QModelIndex) # type: ignore
def rowClicked(self, index: QModelIndex) -> None: def rowClicked(self, index: QModelIndex) -> None:
if not index.isValid(): if not index.isValid():

View File

@@ -1,6 +1,6 @@
from typing import NoReturn, cast 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.QtGui import QColor, QFont
from PySide6.QtSql import QSqlQuery from PySide6.QtSql import QSqlQuery
from PySide6.QtWidgets import QStyleOptionViewItem, QWidget from PySide6.QtWidgets import QStyleOptionViewItem, QWidget
@@ -28,3 +28,24 @@ class QStyleOptionViewItemInit(QStyleOptionViewItem):
widget: QWidget widget: QWidget
font: QFont font: QFont
text: str 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

View File

@@ -1,10 +1,12 @@
import math import math
from PySide6.QtCore import QFile, QModelIndex, QPoint, Signal, Slot from PySide6.QtCore import QFile, QModelIndex, QPoint, Signal, Slot
from PySide6.QtGui import QCloseEvent
from PySide6.QtPdf import QPdfBookmarkModel, QPdfDocument from PySide6.QtPdf import QPdfBookmarkModel, QPdfDocument
from PySide6.QtPdfWidgets import QPdfView from PySide6.QtPdfWidgets import QPdfView
from PySide6.QtWidgets import QComboBox, QDialog, QMenuBar, QSpinBox, QWidget from PySide6.QtWidgets import QComboBox, QDialog, QMenuBar, QSpinBox, QWidget
from lib.utils import readGeometry, writeGeometry
from ui.pdfViewer import Ui_pdfViewer from ui.pdfViewer import Ui_pdfViewer
ZOOM_MULTIPLIER = math.sqrt(2.0) ZOOM_MULTIPLIER = math.sqrt(2.0)
@@ -81,7 +83,9 @@ class PDFViewer(QDialog, Ui_pdfViewer):
def __init__(self, parent: QWidget | None) -> None: def __init__(self, parent: QWidget | None) -> None:
super(PDFViewer, self).__init__(parent) super(PDFViewer, self).__init__(parent)
self.setupUi(self) self.setupUi(self)
self.setObjectName('PDFViewer')
readGeometry(self)
print(self.objectName())
self.zoomSelector = ZoomSelector(self) self.zoomSelector = ZoomSelector(self)
self.pageSelector = QSpinBox(self) self.pageSelector = QSpinBox(self)
self.document = QPdfDocument(self) self.document = QPdfDocument(self)
@@ -113,6 +117,11 @@ class PDFViewer(QDialog, Ui_pdfViewer):
) )
return return
def closeEvent(self, event: QCloseEvent) -> None:
writeGeometry(self)
super().closeEvent(event)
return
@Slot(QFile) # type: ignore @Slot(QFile) # type: ignore
def open(self, file: QFile) -> None: def open(self, file: QFile) -> None:
# assert file.exists() # assert file.exists()

View File

@@ -2,6 +2,7 @@
import faulthandler import faulthandler
import sys import sys
from PySide6.QtCore import QSettings
from PySide6.QtSql import ( from PySide6.QtSql import (
QSqlDatabase, QSqlDatabase,
) )
@@ -9,6 +10,8 @@ from PySide6.QtWidgets import (
QApplication, QApplication,
) )
from lib.utils import openSettings
faulthandler.enable() faulthandler.enable()
from MainWindow import MainWindow from MainWindow import MainWindow
@@ -17,11 +20,13 @@ from MainWindow import MainWindow
def main() -> int: def main() -> int:
# #
app = QApplication(sys.argv) app = QApplication(sys.argv)
settings = openSettings('database')
db = QSqlDatabase.addDatabase("QMYSQL") db = QSqlDatabase.addDatabase("QMYSQL")
db.setHostName("ceph5") db.setHostName(settings.value("hostname"))
db.setDatabaseName("scotus") db.setDatabaseName(settings.value("databasename","scotus")) # type: ignore
db.setUserName("scotus") db.setUserName(settings.value("user","scotus")) # type: ignore
db.setPassword("lechOtvirf8Om/") db.setPassword(settings.value("password"))
settings.endGroup()
db.open() db.open()
import lib.dbConfig import lib.dbConfig

View File

@@ -1,3 +0,0 @@
#+AUTHOR: Christopher T. Johnson
#+STARTUP: indent
#+OPTIONS: num:nil toc:nil