update files, bring to latest code
This commit is contained in:
137
src/ui/settings.py
Normal file
137
src/ui/settings.py
Normal file
@@ -0,0 +1,137 @@
|
||||
from .sources.Ui_dialog_settings import Ui_Dialog
|
||||
from PyQt6 import QtWidgets, QtCore
|
||||
from src.utils import Icon
|
||||
from src import config
|
||||
from omegaconf import OmegaConf
|
||||
|
||||
|
||||
class Settings(QtWidgets.QDialog, Ui_Dialog):
|
||||
def __init__(self):
|
||||
super(Settings, self).__init__()
|
||||
self.setupUi(self)
|
||||
self.setWindowTitle("Einstellungen")
|
||||
self.setWindowIcon(Icon("settings").icon)
|
||||
self.originalSettings = config
|
||||
|
||||
# lineedits
|
||||
self.institution_name.textChanged.connect(self.enableButtonBox)
|
||||
self.default_loan_duration.textChanged.connect(self.enableButtonBox)
|
||||
self.database_backupLocation.textChanged.connect(self.enableButtonBox)
|
||||
self.database_path.textChanged.connect(self.enableButtonBox)
|
||||
self.database_name.textChanged.connect(self.enableButtonBox)
|
||||
self.database_name.textChanged.connect(self.enableButtonBox)
|
||||
|
||||
# buttonbox
|
||||
self.buttonBox.accepted.connect(self.saveSettings)
|
||||
self.buttonBox.rejected.connect(self.close)
|
||||
self.loadSettings()
|
||||
self.buttonBox.button(
|
||||
QtWidgets.QDialogButtonBox.StandardButton.Discard
|
||||
).clicked.connect(self.DiscardSettings)
|
||||
self.buttonBox.button(
|
||||
QtWidgets.QDialogButtonBox.StandardButton.Discard
|
||||
).setEnabled(False)
|
||||
self.buttonBox.button(QtWidgets.QDialogButtonBox.StandardButton.Ok).setEnabled(
|
||||
False
|
||||
)
|
||||
|
||||
# buttons
|
||||
self.btn_select_database_backupLocation.clicked.connect(
|
||||
self.selectBackupLocation
|
||||
)
|
||||
self.btn_select_database_path.clicked.connect(self.selectDatabasePath)
|
||||
self.btn_select_database_name.clicked.connect(self.selectDatabaseName)
|
||||
|
||||
def enableButtonBox(self):
|
||||
self.buttonBox.button(QtWidgets.QDialogButtonBox.StandardButton.Ok).setEnabled(
|
||||
True
|
||||
)
|
||||
self.buttonBox.button(
|
||||
QtWidgets.QDialogButtonBox.StandardButton.Discard
|
||||
).setEnabled(True)
|
||||
|
||||
def selectBackupLocation(self):
|
||||
backupLocation = QtWidgets.QFileDialog.getExistingDirectory(
|
||||
self,
|
||||
"Select Backup Location",
|
||||
self.originalSettings.database.backupLocation,
|
||||
)
|
||||
self.database_backupLocation.setText(backupLocation)
|
||||
self.buttonBox.button(
|
||||
QtWidgets.QDialogButtonBox.StandardButton.Discard
|
||||
).setEnabled(True)
|
||||
self.buttonBox.button(QtWidgets.QDialogButtonBox.StandardButton.Ok).setEnabled(
|
||||
True
|
||||
)
|
||||
|
||||
def selectDatabasePath(self):
|
||||
databasePath = QtWidgets.QFileDialog.getExistingDirectory(
|
||||
self, "Select Database Path", self.originalSettings.database.path
|
||||
)
|
||||
self.database_path.setText(databasePath)
|
||||
self.buttonBox.button(
|
||||
QtWidgets.QDialogButtonBox.StandardButton.Discard
|
||||
).setEnabled(True)
|
||||
self.buttonBox.button(QtWidgets.QDialogButtonBox.StandardButton.Ok).setEnabled(
|
||||
True
|
||||
)
|
||||
|
||||
def selectDatabaseName(self):
|
||||
# filepicker with filter to select only .db files if a file is selected, set name to the lineedit and set database_path
|
||||
databaseName = QtWidgets.QFileDialog.getOpenFileName(
|
||||
self,
|
||||
"Select Database",
|
||||
self.originalSettings.database.path,
|
||||
"Database Files (*.db)",
|
||||
)
|
||||
self.database_name.setText(databaseName[0])
|
||||
self.database_path.setText(databaseName[0].rsplit("/", 1)[0])
|
||||
self.buttonBox.button(
|
||||
QtWidgets.QDialogButtonBox.StandardButton.Discard
|
||||
).setEnabled(True)
|
||||
self.buttonBox.button(QtWidgets.QDialogButtonBox.StandardButton.Ok).setEnabled(
|
||||
True
|
||||
)
|
||||
|
||||
def saveSettings(self):
|
||||
# save settings to config file
|
||||
institution_name = self.institution_name.text()
|
||||
default_loan_duration = int(self.default_loan_duration.text())
|
||||
database_backupLocation = self.database_backupLocation.text()
|
||||
database_path = self.database_path.text()
|
||||
database_name = self.database_name.text()
|
||||
# overwrite the original settings
|
||||
self.originalSettings.institution_name = institution_name
|
||||
self.originalSettings.default_loan_duration = default_loan_duration
|
||||
self.originalSettings.database.backupLocation = database_backupLocation
|
||||
self.originalSettings.database.path = database_path
|
||||
self.originalSettings.database.name = database_name
|
||||
# save the new settings
|
||||
OmegaConf.save(self.originalSettings, "config/settings.yaml")
|
||||
|
||||
self.close()
|
||||
|
||||
def DiscardSettings(self):
|
||||
self.loadSettings()
|
||||
pass
|
||||
|
||||
def loadSettings(self):
|
||||
self.institution_name.setText(self.originalSettings.institution_name)
|
||||
self.default_loan_duration.setText(
|
||||
str(self.originalSettings.default_loan_duration)
|
||||
)
|
||||
self.database_backupLocation.setText(
|
||||
self.originalSettings.database.backupLocation
|
||||
)
|
||||
self.database_path.setText(self.originalSettings.database.path)
|
||||
self.database_name.setText(self.originalSettings.database.name)
|
||||
pass
|
||||
|
||||
|
||||
def launch():
|
||||
import sys
|
||||
|
||||
app = QtWidgets.QApplication([])
|
||||
settings = Settings()
|
||||
settings.show()
|
||||
sys.exit(app.exec())
|
||||
Reference in New Issue
Block a user