diff --git a/src/logic/userInterface.py b/src/logic/userInterface.py index 0410d8b..c4777cd 100644 --- a/src/logic/userInterface.py +++ b/src/logic/userInterface.py @@ -42,6 +42,7 @@ from src.ui import ( reminder_ui, settings_ui, ) +from src.utils import Icon config = OmegaConf.load("config.yaml") @@ -114,13 +115,7 @@ class Ui(Ui_Semesterapparat): self.MainWindow = MainWindow # set the window title MainWindow.setWindowTitle("Semesterapparatsmanagement") - icon = QtGui.QIcon() - icon.addPixmap( - QtGui.QPixmap("icons/logo.ico"), - QtGui.QIcon.Mode.Normal, - QtGui.QIcon.State.Off, - ) - MainWindow.setWindowIcon(icon) + MainWindow.setWindowIcon(Icon("logo", "ico").icon) self.db = Database() # self.show() @@ -298,6 +293,7 @@ class Ui(Ui_Semesterapparat): self.elsa_save.clicked.connect(self.save_elsa) self.elsa_date_today.clicked.connect(self.generateTodayDateElsa) self.active_semester.clicked.connect(self.addSemester) + Icon("semap", "png").set_icon(self.active_semester) self.elsa_table.doubleClicked.connect(self.open_elsa) self.btn_add_document_elsa.clicked.connect(self.addDokumentElsa) self.check_file_elsa.clicked.connect(self.parseDokumentElsa) @@ -408,12 +404,8 @@ class Ui(Ui_Semesterapparat): ) scans = self.db.getElsaMedia(elsa_id) if scans == []: - self.MainWindow.setStatusTip("ELSA-Apparat hat noch keine Daten") self.create_frame_elsa.setEnabled(True) else: - self.MainWindow.setStatusTip( - "ELSA-Apparat hat bereits alle benötigten Daten" - ) for scan in scans: self.table_elsa_list.insertRow(0) self.table_elsa_list.setItem(0, 0, QtWidgets.QTableWidgetItem(scan[1])) @@ -549,6 +541,19 @@ class Ui(Ui_Semesterapparat): self.btn_notify_for_deletion.setEnabled(False) + def setStatisticTableSize(self): + print(self.statistics_table.size(), self.statistics_table.rowCount()) + size = self.statistics_table.size() + h = size.height() + w = size.width() + rows = self.statistics_table.rowCount() + rowheight = round(h / rows) - 5 + header_width = round(w / 3) - 5 + for i in range(3): + self.statistics_table.setColumnWidth(i, header_width) + for i in range(rows): + self.statistics_table.setRowHeight(i, rowheight) + def get_apparats(self): alist = self.db.getAllAparats(deleted=0) alist = natsorted(alist, key=lambda x: x[4], reverse=True) @@ -572,6 +577,7 @@ class Ui(Ui_Semesterapparat): # self.tabWidget.setCurrentIndex(1) self.tabWidget_2.setCurrentIndex(1) self.tabWidget_2.setCurrentIndex(0) + self.populate_tab() if self.tabWidget.currentIndex() == 0: # Apparate # clear all entries from the table self.tableWidget_apparate.setRowCount(0) @@ -585,17 +591,20 @@ class Ui(Ui_Semesterapparat): self.elsa_table.setRowCount(0) elsa_apparats = self.db.getElsaApparats() elsa_apparats = natsorted(elsa_apparats, key=lambda x: x[2], reverse=True) - graph_data = {} + graph_data = {"x": [], "y": []} # x = semester, y = number of apparats for apparat in elsa_apparats: print(apparat) data = self.insert_elsa_into_table(apparat) - if data[0] in graph_data.keys(): - graph_data["x"].append(data[0]) - graph_data["y"].append(data[1]) + semester = data[0] + number = data[1] + if semester not in graph_data["x"]: + graph_data["x"].append(semester) + graph_data["y"].append(number) else: - graph_data["x"] = [data[0]] - graph_data["y"] = [data[1]] + index = graph_data["x"].index(semester) + graph_data["y"][index] += number + generateMissing = True if len(graph_data["x"]) > 1 else False graph = DataGraph( "ELSA Apparate pro Semester", @@ -603,7 +612,16 @@ class Ui(Ui_Semesterapparat): generateMissing, "Anzahl der Apparate", ) - + ic(graph_data) + self.elsa_statistics_table.setRowCount(0) + for i in range(len(graph_data["x"])): + self.elsa_statistics_table.insertRow(0) + self.elsa_statistics_table.setItem( + 0, 0, QtWidgets.QTableWidgetItem(graph_data["x"][i]) + ) + self.elsa_statistics_table.setItem( + 0, 1, QtWidgets.QTableWidgetItem(str(graph_data["y"][i])) + ) self.elsa_statistics.addTab(graph, "Graph") def search_book(self): @@ -895,8 +913,12 @@ class Ui(Ui_Semesterapparat): # add them to the gridLayout_4 self.gridLayout_4.addWidget(created_status, 1, 0) self.gridLayout_4.addWidget(deleted_status, 1, 1) + # self.setStatisticTableSize() created_status.person_double_clicked.connect(self.open_apparat) - deleted_status.person_double_clicked.connect(self.open_apparat) + created_status.setToolTip("Doppelklick um den Semesterapparat zu öffnen") + deleted_status.setToolTip("Nur zur Übersicht") + # set deleted_status background to slightly gray + deleted_status.setStyleSheet("background-color: #f0f0f0") def open_apparat(self, header: str, apparat: str, parent_depth: int): print(header) @@ -1013,6 +1035,9 @@ class Ui(Ui_Semesterapparat): ) self.statistics_table.resizeColumnsToContents() self.statistics_table.resizeRowsToContents() + # self.setStatisticTableSize() + + # get height of the table # create graph graph_data = { @@ -1252,7 +1277,8 @@ class Ui(Ui_Semesterapparat): self.profname_mand.setText("*") self.change_state(0, 0) else: - self.drpdwn_prof_name.setStyleSheet("border: 1px solid black;") + pass + # self.drpdwn_prof_name.setStyleSheet("border: 1px solid black;") def validate_prof_mail(self): if self.frame.isEnabled(): @@ -1308,9 +1334,11 @@ class Ui(Ui_Semesterapparat): ) or self.check_eternal_app.isChecked(): self._mand.setText("") self.change_state(5, 1) + self.check_eternal_app.setEnabled(True) else: self._mand.setText("*") self.change_state(5, 0) + self.check_eternal_app.setEnabled(False) def change_state(self, index, state): global valid_input @@ -1593,6 +1621,11 @@ class Ui(Ui_Semesterapparat): self.btn_reserve.hide() self.groupBox_2.hide() self.groupBox.hide() + self.check_eternal_app.setEnabled(False) + # set all radio buttons to unchecked + self.sem_sommer.setChecked(False) + self.sem_winter.setChecked(False) + for child in self.frame.findChildren(QtWidgets.QLineEdit): child.clear() @@ -2315,13 +2348,11 @@ class Ui(Ui_Semesterapparat): if apparat is None: self.confirm_popup("Bitte erst einen Apparat auswählen!") return - active_apparat_id = ( - self.tableWidget_apparate.item( - self.tableWidget_apparate.currentRow(), 0 - ).text() - if apparat is None - else apparat - ) + if apparat: + active_apparat_id = apparat + else: + active_apparat_id = self.drpdwn_app_nr.currentText() + print(active_apparat_id) profname = self.drpdwn_prof_name.currentText().replace(",", "").split(" ") profname = f"{profname[1]} {profname[0]}" prof_id = self.db.getProfId(self.drpdwn_prof_name.currentText()) diff --git a/src/ui/Ui_semesterapparat_ui.py b/src/ui/Ui_semesterapparat_ui.py index 2762792..bfa3ff0 100644 --- a/src/ui/Ui_semesterapparat_ui.py +++ b/src/ui/Ui_semesterapparat_ui.py @@ -28,7 +28,7 @@ class Ui_MainWindow(object): icon = QtGui.QIcon() icon.addPixmap( QtGui.QPixmap( - "c:\\Users\\aky547\\GitHub\\SemesterapparatsManager\\src\\ui\\../../icons/logo.ico" + "c:\\Users\\aky547\\GitHub\\SemesterapparatsManager\\src\\ui\\../../../../icons/logo.ico" ), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off, @@ -278,7 +278,7 @@ class Ui_MainWindow(object): font.setPointSize(9) font.setBold(False) self.drpdwn_app_nr.setFont(font) - self.drpdwn_app_nr.setInputMethodHints(QtCore.Qt.InputMethodHint.ImhDigitsOnly) + self.drpdwn_app_nr.setInputMethodHints(QtCore.Qt.InputMethodHint.ImhNone) self.drpdwn_app_nr.setEditable(True) self.drpdwn_app_nr.setObjectName("drpdwn_app_nr") self.app_name = QtWidgets.QLineEdit(parent=self.frame) @@ -342,6 +342,7 @@ class Ui_MainWindow(object): self.btn_apparat_apply.setFont(font) self.btn_apparat_apply.setObjectName("btn_apparat_apply") self.check_eternal_app = QtWidgets.QCheckBox(parent=self.frame) + self.check_eternal_app.setEnabled(False) self.check_eternal_app.setGeometry(QtCore.QRect(340, 90, 101, 17)) font = QtGui.QFont() font.setPointSize(9) @@ -393,12 +394,12 @@ class Ui_MainWindow(object): self.drpdwn_prof_name = QtWidgets.QComboBox(parent=self.frame) self.drpdwn_prof_name.setGeometry(QtCore.QRect(110, 80, 121, 22)) font = QtGui.QFont() - font.setPointSize(8) + font.setPointSize(9) font.setBold(False) self.drpdwn_prof_name.setFont(font) self.drpdwn_prof_name.setFocusPolicy(QtCore.Qt.FocusPolicy.StrongFocus) + self.drpdwn_prof_name.setInputMethodHints(QtCore.Qt.InputMethodHint.ImhNone) self.drpdwn_prof_name.setEditable(True) - self.drpdwn_prof_name.setCurrentText("") self.drpdwn_prof_name.setInsertPolicy( QtWidgets.QComboBox.InsertPolicy.InsertAlphabetically ) @@ -536,11 +537,12 @@ class Ui_MainWindow(object): self.gridLayout_6.setContentsMargins(0, 0, 0, 0) self.gridLayout_6.setObjectName("gridLayout_6") self.app_fach = QtWidgets.QComboBox(parent=self.gridLayoutWidget_5) - self.app_fach.setMaximumSize(QtCore.QSize(16777215, 20)) + self.app_fach.setMaximumSize(QtCore.QSize(16777215, 25)) font = QtGui.QFont() font.setPointSize(9) font.setBold(False) self.app_fach.setFont(font) + self.app_fach.setEditable(True) self.app_fach.setObjectName("app_fach") self.gridLayout_6.addWidget(self.app_fach, 0, 0, 1, 1) spacerItem2 = QtWidgets.QSpacerItem( @@ -1080,6 +1082,7 @@ class Ui_MainWindow(object): self.gridLayout_7.setContentsMargins(0, 0, 0, 0) self.gridLayout_7.setObjectName("gridLayout_7") self.elsa_date_today = QtWidgets.QPushButton(parent=self.gridLayoutWidget_6) + self.elsa_date_today.setFlat(False) self.elsa_date_today.setObjectName("elsa_date_today") self.gridLayout_7.addWidget(self.elsa_date_today, 1, 2, 1, 1) self.label_29 = QtWidgets.QLabel(parent=self.gridLayoutWidget_6) @@ -1099,15 +1102,6 @@ class Ui_MainWindow(object): self.active_semester = QtWidgets.QPushButton(parent=self.gridLayoutWidget_6) self.active_semester.setEnabled(False) self.active_semester.setText("") - icon1 = QtGui.QIcon() - icon1.addPixmap( - QtGui.QPixmap( - "c:\\Users\\aky547\\GitHub\\SemesterapparatsManager\\src\\ui\\../../icons/semap.png" - ), - QtGui.QIcon.Mode.Normal, - QtGui.QIcon.State.Off, - ) - self.active_semester.setIcon(icon1) self.active_semester.setIconSize(QtCore.QSize(20, 16)) self.active_semester.setFlat(True) self.active_semester.setObjectName("active_semester") @@ -1153,23 +1147,24 @@ class Ui_MainWindow(object): self.elsa_statistics.setObjectName("elsa_statistics") self.tab_9 = QtWidgets.QWidget() self.tab_9.setObjectName("tab_9") - self.tableWidget_2 = QtWidgets.QTableWidget(parent=self.tab_9) - self.tableWidget_2.setGeometry(QtCore.QRect(0, 0, 421, 231)) - self.tableWidget_2.setHorizontalScrollBarPolicy( + self.elsa_statistics_table = QtWidgets.QTableWidget(parent=self.tab_9) + self.elsa_statistics_table.setGeometry(QtCore.QRect(0, 0, 421, 241)) + self.elsa_statistics_table.setHorizontalScrollBarPolicy( QtCore.Qt.ScrollBarPolicy.ScrollBarAlwaysOff ) - self.tableWidget_2.setEditTriggers( + self.elsa_statistics_table.setEditTriggers( QtWidgets.QAbstractItemView.EditTrigger.NoEditTriggers ) - self.tableWidget_2.setObjectName("tableWidget_2") - self.tableWidget_2.setColumnCount(2) - self.tableWidget_2.setRowCount(0) + self.elsa_statistics_table.setTextElideMode(QtCore.Qt.TextElideMode.ElideRight) + self.elsa_statistics_table.setObjectName("elsa_statistics_table") + self.elsa_statistics_table.setColumnCount(2) + self.elsa_statistics_table.setRowCount(0) item = QtWidgets.QTableWidgetItem() - self.tableWidget_2.setHorizontalHeaderItem(0, item) + self.elsa_statistics_table.setHorizontalHeaderItem(0, item) item = QtWidgets.QTableWidgetItem() - self.tableWidget_2.setHorizontalHeaderItem(1, item) - self.tableWidget_2.horizontalHeader().setDefaultSectionSize(210) - self.tableWidget_2.horizontalHeader().setSortIndicatorShown(True) + self.elsa_statistics_table.setHorizontalHeaderItem(1, item) + self.elsa_statistics_table.horizontalHeader().setDefaultSectionSize(210) + self.elsa_statistics_table.horizontalHeader().setSortIndicatorShown(True) self.elsa_statistics.addTab(self.tab_9, "") self.elsa_cancel_create = QtWidgets.QPushButton(parent=self.tab_8) self.elsa_cancel_create.setEnabled(False) @@ -1636,15 +1631,15 @@ class Ui_MainWindow(object): self.btn_copy_adis_command.setWhatsThis("") self.btn_copy_adis_command.setAccessibleDescription("") self.btn_copy_adis_command.setAutoFillBackground(False) - icon2 = QtGui.QIcon() - icon2.addPixmap( + icon1 = QtGui.QIcon() + icon1.addPixmap( QtGui.QPixmap( "c:\\Users\\aky547\\GitHub\\SemesterapparatsManager\\src\\ui\\../../../../../../.designer/backup/icons/information.png" ), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off, ) - self.btn_copy_adis_command.setIcon(icon2) + self.btn_copy_adis_command.setIcon(icon1) self.btn_copy_adis_command.setCheckable(False) self.btn_copy_adis_command.setChecked(False) self.btn_copy_adis_command.setAutoDefault(False) @@ -1725,7 +1720,7 @@ class Ui_MainWindow(object): self.menubar.addAction(self.menuHelp.menuAction()) self.retranslateUi(MainWindow) - self.tabWidget.setCurrentIndex(0) + self.tabWidget.setCurrentIndex(1) self.tabWidget_2.setCurrentIndex(0) self.stackedWidget_4.setCurrentIndex(0) self.tabWidget_3.setCurrentIndex(0) @@ -2015,9 +2010,9 @@ class Ui_MainWindow(object): item.setText(_translate("MainWindow", "Signatur")) item = self.table_elsa_list.horizontalHeaderItem(3) item.setText(_translate("MainWindow", "Seite")) - item = self.tableWidget_2.horizontalHeaderItem(0) + item = self.elsa_statistics_table.horizontalHeaderItem(0) item.setText(_translate("MainWindow", "Semester")) - item = self.tableWidget_2.horizontalHeaderItem(1) + item = self.elsa_statistics_table.horizontalHeaderItem(1) item.setText(_translate("MainWindow", "Zugang")) self.elsa_statistics.setTabText( self.elsa_statistics.indexOf(self.tab_9), diff --git a/src/ui/__init__.py b/src/ui/__init__.py index 53fff92..a38fd7a 100644 --- a/src/ui/__init__.py +++ b/src/ui/__init__.py @@ -1,24 +1,24 @@ -import pathlib - -from .dialogs import ( - App_Ext_Dialog, - Mail_Dialog, - Settings, - edit_bookdata_ui, - fileparser_ui, - login_ui, - medienadder_ui, - new_subject_ui, - parsed_titles_ui, - popus_confirm, - reminder_ui, - settings_ui, -) -from .Ui_semesterapparat_ui import Ui_MainWindow as Ui_Semesterapparat -from .Ui_setupwizard import Ui_Wizard as SetupWizard -from .widgets import FilePicker, GraphWidget, Message_Widget, StatusWidget - -path = pathlib.Path(__file__).parent.absolute() -# from .mainwindow import Ui_MainWindow as Ui_MainWindow -# from .sap import Ui_MainWindow as MainWindow_SAP -__all__ = ["mainwindow", "sap", "dialogs", "widgets"] +import pathlib + +from .dialogs import ( + App_Ext_Dialog, + Mail_Dialog, + Settings, + edit_bookdata_ui, + fileparser_ui, + login_ui, + medienadder_ui, + new_subject_ui, + parsed_titles_ui, + popus_confirm, + reminder_ui, + settings_ui, +) +from .Ui_semesterapparat_ui import Ui_MainWindow as Ui_Semesterapparat +from .Ui_setupwizard import Ui_Wizard as SetupWizard +from .widgets import DataGraph, FilePicker, Message_Widget, StatusWidget + +path = pathlib.Path(__file__).parent.absolute() +# from .mainwindow import Ui_MainWindow as Ui_MainWindow +# from .sap import Ui_MainWindow as MainWindow_SAP +__all__ = ["mainwindow", "sap", "dialogs", "widgets"] diff --git a/src/ui/dialogs/dialog_sources/Ui_mail_preview.py b/src/ui/dialogs/dialog_sources/Ui_mail_preview.py index 624c427..1a3c52a 100644 --- a/src/ui/dialogs/dialog_sources/Ui_mail_preview.py +++ b/src/ui/dialogs/dialog_sources/Ui_mail_preview.py @@ -1,99 +1,127 @@ -# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\mail_preview.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_eMailPreview(object): - def setupUi(self, eMailPreview): - eMailPreview.setObjectName("eMailPreview") - eMailPreview.resize(676, 676) - icon = QtGui.QIcon() - icon.addPixmap(QtGui.QPixmap("icons/email.svg"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off) - eMailPreview.setWindowIcon(icon) - self.buttonBox = QtWidgets.QDialogButtonBox(parent=eMailPreview) - self.buttonBox.setGeometry(QtCore.QRect(310, 630, 341, 32)) - self.buttonBox.setOrientation(QtCore.Qt.Orientation.Horizontal) - self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.StandardButton.Cancel) - self.buttonBox.setObjectName("buttonBox") - self.gridLayoutWidget = QtWidgets.QWidget(parent=eMailPreview) - self.gridLayoutWidget.setGeometry(QtCore.QRect(10, 10, 661, 621)) - self.gridLayoutWidget.setObjectName("gridLayoutWidget") - self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget) - self.gridLayout.setContentsMargins(0, 0, 0, 0) - self.gridLayout.setObjectName("gridLayout") - self.label_5 = QtWidgets.QLabel(parent=self.gridLayoutWidget) - self.label_5.setObjectName("label_5") - self.gridLayout.addWidget(self.label_5, 0, 0, 1, 1) - self.prof_name = QtWidgets.QLineEdit(parent=self.gridLayoutWidget) - self.prof_name.setObjectName("prof_name") - self.gridLayout.addWidget(self.prof_name, 2, 2, 1, 1) - self.label_3 = QtWidgets.QLabel(parent=self.gridLayoutWidget) - self.label_3.setAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignLeft|QtCore.Qt.AlignmentFlag.AlignTop) - self.label_3.setObjectName("label_3") - self.gridLayout.addWidget(self.label_3, 5, 0, 1, 1) - self.mail_name = QtWidgets.QLineEdit(parent=self.gridLayoutWidget) - self.mail_name.setObjectName("mail_name") - self.gridLayout.addWidget(self.mail_name, 1, 2, 1, 1) - self.label_2 = QtWidgets.QLabel(parent=self.gridLayoutWidget) - self.label_2.setObjectName("label_2") - self.gridLayout.addWidget(self.label_2, 2, 0, 1, 1) - self.label_4 = QtWidgets.QLabel(parent=self.gridLayoutWidget) - self.label_4.setObjectName("label_4") - self.gridLayout.addWidget(self.label_4, 3, 0, 1, 1) - self.mail_header = QtWidgets.QLineEdit(parent=self.gridLayoutWidget) - self.mail_header.setObjectName("mail_header") - self.gridLayout.addWidget(self.mail_header, 3, 2, 1, 1) - self.label = QtWidgets.QLabel(parent=self.gridLayoutWidget) - self.label.setObjectName("label") - self.gridLayout.addWidget(self.label, 1, 0, 1, 1) - self.comboBox = QtWidgets.QComboBox(parent=self.gridLayoutWidget) - self.comboBox.setObjectName("comboBox") - self.gridLayout.addWidget(self.comboBox, 0, 2, 1, 1) - self.mail_body = QtWidgets.QTextEdit(parent=self.gridLayoutWidget) - self.mail_body.setObjectName("mail_body") - self.gridLayout.addWidget(self.mail_body, 5, 2, 1, 1) - self.horizontalLayout_3 = QtWidgets.QHBoxLayout() - self.horizontalLayout_3.setObjectName("horizontalLayout_3") - self.gender_male = QtWidgets.QRadioButton(parent=self.gridLayoutWidget) - self.gender_male.setObjectName("gender_male") - self.horizontalLayout_3.addWidget(self.gender_male) - self.gender_female = QtWidgets.QRadioButton(parent=self.gridLayoutWidget) - self.gender_female.setObjectName("gender_female") - self.horizontalLayout_3.addWidget(self.gender_female) - self.gender_non = QtWidgets.QRadioButton(parent=self.gridLayoutWidget) - self.gender_non.setObjectName("gender_non") - self.horizontalLayout_3.addWidget(self.gender_non) - spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum) - self.horizontalLayout_3.addItem(spacerItem) - self.gridLayout.addLayout(self.horizontalLayout_3, 4, 2, 1, 1) - self.label_6 = QtWidgets.QLabel(parent=self.gridLayoutWidget) - self.label_6.setObjectName("label_6") - self.gridLayout.addWidget(self.label_6, 4, 0, 1, 1) - self.btn_okay = QtWidgets.QPushButton(parent=eMailPreview) - self.btn_okay.setGeometry(QtCore.QRect(487, 634, 75, 24)) - self.btn_okay.setObjectName("btn_okay") - - self.retranslateUi(eMailPreview) - self.buttonBox.accepted.connect(eMailPreview.accept) # type: ignore - self.buttonBox.rejected.connect(eMailPreview.reject) # type: ignore - QtCore.QMetaObject.connectSlotsByName(eMailPreview) - - def retranslateUi(self, eMailPreview): - _translate = QtCore.QCoreApplication.translate - eMailPreview.setWindowTitle(_translate("eMailPreview", "eMail Voransicht")) - self.label_5.setText(_translate("eMailPreview", "Art")) - self.label_3.setText(_translate("eMailPreview", "Mail")) - self.label_2.setText(_translate("eMailPreview", "Prof")) - self.label_4.setText(_translate("eMailPreview", "Betreff")) - self.label.setText(_translate("eMailPreview", "eMail")) - self.gender_male.setText(_translate("eMailPreview", "M")) - self.gender_female.setText(_translate("eMailPreview", "W")) - self.gender_non.setText(_translate("eMailPreview", "Divers")) - self.label_6.setText(_translate("eMailPreview", "Geschlecht")) - self.btn_okay.setText(_translate("eMailPreview", "Senden")) +# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\mail_preview.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_eMailPreview(object): + def setupUi(self, eMailPreview): + eMailPreview.setObjectName("eMailPreview") + eMailPreview.resize(676, 676) + icon = QtGui.QIcon() + icon.addPixmap( + QtGui.QPixmap( + "c:\\Users\\aky547\\GitHub\\SemesterapparatsManager\\src\\ui\\dialogs\\dialog_sources\\../../../../../../icons/email.svg" + ), + QtGui.QIcon.Mode.Normal, + QtGui.QIcon.State.Off, + ) + eMailPreview.setWindowIcon(icon) + self.buttonBox = QtWidgets.QDialogButtonBox(parent=eMailPreview) + self.buttonBox.setGeometry(QtCore.QRect(310, 630, 341, 32)) + self.buttonBox.setOrientation(QtCore.Qt.Orientation.Horizontal) + self.buttonBox.setStandardButtons( + QtWidgets.QDialogButtonBox.StandardButton.Cancel + ) + self.buttonBox.setObjectName("buttonBox") + self.gridLayoutWidget = QtWidgets.QWidget(parent=eMailPreview) + self.gridLayoutWidget.setGeometry(QtCore.QRect(10, 10, 661, 621)) + self.gridLayoutWidget.setObjectName("gridLayoutWidget") + self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget) + self.gridLayout.setContentsMargins(0, 0, 0, 0) + self.gridLayout.setObjectName("gridLayout") + self.prof_name = QtWidgets.QLineEdit(parent=self.gridLayoutWidget) + self.prof_name.setObjectName("prof_name") + self.gridLayout.addWidget(self.prof_name, 2, 2, 1, 1) + self.label_6 = QtWidgets.QLabel(parent=self.gridLayoutWidget) + self.label_6.setObjectName("label_6") + self.gridLayout.addWidget(self.label_6, 4, 0, 1, 1) + self.comboBox = QtWidgets.QComboBox(parent=self.gridLayoutWidget) + self.comboBox.setObjectName("comboBox") + self.gridLayout.addWidget(self.comboBox, 0, 2, 1, 1) + self.label_5 = QtWidgets.QLabel(parent=self.gridLayoutWidget) + self.label_5.setObjectName("label_5") + self.gridLayout.addWidget(self.label_5, 0, 0, 1, 1) + self.label_2 = QtWidgets.QLabel(parent=self.gridLayoutWidget) + self.label_2.setObjectName("label_2") + self.gridLayout.addWidget(self.label_2, 2, 0, 1, 1) + self.mail_header = QtWidgets.QLineEdit(parent=self.gridLayoutWidget) + self.mail_header.setObjectName("mail_header") + self.gridLayout.addWidget(self.mail_header, 3, 2, 1, 1) + self.label = QtWidgets.QLabel(parent=self.gridLayoutWidget) + self.label.setObjectName("label") + self.gridLayout.addWidget(self.label, 1, 0, 1, 1) + self.mail_body = QtWidgets.QTextEdit(parent=self.gridLayoutWidget) + self.mail_body.setObjectName("mail_body") + self.gridLayout.addWidget(self.mail_body, 5, 2, 1, 1) + self.label_3 = QtWidgets.QLabel(parent=self.gridLayoutWidget) + self.label_3.setAlignment( + QtCore.Qt.AlignmentFlag.AlignLeading + | QtCore.Qt.AlignmentFlag.AlignLeft + | QtCore.Qt.AlignmentFlag.AlignTop + ) + self.label_3.setObjectName("label_3") + self.gridLayout.addWidget(self.label_3, 5, 0, 1, 1) + self.mail_name = QtWidgets.QLineEdit(parent=self.gridLayoutWidget) + self.mail_name.setObjectName("mail_name") + self.gridLayout.addWidget(self.mail_name, 1, 2, 1, 1) + self.label_4 = QtWidgets.QLabel(parent=self.gridLayoutWidget) + self.label_4.setObjectName("label_4") + self.gridLayout.addWidget(self.label_4, 3, 0, 1, 1) + self.horizontalLayout_3 = QtWidgets.QHBoxLayout() + self.horizontalLayout_3.setObjectName("horizontalLayout_3") + self.gender_male = QtWidgets.QRadioButton(parent=self.gridLayoutWidget) + self.gender_male.setObjectName("gender_male") + self.horizontalLayout_3.addWidget(self.gender_male) + self.gender_female = QtWidgets.QRadioButton(parent=self.gridLayoutWidget) + self.gender_female.setObjectName("gender_female") + self.horizontalLayout_3.addWidget(self.gender_female) + self.gender_non = QtWidgets.QRadioButton(parent=self.gridLayoutWidget) + self.gender_non.setObjectName("gender_non") + self.horizontalLayout_3.addWidget(self.gender_non) + spacerItem = QtWidgets.QSpacerItem( + 40, + 20, + QtWidgets.QSizePolicy.Policy.Expanding, + QtWidgets.QSizePolicy.Policy.Minimum, + ) + self.horizontalLayout_3.addItem(spacerItem) + self.gridLayout.addLayout(self.horizontalLayout_3, 4, 2, 1, 1) + self.newTemplate = QtWidgets.QPushButton(parent=self.gridLayoutWidget) + self.newTemplate.setAutoFillBackground(False) + self.newTemplate.setText("") + self.newTemplate.setIconSize(QtCore.QSize(24, 24)) + self.newTemplate.setAutoDefault(True) + self.newTemplate.setDefault(False) + self.newTemplate.setFlat(True) + self.newTemplate.setObjectName("newTemplate") + self.gridLayout.addWidget(self.newTemplate, 0, 3, 1, 1) + self.btn_okay = QtWidgets.QPushButton(parent=eMailPreview) + self.btn_okay.setGeometry(QtCore.QRect(487, 634, 75, 24)) + self.btn_okay.setStatusTip("") + self.btn_okay.setObjectName("btn_okay") + + self.retranslateUi(eMailPreview) + self.buttonBox.accepted.connect(eMailPreview.accept) # type: ignore + self.buttonBox.rejected.connect(eMailPreview.reject) # type: ignore + QtCore.QMetaObject.connectSlotsByName(eMailPreview) + + def retranslateUi(self, eMailPreview): + _translate = QtCore.QCoreApplication.translate + eMailPreview.setWindowTitle(_translate("eMailPreview", "eMail Voransicht")) + self.label_6.setText(_translate("eMailPreview", "Geschlecht")) + self.label_5.setText(_translate("eMailPreview", "Art")) + self.label_2.setText(_translate("eMailPreview", "Prof")) + self.label.setText(_translate("eMailPreview", "eMail")) + self.label_3.setText(_translate("eMailPreview", "Mail")) + self.label_4.setText(_translate("eMailPreview", "Betreff")) + self.gender_male.setText(_translate("eMailPreview", "M")) + self.gender_female.setText(_translate("eMailPreview", "W")) + self.gender_non.setText(_translate("eMailPreview", "Divers")) + self.btn_okay.setWhatsThis(_translate("eMailPreview", "test")) + self.btn_okay.setText(_translate("eMailPreview", "Senden")) diff --git a/src/ui/dialogs/dialog_sources/Ui_newMailTemplateDesigner.py b/src/ui/dialogs/dialog_sources/Ui_newMailTemplateDesigner.py new file mode 100644 index 0000000..38034d7 --- /dev/null +++ b/src/ui/dialogs/dialog_sources/Ui_newMailTemplateDesigner.py @@ -0,0 +1,155 @@ +# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\newMailTemplateDesigner.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(689, 572) + self.verticalLayout_2 = QtWidgets.QVBoxLayout(Dialog) + self.verticalLayout_2.setObjectName("verticalLayout_2") + self.verticalLayout = QtWidgets.QVBoxLayout() + self.verticalLayout.setObjectName("verticalLayout") + self.horizontalLayout_2 = QtWidgets.QHBoxLayout() + self.horizontalLayout_2.setObjectName("horizontalLayout_2") + self.bold = QtWidgets.QPushButton(parent=Dialog) + self.bold.setObjectName("bold") + self.horizontalLayout_2.addWidget(self.bold) + self.italic = QtWidgets.QPushButton(parent=Dialog) + self.italic.setObjectName("italic") + self.horizontalLayout_2.addWidget(self.italic) + self.underlined = QtWidgets.QPushButton(parent=Dialog) + self.underlined.setObjectName("underlined") + self.horizontalLayout_2.addWidget(self.underlined) + self.font = QtWidgets.QFontComboBox(parent=Dialog) + self.font.setObjectName("font") + self.horizontalLayout_2.addWidget(self.font) + self.fontSize = QtWidgets.QComboBox(parent=Dialog) + self.fontSize.setObjectName("fontSize") + self.fontSize.addItem("") + self.fontSize.addItem("") + self.fontSize.addItem("") + self.fontSize.addItem("") + self.fontSize.addItem("") + self.fontSize.addItem("") + self.fontSize.addItem("") + self.fontSize.addItem("") + self.fontSize.addItem("") + self.fontSize.addItem("") + self.fontSize.addItem("") + self.fontSize.addItem("") + self.fontSize.addItem("") + self.fontSize.addItem("") + self.fontSize.addItem("") + self.horizontalLayout_2.addWidget(self.fontSize) + spacerItem = QtWidgets.QSpacerItem( + 40, + 20, + QtWidgets.QSizePolicy.Policy.Expanding, + QtWidgets.QSizePolicy.Policy.Minimum, + ) + self.horizontalLayout_2.addItem(spacerItem) + self.verticalLayout.addLayout(self.horizontalLayout_2) + self.horizontalLayout_4 = QtWidgets.QHBoxLayout() + self.horizontalLayout_4.setObjectName("horizontalLayout_4") + self.verticalLayout.addLayout(self.horizontalLayout_4) + self.gridLayout = QtWidgets.QGridLayout() + self.gridLayout.setObjectName("gridLayout") + self.label = QtWidgets.QLabel(parent=Dialog) + self.label.setObjectName("label") + self.gridLayout.addWidget(self.label, 0, 0, 1, 1) + self.comboBox_2 = QtWidgets.QComboBox(parent=Dialog) + self.comboBox_2.setSizeAdjustPolicy( + QtWidgets.QComboBox.SizeAdjustPolicy.AdjustToContents + ) + self.comboBox_2.setObjectName("comboBox_2") + self.comboBox_2.addItem("") + self.comboBox_2.addItem("") + self.comboBox_2.addItem("") + self.comboBox_2.addItem("") + self.comboBox_2.addItem("") + self.comboBox_2.addItem("") + self.gridLayout.addWidget(self.comboBox_2, 1, 0, 1, 1) + self.label_2 = QtWidgets.QLabel(parent=Dialog) + self.label_2.setObjectName("label_2") + self.gridLayout.addWidget(self.label_2, 0, 1, 1, 1) + self.lineEdit = QtWidgets.QLineEdit(parent=Dialog) + self.lineEdit.setFrame(False) + self.lineEdit.setReadOnly(True) + self.lineEdit.setObjectName("lineEdit") + self.gridLayout.addWidget(self.lineEdit, 1, 1, 1, 1) + self.insertPlaceholder = QtWidgets.QPushButton(parent=Dialog) + self.insertPlaceholder.setObjectName("insertPlaceholder") + self.gridLayout.addWidget(self.insertPlaceholder, 1, 2, 1, 1) + self.verticalLayout.addLayout(self.gridLayout) + self.templateEdit = QtWidgets.QTextEdit(parent=Dialog) + self.templateEdit.setObjectName("templateEdit") + self.verticalLayout.addWidget(self.templateEdit) + self.horizontalLayout_3 = QtWidgets.QHBoxLayout() + self.horizontalLayout_3.setObjectName("horizontalLayout_3") + self.testTemplate = QtWidgets.QPushButton(parent=Dialog) + self.testTemplate.setObjectName("testTemplate") + self.horizontalLayout_3.addWidget(self.testTemplate) + spacerItem1 = QtWidgets.QSpacerItem( + 40, + 20, + QtWidgets.QSizePolicy.Policy.Expanding, + QtWidgets.QSizePolicy.Policy.Minimum, + ) + self.horizontalLayout_3.addItem(spacerItem1) + self.verticalLayout.addLayout(self.horizontalLayout_3) + self.verticalLayout_2.addLayout(self.verticalLayout) + self.buttonBox = QtWidgets.QDialogButtonBox(parent=Dialog) + self.buttonBox.setOrientation(QtCore.Qt.Orientation.Horizontal) + self.buttonBox.setStandardButtons( + QtWidgets.QDialogButtonBox.StandardButton.Cancel + | QtWidgets.QDialogButtonBox.StandardButton.Discard + | QtWidgets.QDialogButtonBox.StandardButton.Ok + ) + self.buttonBox.setObjectName("buttonBox") + self.verticalLayout_2.addWidget(self.buttonBox) + + self.retranslateUi(Dialog) + self.fontSize.setCurrentIndex(1) + QtCore.QMetaObject.connectSlotsByName(Dialog) + + def retranslateUi(self, Dialog): + _translate = QtCore.QCoreApplication.translate + Dialog.setWindowTitle(_translate("Dialog", "Dialog")) + self.bold.setText(_translate("Dialog", "Fett")) + self.italic.setText(_translate("Dialog", "Kursiv")) + self.underlined.setText(_translate("Dialog", "Unterstrichen")) + self.fontSize.setItemText(0, _translate("Dialog", "8")) + self.fontSize.setItemText(1, _translate("Dialog", "9")) + self.fontSize.setItemText(2, _translate("Dialog", "11")) + self.fontSize.setItemText(3, _translate("Dialog", "12")) + self.fontSize.setItemText(4, _translate("Dialog", "14")) + self.fontSize.setItemText(5, _translate("Dialog", "16")) + self.fontSize.setItemText(6, _translate("Dialog", "18")) + self.fontSize.setItemText(7, _translate("Dialog", "20")) + self.fontSize.setItemText(8, _translate("Dialog", "22")) + self.fontSize.setItemText(9, _translate("Dialog", "24")) + self.fontSize.setItemText(10, _translate("Dialog", "26")) + self.fontSize.setItemText(11, _translate("Dialog", "28")) + self.fontSize.setItemText(12, _translate("Dialog", "36")) + self.fontSize.setItemText(13, _translate("Dialog", "48")) + self.fontSize.setItemText(14, _translate("Dialog", "76")) + self.label.setText(_translate("Dialog", "Platzhalter")) + self.comboBox_2.setItemText(0, _translate("Dialog", "«Anrede»")) + self.comboBox_2.setItemText(1, _translate("Dialog", "«ApparatsName»")) + self.comboBox_2.setItemText(2, _translate("Dialog", "«ApparatsFach»")) + self.comboBox_2.setItemText(3, _translate("Dialog", "«ApparatsNummer»")) + self.comboBox_2.setItemText(4, _translate("Dialog", "«DozentName»")) + self.comboBox_2.setItemText(5, _translate("Dialog", "«Signatur»")) + self.label_2.setText(_translate("Dialog", "Beschreibung")) + self.insertPlaceholder.setText( + _translate("Dialog", "An aktiver Position einfügen") + ) + self.testTemplate.setText(_translate("Dialog", "Template testen")) diff --git a/src/ui/dialogs/dialog_sources/mail_preview.ui b/src/ui/dialogs/dialog_sources/mail_preview.ui index 0a844fc..54ffd4b 100644 --- a/src/ui/dialogs/dialog_sources/mail_preview.ui +++ b/src/ui/dialogs/dialog_sources/mail_preview.ui @@ -15,7 +15,7 @@ - ../../icons/email.svg../../icons/email.svg + ../../../../../../icons/email.svg../../../../../../icons/email.svg @@ -43,6 +43,19 @@ + + + + + + + Geschlecht + + + + + + @@ -50,8 +63,25 @@ - - + + + + Prof + + + + + + + + + + eMail + + + + + @@ -66,13 +96,6 @@ - - - - Prof - - - @@ -80,22 +103,6 @@ - - - - - - - eMail - - - - - - - - - @@ -134,10 +141,28 @@ - - + + + + false + - Geschlecht + + + + + 24 + 24 + + + + true + + + false + + + false @@ -152,6 +177,12 @@ 24 + + + + + test + Senden diff --git a/src/ui/dialogs/dialog_sources/newMailTemplateDesigner.ui b/src/ui/dialogs/dialog_sources/newMailTemplateDesigner.ui new file mode 100644 index 0000000..d1044be --- /dev/null +++ b/src/ui/dialogs/dialog_sources/newMailTemplateDesigner.ui @@ -0,0 +1,260 @@ + + + Dialog + + + + 0 + 0 + 689 + 572 + + + + Dialog + + + + + + + + + + Fett + + + + + + + Kursiv + + + + + + + Unterstrichen + + + + + + + + + + 1 + + + + 8 + + + + + 9 + + + + + 11 + + + + + 12 + + + + + 14 + + + + + 16 + + + + + 18 + + + + + 20 + + + + + 22 + + + + + 24 + + + + + 26 + + + + + 28 + + + + + 36 + + + + + 48 + + + + + 76 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + Platzhalter + + + + + + + QComboBox::AdjustToContents + + + + «Anrede» + + + + + «ApparatsName» + + + + + «ApparatsFach» + + + + + «ApparatsNummer» + + + + + «DozentName» + + + + + «Signatur» + + + + + + + + Beschreibung + + + + + + + false + + + true + + + + + + + An aktiver Position einfügen + + + + + + + + + + + + + + Template testen + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Discard|QDialogButtonBox::Ok + + + + + + + + diff --git a/src/ui/dialogs/mail.py b/src/ui/dialogs/mail.py index 4217275..0aedb83 100644 --- a/src/ui/dialogs/mail.py +++ b/src/ui/dialogs/mail.py @@ -10,6 +10,7 @@ from .dialog_sources.Ui_mail_preview import Ui_eMailPreview as Ui_Dialog config = OmegaConf.load("config.yaml") from src.logic.log import MyLogger +from src.utils import Icon logger = MyLogger("Mail") @@ -46,6 +47,8 @@ class Mail_Dialog(QtWidgets.QDialog, Ui_Dialog): self.load_mail_templates() # if none of the radio buttons is checked, disable the accept button of the dialog self.btn_okay.setEnabled(False) + Icon("edit_note").set_icon(self.newTemplate) + self.newTemplate.clicked.connect(self.open_new_template) if default_mail is not None: # get the nearest match to the default mail @@ -67,6 +70,10 @@ class Mail_Dialog(QtWidgets.QDialog, Ui_Dialog): # self.mail_name.setText(data["mail_name"]) # # assign data["general"] to self.data # self.data = data["general"] + def open_new_template(self): + logger.log_info("Opening new template dialog") + # TODO: implement new mail template dialog + pass def determine_signature(self): if config.mail.signature is None: diff --git a/src/ui/semesterapparat_ui.ui b/src/ui/semesterapparat_ui.ui index 37e878a..5b872e0 100644 --- a/src/ui/semesterapparat_ui.ui +++ b/src/ui/semesterapparat_ui.ui @@ -42,7 +42,7 @@ - ../../icons/logo.ico../../icons/logo.ico + ../../../../icons/logo.ico../../../../icons/logo.ico @@ -74,7 +74,7 @@ Qt::NoFocus - 0 + 1 @@ -469,7 +469,7 @@ - Qt::ImhDigitsOnly + Qt::ImhNone true @@ -640,6 +640,9 @@ + + false + 340 @@ -773,19 +776,19 @@ - 8 + 9 false Qt::StrongFocus + + Qt::ImhNone + true - - - QComboBox::InsertAlphabetically @@ -1087,7 +1090,7 @@ 16777215 - 20 + 25 @@ -1096,6 +1099,9 @@ false + + true + @@ -2126,6 +2132,9 @@ 📆 heute + + false + @@ -2163,10 +2172,6 @@ - - - ../../icons/semap.png../../icons/semap.png - 20 @@ -2276,13 +2281,13 @@ Tabelle - + 0 0 421 - 231 + 241 @@ -2291,6 +2296,9 @@ QAbstractItemView::NoEditTriggers + + Qt::ElideRight + 210 diff --git a/src/ui/widgets/__init__.py b/src/ui/widgets/__init__.py index c503c0e..730f765 100644 --- a/src/ui/widgets/__init__.py +++ b/src/ui/widgets/__init__.py @@ -1,5 +1,5 @@ __all__ = ["filepicker"] from .collapse import StatusWidget from .filepicker import FilePicker -from .graph import GraphWidget +from .graph import DataGraph from .Ui_message_widget import Ui_Form as Message_Widget diff --git a/src/utils/__init__.py b/src/utils/__init__.py index e38f19a..328a17f 100644 --- a/src/utils/__init__.py +++ b/src/utils/__init__.py @@ -1,2 +1,3 @@ -from .blob import create_blob -from .pickles import dump_pickle, load_pickle +from .blob import create_blob +from .icon import Icon +from .pickles import dump_pickle, load_pickle