Files
scotus-watch/setupDialog.py
Christopher T. Johnson 49de6b1f35 Lint
2025-02-25 10:14:44 -05:00

69 lines
2.4 KiB
Python

from PySide6.QtCore import Qt, Slot
from PySide6.QtGui import QPalette
from PySide6.QtWidgets import QDialog, QStatusBar, QVBoxLayout, QWidget
from lib.utils import openSettings
from ui.dbSetup import Ui_setupDialog
class setupDialog(QDialog, Ui_setupDialog):
def __init__(self, parent: QWidget | None = None) -> None:
super(setupDialog, self).__init__(parent)
self.setupUi(self)
self.sqliteEdit.setEnabled(False)
layout = self.layout()
assert isinstance(layout, QVBoxLayout)
self.statusBar = QStatusBar(self)
self.statusBar.setObjectName("statusBar")
where = layout.indexOf(self.buttonBox)
layout.insertWidget(where, self.statusBar)
self.pwEdit.editingFinished.connect(self.pwDone)
self.pwConfirmEdit.editingFinished.connect(self.pwDone)
return
@Slot()
def pwDone(self) -> None:
pw = self.pwEdit.text()
confirm = self.pwConfirmEdit.text()
if pw != confirm:
palette = self.statusBar.palette()
palette.setColor(QPalette.ColorRole.WindowText, Qt.GlobalColor.red)
self.statusBar.setPalette(palette)
self.statusBar.showMessage("Password doesn't match")
self.pwGood = False
else:
self.statusBar.clearMessage()
self.pwGood = True
return
@Slot(int) # type: ignore
def done(self, r: int) -> None:
if r == QDialog.DialogCode.Rejected:
super(setupDialog, self).done(r)
return
self.pwDone()
if not self.pwGood:
return
super(setupDialog, self).done(r)
return
@Slot()
def accept(self) -> None:
settings = openSettings("database")
settings.setValue("hostname", self.hostEdit.text())
settings.setValue("databasename", self.dbEdit.text())
settings.setValue("user", self.userEdit.text())
settings.setValue("password", self.pwEdit.text())
settings.setValue("port", self.portEdit.text())
if self.comboBox.currentIndex() == 0:
settings.setValue("engine", "QMYSQL")
elif self.comboBox.currentIndex() == 1:
settings.setValue("engine", "QSQLITE")
# Other types: QDB2, QIBASE, QOCI, QODBC, QPSQL, QMIMER
else:
print("Bad Database Type")
settings.sync()
return super().accept()