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