This commit is contained in:
Christopher T. Johnson
2025-02-25 10:14:44 -05:00
parent d46281fda7
commit 49de6b1f35
6 changed files with 49 additions and 36 deletions

View File

@@ -175,6 +175,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
writeGeometry(self) writeGeometry(self)
super().closeEvent(event) super().closeEvent(event)
return 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,5 @@
from datetime import date from datetime import date
from PySide6.QtCore import QSettings
from pony.orm import ( # type: ignore[import-untyped] from pony.orm import ( # type: ignore[import-untyped]
Database, Database,
LongStr, LongStr,
@@ -10,9 +9,11 @@ from pony.orm import ( # type: ignore[import-untyped]
Set, Set,
set_sql_debug, set_sql_debug,
) )
from PySide6.QtCore import QSettings
db = Database() db = Database()
class Cases(db.Entity): # type: ignore[name-defined] class Cases(db.Entity): # type: ignore[name-defined]
case_id = PrimaryKey(int, auto=True) case_id = PrimaryKey(int, auto=True)
docket_id = Required(str) docket_id = Required(str)
@@ -49,15 +50,15 @@ class History(db.Entity): # type: ignore[name-defined]
def updateDatabase(settings: QSettings) -> None: def updateDatabase(settings: QSettings) -> None:
set_sql_debug(True) set_sql_debug(True)
engine = settings.value('engine') engine = settings.value("engine")
if engine not in ['QMYSQL', 'MARIADB']: if engine not in ["QMYSQL", "MARIADB"]:
raise Exception(f"Unknown database engine: {engine}") raise Exception(f"Unknown database engine: {engine}")
db.bind( db.bind(
provider="mysql", provider="mysql",
user=settings.value('user'), user=settings.value("user"),
host=settings.value('hostname'), host=settings.value("hostname"),
database=settings.value('databasename'), database=settings.value("databasename"),
password=settings.value('password'), password=settings.value("password"),
) )
db.generate_mapping(create_tables=True) db.generate_mapping(create_tables=True)
db.disconnect() db.disconnect()

View File

@@ -1,6 +1,13 @@
from typing import NoReturn, cast from typing import NoReturn, cast
from PySide6.QtCore import QByteArray, QCoreApplication, QObject, QRect, QSettings, 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
@@ -29,23 +36,26 @@ class QStyleOptionViewItemInit(QStyleOptionViewItem):
font: QFont font: QFont
text: str text: str
def openSettings(group: str | None = None) -> QSettings: def openSettings(group: str | None = None) -> QSettings:
settings = QSettings("Troglodite Services", "SCOTUS Watch") settings = QSettings("Troglodite Services", "SCOTUS Watch")
if group is not None: if group is not None:
settings.beginGroup(group) settings.beginGroup(group)
return settings return settings
def readGeometry(widget: QWidget) -> None: def readGeometry(widget: QWidget) -> None:
settings = openSettings(widget.objectName()) settings = openSettings(widget.objectName())
geometry = settings.value('geometry', QByteArray()) geometry = settings.value("geometry", QByteArray())
assert isinstance(geometry, QByteArray) assert isinstance(geometry, QByteArray)
if not geometry.isEmpty(): if not geometry.isEmpty():
widget.restoreGeometry(geometry) widget.restoreGeometry(geometry)
settings.endGroup() settings.endGroup()
return return
def writeGeometry(widget: QWidget) -> None: def writeGeometry(widget: QWidget) -> None:
settings = openSettings(widget.objectName()) settings = openSettings(widget.objectName())
settings.setValue('geometry', widget.saveGeometry()) settings.setValue("geometry", widget.saveGeometry())
settings.endGroup() settings.endGroup()
return return

View File

@@ -83,7 +83,7 @@ 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') self.setObjectName("PDFViewer")
readGeometry(self) readGeometry(self)
print(self.objectName()) print(self.objectName())
self.zoomSelector = ZoomSelector(self) self.zoomSelector = ZoomSelector(self)

View File

@@ -25,17 +25,17 @@ from MainWindow import MainWindow
def main() -> int: def main() -> int:
# #
app = QApplication(sys.argv) app = QApplication(sys.argv)
settings = openSettings('database') settings = openSettings("database")
file = QFile(settings.fileName()) file = QFile(settings.fileName())
if not file.exists(): if not file.exists():
result = setupDialog().exec() result = setupDialog().exec()
if result == QDialog.DialogCode.Rejected: if result == QDialog.DialogCode.Rejected:
print(f"We require database credentials") print(f"We require database credentials")
return(2) return 2
updateDatabase(settings) updateDatabase(settings)
db = QSqlDatabase.addDatabase("QMYSQL") db = QSqlDatabase.addDatabase("QMYSQL")
db.setHostName(settings.value("hostname")) db.setHostName(settings.value("hostname"))
portStr = cast(str, settings.value('port', '3306')) portStr = cast(str, settings.value("port", "3306"))
db.setPort(int(portStr)) db.setPort(int(portStr))
db.setDatabaseName(settings.value("databasename", "scotus")) # type: ignore db.setDatabaseName(settings.value("databasename", "scotus")) # type: ignore
db.setUserName(settings.value("user", "scotus")) # type: ignore db.setUserName(settings.value("user", "scotus")) # type: ignore

View File

@@ -1,12 +1,13 @@
from PySide6.QtCore import Slot, Qt from PySide6.QtCore import Qt, Slot
from PySide6.QtGui import QPalette from PySide6.QtGui import QPalette
from PySide6.QtWidgets import QDialog, QStatusBar, QVBoxLayout, QWidget from PySide6.QtWidgets import QDialog, QStatusBar, QVBoxLayout, QWidget
from lib.utils import openSettings from lib.utils import openSettings
from ui.dbSetup import Ui_setupDialog from ui.dbSetup import Ui_setupDialog
class setupDialog(QDialog, Ui_setupDialog): class setupDialog(QDialog, Ui_setupDialog):
def __init__(self, parent: QWidget | None = None): def __init__(self, parent: QWidget | None = None) -> None:
super(setupDialog, self).__init__(parent) super(setupDialog, self).__init__(parent)
self.setupUi(self) self.setupUi(self)
self.sqliteEdit.setEnabled(False) self.sqliteEdit.setEnabled(False)
@@ -14,7 +15,7 @@ class setupDialog(QDialog,Ui_setupDialog):
layout = self.layout() layout = self.layout()
assert isinstance(layout, QVBoxLayout) assert isinstance(layout, QVBoxLayout)
self.statusBar = QStatusBar(self) self.statusBar = QStatusBar(self)
self.statusBar.setObjectName('statusBar') self.statusBar.setObjectName("statusBar")
where = layout.indexOf(self.buttonBox) where = layout.indexOf(self.buttonBox)
layout.insertWidget(where, self.statusBar) layout.insertWidget(where, self.statusBar)
self.pwEdit.editingFinished.connect(self.pwDone) self.pwEdit.editingFinished.connect(self.pwDone)
@@ -22,7 +23,7 @@ class setupDialog(QDialog,Ui_setupDialog):
return return
@Slot() @Slot()
def pwDone(self): def pwDone(self) -> None:
pw = self.pwEdit.text() pw = self.pwEdit.text()
confirm = self.pwConfirmEdit.text() confirm = self.pwConfirmEdit.text()
@@ -50,16 +51,16 @@ class setupDialog(QDialog,Ui_setupDialog):
@Slot() @Slot()
def accept(self) -> None: def accept(self) -> None:
settings=openSettings('database') settings = openSettings("database")
settings.setValue('hostname', self.hostEdit.text()) settings.setValue("hostname", self.hostEdit.text())
settings.setValue('databasename', self.dbEdit.text()) settings.setValue("databasename", self.dbEdit.text())
settings.setValue('user',self.userEdit.text()) settings.setValue("user", self.userEdit.text())
settings.setValue('password', self.pwEdit.text()) settings.setValue("password", self.pwEdit.text())
settings.setValue('port', self.portEdit.text()) settings.setValue("port", self.portEdit.text())
if self.comboBox.currentIndex() == 0: if self.comboBox.currentIndex() == 0:
settings.setValue('engine', 'QMYSQL') settings.setValue("engine", "QMYSQL")
elif self.comboBox.currentIndex() == 1: elif self.comboBox.currentIndex() == 1:
settings.setValue('engine', 'QSQLITE') settings.setValue("engine", "QSQLITE")
# Other types: QDB2, QIBASE, QOCI, QODBC, QPSQL, QMIMER # Other types: QDB2, QIBASE, QOCI, QODBC, QPSQL, QMIMER
else: else:
print("Bad Database Type") print("Bad Database Type")