Add a new dialog to get database settings. Fixes: #5

Added a new dialog for database settings.
Updated dbConfig to use QSettings.
This commit is contained in:
Christopher T. Johnson
2025-02-25 09:56:53 -05:00
parent 9a60a5adb5
commit d46281fda7
5 changed files with 507 additions and 17 deletions

67
setupDialog.py Normal file
View File

@@ -0,0 +1,67 @@
from PySide6.QtCore import Slot, Qt
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):
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):
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()