diff --git a/icons/trash.svg b/icons/trash.svg
new file mode 100644
index 0000000..07f045b
--- /dev/null
+++ b/icons/trash.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/backend/database.py b/src/backend/database.py
index a49e083..99a945a 100644
--- a/src/backend/database.py
+++ b/src/backend/database.py
@@ -544,7 +544,15 @@ class Database:
ret_result.append(data)
return ret_result
- def getAllBooks(self):
+ def getAllBooks(self) -> list[dict[str, Union[int, BookData]]]:
+ """
+ Get all books in the database that are not set as deleted
+
+ Returns
+ -------
+ list[dict[str, Union[int, BookData]]]
+ A list of dictionaries containing the id and the metadata of the book
+ """
# return all books in the database
qdata = self.query_db("SELECT id,bookdata FROM media WHERE deleted=0")
ret_result: list[dict[str, Any]] = []
@@ -558,6 +566,14 @@ class Database:
ret_result.append(data)
return ret_result
+ def getApparatNrByBookId(self, book_id):
+ appNr = self.query_db(
+ "SELECT appnr FROM semesterapparat WHERE id IN (SELECT app_id FROM media WHERE id=?)",
+ (book_id,),
+ one=True,
+ )
+ return appNr[0] if appNr else None
+
def getBooksByProfId(
self, prof_id: int, deleted: int = 0
) -> list[dict[str, Union[int, BookData]]]:
@@ -611,6 +627,16 @@ class Database:
"""
self.query_db("UPDATE media SET deleted=1 WHERE id=?", (book_id,))
+ def deleteBooks(self, ids: list[int]):
+ """
+ Delete multiple books from the database
+
+ Args:
+ ids (list[int]): A list of book ids to be deleted
+ """
+ query = f"UPDATE media SET deleted=1 WHERE id IN ({','.join(['?'] * len(ids))})"
+ self.query_db(query, tuple(ids))
+
# File Interactions
def getBlob(self, filename: str, app_id: Union[str, int]) -> bytes:
"""
diff --git a/src/ui/dialogs/__init__.py b/src/ui/dialogs/__init__.py
index f08323f..a4c3242 100644
--- a/src/ui/dialogs/__init__.py
+++ b/src/ui/dialogs/__init__.py
@@ -14,10 +14,12 @@ __all__ = [
"DocumentPrintDialog",
"NewEditionDialog",
"Settings",
+ "DeleteDialog",
]
from .about import About
from .app_ext import ApparatExtendDialog
from .bookdata import BookDataUI
+from .deletedialog import DeleteDialog
from .docuprint import DocumentPrintDialog
from .elsa_add_entry import ElsaAddEntry
from .elsa_gen_confirm import ElsaGenConfirm
diff --git a/src/ui/dialogs/deletedialog.py b/src/ui/dialogs/deletedialog.py
new file mode 100644
index 0000000..03d2e43
--- /dev/null
+++ b/src/ui/dialogs/deletedialog.py
@@ -0,0 +1,129 @@
+from typing import Any
+
+from PySide6 import QtCore, QtWidgets
+
+from src import Icon
+from src.backend.database import Database
+
+from .dialog_sources.deletedialog_ui import Ui_Dialog
+
+
+class DeleteDialog(QtWidgets.QDialog, Ui_Dialog):
+ def __init__(self):
+ super().__init__()
+ self.setupUi(self)
+ self.setWindowTitle("Medien löschen")
+ self.setWindowIcon(Icon("trash").icon)
+ self.reset_btn.clicked.connect(self.reset_selection)
+ self.cancel_btn.clicked.connect(self.close)
+ self.delete_btn.clicked.connect(self.delete_selected)
+
+ self.db = Database()
+ self.books = self.setBooks()
+ self.lineEdit.textChanged.connect(self.populate_books)
+ self.populate_books()
+
+ def delete_selected(self):
+ to_delete = []
+ for row in range(self.tableWidget.rowCount()):
+ checkbox = self.tableWidget.cellWidget(row, 0)
+ if checkbox is not None and checkbox.isChecked():
+ book_id_item = self.tableWidget.item(row, 6)
+ if book_id_item is not None:
+ book_id = int(book_id_item.text())
+ to_delete.append(book_id)
+ if to_delete:
+ self.db.deleteBooks(to_delete)
+ self.accept()
+
+ def reset_selection(self):
+ for row in range(self.tableWidget.rowCount()):
+ checkbox = self.tableWidget.cellWidget(row, 0)
+ if checkbox is not None:
+ checkbox.setChecked(False)
+
+ def setBooks(self) -> list[dict[str, Any]]:
+ result: list[dict[str, Any]] = []
+ books = self.db.getAllBooks()
+ for book in books:
+ title = book["bookdata"].title
+ signature = book["bookdata"].signature
+ edition = book["bookdata"].edition
+ appnr = self.db.getApparatNrByBookId(book["id"])
+ result.append(
+ {
+ "id": book["id"],
+ "appnr": appnr,
+ "title": title,
+ "signature": signature,
+ "edition": edition,
+ }
+ )
+ return result
+
+ def populate_books(self):
+ searchterm = self.lineEdit.text().lower()
+ self.tableWidget.setRowCount(0)
+ for book in self.books:
+ checkbox = QtWidgets.QCheckBox()
+ app_nr = book["appnr"]
+ title = book["title"]
+ signature = book["signature"]
+ edition = book["edition"] if book["edition"] else ""
+
+ if searchterm in title.lower() or searchterm in signature.lower():
+ self.tableWidget.insertRow(self.tableWidget.rowCount())
+ self.tableWidget.setCellWidget(
+ self.tableWidget.rowCount() - 1, 0, checkbox
+ )
+ self.tableWidget.setItem(
+ self.tableWidget.rowCount() - 1,
+ 1,
+ QtWidgets.QTableWidgetItem(str(app_nr)),
+ )
+ self.tableWidget.setItem(
+ self.tableWidget.rowCount() - 1,
+ 2,
+ QtWidgets.QTableWidgetItem(signature),
+ )
+ self.tableWidget.setItem(
+ self.tableWidget.rowCount() - 1,
+ 3,
+ QtWidgets.QTableWidgetItem(title),
+ )
+ self.tableWidget.setItem(
+ self.tableWidget.rowCount() - 1,
+ 4,
+ QtWidgets.QTableWidgetItem(edition),
+ )
+ self.tableWidget.setItem(
+ self.tableWidget.rowCount() - 1,
+ 5,
+ QtWidgets.QTableWidgetItem(""),
+ )
+ self.tableWidget.setItem(
+ self.tableWidget.rowCount() - 1,
+ 6,
+ QtWidgets.QTableWidgetItem(str(book["id"])),
+ )
+ else:
+ continue
+ # set column signature to be 10px wider than the longest entry
+ self.tableWidget.setColumnWidth(1, 100)
+ self.tableWidget.setColumnWidth(2, 150)
+ self.tableWidget.setColumnWidth(3, 150)
+ self.tableWidget.setColumnWidth(4, 100)
+
+ self.tableWidget.setColumnWidth(0, 50)
+ # horizontal header 0 should be centered
+ self.tableWidget.horizontalHeader().setDefaultAlignment(
+ QtCore.Qt.AlignmentFlag.AlignCenter
+ )
+
+
+def launch():
+ app = QtWidgets.QApplication.instance()
+ if app is None:
+ app = QtWidgets.QApplication([])
+ dialog = DeleteDialog()
+ dialog.exec()
diff --git a/src/ui/dialogs/dialog_sources/deletedialog.ui b/src/ui/dialogs/dialog_sources/deletedialog.ui
new file mode 100644
index 0000000..8670475
--- /dev/null
+++ b/src/ui/dialogs/dialog_sources/deletedialog.ui
@@ -0,0 +1,138 @@
+
+
+ Dialog
+
+
+
+ 0
+ 0
+ 1001
+ 649
+
+
+
+ Dialog
+
+
+ -
+
+
-
+
+
+ Medium suchen
+
+
+
+ -
+
+
+ Titel/Signatursuche
+
+
+
+
+
+ -
+
+
+ true
+
+
+ true
+
+
+
+
+
+
+
+
+ Apparat
+
+
+
+
+ Signatur
+
+
+
+
+ Titel
+
+
+
+
+ Auflage
+
+
+
+
+ ISBN
+
+
+
+
+ ID
+
+
+
+
+ -
+
+
-
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 20
+
+
+
+
+ -
+
+
+ Zurücksetzen
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ Löschen
+
+
+
+ -
+
+
+ Abbrechen
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/dialogs/dialog_sources/deletedialog_ui.py b/src/ui/dialogs/dialog_sources/deletedialog_ui.py
new file mode 100644
index 0000000..878a448
--- /dev/null
+++ b/src/ui/dialogs/dialog_sources/deletedialog_ui.py
@@ -0,0 +1,122 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'deletedialog.ui'
+##
+## Created by: Qt User Interface Compiler version 6.9.2
+##
+## WARNING! All changes made in this file will be lost when recompiling UI file!
+################################################################################
+
+from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
+ QMetaObject, QObject, QPoint, QRect,
+ QSize, QTime, QUrl, Qt)
+from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
+ QFont, QFontDatabase, QGradient, QIcon,
+ QImage, QKeySequence, QLinearGradient, QPainter,
+ QPalette, QPixmap, QRadialGradient, QTransform)
+from PySide6.QtWidgets import (QApplication, QDialog, QHBoxLayout, QHeaderView,
+ QLabel, QLineEdit, QPushButton, QSizePolicy,
+ QSpacerItem, QTableWidget, QTableWidgetItem, QVBoxLayout,
+ QWidget)
+
+class Ui_Dialog(object):
+ def setupUi(self, Dialog):
+ if not Dialog.objectName():
+ Dialog.setObjectName(u"Dialog")
+ Dialog.resize(1001, 649)
+ self.verticalLayout = QVBoxLayout(Dialog)
+ self.verticalLayout.setObjectName(u"verticalLayout")
+ self.horizontalLayout = QHBoxLayout()
+ self.horizontalLayout.setObjectName(u"horizontalLayout")
+ self.label = QLabel(Dialog)
+ self.label.setObjectName(u"label")
+
+ self.horizontalLayout.addWidget(self.label)
+
+ self.lineEdit = QLineEdit(Dialog)
+ self.lineEdit.setObjectName(u"lineEdit")
+
+ self.horizontalLayout.addWidget(self.lineEdit)
+
+
+ self.verticalLayout.addLayout(self.horizontalLayout)
+
+ self.tableWidget = QTableWidget(Dialog)
+ if (self.tableWidget.columnCount() < 7):
+ self.tableWidget.setColumnCount(7)
+ __qtablewidgetitem = QTableWidgetItem()
+ self.tableWidget.setHorizontalHeaderItem(0, __qtablewidgetitem)
+ __qtablewidgetitem1 = QTableWidgetItem()
+ self.tableWidget.setHorizontalHeaderItem(1, __qtablewidgetitem1)
+ __qtablewidgetitem2 = QTableWidgetItem()
+ self.tableWidget.setHorizontalHeaderItem(2, __qtablewidgetitem2)
+ __qtablewidgetitem3 = QTableWidgetItem()
+ self.tableWidget.setHorizontalHeaderItem(3, __qtablewidgetitem3)
+ __qtablewidgetitem4 = QTableWidgetItem()
+ self.tableWidget.setHorizontalHeaderItem(4, __qtablewidgetitem4)
+ __qtablewidgetitem5 = QTableWidgetItem()
+ self.tableWidget.setHorizontalHeaderItem(5, __qtablewidgetitem5)
+ __qtablewidgetitem6 = QTableWidgetItem()
+ self.tableWidget.setHorizontalHeaderItem(6, __qtablewidgetitem6)
+ self.tableWidget.setObjectName(u"tableWidget")
+ self.tableWidget.setAlternatingRowColors(True)
+ self.tableWidget.horizontalHeader().setStretchLastSection(True)
+
+ self.verticalLayout.addWidget(self.tableWidget)
+
+ self.horizontalLayout_2 = QHBoxLayout()
+ self.horizontalLayout_2.setObjectName(u"horizontalLayout_2")
+ self.horizontalSpacer_2 = QSpacerItem(20, 20, QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_2.addItem(self.horizontalSpacer_2)
+
+ self.reset_btn = QPushButton(Dialog)
+ self.reset_btn.setObjectName(u"reset_btn")
+
+ self.horizontalLayout_2.addWidget(self.reset_btn)
+
+ self.horizontalSpacer = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_2.addItem(self.horizontalSpacer)
+
+ self.delete_btn = QPushButton(Dialog)
+ self.delete_btn.setObjectName(u"delete_btn")
+
+ self.horizontalLayout_2.addWidget(self.delete_btn)
+
+ self.cancel_btn = QPushButton(Dialog)
+ self.cancel_btn.setObjectName(u"cancel_btn")
+
+ self.horizontalLayout_2.addWidget(self.cancel_btn)
+
+
+ self.verticalLayout.addLayout(self.horizontalLayout_2)
+
+
+ self.retranslateUi(Dialog)
+
+ QMetaObject.connectSlotsByName(Dialog)
+ # setupUi
+
+ def retranslateUi(self, Dialog):
+ Dialog.setWindowTitle(QCoreApplication.translate("Dialog", u"Dialog", None))
+ self.label.setText(QCoreApplication.translate("Dialog", u"Medium suchen", None))
+ self.lineEdit.setPlaceholderText(QCoreApplication.translate("Dialog", u"Titel/Signatursuche", None))
+ ___qtablewidgetitem = self.tableWidget.horizontalHeaderItem(1)
+ ___qtablewidgetitem.setText(QCoreApplication.translate("Dialog", u"Apparat", None));
+ ___qtablewidgetitem1 = self.tableWidget.horizontalHeaderItem(2)
+ ___qtablewidgetitem1.setText(QCoreApplication.translate("Dialog", u"Signatur", None));
+ ___qtablewidgetitem2 = self.tableWidget.horizontalHeaderItem(3)
+ ___qtablewidgetitem2.setText(QCoreApplication.translate("Dialog", u"Titel", None));
+ ___qtablewidgetitem3 = self.tableWidget.horizontalHeaderItem(4)
+ ___qtablewidgetitem3.setText(QCoreApplication.translate("Dialog", u"Auflage", None));
+ ___qtablewidgetitem4 = self.tableWidget.horizontalHeaderItem(5)
+ ___qtablewidgetitem4.setText(QCoreApplication.translate("Dialog", u"ISBN", None));
+ ___qtablewidgetitem5 = self.tableWidget.horizontalHeaderItem(6)
+ ___qtablewidgetitem5.setText(QCoreApplication.translate("Dialog", u"ID", None));
+ self.reset_btn.setText(QCoreApplication.translate("Dialog", u"Zur\u00fccksetzen", None))
+ self.delete_btn.setText(QCoreApplication.translate("Dialog", u"L\u00f6schen", None))
+ self.cancel_btn.setText(QCoreApplication.translate("Dialog", u"Abbrechen", None))
+ # retranslateUi
+
diff --git a/src/ui/semesterapparat_ui.ui b/src/ui/semesterapparat_ui.ui
index 76f210e..615f845 100644
--- a/src/ui/semesterapparat_ui.ui
+++ b/src/ui/semesterapparat_ui.ui
@@ -251,169 +251,24 @@
0
180
1412
- 511
+ 531
- -
-
+
-
+
-
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 20
- 20
-
-
-
-
- -
-
-
- false
-
-
- WIP - Broken
+
+
+ Qt::NoFocus
- gel. Medien anzeigen
+ Medien hinzufügen
-
-
-
- false
-
-
- WIP - Broken
-
-
- Nur Titel mit Neuauflagen anzeigen
-
-
-
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
- Dieser Knopf prüft alle Werke, die mit einem roten X vermerkt sind. Sollten diese inzwischen im Apparat sein, wird dies aktualisiert
-
-
- Medien mit ❌ im Apparat?
-
-
-
- -
-
-
-
-
-
- Medien werden hinzugefügt
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- -
-
-
- Medium x/y
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
- QSizePolicy::Fixed
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
-
-
-
- Medien werden geprüft
-
-
-
- -
-
-
- 24
-
-
-
- -
-
-
-
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- -
-
-
- TextLabel
-
-
-
- -
-
-
- Ausgewählte als verfügbar markieren
-
-
-
- -
-
+
Qt::Horizontal
@@ -427,87 +282,6 @@
- -
-
-
-
- 0
- 0
-
-
-
-
- 1259
- 0
-
-
-
- Qt::NoFocus
-
-
- Qt::CustomContextMenu
-
-
- QAbstractScrollArea::AdjustToContents
-
-
- QAbstractItemView::NoEditTriggers
-
-
- true
-
-
- QAbstractItemView::SelectRows
-
-
- true
-
-
- true
-
-
-
- Buchtitel
-
-
- Es kann sein, dass der Buchtitel leer ist, dies kommt vor, wenn der Titel nicht passend formatiert ist
-
-
-
-
- Signatur
-
-
-
-
- Auflage
-
-
-
-
- Autor
-
-
-
-
- im Apparat?
-
-
- Diese Angabe ist nicht zuverlässig. Ist das ❌ vorhanden, kann das Medium im Apparat sein, aber aufgrund eines Bugs nicht gefunden worden
-
-
-
-
- Vorgemerkt
-
-
-
-
- Link
-
-
-
-
-
@@ -1101,23 +875,7 @@
- -
-
-
-
- 9
- false
-
-
-
- Qt::ImhPreferNumbers
-
-
-
-
-
-
- -
+
-
@@ -1133,7 +891,7 @@
- -
+
-
@@ -1146,6 +904,22 @@
+ -
+
+
+
+ 9
+ false
+
+
+
+ Qt::ImhPreferNumbers
+
+
+
+
+
+
@@ -1587,24 +1361,248 @@ Einige Angaben müssen ggf angepasst werden
+ -
+
+
-
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 20
+
+
+
+
+ -
+
+
+ false
+
+
+ WIP - Broken
+
+
+ Nur Titel mit Neuauflagen anzeigen
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Fixed
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ Dieser Knopf prüft alle Werke, die mit einem roten X vermerkt sind. Sollten diese inzwischen im Apparat sein, wird dies aktualisiert
+
+
+ Medien mit ❌ im Apparat?
+
+
+
+ -
+
+
-
+
+
+ Medien werden hinzugefügt
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ -
+
+
+ Medium x/y
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Fixed
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
-
+
+
+ Medien werden geprüft
+
+
+
+ -
+
+
+ 24
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ -
+
+
+ TextLabel
+
+
+
+ -
+
+
+ Ausgewählte als verfügbar markieren
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 1259
+ 0
+
+
+
+ Qt::NoFocus
+
+
+ Qt::CustomContextMenu
+
+
+ QAbstractScrollArea::AdjustToContents
+
+
+ QAbstractItemView::NoEditTriggers
+
+
+ true
+
+
+ QAbstractItemView::SelectRows
+
+
+ true
+
+
+ true
+
+
+
+ Buchtitel
+
+
+ Es kann sein, dass der Buchtitel leer ist, dies kommt vor, wenn der Titel nicht passend formatiert ist
+
+
+
+
+ Signatur
+
+
+
+
+ Auflage
+
+
+
+
+ Autor
+
+
+
+
+ im Apparat?
+
+
+ Diese Angabe ist nicht zuverlässig. Ist das ❌ vorhanden, kann das Medium im Apparat sein, aber aufgrund eines Bugs nicht gefunden worden
+
+
+
+
+ Vorgemerkt
+
+
+
+
+ Link
+
+
+
+
-
-
-
- 3
- 695
- 121
- 20
-
-
-
- Qt::NoFocus
-
-
- Medien hinzufügen
-
-
@@ -1966,6 +1964,7 @@ Einige Angaben müssen ggf angepasst werden
Bearbeiten
+
drpdwn_app_nr
@@ -2038,10 +2042,8 @@ Einige Angaben müssen ggf angepasst werden
check_send_mail
btn_apparat_save
btn_apparat_apply
- chkbx_show_del_media
btn_reserve
select_action_box
- prof_id_adis
apparat_id_adis
automation_add_selected_books
saveandcreate
diff --git a/src/ui/semesterapparat_ui_ui.py b/src/ui/semesterapparat_ui_ui.py
index e62f60c..be2d9e9 100644
--- a/src/ui/semesterapparat_ui_ui.py
+++ b/src/ui/semesterapparat_ui_ui.py
@@ -54,6 +54,8 @@ class Ui_MainWindow(object):
self.actionAbout.setMenuRole(QAction.AboutRole)
self.actionDokumentation = QAction(MainWindow)
self.actionDokumentation.setObjectName(u"actionDokumentation")
+ self.actionMedien_loeschen = QAction(MainWindow)
+ self.actionMedien_loeschen.setObjectName(u"actionMedien_loeschen")
self.centralwidget = QWidget(MainWindow)
self.centralwidget.setObjectName(u"centralwidget")
sizePolicy.setHeightForWidth(self.centralwidget.sizePolicy().hasHeightForWidth())
@@ -157,142 +159,24 @@ class Ui_MainWindow(object):
self.gridLayoutWidget_2 = QWidget(self.createApparat)
self.gridLayoutWidget_2.setObjectName(u"gridLayoutWidget_2")
self.gridLayoutWidget_2.setEnabled(True)
- self.gridLayoutWidget_2.setGeometry(QRect(0, 180, 1412, 511))
+ self.gridLayoutWidget_2.setGeometry(QRect(0, 180, 1412, 531))
self.gridLayout_2 = QGridLayout(self.gridLayoutWidget_2)
self.gridLayout_2.setObjectName(u"gridLayout_2")
self.gridLayout_2.setContentsMargins(0, 0, 0, 0)
- self.horizontalLayout_5 = QHBoxLayout()
- self.horizontalLayout_5.setObjectName(u"horizontalLayout_5")
- self.horizontalSpacer = QSpacerItem(20, 20, QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Minimum)
+ self.horizontalLayout_3 = QHBoxLayout()
+ self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
+ self.add_medium = QPushButton(self.gridLayoutWidget_2)
+ self.add_medium.setObjectName(u"add_medium")
+ self.add_medium.setFocusPolicy(Qt.NoFocus)
- self.horizontalLayout_5.addItem(self.horizontalSpacer)
+ self.horizontalLayout_3.addWidget(self.add_medium)
- self.chkbx_show_del_media = QCheckBox(self.gridLayoutWidget_2)
- self.chkbx_show_del_media.setObjectName(u"chkbx_show_del_media")
- self.chkbx_show_del_media.setEnabled(False)
+ self.horizontalSpacer_5 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
- self.horizontalLayout_5.addWidget(self.chkbx_show_del_media)
-
- self.chkbx_show_only_wit_neweditions = QCheckBox(self.gridLayoutWidget_2)
- self.chkbx_show_only_wit_neweditions.setObjectName(u"chkbx_show_only_wit_neweditions")
- self.chkbx_show_only_wit_neweditions.setEnabled(False)
-
- self.horizontalLayout_5.addWidget(self.chkbx_show_only_wit_neweditions)
-
- self.horizontalSpacer_3 = QSpacerItem(40, 20, QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Minimum)
-
- self.horizontalLayout_5.addItem(self.horizontalSpacer_3)
-
- self.btn_reserve = QPushButton(self.gridLayoutWidget_2)
- self.btn_reserve.setObjectName(u"btn_reserve")
-
- self.horizontalLayout_5.addWidget(self.btn_reserve)
-
- self.add_layout = QHBoxLayout()
- self.add_layout.setObjectName(u"add_layout")
- self.label_info = QLabel(self.gridLayoutWidget_2)
- self.label_info.setObjectName(u"label_info")
-
- self.add_layout.addWidget(self.label_info)
-
- self.line_2 = QFrame(self.gridLayoutWidget_2)
- self.line_2.setObjectName(u"line_2")
- self.line_2.setFrameShape(QFrame.Shape.VLine)
- self.line_2.setFrameShadow(QFrame.Shadow.Sunken)
-
- self.add_layout.addWidget(self.line_2)
-
- self.progress_label = QLabel(self.gridLayoutWidget_2)
- self.progress_label.setObjectName(u"progress_label")
-
- self.add_layout.addWidget(self.progress_label)
+ self.horizontalLayout_3.addItem(self.horizontalSpacer_5)
- self.horizontalLayout_5.addLayout(self.add_layout)
-
- self.horizontalSpacer_4 = QSpacerItem(40, 20, QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Minimum)
-
- self.horizontalLayout_5.addItem(self.horizontalSpacer_4)
-
- self.avail_layout = QHBoxLayout()
- self.avail_layout.setObjectName(u"avail_layout")
- self.label_20 = QLabel(self.gridLayoutWidget_2)
- self.label_20.setObjectName(u"label_20")
-
- self.avail_layout.addWidget(self.label_20)
-
- self.progressBar = QProgressBar(self.gridLayoutWidget_2)
- self.progressBar.setObjectName(u"progressBar")
- self.progressBar.setValue(24)
-
- self.avail_layout.addWidget(self.progressBar)
-
- self.label_eta = QLabel(self.gridLayoutWidget_2)
- self.label_eta.setObjectName(u"label_eta")
-
- self.avail_layout.addWidget(self.label_eta)
-
-
- self.horizontalLayout_5.addLayout(self.avail_layout)
-
- self.line_3 = QFrame(self.gridLayoutWidget_2)
- self.line_3.setObjectName(u"line_3")
- self.line_3.setFrameShape(QFrame.Shape.VLine)
- self.line_3.setFrameShadow(QFrame.Shadow.Sunken)
-
- self.horizontalLayout_5.addWidget(self.line_3)
-
- self.avail_status = QLabel(self.gridLayoutWidget_2)
- self.avail_status.setObjectName(u"avail_status")
-
- self.horizontalLayout_5.addWidget(self.avail_status)
-
- self.automation_add_selected_books = QPushButton(self.gridLayoutWidget_2)
- self.automation_add_selected_books.setObjectName(u"automation_add_selected_books")
-
- self.horizontalLayout_5.addWidget(self.automation_add_selected_books)
-
- self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
-
- self.horizontalLayout_5.addItem(self.horizontalSpacer_2)
-
-
- self.gridLayout_2.addLayout(self.horizontalLayout_5, 4, 0, 1, 1)
-
- self.tableWidget_apparat_media = QTableWidget(self.gridLayoutWidget_2)
- if (self.tableWidget_apparat_media.columnCount() < 7):
- self.tableWidget_apparat_media.setColumnCount(7)
- __qtablewidgetitem6 = QTableWidgetItem()
- self.tableWidget_apparat_media.setHorizontalHeaderItem(0, __qtablewidgetitem6)
- __qtablewidgetitem7 = QTableWidgetItem()
- self.tableWidget_apparat_media.setHorizontalHeaderItem(1, __qtablewidgetitem7)
- __qtablewidgetitem8 = QTableWidgetItem()
- self.tableWidget_apparat_media.setHorizontalHeaderItem(2, __qtablewidgetitem8)
- __qtablewidgetitem9 = QTableWidgetItem()
- self.tableWidget_apparat_media.setHorizontalHeaderItem(3, __qtablewidgetitem9)
- __qtablewidgetitem10 = QTableWidgetItem()
- self.tableWidget_apparat_media.setHorizontalHeaderItem(4, __qtablewidgetitem10)
- __qtablewidgetitem11 = QTableWidgetItem()
- self.tableWidget_apparat_media.setHorizontalHeaderItem(5, __qtablewidgetitem11)
- __qtablewidgetitem12 = QTableWidgetItem()
- self.tableWidget_apparat_media.setHorizontalHeaderItem(6, __qtablewidgetitem12)
- self.tableWidget_apparat_media.setObjectName(u"tableWidget_apparat_media")
- sizePolicy2 = QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Expanding)
- sizePolicy2.setHorizontalStretch(0)
- sizePolicy2.setVerticalStretch(0)
- sizePolicy2.setHeightForWidth(self.tableWidget_apparat_media.sizePolicy().hasHeightForWidth())
- self.tableWidget_apparat_media.setSizePolicy(sizePolicy2)
- self.tableWidget_apparat_media.setMinimumSize(QSize(1259, 0))
- self.tableWidget_apparat_media.setFocusPolicy(Qt.NoFocus)
- self.tableWidget_apparat_media.setContextMenuPolicy(Qt.CustomContextMenu)
- self.tableWidget_apparat_media.setSizeAdjustPolicy(QAbstractScrollArea.AdjustToContents)
- self.tableWidget_apparat_media.setEditTriggers(QAbstractItemView.NoEditTriggers)
- self.tableWidget_apparat_media.setAlternatingRowColors(True)
- self.tableWidget_apparat_media.setSelectionBehavior(QAbstractItemView.SelectRows)
- self.tableWidget_apparat_media.setSortingEnabled(True)
- self.tableWidget_apparat_media.horizontalHeader().setCascadingSectionResizes(True)
-
- self.gridLayout_2.addWidget(self.tableWidget_apparat_media, 9, 0, 1, 1)
+ self.gridLayout_2.addLayout(self.horizontalLayout_3, 11, 0, 1, 1)
self.label = QLabel(self.gridLayoutWidget_2)
self.label.setObjectName(u"label")
@@ -306,11 +190,11 @@ class Ui_MainWindow(object):
self.app_group_box = QGroupBox(self.gridLayoutWidget_2)
self.app_group_box.setObjectName(u"app_group_box")
self.app_group_box.setEnabled(True)
- sizePolicy3 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Fixed)
- sizePolicy3.setHorizontalStretch(0)
- sizePolicy3.setVerticalStretch(0)
- sizePolicy3.setHeightForWidth(self.app_group_box.sizePolicy().hasHeightForWidth())
- self.app_group_box.setSizePolicy(sizePolicy3)
+ sizePolicy2 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Fixed)
+ sizePolicy2.setHorizontalStretch(0)
+ sizePolicy2.setVerticalStretch(0)
+ sizePolicy2.setHeightForWidth(self.app_group_box.sizePolicy().hasHeightForWidth())
+ self.app_group_box.setSizePolicy(sizePolicy2)
self.app_group_box.setMinimumSize(QSize(0, 210))
font1 = QFont()
font1.setPointSize(12)
@@ -325,17 +209,17 @@ class Ui_MainWindow(object):
font2 = QFont()
font2.setFamilies([u"Arial"])
font2.setPointSize(8)
- __qtablewidgetitem13 = QTableWidgetItem()
- __qtablewidgetitem13.setFont(font2);
- self.document_list.setHorizontalHeaderItem(0, __qtablewidgetitem13)
- __qtablewidgetitem14 = QTableWidgetItem()
- __qtablewidgetitem14.setFont(font2);
- self.document_list.setHorizontalHeaderItem(1, __qtablewidgetitem14)
- __qtablewidgetitem15 = QTableWidgetItem()
- __qtablewidgetitem15.setFont(font2);
- self.document_list.setHorizontalHeaderItem(2, __qtablewidgetitem15)
- __qtablewidgetitem16 = QTableWidgetItem()
- self.document_list.setHorizontalHeaderItem(3, __qtablewidgetitem16)
+ __qtablewidgetitem6 = QTableWidgetItem()
+ __qtablewidgetitem6.setFont(font2);
+ self.document_list.setHorizontalHeaderItem(0, __qtablewidgetitem6)
+ __qtablewidgetitem7 = QTableWidgetItem()
+ __qtablewidgetitem7.setFont(font2);
+ self.document_list.setHorizontalHeaderItem(1, __qtablewidgetitem7)
+ __qtablewidgetitem8 = QTableWidgetItem()
+ __qtablewidgetitem8.setFont(font2);
+ self.document_list.setHorizontalHeaderItem(2, __qtablewidgetitem8)
+ __qtablewidgetitem9 = QTableWidgetItem()
+ self.document_list.setHorizontalHeaderItem(3, __qtablewidgetitem9)
self.document_list.setObjectName(u"document_list")
self.document_list.setGeometry(QRect(780, 20, 321, 181))
font3 = QFont()
@@ -473,25 +357,25 @@ class Ui_MainWindow(object):
self.formLayout_3.setWidget(0, QFormLayout.ItemRole.LabelRole, self.label_12)
- self.prof_id_adis = QLineEdit(self.formLayoutWidget_2)
- self.prof_id_adis.setObjectName(u"prof_id_adis")
- self.prof_id_adis.setFont(font4)
- self.prof_id_adis.setInputMethodHints(Qt.ImhPreferNumbers)
-
- self.formLayout_3.setWidget(0, QFormLayout.ItemRole.FieldRole, self.prof_id_adis)
-
self.label_13 = QLabel(self.formLayoutWidget_2)
self.label_13.setObjectName(u"label_13")
self.label_13.setFont(font4)
- self.formLayout_3.setWidget(1, QFormLayout.ItemRole.LabelRole, self.label_13)
+ self.formLayout_3.setWidget(2, QFormLayout.ItemRole.LabelRole, self.label_13)
self.apparat_id_adis = QLineEdit(self.formLayoutWidget_2)
self.apparat_id_adis.setObjectName(u"apparat_id_adis")
self.apparat_id_adis.setFont(font4)
self.apparat_id_adis.setInputMethodHints(Qt.ImhPreferNumbers)
- self.formLayout_3.setWidget(1, QFormLayout.ItemRole.FieldRole, self.apparat_id_adis)
+ self.formLayout_3.setWidget(2, QFormLayout.ItemRole.FieldRole, self.apparat_id_adis)
+
+ self.prof_id_adis = QLineEdit(self.formLayoutWidget_2)
+ self.prof_id_adis.setObjectName(u"prof_id_adis")
+ self.prof_id_adis.setFont(font4)
+ self.prof_id_adis.setInputMethodHints(Qt.ImhPreferNumbers)
+
+ self.formLayout_3.setWidget(1, QFormLayout.ItemRole.FieldRole, self.prof_id_adis)
self.sem_year = QLineEdit(self.app_group_box)
self.sem_year.setObjectName(u"sem_year")
@@ -578,35 +462,35 @@ class Ui_MainWindow(object):
self.verticalLayout_8.setContentsMargins(0, 0, 0, 0)
self.btn_add_document = QPushButton(self.verticalLayoutWidget_3)
self.btn_add_document.setObjectName(u"btn_add_document")
- sizePolicy4 = QSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.MinimumExpanding)
- sizePolicy4.setHorizontalStretch(0)
- sizePolicy4.setVerticalStretch(0)
- sizePolicy4.setHeightForWidth(self.btn_add_document.sizePolicy().hasHeightForWidth())
- self.btn_add_document.setSizePolicy(sizePolicy4)
+ sizePolicy3 = QSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.MinimumExpanding)
+ sizePolicy3.setHorizontalStretch(0)
+ sizePolicy3.setVerticalStretch(0)
+ sizePolicy3.setHeightForWidth(self.btn_add_document.sizePolicy().hasHeightForWidth())
+ self.btn_add_document.setSizePolicy(sizePolicy3)
self.btn_add_document.setFont(font4)
self.verticalLayout_8.addWidget(self.btn_add_document)
self.btn_open_document = QPushButton(self.verticalLayoutWidget_3)
self.btn_open_document.setObjectName(u"btn_open_document")
- sizePolicy4.setHeightForWidth(self.btn_open_document.sizePolicy().hasHeightForWidth())
- self.btn_open_document.setSizePolicy(sizePolicy4)
+ sizePolicy3.setHeightForWidth(self.btn_open_document.sizePolicy().hasHeightForWidth())
+ self.btn_open_document.setSizePolicy(sizePolicy3)
self.btn_open_document.setFont(font4)
self.verticalLayout_8.addWidget(self.btn_open_document)
self.check_file = QPushButton(self.verticalLayoutWidget_3)
self.check_file.setObjectName(u"check_file")
- sizePolicy4.setHeightForWidth(self.check_file.sizePolicy().hasHeightForWidth())
- self.check_file.setSizePolicy(sizePolicy4)
+ sizePolicy3.setHeightForWidth(self.check_file.sizePolicy().hasHeightForWidth())
+ self.check_file.setSizePolicy(sizePolicy3)
self.check_file.setFont(font4)
self.verticalLayout_8.addWidget(self.check_file)
self.btn_extract_data_from_document = QPushButton(self.verticalLayoutWidget_3)
self.btn_extract_data_from_document.setObjectName(u"btn_extract_data_from_document")
- sizePolicy4.setHeightForWidth(self.btn_extract_data_from_document.sizePolicy().hasHeightForWidth())
- self.btn_extract_data_from_document.setSizePolicy(sizePolicy4)
+ sizePolicy3.setHeightForWidth(self.btn_extract_data_from_document.sizePolicy().hasHeightForWidth())
+ self.btn_extract_data_from_document.setSizePolicy(sizePolicy3)
self.btn_extract_data_from_document.setFont(font4)
self.verticalLayout_8.addWidget(self.btn_extract_data_from_document)
@@ -618,10 +502,133 @@ class Ui_MainWindow(object):
self.gridLayout_2.addWidget(self.app_group_box, 1, 0, 1, 1)
- self.add_medium = QPushButton(self.createApparat)
- self.add_medium.setObjectName(u"add_medium")
- self.add_medium.setGeometry(QRect(3, 695, 121, 20))
- self.add_medium.setFocusPolicy(Qt.NoFocus)
+ self.horizontalLayout_5 = QHBoxLayout()
+ self.horizontalLayout_5.setObjectName(u"horizontalLayout_5")
+ self.horizontalSpacer = QSpacerItem(20, 20, QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_5.addItem(self.horizontalSpacer)
+
+ self.chkbx_show_only_wit_neweditions = QCheckBox(self.gridLayoutWidget_2)
+ self.chkbx_show_only_wit_neweditions.setObjectName(u"chkbx_show_only_wit_neweditions")
+ self.chkbx_show_only_wit_neweditions.setEnabled(False)
+
+ self.horizontalLayout_5.addWidget(self.chkbx_show_only_wit_neweditions)
+
+ self.horizontalSpacer_3 = QSpacerItem(40, 20, QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_5.addItem(self.horizontalSpacer_3)
+
+ self.btn_reserve = QPushButton(self.gridLayoutWidget_2)
+ self.btn_reserve.setObjectName(u"btn_reserve")
+
+ self.horizontalLayout_5.addWidget(self.btn_reserve)
+
+ self.add_layout = QHBoxLayout()
+ self.add_layout.setObjectName(u"add_layout")
+ self.label_info = QLabel(self.gridLayoutWidget_2)
+ self.label_info.setObjectName(u"label_info")
+
+ self.add_layout.addWidget(self.label_info)
+
+ self.line_2 = QFrame(self.gridLayoutWidget_2)
+ self.line_2.setObjectName(u"line_2")
+ self.line_2.setFrameShape(QFrame.Shape.VLine)
+ self.line_2.setFrameShadow(QFrame.Shadow.Sunken)
+
+ self.add_layout.addWidget(self.line_2)
+
+ self.progress_label = QLabel(self.gridLayoutWidget_2)
+ self.progress_label.setObjectName(u"progress_label")
+
+ self.add_layout.addWidget(self.progress_label)
+
+
+ self.horizontalLayout_5.addLayout(self.add_layout)
+
+ self.horizontalSpacer_4 = QSpacerItem(40, 20, QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_5.addItem(self.horizontalSpacer_4)
+
+ self.avail_layout = QHBoxLayout()
+ self.avail_layout.setObjectName(u"avail_layout")
+ self.label_20 = QLabel(self.gridLayoutWidget_2)
+ self.label_20.setObjectName(u"label_20")
+
+ self.avail_layout.addWidget(self.label_20)
+
+ self.progressBar = QProgressBar(self.gridLayoutWidget_2)
+ self.progressBar.setObjectName(u"progressBar")
+ self.progressBar.setValue(24)
+
+ self.avail_layout.addWidget(self.progressBar)
+
+ self.label_eta = QLabel(self.gridLayoutWidget_2)
+ self.label_eta.setObjectName(u"label_eta")
+
+ self.avail_layout.addWidget(self.label_eta)
+
+
+ self.horizontalLayout_5.addLayout(self.avail_layout)
+
+ self.line_3 = QFrame(self.gridLayoutWidget_2)
+ self.line_3.setObjectName(u"line_3")
+ self.line_3.setFrameShape(QFrame.Shape.VLine)
+ self.line_3.setFrameShadow(QFrame.Shadow.Sunken)
+
+ self.horizontalLayout_5.addWidget(self.line_3)
+
+ self.avail_status = QLabel(self.gridLayoutWidget_2)
+ self.avail_status.setObjectName(u"avail_status")
+
+ self.horizontalLayout_5.addWidget(self.avail_status)
+
+ self.automation_add_selected_books = QPushButton(self.gridLayoutWidget_2)
+ self.automation_add_selected_books.setObjectName(u"automation_add_selected_books")
+
+ self.horizontalLayout_5.addWidget(self.automation_add_selected_books)
+
+ self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
+
+ self.horizontalLayout_5.addItem(self.horizontalSpacer_2)
+
+
+ self.gridLayout_2.addLayout(self.horizontalLayout_5, 4, 0, 1, 1)
+
+ self.tableWidget_apparat_media = QTableWidget(self.gridLayoutWidget_2)
+ if (self.tableWidget_apparat_media.columnCount() < 7):
+ self.tableWidget_apparat_media.setColumnCount(7)
+ __qtablewidgetitem10 = QTableWidgetItem()
+ self.tableWidget_apparat_media.setHorizontalHeaderItem(0, __qtablewidgetitem10)
+ __qtablewidgetitem11 = QTableWidgetItem()
+ self.tableWidget_apparat_media.setHorizontalHeaderItem(1, __qtablewidgetitem11)
+ __qtablewidgetitem12 = QTableWidgetItem()
+ self.tableWidget_apparat_media.setHorizontalHeaderItem(2, __qtablewidgetitem12)
+ __qtablewidgetitem13 = QTableWidgetItem()
+ self.tableWidget_apparat_media.setHorizontalHeaderItem(3, __qtablewidgetitem13)
+ __qtablewidgetitem14 = QTableWidgetItem()
+ self.tableWidget_apparat_media.setHorizontalHeaderItem(4, __qtablewidgetitem14)
+ __qtablewidgetitem15 = QTableWidgetItem()
+ self.tableWidget_apparat_media.setHorizontalHeaderItem(5, __qtablewidgetitem15)
+ __qtablewidgetitem16 = QTableWidgetItem()
+ self.tableWidget_apparat_media.setHorizontalHeaderItem(6, __qtablewidgetitem16)
+ self.tableWidget_apparat_media.setObjectName(u"tableWidget_apparat_media")
+ sizePolicy4 = QSizePolicy(QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Expanding)
+ sizePolicy4.setHorizontalStretch(0)
+ sizePolicy4.setVerticalStretch(0)
+ sizePolicy4.setHeightForWidth(self.tableWidget_apparat_media.sizePolicy().hasHeightForWidth())
+ self.tableWidget_apparat_media.setSizePolicy(sizePolicy4)
+ self.tableWidget_apparat_media.setMinimumSize(QSize(1259, 0))
+ self.tableWidget_apparat_media.setFocusPolicy(Qt.NoFocus)
+ self.tableWidget_apparat_media.setContextMenuPolicy(Qt.CustomContextMenu)
+ self.tableWidget_apparat_media.setSizeAdjustPolicy(QAbstractScrollArea.AdjustToContents)
+ self.tableWidget_apparat_media.setEditTriggers(QAbstractItemView.NoEditTriggers)
+ self.tableWidget_apparat_media.setAlternatingRowColors(True)
+ self.tableWidget_apparat_media.setSelectionBehavior(QAbstractItemView.SelectRows)
+ self.tableWidget_apparat_media.setSortingEnabled(True)
+ self.tableWidget_apparat_media.horizontalHeader().setCascadingSectionResizes(True)
+
+ self.gridLayout_2.addWidget(self.tableWidget_apparat_media, 9, 0, 1, 1)
+
self.tabWidget.addTab(self.createApparat, "")
self.search_statistics = QWidget()
self.search_statistics.setObjectName(u"search_statistics")
@@ -827,11 +834,9 @@ class Ui_MainWindow(object):
QWidget.setTabOrder(self.check_file, self.check_send_mail)
QWidget.setTabOrder(self.check_send_mail, self.btn_apparat_save)
QWidget.setTabOrder(self.btn_apparat_save, self.btn_apparat_apply)
- QWidget.setTabOrder(self.btn_apparat_apply, self.chkbx_show_del_media)
- QWidget.setTabOrder(self.chkbx_show_del_media, self.btn_reserve)
+ QWidget.setTabOrder(self.btn_apparat_apply, self.btn_reserve)
QWidget.setTabOrder(self.btn_reserve, self.select_action_box)
- QWidget.setTabOrder(self.select_action_box, self.prof_id_adis)
- QWidget.setTabOrder(self.prof_id_adis, self.apparat_id_adis)
+ QWidget.setTabOrder(self.select_action_box, self.apparat_id_adis)
QWidget.setTabOrder(self.apparat_id_adis, self.automation_add_selected_books)
QWidget.setTabOrder(self.automation_add_selected_books, self.saveandcreate)
@@ -840,6 +845,7 @@ class Ui_MainWindow(object):
self.menubar.addAction(self.menuHelp.menuAction())
self.menuDatei.addAction(self.actionBeenden)
self.menuEinstellungen.addAction(self.actionEinstellungen)
+ self.menuEinstellungen.addAction(self.actionMedien_loeschen)
self.menuHelp.addAction(self.actionAbout)
self.menuHelp.addAction(self.actionDokumentation)
@@ -869,6 +875,7 @@ class Ui_MainWindow(object):
#if QT_CONFIG(shortcut)
self.actionDokumentation.setShortcut(QCoreApplication.translate("MainWindow", u"F1", None))
#endif // QT_CONFIG(shortcut)
+ self.actionMedien_loeschen.setText(QCoreApplication.translate("MainWindow", u"Medien l\u00f6schen", None))
#if QT_CONFIG(tooltip)
self.create_document.setToolTip(QCoreApplication.translate("MainWindow", u"Erstellt die \u00dcbersicht, welche am Regal ausgeh\u00e4ngt werden kann", None))
#endif // QT_CONFIG(tooltip)
@@ -887,54 +894,17 @@ class Ui_MainWindow(object):
___qtablewidgetitem4.setText(QCoreApplication.translate("MainWindow", u"Dauerapparat", None));
___qtablewidgetitem5 = self.tableWidget_apparate.horizontalHeaderItem(5)
___qtablewidgetitem5.setText(QCoreApplication.translate("MainWindow", u"KontoNr", None));
-#if QT_CONFIG(tooltip)
- self.chkbx_show_del_media.setToolTip(QCoreApplication.translate("MainWindow", u"WIP - Broken", None))
-#endif // QT_CONFIG(tooltip)
- self.chkbx_show_del_media.setText(QCoreApplication.translate("MainWindow", u"gel. Medien anzeigen", None))
-#if QT_CONFIG(tooltip)
- self.chkbx_show_only_wit_neweditions.setToolTip(QCoreApplication.translate("MainWindow", u"WIP - Broken", None))
-#endif // QT_CONFIG(tooltip)
- self.chkbx_show_only_wit_neweditions.setText(QCoreApplication.translate("MainWindow", u"Nur Titel mit Neuauflagen anzeigen", None))
-#if QT_CONFIG(tooltip)
- self.btn_reserve.setToolTip(QCoreApplication.translate("MainWindow", u"Dieser Knopf pr\u00fcft alle Werke, die mit einem roten X vermerkt sind. Sollten diese inzwischen im Apparat sein, wird dies aktualisiert", None))
-#endif // QT_CONFIG(tooltip)
- self.btn_reserve.setText(QCoreApplication.translate("MainWindow", u"Medien mit \u274c im Apparat?", None))
- self.label_info.setText(QCoreApplication.translate("MainWindow", u"Medien werden hinzugef\u00fcgt", None))
- self.progress_label.setText(QCoreApplication.translate("MainWindow", u"Medium x/y", None))
- self.label_20.setText(QCoreApplication.translate("MainWindow", u"Medien werden gepr\u00fcft", None))
- self.label_eta.setText("")
- self.avail_status.setText(QCoreApplication.translate("MainWindow", u"TextLabel", None))
- self.automation_add_selected_books.setText(QCoreApplication.translate("MainWindow", u"Ausgew\u00e4hlte als verf\u00fcgbar markieren", None))
- ___qtablewidgetitem6 = self.tableWidget_apparat_media.horizontalHeaderItem(0)
- ___qtablewidgetitem6.setText(QCoreApplication.translate("MainWindow", u"Buchtitel", None));
-#if QT_CONFIG(tooltip)
- ___qtablewidgetitem6.setToolTip(QCoreApplication.translate("MainWindow", u"Es kann sein, dass der Buchtitel leer ist, dies kommt vor, wenn der Titel nicht passend formatiert ist", None));
-#endif // QT_CONFIG(tooltip)
- ___qtablewidgetitem7 = self.tableWidget_apparat_media.horizontalHeaderItem(1)
- ___qtablewidgetitem7.setText(QCoreApplication.translate("MainWindow", u"Signatur", None));
- ___qtablewidgetitem8 = self.tableWidget_apparat_media.horizontalHeaderItem(2)
- ___qtablewidgetitem8.setText(QCoreApplication.translate("MainWindow", u"Auflage", None));
- ___qtablewidgetitem9 = self.tableWidget_apparat_media.horizontalHeaderItem(3)
- ___qtablewidgetitem9.setText(QCoreApplication.translate("MainWindow", u"Autor", None));
- ___qtablewidgetitem10 = self.tableWidget_apparat_media.horizontalHeaderItem(4)
- ___qtablewidgetitem10.setText(QCoreApplication.translate("MainWindow", u"im Apparat?", None));
-#if QT_CONFIG(tooltip)
- ___qtablewidgetitem10.setToolTip(QCoreApplication.translate("MainWindow", u"Diese Angabe ist nicht zuverl\u00e4ssig. Ist das \u274c vorhanden, kann das Medium im Apparat sein, aber aufgrund eines Bugs nicht gefunden worden", None));
-#endif // QT_CONFIG(tooltip)
- ___qtablewidgetitem11 = self.tableWidget_apparat_media.horizontalHeaderItem(5)
- ___qtablewidgetitem11.setText(QCoreApplication.translate("MainWindow", u"Vorgemerkt", None));
- ___qtablewidgetitem12 = self.tableWidget_apparat_media.horizontalHeaderItem(6)
- ___qtablewidgetitem12.setText(QCoreApplication.translate("MainWindow", u"Link", None));
+ self.add_medium.setText(QCoreApplication.translate("MainWindow", u"Medien hinzuf\u00fcgen", None))
self.label.setText(QCoreApplication.translate("MainWindow", u" Medienliste", None))
self.app_group_box.setTitle(QCoreApplication.translate("MainWindow", u"SemesterApparatsdetails", None))
- ___qtablewidgetitem13 = self.document_list.horizontalHeaderItem(0)
- ___qtablewidgetitem13.setText(QCoreApplication.translate("MainWindow", u"Dokumentname", None));
- ___qtablewidgetitem14 = self.document_list.horizontalHeaderItem(1)
- ___qtablewidgetitem14.setText(QCoreApplication.translate("MainWindow", u"Dateityp", None));
- ___qtablewidgetitem15 = self.document_list.horizontalHeaderItem(2)
- ___qtablewidgetitem15.setText(QCoreApplication.translate("MainWindow", u"Neu?", None));
- ___qtablewidgetitem16 = self.document_list.horizontalHeaderItem(3)
- ___qtablewidgetitem16.setText(QCoreApplication.translate("MainWindow", u"path", None));
+ ___qtablewidgetitem6 = self.document_list.horizontalHeaderItem(0)
+ ___qtablewidgetitem6.setText(QCoreApplication.translate("MainWindow", u"Dokumentname", None));
+ ___qtablewidgetitem7 = self.document_list.horizontalHeaderItem(1)
+ ___qtablewidgetitem7.setText(QCoreApplication.translate("MainWindow", u"Dateityp", None));
+ ___qtablewidgetitem8 = self.document_list.horizontalHeaderItem(2)
+ ___qtablewidgetitem8.setText(QCoreApplication.translate("MainWindow", u"Neu?", None));
+ ___qtablewidgetitem9 = self.document_list.horizontalHeaderItem(3)
+ ___qtablewidgetitem9.setText(QCoreApplication.translate("MainWindow", u"path", None));
self.appname_mand.setText(QCoreApplication.translate("MainWindow", u"*", None))
self.profname_mand.setText(QCoreApplication.translate("MainWindow", u"*", None))
self.fach_mand.setText(QCoreApplication.translate("MainWindow", u"*", None))
@@ -959,8 +929,8 @@ class Ui_MainWindow(object):
self.label_10.setText(QCoreApplication.translate("MainWindow", u"Fach", None))
self.prof_mail.setPlaceholderText("")
self.label_12.setText(QCoreApplication.translate("MainWindow", u"Prof-ID-aDIS", None))
- self.prof_id_adis.setText("")
self.label_13.setText(QCoreApplication.translate("MainWindow", u"Apparat-ID-aDIS", None))
+ self.prof_id_adis.setText("")
self.sem_year.setPlaceholderText(QCoreApplication.translate("MainWindow", u"2023", None))
self.check_send_mail.setText(QCoreApplication.translate("MainWindow", u"Mail senden", None))
self.sem_winter.setText(QCoreApplication.translate("MainWindow", u"Winter", None))
@@ -997,7 +967,40 @@ class Ui_MainWindow(object):
#endif // QT_CONFIG(tooltip)
self.btn_extract_data_from_document.setText(QCoreApplication.translate("MainWindow", u"Daten aus Dokument\n"
"\u00fcbernehmen", None))
- self.add_medium.setText(QCoreApplication.translate("MainWindow", u"Medien hinzuf\u00fcgen", None))
+#if QT_CONFIG(tooltip)
+ self.chkbx_show_only_wit_neweditions.setToolTip(QCoreApplication.translate("MainWindow", u"WIP - Broken", None))
+#endif // QT_CONFIG(tooltip)
+ self.chkbx_show_only_wit_neweditions.setText(QCoreApplication.translate("MainWindow", u"Nur Titel mit Neuauflagen anzeigen", None))
+#if QT_CONFIG(tooltip)
+ self.btn_reserve.setToolTip(QCoreApplication.translate("MainWindow", u"Dieser Knopf pr\u00fcft alle Werke, die mit einem roten X vermerkt sind. Sollten diese inzwischen im Apparat sein, wird dies aktualisiert", None))
+#endif // QT_CONFIG(tooltip)
+ self.btn_reserve.setText(QCoreApplication.translate("MainWindow", u"Medien mit \u274c im Apparat?", None))
+ self.label_info.setText(QCoreApplication.translate("MainWindow", u"Medien werden hinzugef\u00fcgt", None))
+ self.progress_label.setText(QCoreApplication.translate("MainWindow", u"Medium x/y", None))
+ self.label_20.setText(QCoreApplication.translate("MainWindow", u"Medien werden gepr\u00fcft", None))
+ self.label_eta.setText("")
+ self.avail_status.setText(QCoreApplication.translate("MainWindow", u"TextLabel", None))
+ self.automation_add_selected_books.setText(QCoreApplication.translate("MainWindow", u"Ausgew\u00e4hlte als verf\u00fcgbar markieren", None))
+ ___qtablewidgetitem10 = self.tableWidget_apparat_media.horizontalHeaderItem(0)
+ ___qtablewidgetitem10.setText(QCoreApplication.translate("MainWindow", u"Buchtitel", None));
+#if QT_CONFIG(tooltip)
+ ___qtablewidgetitem10.setToolTip(QCoreApplication.translate("MainWindow", u"Es kann sein, dass der Buchtitel leer ist, dies kommt vor, wenn der Titel nicht passend formatiert ist", None));
+#endif // QT_CONFIG(tooltip)
+ ___qtablewidgetitem11 = self.tableWidget_apparat_media.horizontalHeaderItem(1)
+ ___qtablewidgetitem11.setText(QCoreApplication.translate("MainWindow", u"Signatur", None));
+ ___qtablewidgetitem12 = self.tableWidget_apparat_media.horizontalHeaderItem(2)
+ ___qtablewidgetitem12.setText(QCoreApplication.translate("MainWindow", u"Auflage", None));
+ ___qtablewidgetitem13 = self.tableWidget_apparat_media.horizontalHeaderItem(3)
+ ___qtablewidgetitem13.setText(QCoreApplication.translate("MainWindow", u"Autor", None));
+ ___qtablewidgetitem14 = self.tableWidget_apparat_media.horizontalHeaderItem(4)
+ ___qtablewidgetitem14.setText(QCoreApplication.translate("MainWindow", u"im Apparat?", None));
+#if QT_CONFIG(tooltip)
+ ___qtablewidgetitem14.setToolTip(QCoreApplication.translate("MainWindow", u"Diese Angabe ist nicht zuverl\u00e4ssig. Ist das \u274c vorhanden, kann das Medium im Apparat sein, aber aufgrund eines Bugs nicht gefunden worden", None));
+#endif // QT_CONFIG(tooltip)
+ ___qtablewidgetitem15 = self.tableWidget_apparat_media.horizontalHeaderItem(5)
+ ___qtablewidgetitem15.setText(QCoreApplication.translate("MainWindow", u"Vorgemerkt", None));
+ ___qtablewidgetitem16 = self.tableWidget_apparat_media.horizontalHeaderItem(6)
+ ___qtablewidgetitem16.setText(QCoreApplication.translate("MainWindow", u"Link", None));
self.tabWidget.setTabText(self.tabWidget.indexOf(self.createApparat), QCoreApplication.translate("MainWindow", u"Anlegen", None))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.search_statistics), QCoreApplication.translate("MainWindow", u"Suchen / Statistik", None))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.elsatab), QCoreApplication.translate("MainWindow", u"ELSA", None))
diff --git a/src/ui/userInterface.py b/src/ui/userInterface.py
index 5c4ef19..a5c0b8f 100644
--- a/src/ui/userInterface.py
+++ b/src/ui/userInterface.py
@@ -5,18 +5,16 @@ import sys
import tempfile
import time
import webbrowser
-from datetime import datetime
from pathlib import Path
from typing import Any, List, Optional, Tuple, Union
-import loguru
from natsort import natsorted
from PySide6 import QtCore, QtGui, QtWidgets
from PySide6.QtCore import QThread
from PySide6.QtGui import QRegularExpressionValidator
from PySide6.QtMultimedia import QAudioOutput, QMediaPlayer
-from src import LOG_DIR, Icon
+from src import Icon
from src.backend import (
AvailChecker,
BookGrabber,
@@ -39,11 +37,13 @@ from src.logic import (
pdf_to_semap,
word_to_semap,
)
+from src.shared.logging import log
from src.ui import Ui_Semesterapparat
from src.ui.dialogs import (
About,
ApparatExtendDialog,
BookDataUI,
+ DeleteDialog,
DocumentPrintDialog,
LoginDialog,
Mail_Dialog,
@@ -69,16 +69,6 @@ from src.ui.widgets import (
UserCreate,
)
-log = loguru.logger
-log.remove()
-log.add(sys.stdout, level="INFO")
-log.add(f"{LOG_DIR}/application.log", rotation="3 MB", retention="10 days")
-
-log.add(
- f"{LOG_DIR}/{datetime.now().strftime('%Y-%m-%d')}.log",
- rotation="1 day",
- retention="1 month",
-)
log.success("UI started")
valid_input = (0, 0, 0, 0, 0, 0)
@@ -92,7 +82,9 @@ class Ui(QtWidgets.QMainWindow, Ui_Semesterapparat):
self.setupUi(MainWindow) # type:ignore
self.MainWindow = MainWindow # type:ignore
# set the window title
- MainWindow.setWindowTitle("Semesterapparatsmanagement") # type:ignore
+ MainWindow.setWindowTitle(
+ f"Semesterapparatsmanagement Semester: {Semester().value}"
+ ) # type:ignore
MainWindow.setWindowIcon(Icon("logo").icon) # type:ignore
self.db = Database()
@@ -135,6 +127,8 @@ class Ui(QtWidgets.QMainWindow, Ui_Semesterapparat):
Icon("offAction", self.actionBeenden)
self.actionBeenden.triggered.connect(self.quit) # type:ignore
self.actionAbout.triggered.connect(self.open_about) # type:ignore
+ self.actionMedien_loeschen.triggered.connect(self.open_delete_dialog)
+ self.actionMedien_loeschen.setIcon(Icon("trash").icon)
# set validators
self.sem_sommer.clicked.connect(lambda: self.toggleButton(self.sem_winter)) # type:ignore
@@ -191,11 +185,11 @@ class Ui(QtWidgets.QMainWindow, Ui_Semesterapparat):
self.app_fach.currentTextChanged.connect(self.validate_app_fach) # type:ignore
self.sem_year.textChanged.connect(self.validate_semester) # type:ignore
self.check_eternal_app.stateChanged.connect(self.validate_semester) # type:ignore
- self.chkbx_show_del_media.stateChanged.connect(self.update_app_media_list) # type:ignore
+ # self.chkbx_show_del_media.stateChanged.connect(self.update_app_media_list) # type:ignore
self.progress_label.setText("Bitte warten...")
# Set visibility/enabled state of certain entries
- self.chkbx_show_del_media.setEnabled(False)
+ # self.chkbx_show_del_media.setEnabled(False)
self.label_info.hide()
self.app_group_box.setEnabled(False)
self.line_2.hide()
@@ -207,7 +201,7 @@ class Ui(QtWidgets.QMainWindow, Ui_Semesterapparat):
self.progressBar.hide()
self.progressBar.setMinimum(0)
self.avail_status.hide()
- self.chkbx_show_del_media.hide()
+ # self.chkbx_show_del_media.hide()
self.chkbx_show_only_wit_neweditions.hide()
self.automation_add_selected_books.hide()
# self.btn_del_select_apparats.setEnabled(False)
@@ -288,6 +282,12 @@ class Ui(QtWidgets.QMainWindow, Ui_Semesterapparat):
self.document_list.installEventFilter(self)
self.document_list.viewport().installEventFilter(self)
+ def open_delete_dialog(self):
+ # this will open a dialog to select and delete multiple entries. by default, all books will be loaded, and a search bar can be used to fuzzy search the books and select books. on a button press, the selected books will be deleted from the apparat(s) they are part in
+ # raise NotImplementedError("This feature is not yet implemented.")
+ dialog = DeleteDialog()
+ dialog.exec()
+
def eventFilter(self, obj, event):
# Only handle events for document_list and its viewport
if obj in (self.document_list, self.document_list.viewport()):
@@ -564,7 +564,7 @@ class Ui(QtWidgets.QMainWindow, Ui_Semesterapparat):
self.update_app_media_list()
self.cancel_active_selection.click()
self.check_send_mail.show()
- self.chkbx_show_del_media.show()
+ # self.chkbx_show_del_media.show()
self.cancel_active_selection.setEnabled(False)
self.add_medium.setEnabled(False)
# update apparat table
@@ -731,12 +731,12 @@ class Ui(QtWidgets.QMainWindow, Ui_Semesterapparat):
self.sem_winter.setEnabled(False)
self.sem_year.setEnabled(False)
self.document_list.setRowCount(0)
- self.chkbx_show_del_media.setEnabled(True)
+ # self.chkbx_show_del_media.setEnabled(True)
appdata = self.db.getApparatData(appnr, appname)
self.populate_frame(appdata)
self.btn_apparat_save.hide()
self.btn_reserve.show()
- self.chkbx_show_del_media.show()
+ # self.chkbx_show_del_media.show()
self.drpdwn_app_nr.setDisabled(True)
self.update_app_media_list()
@@ -773,7 +773,7 @@ class Ui(QtWidgets.QMainWindow, Ui_Semesterapparat):
self.sem_year.setEnabled(True)
self.sem_sommer.setEnabled(True)
self.sem_winter.setEnabled(True)
- self.chkbx_show_del_media.setEnabled(True)
+ # self.chkbx_show_del_media.setEnabled(True)
self.drpdwn_app_nr.setEnabled(True)
self.app_fach.setEnabled(True)
self.check_send_mail.show()
@@ -919,7 +919,7 @@ class Ui(QtWidgets.QMainWindow, Ui_Semesterapparat):
self.document_list.setRowCount(0)
self.app_group_box.setEnabled(False)
self.app_fach.setCurrentText("")
- self.chkbx_show_del_media.hide()
+ # self.chkbx_show_del_media.hide()
self.check_send_mail.hide()
self.btn_reserve.hide()
self.check_eternal_app.setEnabled(False)