From 22b5dfacc5dff3fa4586225ba3ac90c9e0d32bcd Mon Sep 17 00:00:00 2001 From: WorldTeacher <41587052+WorldTeacher@users.noreply.github.com> Date: Wed, 26 Jun 2024 16:36:43 +0200 Subject: [PATCH] new ui --- src/ui/dialogs/elsa_add_entry.py | 106 +++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 src/ui/dialogs/elsa_add_entry.py diff --git a/src/ui/dialogs/elsa_add_entry.py b/src/ui/dialogs/elsa_add_entry.py new file mode 100644 index 0000000..a199a74 --- /dev/null +++ b/src/ui/dialogs/elsa_add_entry.py @@ -0,0 +1,106 @@ +from .dialog_sources.Ui_elsa_add_table_entry import Ui_Dialog +from src.logic.webrequest import WebRequest, BibTextTransformer +from src import Icon +from PyQt6 import QtWidgets + + +class ElsaAddEntry(QtWidgets.QDialog, Ui_Dialog): + def __init__(self, parent=None, data=None): + super(ElsaAddEntry, self).__init__(parent) + self.setupUi(self) + self.setWindowTitle("Eintrag hinzufügen") + self.buttonBox.button( + QtWidgets.QDialogButtonBox.StandardButton.Ok + ).clicked.connect(self.send) + self.buttonBox.button( + QtWidgets.QDialogButtonBox.StandardButton.Cancel + ).clicked.connect(self.close) + self.buttonBox.button( + QtWidgets.QDialogButtonBox.StandardButton.Discard + ).clicked.connect(self.discard) + self.mode = None + self.btn_search.clicked.connect(self.search) + self.btn_mono.clicked.connect(self.stack) + self.btn_zs.clicked.connect(self.stack) + self.btn_hg.clicked.connect(self.stack) + self.setWindowIcon(Icon("edit").icon) + self.stackedWidget.setEnabled(False) + self.btn_hg.setChecked(False) + self.data = None + + def discard(self): + for line in self.findChildren(QtWidgets.QLineEdit): + line.clear() + + def stack(self): + self.stackedWidget.setEnabled(True) + if self.btn_mono.isChecked(): + self.stackedWidget.setCurrentIndex(0) + self.mode = "book" + elif self.btn_hg.isChecked(): + self.stackedWidget.setCurrentIndex(1) + self.mode = "hg" + elif self.btn_zs.isChecked(): + self.stackedWidget.setCurrentIndex(2) + self.mode = "zs" + + def send(self): + # get all fields from the dialog + fields = self.findChildren(QtWidgets.QLineEdit) + # remove all fields from the list if they do not start with the mode and _ + fields = [field for field in fields if field.objectName().startswith(self.mode)] + data = {} + for field in fields: + # get the field name + fname = field.objectName() + # get the field data + fdata = field.text() + data[fname] = fdata + data["mode"] = self.mode + self.data = data + self.accept() + + def search(self): + param = self.searchIdent.text() + web = WebRequest() + web.get_ppn(param) + data = web.get_data() + # if isinstance(data, list): + # data = data[0] + bib = BibTextTransformer("ARRAY") + bib.get_data(data) + data = bib.return_data() + self.setdata(data) + + def setdata(self, data): + # use field to set data in the correct fields + fields = self.findChildren(QtWidgets.QLineEdit) + # remove all fields from the list if they do not start with the mode and _ + fields = [field for field in fields if field.objectName().startswith(self.mode)] + for field in fields: + c_field = field.objectName() + c_field = f"self.{c_field}" + # convert c_field string to class element + c_field = eval(c_field) + # get the data associated with the field, data is a dataclass + fname = field.objectName().split("_")[1] + c_data = f"data.{fname}" + try: + c_data = eval(c_data) + + except AttributeError: + c_data = "" + if isinstance(c_data, list): + if c_data != []: + c_data = c_data[0] + else: + c_data = "" + c_field.setText(c_data) + + +def launch(): + app = QtWidgets.QApplication([]) + dialog = ElsaAddEntry() + dialog.show() + app.exec() + return dialog.data