update files, bring to latest code

This commit is contained in:
WorldTeacher
2024-07-18 11:57:20 +02:00
parent 891eb3e90a
commit ae2e588780
14 changed files with 686 additions and 60 deletions

137
src/ui/settings.py Normal file
View 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())