This commit is contained in:
WorldTeacher
2024-06-26 16:36:43 +02:00
parent 9af25c28d4
commit 22b5dfacc5

View File

@@ -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