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