68 lines
2.3 KiB
Python
68 lines
2.3 KiB
Python
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()
|