update settings to reflect latest changes

This commit is contained in:
WorldTeacher
2024-05-28 10:43:20 +02:00
parent 271f9a3309
commit 4774f103e2
3 changed files with 805 additions and 376 deletions

View File

@@ -1,48 +1,158 @@
from omegaconf import OmegaConf
from PyQt6 import QtWidgets
from .dialog_sources.Ui_settings import Ui_Dialog as _settings
config = OmegaConf.load("config.yaml")
class Settings(_settings):
def __init__(self):
super().__init__()
self.setupUi(self)
self.retranslateUi(self)
self.load_config()
def load_config(self):
self.db_name.setText(config.database.name)
self.db_path.setText(config.database.path)
self.save_path.setText(config.save_path)
self.os_apps.setChecked(config.default_apps)
def select_db(self):
# open file dialog, limit to .db files
file_dialog = QtWidgets.QFileDialog()
file_dialog.setFileMode(QtWidgets.QFileDialog.FileMode.AnyFile)
file_dialog.setNameFilter("Datenbank (*.db)")
file_dialog.setViewMode(QtWidgets.QFileDialog.ViewMode.Detail)
if file_dialog.exec():
self.db_name.setText(file_dialog.selectedFiles()[0].split("/")[-1])
self.db_path.setText(
file_dialog.selectedFiles()[0].split(self.db_name.text())[0]
)
def set_save_path(self):
# open file dialog, limit to .db files
file_dialog = QtWidgets.QFileDialog()
file_dialog.setFileMode(QtWidgets.QFileDialog.FileMode.Directory)
file_dialog.setViewMode(QtWidgets.QFileDialog.ViewMode.Detail)
if file_dialog.exec():
self.save_path.setText(file_dialog.selectedFiles()[0])
def return_data(self):
config.database.name = self.db_name.text()
config.database.path = self.db_path.text()
config.save_path = self.save_path.text()
config.default_apps = self.os_apps.isChecked()
return config
from omegaconf import OmegaConf
from PyQt6 import QtCore, QtGui, QtWidgets
from .dialog_sources.Ui_settings import Ui_Dialog as _settings
config = OmegaConf.load("config.yaml")
_style = "<span style={style}>"
_style_editable = "<span style={style}>{text}</span>"
_italic = " font-style:italic;"
_bold = " font-weight:700;"
_underscore = " text-decoration: underline;"
_text_start = "<span>"
_text_end = "</span>"
class Settings(QtWidgets.QDialog, _settings):
def __init__(self):
super().__init__()
self.setupUi(self)
self.password.setEchoMode(QtWidgets.QLineEdit.EchoMode.Password)
self.editSignature.setAcceptRichText(True)
self.editSignature.setFocusPolicy(QtCore.Qt.FocusPolicy.StrongFocus)
self.bold.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
self.italic.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
self.underscore.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
self.font_size.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
self.fontComboBox.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
self.font_size.setCurrentText("9")
# add button to toggle password visibility
self.showPassword = True
self.togglePassword.clicked.connect(self.toggle_password)
self.tb_select_db.clicked.connect(self.select_db)
self.tb_set_save_path.clicked.connect(self.set_save_path)
self.bold.clicked.connect(self.setFontBold)
self.italic.clicked.connect(self.setTextFontItalic)
self.underscore.clicked.connect(self.setTextFontUnderline)
self.font_size.currentTextChanged.connect(self.setFontSize)
self.fontComboBox.currentFontChanged.connect(self.setCurrentFont)
self.debug.clicked.connect(self.debug_mode)
self.toggle_password()
self.retranslateUi(self)
self.load_config()
self.buttonBox.accepted.connect(self.save)
def load_config(self):
self.db_name.setText(config.database.name)
self.db_path.setText(config.database.path)
self.save_path.setText(config.save_path)
self.smtp_address.setText(config.mail.smtp_server)
self.smtp_port.setText(str(config.mail.port))
self.sender_email.setText(config.mail.sender)
self.mail_username.setText(config.mail.user_name)
self.password.setText(config.mail.password)
self.use_username_smtp_login.setChecked(config.mail.use_user_name)
self.editSignature.setHtml(config.mail.signature)
def setCurrentFont(self):
font = self.fontComboBox.currentFont()
font.setPointSize(int(self.font_size.currentText()))
self.editSignature.setFont(font)
def setFontSize(self):
size = self.font_size.currentText()
self.editSignature.setFontPointSize(int(size))
def toggle_password(self):
self.togglePassword.setIconSize(QtCore.QSize(16, 16))
on_icon = QtGui.QIcon()
off_icon = QtGui.QIcon()
on_icon.addPixmap(
QtGui.QPixmap("icons/visibility_on.svg"),
QtGui.QIcon.Mode.Normal,
QtGui.QIcon.State.On,
)
off_icon.addPixmap(
QtGui.QPixmap("icons/visibility_off.svg"),
QtGui.QIcon.Mode.Normal,
QtGui.QIcon.State.On,
)
if self.showPassword is False:
self.password.setEchoMode(QtWidgets.QLineEdit.EchoMode.Normal)
self.togglePassword.setIcon(off_icon)
self.showPassword = True
else:
self.password.setEchoMode(QtWidgets.QLineEdit.EchoMode.Password)
self.togglePassword.setIcon(on_icon)
self.showPassword = False
def setFontBold(self):
if self.bold.isChecked():
self.editSignature.setFontWeight(QtGui.QFont.Weight.Bold)
else:
self.editSignature.setFontWeight(QtGui.QFont.Weight.Normal)
def setTextFontItalic(self):
if self.italic.isChecked():
self.editSignature.setFontItalic(True)
else:
self.editSignature.setFontItalic(False)
def setTextFontUnderline(self):
if self.underscore.isChecked():
self.editSignature.setFontUnderline(True)
else:
self.editSignature.setFontUnderline(False)
def select_db(self):
# open file dialog, limit to .db files
file_dialog = QtWidgets.QFileDialog()
file_dialog.setFileMode(QtWidgets.QFileDialog.FileMode.AnyFile)
file_dialog.setNameFilter("Datenbank (*.db)")
file_dialog.setViewMode(QtWidgets.QFileDialog.ViewMode.Detail)
if file_dialog.exec():
self.db_name.setText(file_dialog.selectedFiles()[0].split("/")[-1])
self.db_path.setText(
file_dialog.selectedFiles()[0].split(self.db_name.text())[0]
)
def set_save_path(self):
# open file dialog, limit to .db files
file_dialog = QtWidgets.QFileDialog(filter="Ordner auswählen")
file_dialog.setFileMode(QtWidgets.QFileDialog.FileMode.Directory)
file_dialog.setViewMode(QtWidgets.QFileDialog.ViewMode.Detail)
if file_dialog.exec():
self.save_path.setText(file_dialog.selectedFiles()[0])
def debug_mode(self):
print(self.editSignature.toHtml())
def return_data(self):
config.database.name = self.db_name.text()
config.database.path = self.db_path.text()
config.save_path = self.save_path.text()
config.mail.smtp_server = self.smtp_address.text()
config.mail.port = int(self.smtp_port.text())
config.mail.sender = self.sender_email.text()
config.mail.user_name = self.mail_username.text()
config.mail.password = self.password.text()
config.mail.use_user_name = self.use_username_smtp_login.isChecked()
config.mail.signature = self.editSignature.toHtml()
return config
def save(self):
config = self.return_data()
OmegaConf.save(config, "config.yaml")
self.accept()
def launch_settings():
import sys
app = QtWidgets.QApplication(sys.argv)
window = Settings()
window.show()
sys.exit(app.exec())