new ui
This commit is contained in:
106
src/ui/dialogs/elsa_add_entry.py
Normal file
106
src/ui/dialogs/elsa_add_entry.py
Normal 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
|
||||
Reference in New Issue
Block a user