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()