From 4774f103e240178965813c174ed9643119ae4f27 Mon Sep 17 00:00:00 2001 From: WorldTeacher <41587052+WorldTeacher@users.noreply.github.com> Date: Tue, 28 May 2024 10:43:20 +0200 Subject: [PATCH] update settings to reflect latest changes --- src/ui/dialogs/dialog_sources/Ui_settings.py | 496 +++++++++++-------- src/ui/dialogs/dialog_sources/settings.ui | 479 +++++++++++++----- src/ui/dialogs/settings.py | 206 ++++++-- 3 files changed, 805 insertions(+), 376 deletions(-) diff --git a/src/ui/dialogs/dialog_sources/Ui_settings.py b/src/ui/dialogs/dialog_sources/Ui_settings.py index 9129069..1d653bf 100644 --- a/src/ui/dialogs/dialog_sources/Ui_settings.py +++ b/src/ui/dialogs/dialog_sources/Ui_settings.py @@ -1,202 +1,294 @@ -# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\Semesterapparate\ui\dialogs\settings.ui' -# -# Created by: PyQt6 UI code generator 6.3.1 -# -# WARNING: Any manual changes made to this file will be lost when pyuic6 is -# run again. Do not edit this file unless you know what you are doing. - - -from omegaconf import OmegaConf -from PyQt6 import QtCore, QtWidgets - -config = OmegaConf.load("config.yaml") - - -class Ui_Dialog(object): - def setupUi(self, Dialog): - Dialog.setObjectName("Dialog") - Dialog.resize(743, 576) - self.buttonBox = QtWidgets.QDialogButtonBox(Dialog) - self.buttonBox.setGeometry(QtCore.QRect(120, 540, 621, 32)) - self.buttonBox.setOrientation(QtCore.Qt.Orientation.Horizontal) - self.buttonBox.setStandardButtons( - QtWidgets.QDialogButtonBox.StandardButton.Cancel - | QtWidgets.QDialogButtonBox.StandardButton.Ok - ) - self.buttonBox.setObjectName("buttonBox") - self.frame = QtWidgets.QFrame(Dialog) - self.frame.setGeometry(QtCore.QRect(0, 0, 741, 541)) - self.frame.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel) - self.frame.setFrameShadow(QtWidgets.QFrame.Shadow.Raised) - self.frame.setObjectName("frame") - self.label = QtWidgets.QLabel(self.frame) - self.label.setGeometry(QtCore.QRect(400, 30, 161, 21)) - self.label.setObjectName("label") - self.line = QtWidgets.QFrame(self.frame) - self.line.setGeometry(QtCore.QRect(370, 0, 20, 541)) - self.line.setFrameShadow(QtWidgets.QFrame.Shadow.Plain) - self.line.setLineWidth(1) - self.line.setMidLineWidth(0) - self.line.setFrameShape(QtWidgets.QFrame.Shape.VLine) - self.line.setObjectName("line") - self.textBrowser = QtWidgets.QTextBrowser(self.frame) - self.textBrowser.setGeometry(QtCore.QRect(400, 50, 311, 51)) - self.textBrowser.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) - self.textBrowser.setInputMethodHints(QtCore.Qt.InputMethodHint.ImhNone) - self.textBrowser.setObjectName("textBrowser") - self.label_2 = QtWidgets.QLabel(self.frame) - self.label_2.setGeometry(QtCore.QRect(10, 20, 161, 21)) - self.label_2.setObjectName("label_2") - self.os_apps = QtWidgets.QCheckBox(self.frame) - self.os_apps.setGeometry(QtCore.QRect(410, 110, 161, 17)) - self.os_apps.setObjectName("os_apps") - self.formLayoutWidget = QtWidgets.QWidget(self.frame) - self.formLayoutWidget.setGeometry(QtCore.QRect(10, 50, 361, 491)) - self.formLayoutWidget.setObjectName("formLayoutWidget") - self.gridLayout = QtWidgets.QGridLayout(self.formLayoutWidget) - self.gridLayout.setContentsMargins(0, 0, 0, 0) - self.gridLayout.setObjectName("gridLayout") - self.label_3 = QtWidgets.QLabel(self.formLayoutWidget) - self.label_3.setObjectName("label_3") - self.gridLayout.addWidget(self.label_3, 0, 0, 1, 1) - self.label_5 = QtWidgets.QLabel(self.formLayoutWidget) - self.label_5.setObjectName("label_5") - self.gridLayout.addWidget(self.label_5, 2, 0, 1, 1) - self.db_path = QtWidgets.QLineEdit(self.formLayoutWidget) - self.db_path.setEnabled(False) - self.db_path.setObjectName("db_path") - self.gridLayout.addWidget(self.db_path, 1, 1, 1, 1) - self.save_path = QtWidgets.QLineEdit(self.formLayoutWidget) - self.save_path.setObjectName("save_path") - self.gridLayout.addWidget(self.save_path, 2, 1, 1, 1) - self.label_4 = QtWidgets.QLabel(self.formLayoutWidget) - self.label_4.setObjectName("label_4") - self.gridLayout.addWidget(self.label_4, 1, 0, 1, 1) - self.db_name = QtWidgets.QLineEdit(self.formLayoutWidget) - self.db_name.setObjectName("db_name") - self.gridLayout.addWidget(self.db_name, 0, 1, 1, 1) - self.tb_set_save_path = QtWidgets.QToolButton(self.formLayoutWidget) - self.tb_set_save_path.setObjectName("tb_set_save_path") - self.gridLayout.addWidget(self.tb_set_save_path, 2, 2, 1, 1) - spacerItem = QtWidgets.QSpacerItem( - 20, - 40, - QtWidgets.QSizePolicy.Policy.Minimum, - QtWidgets.QSizePolicy.Policy.Expanding, - ) - self.gridLayout.addItem(spacerItem, 3, 1, 1, 1) - self.tb_select_db = QtWidgets.QToolButton(self.formLayoutWidget) - self.tb_select_db.setObjectName("tb_select_db") - self.gridLayout.addWidget(self.tb_select_db, 0, 2, 1, 1) - self.scrollArea = QtWidgets.QScrollArea(self.frame) - self.scrollArea.setGeometry(QtCore.QRect(400, 130, 331, 411)) - self.scrollArea.setWidgetResizable(True) - self.scrollArea.setObjectName("scrollArea") - self.scrollAreaWidgetContents = QtWidgets.QWidget() - self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 329, 409)) - self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents") - self.treeWidget = QtWidgets.QTreeWidget(self.scrollAreaWidgetContents) - self.treeWidget.setGeometry(QtCore.QRect(0, 0, 331, 411)) - self.treeWidget.setObjectName("treeWidget") - self.treeWidget.setContextMenuPolicy( - QtCore.Qt.ContextMenuPolicy.ActionsContextMenu - ) - self.scrollArea.setWidget(self.scrollAreaWidgetContents) - self.label_3.setBuddy(self.db_name) - self.label_5.setBuddy(self.save_path) - self.label_4.setBuddy(self.db_path) - self.tb_select_db.clicked.connect(self.select_db) - self.tb_set_save_path.clicked.connect(self.set_save_path) - self.retranslateUi(Dialog) - self.buttonBox.accepted.connect(Dialog.accept) # type: ignore - self.buttonBox.rejected.connect(Dialog.reject) # type: ignore - QtCore.QMetaObject.connectSlotsByName(Dialog) - Dialog.setTabOrder(self.db_name, self.db_path) - Dialog.setTabOrder(self.db_path, self.save_path) - Dialog.setTabOrder(self.save_path, self.os_apps) - Dialog.setTabOrder(self.os_apps, self.textBrowser) - - def retranslateUi(self, Dialog): - _translate = QtCore.QCoreApplication.translate - Dialog.setWindowTitle(_translate("Dialog", "Dialog")) - self.label.setText(_translate("Dialog", "Dateispezifische Einstellungen")) - self.textBrowser.setHtml( - _translate( - "Dialog", - '\n' - '\n" - '

Hier können Einstellungen für bestehende Dateiformate geändert, oder neue Dateiformate eingefügt werden

\n' - '


', - ) - ) - self.label_2.setText(_translate("Dialog", "Allgemeine Einstellungen")) - self.os_apps.setToolTip( - _translate( - "Dialog", - "Verwendet im Betriebssystem festgelegte Anwendungen um Dateien zu öffnen", - ) - ) - self.os_apps.setText(_translate("Dialog", "Standard-Apps verwenden")) - self.label_3.setToolTip( - _translate( - "Dialog", - '

Name der Datenbank, welche verwendet werden soll. Muss auf .db enden

', - ) - ) - self.label_3.setText(_translate("Dialog", "Datenbankname")) - self.label_5.setToolTip( - _translate( - "Dialog", - "Pfad, an dem heruntergeladene Dateien gespeichert werden sollen", - ) - ) - self.label_5.setText(_translate("Dialog", "Speicherpfad")) - self.label_4.setText(_translate("Dialog", "Datenbankpfad")) - self.db_name.setText(_translate("Dialog", "sap.db")) - self.tb_set_save_path.setText(_translate("Dialog", "...")) - self.tb_select_db.setText(_translate("Dialog", "...")) - 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) - applications = config.custom_applications - for application in applications: - name = application.application - file_type = application.extensions - display_name = application.name - print(name, file_type, display_name) # - # create new item - item = QtWidgets.QTreeWidgetItem(self.treeWidget) - item.setText(0, display_name) - - 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 +# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\settings.ui' +# +# Created by: PyQt6 UI code generator 6.6.1 +# +# WARNING: Any manual changes made to this file will be lost when pyuic6 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt6 import QtCore, QtGui, QtWidgets + + +class Ui_Dialog(object): + def setupUi(self, Dialog): + Dialog.setObjectName("Dialog") + Dialog.resize(743, 576) + self.buttonBox = QtWidgets.QDialogButtonBox(parent=Dialog) + self.buttonBox.setGeometry(QtCore.QRect(120, 540, 621, 32)) + self.buttonBox.setOrientation(QtCore.Qt.Orientation.Horizontal) + self.buttonBox.setStandardButtons( + QtWidgets.QDialogButtonBox.StandardButton.Cancel + | QtWidgets.QDialogButtonBox.StandardButton.Ok + ) + self.buttonBox.setObjectName("buttonBox") + self.frame = QtWidgets.QFrame(parent=Dialog) + self.frame.setGeometry(QtCore.QRect(0, 0, 741, 541)) + self.frame.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel) + self.frame.setFrameShadow(QtWidgets.QFrame.Shadow.Raised) + self.frame.setObjectName("frame") + self.label_2 = QtWidgets.QLabel(parent=self.frame) + self.label_2.setGeometry(QtCore.QRect(10, 20, 161, 21)) + self.label_2.setObjectName("label_2") + self.formLayoutWidget = QtWidgets.QWidget(parent=self.frame) + self.formLayoutWidget.setGeometry(QtCore.QRect(10, 40, 361, 491)) + self.formLayoutWidget.setObjectName("formLayoutWidget") + self.gridLayout = QtWidgets.QGridLayout(self.formLayoutWidget) + self.gridLayout.setContentsMargins(0, 0, 0, 0) + self.gridLayout.setObjectName("gridLayout") + self.tb_select_db = QtWidgets.QToolButton(parent=self.formLayoutWidget) + self.tb_select_db.setObjectName("tb_select_db") + self.gridLayout.addWidget(self.tb_select_db, 0, 2, 1, 1) + self.db_path = QtWidgets.QLineEdit(parent=self.formLayoutWidget) + self.db_path.setEnabled(False) + self.db_path.setObjectName("db_path") + self.gridLayout.addWidget(self.db_path, 1, 1, 1, 1) + self.label_3 = QtWidgets.QLabel(parent=self.formLayoutWidget) + self.label_3.setObjectName("label_3") + self.gridLayout.addWidget(self.label_3, 0, 0, 1, 1) + self.db_name = QtWidgets.QLineEdit(parent=self.formLayoutWidget) + self.db_name.setObjectName("db_name") + self.gridLayout.addWidget(self.db_name, 0, 1, 1, 1) + self.label_4 = QtWidgets.QLabel(parent=self.formLayoutWidget) + self.label_4.setObjectName("label_4") + self.gridLayout.addWidget(self.label_4, 1, 0, 1, 1) + self.save_path = QtWidgets.QLineEdit(parent=self.formLayoutWidget) + self.save_path.setObjectName("save_path") + self.gridLayout.addWidget(self.save_path, 2, 1, 1, 1) + self.tb_set_save_path = QtWidgets.QToolButton(parent=self.formLayoutWidget) + self.tb_set_save_path.setObjectName("tb_set_save_path") + self.gridLayout.addWidget(self.tb_set_save_path, 2, 2, 1, 1) + spacerItem = QtWidgets.QSpacerItem( + 20, + 40, + QtWidgets.QSizePolicy.Policy.Minimum, + QtWidgets.QSizePolicy.Policy.Expanding, + ) + self.gridLayout.addItem(spacerItem, 3, 1, 1, 1) + self.label_5 = QtWidgets.QLabel(parent=self.formLayoutWidget) + self.label_5.setObjectName("label_5") + self.gridLayout.addWidget(self.label_5, 2, 0, 1, 1) + self.email_settings = QtWidgets.QTabWidget(parent=self.frame) + self.email_settings.setGeometry(QtCore.QRect(390, 40, 341, 491)) + self.email_settings.setObjectName("email_settings") + self.email_settingsPage1_2 = QtWidgets.QWidget() + self.email_settingsPage1_2.setObjectName("email_settingsPage1_2") + self.formLayoutWidget_2 = QtWidgets.QWidget(parent=self.email_settingsPage1_2) + self.formLayoutWidget_2.setGeometry(QtCore.QRect(10, 30, 321, 381)) + self.formLayoutWidget_2.setObjectName("formLayoutWidget_2") + self.gridLayout_2 = QtWidgets.QGridLayout(self.formLayoutWidget_2) + self.gridLayout_2.setContentsMargins(0, 0, 0, 0) + self.gridLayout_2.setObjectName("gridLayout_2") + self.smtp_address = QtWidgets.QLineEdit(parent=self.formLayoutWidget_2) + self.smtp_address.setClearButtonEnabled(True) + self.smtp_address.setObjectName("smtp_address") + self.gridLayout_2.addWidget(self.smtp_address, 0, 1, 1, 1) + self.label_8 = QtWidgets.QLabel(parent=self.formLayoutWidget_2) + self.label_8.setObjectName("label_8") + self.gridLayout_2.addWidget(self.label_8, 3, 0, 1, 1) + self.use_username_smtp_login = QtWidgets.QCheckBox( + parent=self.formLayoutWidget_2 + ) + self.use_username_smtp_login.setTristate(False) + self.use_username_smtp_login.setObjectName("use_username_smtp_login") + self.gridLayout_2.addWidget(self.use_username_smtp_login, 4, 1, 1, 1) + self.mail_username = QtWidgets.QLineEdit(parent=self.formLayoutWidget_2) + self.mail_username.setClearButtonEnabled(True) + self.mail_username.setObjectName("mail_username") + self.gridLayout_2.addWidget(self.mail_username, 3, 1, 1, 1) + self.smtp_port = QtWidgets.QLineEdit(parent=self.formLayoutWidget_2) + self.smtp_port.setInputMethodHints( + QtCore.Qt.InputMethodHint.ImhDigitsOnly + | QtCore.Qt.InputMethodHint.ImhPreferNumbers + ) + self.smtp_port.setClearButtonEnabled(True) + self.smtp_port.setObjectName("smtp_port") + self.gridLayout_2.addWidget(self.smtp_port, 1, 1, 1, 1) + self.label_10 = QtWidgets.QLabel(parent=self.formLayoutWidget_2) + self.label_10.setObjectName("label_10") + self.gridLayout_2.addWidget(self.label_10, 5, 0, 1, 1) + self.label_7 = QtWidgets.QLabel(parent=self.formLayoutWidget_2) + self.label_7.setObjectName("label_7") + self.gridLayout_2.addWidget(self.label_7, 2, 0, 1, 1) + self.label_9 = QtWidgets.QLabel(parent=self.formLayoutWidget_2) + self.label_9.setText("") + self.label_9.setObjectName("label_9") + self.gridLayout_2.addWidget(self.label_9, 6, 0, 1, 1) + self.sender_email = QtWidgets.QLineEdit(parent=self.formLayoutWidget_2) + self.sender_email.setInputMethodHints( + QtCore.Qt.InputMethodHint.ImhEmailCharactersOnly + ) + self.sender_email.setClearButtonEnabled(True) + self.sender_email.setObjectName("sender_email") + self.gridLayout_2.addWidget(self.sender_email, 2, 1, 1, 1) + self.label = QtWidgets.QLabel(parent=self.formLayoutWidget_2) + self.label.setObjectName("label") + self.gridLayout_2.addWidget(self.label, 0, 0, 1, 1) + self.password = QtWidgets.QLineEdit(parent=self.formLayoutWidget_2) + self.password.setInputMethodHints( + QtCore.Qt.InputMethodHint.ImhHiddenText + | QtCore.Qt.InputMethodHint.ImhSensitiveData + ) + self.password.setClearButtonEnabled(True) + self.password.setObjectName("password") + self.gridLayout_2.addWidget(self.password, 5, 1, 1, 1) + self.label_6 = QtWidgets.QLabel(parent=self.formLayoutWidget_2) + self.label_6.setObjectName("label_6") + self.gridLayout_2.addWidget(self.label_6, 1, 0, 1, 1) + self.togglePassword = QtWidgets.QPushButton(parent=self.formLayoutWidget_2) + self.togglePassword.setText("") + self.togglePassword.setObjectName("togglePassword") + self.gridLayout_2.addWidget(self.togglePassword, 5, 2, 1, 1) + self.email_settings.addTab(self.email_settingsPage1_2, "") + self.email_settingsPage2_2 = QtWidgets.QWidget() + self.email_settingsPage2_2.setObjectName("email_settingsPage2_2") + self.verticalLayoutWidget = QtWidgets.QWidget(parent=self.email_settingsPage2_2) + self.verticalLayoutWidget.setGeometry(QtCore.QRect(0, 0, 333, 71)) + self.verticalLayoutWidget.setObjectName("verticalLayoutWidget") + self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget) + self.verticalLayout.setContentsMargins(0, 0, 0, 0) + self.verticalLayout.setObjectName("verticalLayout") + self.horizontalLayout_3 = QtWidgets.QHBoxLayout() + self.horizontalLayout_3.setObjectName("horizontalLayout_3") + spacerItem1 = QtWidgets.QSpacerItem( + 40, + 20, + QtWidgets.QSizePolicy.Policy.Expanding, + QtWidgets.QSizePolicy.Policy.Minimum, + ) + self.horizontalLayout_3.addItem(spacerItem1) + self.bold = QtWidgets.QPushButton(parent=self.verticalLayoutWidget) + self.bold.setCheckable(True) + self.bold.setObjectName("bold") + self.horizontalLayout_3.addWidget(self.bold) + self.italic = QtWidgets.QPushButton(parent=self.verticalLayoutWidget) + self.italic.setCheckable(True) + self.italic.setObjectName("italic") + self.horizontalLayout_3.addWidget(self.italic) + self.underscore = QtWidgets.QPushButton(parent=self.verticalLayoutWidget) + self.underscore.setCheckable(True) + self.underscore.setObjectName("underscore") + self.horizontalLayout_3.addWidget(self.underscore) + spacerItem2 = QtWidgets.QSpacerItem( + 40, + 20, + QtWidgets.QSizePolicy.Policy.Expanding, + QtWidgets.QSizePolicy.Policy.Minimum, + ) + self.horizontalLayout_3.addItem(spacerItem2) + self.verticalLayout.addLayout(self.horizontalLayout_3) + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setObjectName("horizontalLayout") + self.fontComboBox = QtWidgets.QFontComboBox(parent=self.verticalLayoutWidget) + self.fontComboBox.setObjectName("fontComboBox") + self.horizontalLayout.addWidget(self.fontComboBox) + self.font_size = QtWidgets.QComboBox(parent=self.verticalLayoutWidget) + self.font_size.setObjectName("font_size") + self.font_size.addItem("") + self.font_size.addItem("") + self.font_size.addItem("") + self.font_size.addItem("") + self.font_size.addItem("") + self.font_size.addItem("") + self.font_size.addItem("") + self.font_size.addItem("") + self.font_size.addItem("") + self.font_size.addItem("") + self.font_size.addItem("") + self.font_size.addItem("") + self.font_size.addItem("") + self.font_size.addItem("") + self.font_size.addItem("") + self.horizontalLayout.addWidget(self.font_size) + spacerItem3 = QtWidgets.QSpacerItem( + 40, + 20, + QtWidgets.QSizePolicy.Policy.Expanding, + QtWidgets.QSizePolicy.Policy.Minimum, + ) + self.horizontalLayout.addItem(spacerItem3) + self.verticalLayout.addLayout(self.horizontalLayout) + self.editSignature = QtWidgets.QTextEdit(parent=self.email_settingsPage2_2) + self.editSignature.setGeometry(QtCore.QRect(10, 80, 321, 301)) + self.editSignature.setObjectName("editSignature") + self.debug = QtWidgets.QPushButton(parent=self.email_settingsPage2_2) + self.debug.setGeometry(QtCore.QRect(30, 430, 75, 24)) + self.debug.setObjectName("debug") + self.email_settings.addTab(self.email_settingsPage2_2, "") + self.label_3.setBuddy(self.db_name) + self.label_4.setBuddy(self.db_path) + self.label_5.setBuddy(self.save_path) + + self.retranslateUi(Dialog) + self.email_settings.setCurrentIndex(0) + self.buttonBox.accepted.connect(Dialog.accept) # type: ignore + self.buttonBox.rejected.connect(Dialog.reject) # type: ignore + QtCore.QMetaObject.connectSlotsByName(Dialog) + Dialog.setTabOrder(self.db_name, self.db_path) + Dialog.setTabOrder(self.db_path, self.save_path) + + def retranslateUi(self, Dialog): + _translate = QtCore.QCoreApplication.translate + Dialog.setWindowTitle(_translate("Dialog", "Dialog")) + self.label_2.setText(_translate("Dialog", "Allgemeine Einstellungen")) + self.tb_select_db.setText(_translate("Dialog", "...")) + self.label_3.setToolTip( + _translate( + "Dialog", + '

Name der Datenbank, welche verwendet werden soll. Muss auf .db enden

', + ) + ) + self.label_3.setText(_translate("Dialog", "Datenbankname")) + self.db_name.setText(_translate("Dialog", "sap.db")) + self.label_4.setText(_translate("Dialog", "Datenbankpfad")) + self.tb_set_save_path.setText(_translate("Dialog", "...")) + self.label_5.setToolTip( + _translate( + "Dialog", + "Pfad, an dem heruntergeladene Dateien gespeichert werden sollen", + ) + ) + self.label_5.setText(_translate("Dialog", "Temporäre Dateien")) + self.label_8.setText(_translate("Dialog", "Nutzername")) + self.use_username_smtp_login.setStatusTip( + _translate( + "Dialog", + "Anklicken, wenn Nutzername benötigt wird, um sich beim Server anzumelden", + ) + ) + self.use_username_smtp_login.setText( + _translate("Dialog", "Nutzername zum\n" " Anmelden verwenden") + ) + self.mail_username.setStatusTip( + _translate("Dialog", "Kürzel, von der Hochschule vergeben, bsp: Aky547") + ) + self.label_10.setText(_translate("Dialog", "Passwort")) + self.label_7.setText(_translate("Dialog", "Sender-eMail")) + self.label.setText(_translate("Dialog", "SMTP-Server")) + self.label_6.setText(_translate("Dialog", "Port")) + self.email_settings.setTabText( + self.email_settings.indexOf(self.email_settingsPage1_2), + _translate("Dialog", "Allgemeines"), + ) + self.bold.setText(_translate("Dialog", "Fett")) + self.italic.setText(_translate("Dialog", "Kursiv")) + self.underscore.setText(_translate("Dialog", "Unterstrichen")) + self.font_size.setItemText(0, _translate("Dialog", "8")) + self.font_size.setItemText(1, _translate("Dialog", "9")) + self.font_size.setItemText(2, _translate("Dialog", "11")) + self.font_size.setItemText(3, _translate("Dialog", "12")) + self.font_size.setItemText(4, _translate("Dialog", "14")) + self.font_size.setItemText(5, _translate("Dialog", "16")) + self.font_size.setItemText(6, _translate("Dialog", "18")) + self.font_size.setItemText(7, _translate("Dialog", "20")) + self.font_size.setItemText(8, _translate("Dialog", "22")) + self.font_size.setItemText(9, _translate("Dialog", "24")) + self.font_size.setItemText(10, _translate("Dialog", "26")) + self.font_size.setItemText(11, _translate("Dialog", "28")) + self.font_size.setItemText(12, _translate("Dialog", "36")) + self.font_size.setItemText(13, _translate("Dialog", "48")) + self.font_size.setItemText(14, _translate("Dialog", "72")) + self.debug.setText(_translate("Dialog", "PushButton")) + self.email_settings.setTabText( + self.email_settings.indexOf(self.email_settingsPage2_2), + _translate("Dialog", "Signatur"), + ) diff --git a/src/ui/dialogs/dialog_sources/settings.ui b/src/ui/dialogs/dialog_sources/settings.ui index a3da916..88c8a84 100644 --- a/src/ui/dialogs/dialog_sources/settings.ui +++ b/src/ui/dialogs/dialog_sources/settings.ui @@ -44,64 +44,6 @@ QFrame::Raised - - - - 400 - 30 - 161 - 21 - - - - Dateispezifische Einstellungen - - - - - - 370 - 0 - 20 - 541 - - - - QFrame::Plain - - - 1 - - - 0 - - - Qt::Vertical - - - - - - 400 - 50 - 311 - 51 - - - - Qt::NoFocus - - - Qt::ImhNone - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hier können Einstellungen für bestehende Dateiformate geändert, oder neue Dateiformate eingefügt werden.</p></body></html> - - @@ -115,32 +57,30 @@ p, li { white-space: pre-wrap; } Allgemeine Einstellungen - - - - 410 - 110 - 161 - 17 - - - - Verwendet im Betriebssystem festgelegte Anwendungen um Dateien zu öffnen - - - Standard-Apps verwenden - - 10 - 50 + 40 361 491 + + + + ... + + + + + + + false + + + @@ -154,29 +94,13 @@ p, li { white-space: pre-wrap; } - - - - Pfad, an dem heruntergeladene Dateien gespeichert werden sollen - + + - Speicherpfad - - - save_path + sap.db - - - - false - - - - - - @@ -187,12 +111,8 @@ p, li { white-space: pre-wrap; } - - - - sap.db - - + + @@ -214,47 +134,356 @@ p, li { white-space: pre-wrap; } - - + + + + Pfad, an dem heruntergeladene Dateien gespeichert werden sollen + - ... + Temporäre Dateien + + + save_path - + - 400 - 130 - 331 - 381 + 390 + 40 + 341 + 491 - - true + + 0 - - - - 0 - 0 - 329 - 379 - - - + + + Allgemeines + + + + + 10 + 30 + 321 + 381 + + + + + + + true + + + + + + + Nutzername + + + + + + + Anklicken, wenn Nutzername benötigt wird, um sich beim Server anzumelden + + + Nutzername zum + Anmelden verwenden + + + false + + + + + + + Kürzel, von der Hochschule vergeben, bsp: Aky547 + + + true + + + + + + + Qt::ImhDigitsOnly|Qt::ImhPreferNumbers + + + true + + + + + + + Passwort + + + + + + + Sender-eMail + + + + + + + + + + + + + + Qt::ImhEmailCharactersOnly + + + true + + + + + + + SMTP-Server + + + + + + + Qt::ImhHiddenText|Qt::ImhSensitiveData + + + true + + + + + + + Port + + + + + + + + + + + + + + + + Signatur + + 0 0 - 331 - 381 + 333 + 71 - - Qt::ActionsContextMenu + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Fett + + + true + + + + + + + Kursiv + + + true + + + + + + + Unterstrichen + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + + 8 + + + + + 9 + + + + + 11 + + + + + 12 + + + + + 14 + + + + + 16 + + + + + 18 + + + + + 20 + + + + + 22 + + + + + 24 + + + + + 26 + + + + + 28 + + + + + 36 + + + + + 48 + + + + + 72 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + 10 + 80 + 321 + 301 + + + + + + + 30 + 430 + 75 + 24 + + + + PushButton @@ -265,8 +494,6 @@ p, li { white-space: pre-wrap; } db_name db_path save_path - os_apps - textBrowser diff --git a/src/ui/dialogs/settings.py b/src/ui/dialogs/settings.py index 4517f4a..e6ab045 100644 --- a/src/ui/dialogs/settings.py +++ b/src/ui/dialogs/settings.py @@ -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 = "" +_style_editable = "{text}" +_italic = " font-style:italic;" +_bold = " font-weight:700;" +_underscore = " text-decoration: underline;" +_text_start = "" +_text_end = "" + + +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())