add files

This commit is contained in:
WorldTeacher
2024-01-26 08:28:01 +01:00
parent dd9ee24a8f
commit 0a9818940c
110 changed files with 21563 additions and 0 deletions

View File

@@ -0,0 +1,157 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\Semesterapparate\ui\dialogs\edit_bookdata.ui'
#
# Created by: PyQt6 UI code generator 6.3.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets
from src.logic.dataclass import BookData
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Metadaten")
Dialog.resize(448, 572)
self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
self.buttonBox.setGeometry(QtCore.QRect(260, 530, 161, 32))
self.buttonBox.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.buttonBox.setStandardButtons(
QtWidgets.QDialogButtonBox.StandardButton.Cancel
| QtWidgets.QDialogButtonBox.StandardButton.Ok
)
self.buttonBox.setObjectName("buttonBox")
self.gridLayoutWidget = QtWidgets.QWidget(Dialog)
self.gridLayoutWidget.setGeometry(QtCore.QRect(0, 0, 441, 531))
self.gridLayoutWidget.setObjectName("gridLayoutWidget")
self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget)
self.gridLayout.setSizeConstraint(
QtWidgets.QLayout.SizeConstraint.SetDefaultConstraint
)
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.gridLayout.setObjectName("gridLayout")
self.label_10 = QtWidgets.QLabel(self.gridLayoutWidget)
self.label_10.setObjectName("label_10")
self.gridLayout.addWidget(self.label_10, 10, 1, 1, 1)
self.label = QtWidgets.QLabel(self.gridLayoutWidget)
self.label.setObjectName("label")
self.gridLayout.addWidget(self.label, 0, 1, 1, 1)
self.label_9 = QtWidgets.QLabel(self.gridLayoutWidget)
self.label_9.setObjectName("label_9")
self.gridLayout.addWidget(self.label_9, 9, 1, 1, 1)
self.label_8 = QtWidgets.QLabel(self.gridLayoutWidget)
self.label_8.setObjectName("label_8")
self.gridLayout.addWidget(self.label_8, 8, 1, 1, 1)
self.label_12 = QtWidgets.QLabel(self.gridLayoutWidget)
self.label_12.setObjectName("label_12")
self.gridLayout.addWidget(self.label_12, 6, 1, 1, 1)
self.line_edition = QtWidgets.QLineEdit(self.gridLayoutWidget)
self.line_edition.setObjectName("line_edition")
self.gridLayout.addWidget(self.line_edition, 2, 2, 1, 1)
self.label_3 = QtWidgets.QLabel(self.gridLayoutWidget)
self.label_3.setObjectName("label_3")
self.gridLayout.addWidget(self.label_3, 2, 1, 1, 1)
self.label_4 = QtWidgets.QLabel(self.gridLayoutWidget)
self.label_4.setObjectName("label_4")
self.gridLayout.addWidget(self.label_4, 3, 1, 1, 1)
self.line_link = QtWidgets.QLineEdit(self.gridLayoutWidget)
self.line_link.setCursor(QtGui.QCursor(QtCore.Qt.CursorShape.ArrowCursor))
self.line_link.setReadOnly(True)
self.line_link.setObjectName("line_link")
self.gridLayout.addWidget(self.line_link, 6, 2, 1, 1)
self.label_5 = QtWidgets.QLabel(self.gridLayoutWidget)
self.label_5.setObjectName("label_5")
self.gridLayout.addWidget(self.label_5, 4, 1, 1, 1)
self.label_7 = QtWidgets.QLabel(self.gridLayoutWidget)
self.label_7.setObjectName("label_7")
self.gridLayout.addWidget(self.label_7, 7, 1, 1, 1)
self.label_6 = QtWidgets.QLabel(self.gridLayoutWidget)
self.label_6.setObjectName("label_6")
self.gridLayout.addWidget(self.label_6, 5, 1, 1, 1)
self.label_2 = QtWidgets.QLabel(self.gridLayoutWidget)
self.label_2.setObjectName("label_2")
self.gridLayout.addWidget(self.label_2, 1, 1, 1, 1)
spacerItem = QtWidgets.QSpacerItem(
5,
20,
QtWidgets.QSizePolicy.Policy.Fixed,
QtWidgets.QSizePolicy.Policy.Minimum,
)
self.gridLayout.addItem(spacerItem, 8, 0, 1, 1)
self.line_title = QtWidgets.QLineEdit(self.gridLayoutWidget)
self.line_title.setObjectName("line_title")
self.gridLayout.addWidget(self.line_title, 0, 2, 1, 1)
self.line_signature = QtWidgets.QLineEdit(self.gridLayoutWidget)
self.line_signature.setObjectName("line_signature")
self.gridLayout.addWidget(self.line_signature, 1, 2, 1, 1)
self.line_author = QtWidgets.QLineEdit(self.gridLayoutWidget)
self.line_author.setObjectName("line_author")
self.gridLayout.addWidget(self.line_author, 3, 2, 1, 1)
self.line_lang = QtWidgets.QLineEdit(self.gridLayoutWidget)
self.line_lang.setObjectName("line_lang")
self.gridLayout.addWidget(self.line_lang, 8, 2, 1, 1)
self.line_ppn = QtWidgets.QLineEdit(self.gridLayoutWidget)
self.line_ppn.setObjectName("line_ppn")
self.gridLayout.addWidget(self.line_ppn, 5, 2, 1, 1)
self.line_isbn = QtWidgets.QLineEdit(self.gridLayoutWidget)
self.line_isbn.setObjectName("line_isbn")
self.gridLayout.addWidget(self.line_isbn, 7, 2, 1, 1)
self.line_year = QtWidgets.QLineEdit(self.gridLayoutWidget)
self.line_year.setObjectName("line_year")
self.gridLayout.addWidget(self.line_year, 9, 2, 1, 1)
self.line_pages = QtWidgets.QLineEdit(self.gridLayoutWidget)
self.line_pages.setObjectName("line_pages")
self.gridLayout.addWidget(self.line_pages, 10, 2, 1, 1)
self.line_publisher = QtWidgets.QLineEdit(self.gridLayoutWidget)
self.line_publisher.setObjectName("line_publisher")
self.gridLayout.addWidget(self.line_publisher, 4, 2, 1, 1)
self.retranslateUi(Dialog)
self.buttonBox.accepted.connect(Dialog.accept) # type: ignore
self.buttonBox.rejected.connect(Dialog.reject) # type: ignore
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.label_10.setText(_translate("Dialog", "Seiten"))
self.label.setText(_translate("Dialog", "Titel"))
self.label_9.setText(_translate("Dialog", "Jahr"))
self.label_8.setText(_translate("Dialog", "Sprache"))
self.label_12.setText(_translate("Dialog", "Link"))
self.label_3.setText(_translate("Dialog", "Auflage"))
self.label_4.setText(_translate("Dialog", "Autor"))
self.label_5.setText(_translate("Dialog", "Herausgeber"))
self.label_7.setText(_translate("Dialog", "ISBN(s)"))
self.label_6.setText(_translate("Dialog", "PPN"))
self.label_2.setText(_translate("Dialog", "Signatur"))
def populate_fields(self, data: BookData):
self.line_author.setText(data.author)
self.line_edition.setText(data.edition)
self.line_isbn.setText(", ".join(data.isbn))
self.line_lang.setText(data.language)
self.line_link.setText(data.link)
self.line_pages.setText(data.pages)
self.line_ppn.setText(data.ppn)
self.line_publisher.setText(data.publisher)
self.line_signature.setText(data.signature)
self.line_title.setText(data.title)
self.line_year.setText(data.year)
def get_data(self) -> BookData:
return BookData(
ppn=self.line_ppn.text().strip(),
title=self.line_title.text().strip(),
signature=self.line_signature.text().strip(),
edition=self.line_edition.text().strip(),
link=self.line_link.text().strip(),
isbn=self.line_isbn.text().split(","),
author=self.line_author.text().strip(),
language=self.line_lang.text().strip(),
publisher=self.line_publisher.text().strip(),
year=self.line_year.text().strip(),
pages=self.line_pages.text().strip(),
)

View File

@@ -0,0 +1,109 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\Semesterapparate\ui\dialogs\fileparser.ui'
#
# Created by: PyQt6 UI code generator 6.3.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets
from src.logic.webrequest import BibTextTransformer, WebRequest
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(402, 301)
self.progressBar = QtWidgets.QProgressBar(Dialog)
self.progressBar.setGeometry(QtCore.QRect(10, 60, 381, 23))
self.progressBar.setProperty("value", 24)
self.progressBar.setObjectName("progressBar")
self.frame = QtWidgets.QFrame(Dialog)
self.frame.setGeometry(QtCore.QRect(10, 10, 381, 41))
self.frame.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Shadow.Raised)
self.frame.setObjectName("frame")
self.horizontalLayoutWidget = QtWidgets.QWidget(self.frame)
self.horizontalLayoutWidget.setGeometry(QtCore.QRect(0, 0, 381, 41))
self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout.setObjectName("horizontalLayout")
self.label = QtWidgets.QLabel(self.horizontalLayoutWidget)
self.label.setObjectName("label")
self.horizontalLayout.addWidget(self.label)
self.count = QtWidgets.QLabel(self.horizontalLayoutWidget)
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.count.setFont(font)
self.count.setTextFormat(QtCore.Qt.TextFormat.PlainText)
self.count.setObjectName("count")
self.horizontalLayout.addWidget(self.count)
self.label_2 = QtWidgets.QLabel(self.horizontalLayoutWidget)
self.label_2.setObjectName("label_2")
self.horizontalLayout.addWidget(self.label_2)
spacerItem = QtWidgets.QSpacerItem(
40,
20,
QtWidgets.QSizePolicy.Policy.Expanding,
QtWidgets.QSizePolicy.Policy.Minimum,
)
self.horizontalLayout.addItem(spacerItem)
self.frame_2 = QtWidgets.QFrame(Dialog)
self.frame_2.setGeometry(QtCore.QRect(10, 100, 381, 201))
self.frame_2.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.frame_2.setFrameShadow(QtWidgets.QFrame.Shadow.Raised)
self.frame_2.setObjectName("frame_2")
self.listWidget = QtWidgets.QListWidget(self.frame_2)
self.listWidget.setGeometry(QtCore.QRect(0, 0, 381, 191))
self.listWidget.setObjectName("listWidget")
self.signatures = []
self.returned = []
# self.data_gathering_complete = QtCore.pyqtSignal()
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.label.setText(_translate("Dialog", "Es wurden"))
self.count.setText(_translate("Dialog", "0"))
self.label_2.setText(_translate("Dialog", "Signaturen gefunden."))
def moveToThread(self, thread):
self.progressBar.moveToThread(thread)
self.frame.moveToThread(thread)
self.horizontalLayoutWidget.moveToThread(thread)
self.horizontalLayout.moveToThread(thread)
self.label.moveToThread(thread)
self.count.moveToThread(thread)
self.label_2.moveToThread(thread)
self.frame_2.moveToThread(thread)
self.listWidget.moveToThread(thread)
def run(self):
for signature in self.signatures:
self.count.setText(str(self.signatures.index(signature) + 1))
self.listWidget.addItem(signature)
webdata = WebRequest().get_ppn(signature).get_data()
bookdata = BibTextTransformer("ARRAY").get_data(webdata).return_data()
self.returned.append(bookdata)
self.progressBar.setValue(self.signatures.index(signature) + 1)
# self.data_gathering_complete.emit()
def deleteLater(self):
self.progressBar.deleteLater()
self.frame.deleteLater()
self.horizontalLayoutWidget.deleteLater()
self.horizontalLayout.deleteLater()
self.label.deleteLater()
self.count.deleteLater()
self.label_2.deleteLater()
self.frame_2.deleteLater()
self.listWidget.deleteLater()
self.signatures = []
self.returned = []
self.retranslateUi.deleteLater()
super().deleteLater()

113
src/ui/dialogs/Ui_login.py Normal file
View File

@@ -0,0 +1,113 @@
# Form implementation generated from reading ui file '/home/alexander/GitHub/Semesterapparate/ui/dialogs/login.ui'
#
# Created by: PyQt6 UI code generator 6.5.3
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again. Do not edit this file unless you know what you are doing.
import hashlib
from PyQt6 import QtCore, QtWidgets
from src.backend.database import Database
from src.backend.admin_console import AdminCommands
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(218, 190)
self.dialog = Dialog
self.login_button = QtWidgets.QPushButton(parent=Dialog)
self.login_button.setGeometry(QtCore.QRect(30, 140, 76, 32))
self.login_button.setObjectName("login_button")
self.login_button.setText("Login")
self.login_button.setFocusPolicy(QtCore.Qt.FocusPolicy.ClickFocus)
self.cancel_button = QtWidgets.QPushButton(parent=Dialog)
self.cancel_button.setGeometry(QtCore.QRect(120, 140, 76, 32))
self.cancel_button.setObjectName("cancel_button")
self.cancel_button.setText("Cancel")
self.cancel_button.setFocusPolicy(QtCore.Qt.FocusPolicy.ClickFocus)
self.cancel_button.clicked.connect(self.cancel_buttonfn)
self.label = QtWidgets.QLabel(parent=Dialog)
self.label.setGeometry(QtCore.QRect(20, 40, 71, 21))
self.label.setObjectName("label")
self.lineEdit = QtWidgets.QLineEdit(parent=Dialog)
self.lineEdit.setGeometry(QtCore.QRect(80, 40, 113, 21))
self.lineEdit.setObjectName("lineEdit")
# set strong focus to lineEdit
self.lineEdit.setFocusPolicy(QtCore.Qt.FocusPolicy.StrongFocus)
self.label_2 = QtWidgets.QLabel(parent=Dialog)
self.label_2.setGeometry(QtCore.QRect(20, 80, 71, 21))
self.label_2.setObjectName("label_2")
self.lineEdit_2 = QtWidgets.QLineEdit(parent=Dialog)
self.lineEdit_2.setGeometry(QtCore.QRect(80, 80, 113, 21))
self.lineEdit_2.setInputMethodHints(QtCore.Qt.InputMethodHint.ImhSensitiveData)
# set echo mode to password
self.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.EchoMode.Password)
self.lineEdit_2.setClearButtonEnabled(True)
self.lineEdit_2.setObjectName("lineEdit_2")
self.retranslateUi(Dialog)
# if buttonbox accepted is clicked, launch login test
self.login_button.clicked.connect(self.login)
self.lresult = -1
self.lusername = ""
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.label.setText(_translate("Dialog", "Username"))
self.label_2.setText(_translate("Dialog", "Password"))
def login(self):
username = self.lineEdit.text()
password = self.lineEdit_2.text()
print(type(username), password)
# Assuming 'Database' is a class to interact with your database
db = Database()
hashed_password = hashlib.sha256(
password.encode()
).hexdigest()
if len(db.get_users()) == 0:
AdminCommands().create_admin()
self.lresult = 1 # Indicate successful login
self.lusername = username
self.dialog.accept()
if db.login(username, hashed_password):
self.lresult = 1 # Indicate successful login
self.lusername = username
self.dialog.accept()
db.close()
else:
# Credentials are invalid, display a warning
if username == "" or password == "":
warning_dialog = QtWidgets.QMessageBox()
warning_dialog.setIcon(QtWidgets.QMessageBox.Icon.Warning)
warning_dialog.setText("Please enter a username and password.")
warning_dialog.setWindowTitle("Login Failed")
warning_dialog.exec()
else:
warning_dialog = QtWidgets.QMessageBox()
warning_dialog.setIcon(QtWidgets.QMessageBox.Icon.Warning)
warning_dialog.setText(
"Invalid username or password. Please try again."
)
warning_dialog.setWindowTitle("Login Failed")
warning_dialog.exec()
def cancel_buttonfn(self):
self.dialog.reject()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec())

View File

@@ -0,0 +1,240 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\Semesterapparate\ui\dialogs\medianadder.ui'
#
# Created by: PyQt6 UI code generator 6.3.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(637, 491)
self.label = QtWidgets.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(20, 10, 47, 21))
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(Dialog)
self.label_2.setGeometry(QtCore.QRect(20, 40, 47, 21))
self.label_2.setObjectName("label_2")
self.comboBox = QtWidgets.QComboBox(Dialog)
self.comboBox.setGeometry(QtCore.QRect(70, 40, 69, 22))
self.comboBox.setObjectName("comboBox")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.lineEdit = QtWidgets.QLineEdit(Dialog)
self.lineEdit.setGeometry(QtCore.QRect(70, 10, 113, 20))
self.lineEdit.setObjectName("lineEdit")
self.label_3 = QtWidgets.QLabel(Dialog)
self.label_3.setGeometry(QtCore.QRect(20, 70, 47, 21))
self.label_3.setObjectName("label_3")
self.widget = QtWidgets.QWidget(Dialog)
self.widget.setGeometry(QtCore.QRect(330, 90, 301, 341))
self.widget.setObjectName("widget")
self.treeWidget = QtWidgets.QTreeWidget(self.widget)
self.treeWidget.setEnabled(True)
self.treeWidget.setGeometry(QtCore.QRect(0, 0, 301, 341))
self.treeWidget.setAutoFillBackground(False)
self.treeWidget.setLineWidth(0)
self.treeWidget.setMidLineWidth(0)
self.treeWidget.setVerticalScrollBarPolicy(
QtCore.Qt.ScrollBarPolicy.ScrollBarAlwaysOff
)
self.treeWidget.setHorizontalScrollBarPolicy(
QtCore.Qt.ScrollBarPolicy.ScrollBarAlwaysOff
)
self.treeWidget.setSizeAdjustPolicy(
QtWidgets.QAbstractScrollArea.SizeAdjustPolicy.AdjustToContents
)
self.treeWidget.setEditTriggers(
QtWidgets.QAbstractItemView.EditTrigger.NoEditTriggers
)
self.treeWidget.setAlternatingRowColors(True)
self.treeWidget.setSelectionMode(
QtWidgets.QAbstractItemView.SelectionMode.NoSelection
)
self.treeWidget.setTextElideMode(QtCore.Qt.TextElideMode.ElideMiddle)
self.treeWidget.setUniformRowHeights(True)
self.treeWidget.setItemsExpandable(False)
self.treeWidget.setExpandsOnDoubleClick(False)
self.treeWidget.setObjectName("treeWidget")
font = QtGui.QFont()
font.setPointSize(7)
self.treeWidget.headerItem().setFont(0, font)
item_0 = QtWidgets.QTreeWidgetItem(self.treeWidget)
brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
item_0.setBackground(2, brush)
item_0 = QtWidgets.QTreeWidgetItem(self.treeWidget)
brush = QtGui.QBrush(QtGui.QColor(0, 255, 0))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
item_0.setBackground(2, brush)
item_0 = QtWidgets.QTreeWidgetItem(self.treeWidget)
item_0 = QtWidgets.QTreeWidgetItem(self.treeWidget)
item_0 = QtWidgets.QTreeWidgetItem(self.treeWidget)
item_0 = QtWidgets.QTreeWidgetItem(self.treeWidget)
item_0 = QtWidgets.QTreeWidgetItem(self.treeWidget)
item_0 = QtWidgets.QTreeWidgetItem(self.treeWidget)
item_0 = QtWidgets.QTreeWidgetItem(self.treeWidget)
item_0 = QtWidgets.QTreeWidgetItem(self.treeWidget)
item_0 = QtWidgets.QTreeWidgetItem(self.treeWidget)
self.treeWidget.header().setCascadingSectionResizes(False)
self.treeWidget.header().setDefaultSectionSize(60)
self.treeWidget.header().setHighlightSections(False)
self.treeWidget.header().setMinimumSectionSize(20)
self.listWidget = QtWidgets.QListWidget(Dialog)
self.listWidget.setGeometry(QtCore.QRect(10, 90, 281, 341))
self.listWidget.setContextMenuPolicy(
QtCore.Qt.ContextMenuPolicy.CustomContextMenu
)
self.listWidget.setObjectName("listWidget")
self.label_4 = QtWidgets.QLabel(Dialog)
self.label_4.setGeometry(QtCore.QRect(330, 50, 181, 21))
self.label_4.setObjectName("label_4")
self.label_5 = QtWidgets.QLabel(Dialog)
self.label_5.setGeometry(QtCore.QRect(200, 70, 41, 21))
self.label_5.setObjectName("label_5")
self.list_amount = QtWidgets.QLabel(Dialog)
self.list_amount.setGeometry(QtCore.QRect(240, 70, 47, 21))
self.list_amount.setObjectName("list_amount")
self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
self.buttonBox.setGeometry(QtCore.QRect(10, 450, 156, 23))
self.buttonBox.setStandardButtons(
QtWidgets.QDialogButtonBox.StandardButton.Cancel
| QtWidgets.QDialogButtonBox.StandardButton.Ok
)
self.buttonBox.setCenterButtons(False)
self.buttonBox.setObjectName("buttonBox")
self.buttonBox.setFocusPolicy(QtCore.Qt.FocusPolicy.ClickFocus)
# self.buttonBox.accepted.disconnect()
# set the activation action for the buttonBox to be shift enter
self.buttonBox.setFocusPolicy(QtCore.Qt.FocusPolicy.StrongFocus)
self.buttonBox.accepted.connect(Dialog.accept) # type: ignore
self.buttonBox.rejected.connect(Dialog.reject) # type: ignore
self.lineEdit.returnPressed.connect(self.add_to_list)
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.label.setText(_translate("Dialog", "Signatur"))
self.label_2.setText(_translate("Dialog", "Modus"))
self.comboBox.setItemText(0, _translate("Dialog", "ARRAY"))
self.comboBox.setItemText(1, _translate("Dialog", "BibTeX"))
self.comboBox.setItemText(2, _translate("Dialog", "COinS"))
self.comboBox.setItemText(3, _translate("Dialog", "RIS"))
self.lineEdit.setPlaceholderText(_translate("Dialog", "Signatur / ISBN"))
self.label_3.setText(_translate("Dialog", "Queue"))
self.treeWidget.headerItem().setText(
0, _translate("Dialog", "Datensatz\\Metadata")
)
self.treeWidget.headerItem().setText(1, _translate("Dialog", "Array"))
self.treeWidget.headerItem().setText(2, _translate("Dialog", "BibTeX"))
self.treeWidget.headerItem().setText(3, _translate("Dialog", "COinS"))
self.treeWidget.headerItem().setText(4, _translate("Dialog", "RIS"))
__sortingEnabled = self.treeWidget.isSortingEnabled()
self.treeWidget.setSortingEnabled(False)
self.treeWidget.topLevelItem(0).setText(0, _translate("Dialog", "PPN"))
self.treeWidget.topLevelItem(0).setText(1, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(0).setText(2, _translate("Dialog", "0"))
self.treeWidget.topLevelItem(0).setText(3, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(0).setText(4, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(1).setText(0, _translate("Dialog", "Signatur"))
self.treeWidget.topLevelItem(1).setText(1, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(1).setText(2, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(1).setText(3, _translate("Dialog", "0"))
self.treeWidget.topLevelItem(1).setText(4, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(2).setText(0, _translate("Dialog", "Autor"))
self.treeWidget.topLevelItem(2).setText(1, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(2).setText(2, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(2).setText(3, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(2).setText(4, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(3).setText(0, _translate("Dialog", "ISBN"))
self.treeWidget.topLevelItem(3).setText(1, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(3).setText(2, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(3).setText(3, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(3).setText(4, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(4).setText(0, _translate("Dialog", "Jahr"))
self.treeWidget.topLevelItem(4).setText(1, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(4).setText(2, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(4).setText(3, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(4).setText(4, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(5).setText(0, _translate("Dialog", "Auflage"))
self.treeWidget.topLevelItem(5).setText(1, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(5).setText(2, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(5).setText(3, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(5).setText(4, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(6).setText(0, _translate("Dialog", "Sprache"))
self.treeWidget.topLevelItem(6).setText(1, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(6).setText(2, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(6).setText(3, _translate("Dialog", "0"))
self.treeWidget.topLevelItem(6).setText(4, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(7).setText(0, _translate("Dialog", "Herausgeber"))
self.treeWidget.topLevelItem(7).setText(1, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(7).setText(2, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(7).setText(3, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(7).setText(4, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(8).setText(0, _translate("Dialog", "Seiten"))
self.treeWidget.topLevelItem(8).setText(1, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(8).setText(2, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(8).setText(3, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(8).setText(4, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(9).setText(0, _translate("Dialog", "Titel"))
self.treeWidget.topLevelItem(9).setText(1, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(9).setText(2, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(9).setText(3, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(9).setText(4, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(10).setText(0, _translate("Dialog", "Link"))
self.treeWidget.topLevelItem(10).setText(1, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(10).setText(2, _translate("Dialog", "0"))
self.treeWidget.topLevelItem(10).setText(3, _translate("Dialog", "1"))
self.treeWidget.topLevelItem(10).setText(4, _translate("Dialog", "1"))
self.treeWidget.setSortingEnabled(__sortingEnabled)
self.label_4.setText(_translate("Dialog", "Belegbare Felder per Anbieter"))
self.label_5.setText(_translate("Dialog", "Anzahl:"))
self.list_amount.setText(_translate("Dialog", "0"))
self.recolorize()
self.listWidget.customContextMenuRequested.connect(self.custom_context_menu)
def add_to_list(self):
text = self.lineEdit.text().strip()
if text == "":
return
else:
self.listWidget.addItem(text)
self.list_amount.setText(str(self.listWidget.count()))
self.lineEdit.clear()
def recolorize(self):
# set the color of the cells of the treeWidget to red if the field is not supported by the provider
# else set it to green
for i in range(self.treeWidget.topLevelItemCount()):
for j in range(1, self.treeWidget.columnCount()):
if self.treeWidget.topLevelItem(i).text(j) == "0":
self.treeWidget.topLevelItem(i).setBackground(
j, QtGui.QColor(255, 0, 0)
)
else:
self.treeWidget.topLevelItem(i).setBackground(
j, QtGui.QColor(0, 255, 0)
)
# remove the text from the cells
self.treeWidget.topLevelItem(i).setText(j, "")
def custom_context_menu(self):
menu = QtWidgets.QMenu()
menu.addAction("Remove")
action = menu.exec(QtGui.QCursor.pos())
if action.text() == "Remove":
self.remove_from_list()
def remove_from_list(self):
self.listWidget.takeItem(self.listWidget.currentRow())
self.list_amount.setText(str(self.listWidget.count()))

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1">
</TS>

View File

@@ -0,0 +1,63 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\Semesterapparate\ui\dialogs\new_subject.ui'
#
# Created by: PyQt6 UI code generator 6.3.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(448, 165)
self.verticalLayout_2 = QtWidgets.QVBoxLayout(Dialog)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.verticalLayout = QtWidgets.QVBoxLayout()
self.verticalLayout.setObjectName("verticalLayout")
self.label = QtWidgets.QLabel(Dialog)
self.label.setObjectName("label")
self.verticalLayout.addWidget(self.label)
self.gridLayout = QtWidgets.QGridLayout()
self.gridLayout.setObjectName("gridLayout")
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.gridLayout.addItem(spacerItem, 0, 1, 1, 1)
self.checkBox = QtWidgets.QCheckBox(Dialog)
self.checkBox.setObjectName("checkBox")
self.gridLayout.addWidget(self.checkBox, 0, 0, 1, 1)
self.verticalLayout.addLayout(self.gridLayout)
self.verticalLayout_2.addLayout(self.verticalLayout)
self.frame = QtWidgets.QFrame(Dialog)
self.frame.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Shadow.Raised)
self.frame.setObjectName("frame")
self.label_2 = QtWidgets.QLabel(self.frame)
self.label_2.setGeometry(QtCore.QRect(0, 10, 141, 16))
self.label_2.setObjectName("label_2")
self.lineEdit = QtWidgets.QLineEdit(self.frame)
self.lineEdit.setGeometry(QtCore.QRect(0, 30, 141, 20))
self.lineEdit.setObjectName("lineEdit")
self.verticalLayout_2.addWidget(self.frame)
self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
self.buttonBox.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.StandardButton.Cancel|QtWidgets.QDialogButtonBox.StandardButton.Ok)
self.buttonBox.setObjectName("buttonBox")
self.verticalLayout_2.addWidget(self.buttonBox)
self.frame.setVisible(False)
self.checkBox.stateChanged.connect(lambda: self.frame.setVisible(self.checkBox.isChecked()))
self.retranslateUi(Dialog)
self.buttonBox.accepted.connect(Dialog.accept) # type: ignore
self.buttonBox.rejected.connect(Dialog.reject) # type: ignore
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.label.setText(_translate("Dialog", "Das eingegebene Fach wurde nicht in der Datenbank gefunden. Soll es angelegt werden?"))
self.checkBox.setText(_translate("Dialog", "Ja"))
self.label_2.setText(_translate("Dialog", "Name des Neuen Faches:"))
def return_state(self):
return self.lineEdit.text()

View File

@@ -0,0 +1,158 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\Semesterapparate\ui\dialogs\parsed_titles.ui'
#
# Created by: PyQt6 UI code generator 6.3.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets
from log import MyLogger
from src.logic.threads import AutoAdder
logger = MyLogger("AutoTitleAdder")
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(402, 316)
self.frame = QtWidgets.QFrame(Form)
self.frame.setGeometry(QtCore.QRect(10, 10, 381, 41))
self.frame.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Shadow.Raised)
self.frame.setObjectName("frame")
self.horizontalLayoutWidget = QtWidgets.QWidget(self.frame)
self.horizontalLayoutWidget.setGeometry(QtCore.QRect(0, 0, 381, 41))
self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout.setObjectName("horizontalLayout")
self.label = QtWidgets.QLabel(self.horizontalLayoutWidget)
self.label.setObjectName("label")
self.horizontalLayout.addWidget(self.label)
self.count = QtWidgets.QLabel(self.horizontalLayoutWidget)
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.count.setFont(font)
self.count.setTextFormat(QtCore.Qt.TextFormat.PlainText)
self.count.setObjectName("count")
self.horizontalLayout.addWidget(self.count)
self.label_2 = QtWidgets.QLabel(self.horizontalLayoutWidget)
self.label_2.setObjectName("label_2")
self.horizontalLayout.addWidget(self.label_2)
spacerItem = QtWidgets.QSpacerItem(
40,
20,
QtWidgets.QSizePolicy.Policy.Expanding,
QtWidgets.QSizePolicy.Policy.Minimum,
)
self.horizontalLayout.addItem(spacerItem)
self.frame_2 = QtWidgets.QFrame(Form)
self.frame_2.setGeometry(QtCore.QRect(10, 80, 381, 201))
self.frame_2.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.frame_2.setFrameShadow(QtWidgets.QFrame.Shadow.Raised)
self.frame_2.setObjectName("frame_2")
self.horizontalLayoutWidget_2 = QtWidgets.QWidget(self.frame_2)
self.horizontalLayoutWidget_2.setGeometry(QtCore.QRect(0, 10, 381, 191))
self.horizontalLayoutWidget_2.setObjectName("horizontalLayoutWidget_2")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_2)
self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.listWidget = QtWidgets.QListWidget(self.horizontalLayoutWidget_2)
self.listWidget.setObjectName("listWidget")
self.horizontalLayout_2.addWidget(self.listWidget)
self.listWidget_done = QtWidgets.QListWidget(self.horizontalLayoutWidget_2)
self.listWidget_done.setObjectName("listWidget_done")
self.horizontalLayout_2.addWidget(self.listWidget_done)
self.progressBar = QtWidgets.QProgressBar(Form)
self.progressBar.setGeometry(QtCore.QRect(10, 60, 381, 23))
self.progressBar.setProperty("value", 24)
self.progressBar.setObjectName("progressBar")
self.buttonBox = QtWidgets.QDialogButtonBox(Form)
self.buttonBox.setGeometry(QtCore.QRect(230, 290, 156, 23))
self.buttonBox.setStandardButtons(
QtWidgets.QDialogButtonBox.StandardButton.Cancel
| QtWidgets.QDialogButtonBox.StandardButton.Ok
)
self.buttonBox.setObjectName("buttonBox")
self.toolButton = QtWidgets.QToolButton(Form)
self.toolButton.setGeometry(QtCore.QRect(20, 290, 25, 19))
self.toolButton.setObjectName("toolButton")
self.signatures = []
self.prof_id = None
self.app_id = None
self.thread = QtCore.QThread()
self.toolButton.hide()
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
self.toolButton.clicked.connect(self.start)
# if cancel is clicked, terminate the thread
self.buttonBox.rejected.connect(self.thread_quit)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.label.setText(_translate("Form", "Es wurden"))
self.count.setText(_translate("Form", "0"))
self.label_2.setText(_translate("Form", "Signaturen gefunden."))
self.toolButton.setText(_translate("Form", "..."))
def populate_table(self):
for i in range(len(self.signatures)):
self.listWidget.addItem(QtWidgets.QListWidgetItem())
self.listWidget.item(i).setText(self.signatures[i])
self.listWidget.item(i).setToolTip("Daten werden gesammelt")
def update_progress_bar(self, value: int):
self.progressBar.setValue(value)
def thread_quit(self):
print("Terminating thread")
self.thread.terminate()
self.thread.quit()
self.thread.deleteLater()
self.thread = None
def start(self):
logger.log_info("Starting AutoAdder")
self.thread = AutoAdder(
data=self.signatures,
app_id=self.app_id,
prof_id=self.prof_id,
)
self.thread.finished.connect(self.on_completion)
self.thread.updateSignal.connect(self.update_progress_bar)
self.thread.setTextSignal.connect(self.update_lists)
self.thread.progress.connect(self.determine_progress)
self.thread.finished.connect(self.thread.quit)
self.thread.finished.connect(self.thread.deleteLater)
# self.thread.updateSignal.connect(self.update_progress_label)
# worker.finished.connect(worker.deleteLater)
self.thread.start()
def on_completion(self):
logger.log_info("AutoAdder finished")
logger.log_info("Returning data")
# create a function that closes the dialog
def determine_progress(self, signal):
# check length of listWidget
length = self.listWidget.count()
print(f"Length of listWidget: {length}")
if length == 0:
logger.log_info("AutoAdder finished")
self.buttonBox.accepted.emit()
def update_lists(self, signal):
# get text of first entry in listWidget
text = self.listWidget.item(0).text()
# remove first entry
self.listWidget.takeItem(0)
# add first entry to listWidget_done
self.listWidget_done.addItem(text)

View File

@@ -0,0 +1,52 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\Semesterapparate\ui\dialogs\reminder.ui'
#
# Created by: PyQt6 UI code generator 6.3.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(369, 308)
self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
self.buttonBox.setGeometry(QtCore.QRect(190, 270, 161, 32))
self.buttonBox.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.buttonBox.setStandardButtons(
QtWidgets.QDialogButtonBox.StandardButton.Cancel
| QtWidgets.QDialogButtonBox.StandardButton.Ok
)
self.buttonBox.setObjectName("buttonBox")
self.message_box = QtWidgets.QTextEdit(Dialog)
self.message_box.setGeometry(QtCore.QRect(10, 60, 341, 201))
self.message_box.setObjectName("message_box")
self.label = QtWidgets.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(10, 30, 61, 21))
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(Dialog)
self.label_2.setGeometry(QtCore.QRect(150, 30, 81, 21))
self.label_2.setObjectName("label_2")
self.dateEdit = QtWidgets.QDateEdit(Dialog)
self.dateEdit.setGeometry(QtCore.QRect(240, 30, 110, 22))
self.dateEdit.setObjectName("dateEdit")
self.dateEdit.setDateTime(QtCore.QDateTime.currentDateTime())
self.retranslateUi(Dialog)
self.buttonBox.accepted.connect(Dialog.accept) # type: ignore
self.buttonBox.rejected.connect(Dialog.reject) # type: ignore
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.label.setText(_translate("Dialog", "Nachricht:"))
self.label_2.setText(_translate("Dialog", "Erinnerung am:"))
def return_message(self) -> dict:
return {
"message": self.message_box.toPlainText(),
"remind_at": self.dateEdit.date().toString("yyyy-MM-dd"),
}

View File

@@ -0,0 +1,202 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\Semesterapparate\ui\dialogs\settings.ui'
#
# Created by: PyQt6 UI code generator 6.3.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again. Do not edit this file unless you know what you are doing.
from omegaconf import OmegaConf
from PyQt6 import QtCore, QtWidgets
config = OmegaConf.load("config.yaml")
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(743, 576)
self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
self.buttonBox.setGeometry(QtCore.QRect(120, 540, 621, 32))
self.buttonBox.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.buttonBox.setStandardButtons(
QtWidgets.QDialogButtonBox.StandardButton.Cancel
| QtWidgets.QDialogButtonBox.StandardButton.Ok
)
self.buttonBox.setObjectName("buttonBox")
self.frame = QtWidgets.QFrame(Dialog)
self.frame.setGeometry(QtCore.QRect(0, 0, 741, 541))
self.frame.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Shadow.Raised)
self.frame.setObjectName("frame")
self.label = QtWidgets.QLabel(self.frame)
self.label.setGeometry(QtCore.QRect(400, 30, 161, 21))
self.label.setObjectName("label")
self.line = QtWidgets.QFrame(self.frame)
self.line.setGeometry(QtCore.QRect(370, 0, 20, 541))
self.line.setFrameShadow(QtWidgets.QFrame.Shadow.Plain)
self.line.setLineWidth(1)
self.line.setMidLineWidth(0)
self.line.setFrameShape(QtWidgets.QFrame.Shape.VLine)
self.line.setObjectName("line")
self.textBrowser = QtWidgets.QTextBrowser(self.frame)
self.textBrowser.setGeometry(QtCore.QRect(400, 50, 311, 51))
self.textBrowser.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
self.textBrowser.setInputMethodHints(QtCore.Qt.InputMethodHint.ImhNone)
self.textBrowser.setObjectName("textBrowser")
self.label_2 = QtWidgets.QLabel(self.frame)
self.label_2.setGeometry(QtCore.QRect(10, 20, 161, 21))
self.label_2.setObjectName("label_2")
self.os_apps = QtWidgets.QCheckBox(self.frame)
self.os_apps.setGeometry(QtCore.QRect(410, 110, 161, 17))
self.os_apps.setObjectName("os_apps")
self.formLayoutWidget = QtWidgets.QWidget(self.frame)
self.formLayoutWidget.setGeometry(QtCore.QRect(10, 50, 361, 491))
self.formLayoutWidget.setObjectName("formLayoutWidget")
self.gridLayout = QtWidgets.QGridLayout(self.formLayoutWidget)
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.gridLayout.setObjectName("gridLayout")
self.label_3 = QtWidgets.QLabel(self.formLayoutWidget)
self.label_3.setObjectName("label_3")
self.gridLayout.addWidget(self.label_3, 0, 0, 1, 1)
self.label_5 = QtWidgets.QLabel(self.formLayoutWidget)
self.label_5.setObjectName("label_5")
self.gridLayout.addWidget(self.label_5, 2, 0, 1, 1)
self.db_path = QtWidgets.QLineEdit(self.formLayoutWidget)
self.db_path.setEnabled(False)
self.db_path.setObjectName("db_path")
self.gridLayout.addWidget(self.db_path, 1, 1, 1, 1)
self.save_path = QtWidgets.QLineEdit(self.formLayoutWidget)
self.save_path.setObjectName("save_path")
self.gridLayout.addWidget(self.save_path, 2, 1, 1, 1)
self.label_4 = QtWidgets.QLabel(self.formLayoutWidget)
self.label_4.setObjectName("label_4")
self.gridLayout.addWidget(self.label_4, 1, 0, 1, 1)
self.db_name = QtWidgets.QLineEdit(self.formLayoutWidget)
self.db_name.setObjectName("db_name")
self.gridLayout.addWidget(self.db_name, 0, 1, 1, 1)
self.tb_set_save_path = QtWidgets.QToolButton(self.formLayoutWidget)
self.tb_set_save_path.setObjectName("tb_set_save_path")
self.gridLayout.addWidget(self.tb_set_save_path, 2, 2, 1, 1)
spacerItem = QtWidgets.QSpacerItem(
20,
40,
QtWidgets.QSizePolicy.Policy.Minimum,
QtWidgets.QSizePolicy.Policy.Expanding,
)
self.gridLayout.addItem(spacerItem, 3, 1, 1, 1)
self.tb_select_db = QtWidgets.QToolButton(self.formLayoutWidget)
self.tb_select_db.setObjectName("tb_select_db")
self.gridLayout.addWidget(self.tb_select_db, 0, 2, 1, 1)
self.scrollArea = QtWidgets.QScrollArea(self.frame)
self.scrollArea.setGeometry(QtCore.QRect(400, 130, 331, 411))
self.scrollArea.setWidgetResizable(True)
self.scrollArea.setObjectName("scrollArea")
self.scrollAreaWidgetContents = QtWidgets.QWidget()
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 329, 409))
self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
self.treeWidget = QtWidgets.QTreeWidget(self.scrollAreaWidgetContents)
self.treeWidget.setGeometry(QtCore.QRect(0, 0, 331, 411))
self.treeWidget.setObjectName("treeWidget")
self.treeWidget.setContextMenuPolicy(
QtCore.Qt.ContextMenuPolicy.ActionsContextMenu
)
self.scrollArea.setWidget(self.scrollAreaWidgetContents)
self.label_3.setBuddy(self.db_name)
self.label_5.setBuddy(self.save_path)
self.label_4.setBuddy(self.db_path)
self.tb_select_db.clicked.connect(self.select_db)
self.tb_set_save_path.clicked.connect(self.set_save_path)
self.retranslateUi(Dialog)
self.buttonBox.accepted.connect(Dialog.accept) # type: ignore
self.buttonBox.rejected.connect(Dialog.reject) # type: ignore
QtCore.QMetaObject.connectSlotsByName(Dialog)
Dialog.setTabOrder(self.db_name, self.db_path)
Dialog.setTabOrder(self.db_path, self.save_path)
Dialog.setTabOrder(self.save_path, self.os_apps)
Dialog.setTabOrder(self.os_apps, self.textBrowser)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.label.setText(_translate("Dialog", "Dateispezifische Einstellungen"))
self.textBrowser.setHtml(
_translate(
"Dialog",
'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">\n'
'<html><head><meta name="qrichtext" content="1" /><style type="text/css">\n'
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;\">\n"
'<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hier können Einstellungen f<>r bestehende Dateiformate geändert, oder neue Dateiformate eingefügt werden</p>\n'
'<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html>',
)
)
self.label_2.setText(_translate("Dialog", "Allgemeine Einstellungen"))
self.os_apps.setToolTip(
_translate(
"Dialog",
"Verwendet im Betriebssystem festgelegte Anwendungen um Dateien zu öffnen",
)
)
self.os_apps.setText(_translate("Dialog", "Standard-Apps verwenden"))
self.label_3.setToolTip(
_translate(
"Dialog",
'<html><head/><body><p>Name der Datenbank, welche verwendet werden soll. <span style=" font-weight:600;">Muss</span> auf .db enden</p></body></html>',
)
)
self.label_3.setText(_translate("Dialog", "Datenbankname"))
self.label_5.setToolTip(
_translate(
"Dialog",
"Pfad, an dem heruntergeladene Dateien gespeichert werden sollen",
)
)
self.label_5.setText(_translate("Dialog", "Speicherpfad"))
self.label_4.setText(_translate("Dialog", "Datenbankpfad"))
self.db_name.setText(_translate("Dialog", "sap.db"))
self.tb_set_save_path.setText(_translate("Dialog", "..."))
self.tb_select_db.setText(_translate("Dialog", "..."))
self.load_config()
def load_config(self):
self.db_name.setText(config.database.name)
self.db_path.setText(config.database.path)
self.save_path.setText(config.save_path)
self.os_apps.setChecked(config.default_apps)
applications = config.custom_applications
for application in applications:
name = application.application
file_type = application.extensions
display_name = application.name
print(name, file_type, display_name) #
# create new item
item = QtWidgets.QTreeWidgetItem(self.treeWidget)
item.setText(0, display_name)
def select_db(self):
# open file dialog, limit to .db files
file_dialog = QtWidgets.QFileDialog()
file_dialog.setFileMode(QtWidgets.QFileDialog.FileMode.AnyFile)
file_dialog.setNameFilter("Datenbank (*.db)")
file_dialog.setViewMode(QtWidgets.QFileDialog.ViewMode.Detail)
if file_dialog.exec():
self.db_name.setText(file_dialog.selectedFiles()[0].split("/")[-1])
self.db_path.setText(
file_dialog.selectedFiles()[0].split(self.db_name.text())[0]
)
def set_save_path(self):
# open file dialog, limit to .db files
file_dialog = QtWidgets.QFileDialog()
file_dialog.setFileMode(QtWidgets.QFileDialog.FileMode.Directory)
file_dialog.setViewMode(QtWidgets.QFileDialog.ViewMode.Detail)
if file_dialog.exec():
self.save_path.setText(file_dialog.selectedFiles()[0])
def return_data(self):
config.database.name = self.db_name.text()
config.database.path = self.db_path.text()
config.save_path = self.save_path.text()
config.default_apps = self.os_apps.isChecked()
return config

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1">
</TS>

View File

@@ -0,0 +1,24 @@
from .app_ext import Ui_Dialog as App_Ext_Dialog
from .ext_app import Ui_Frame as App_Ext_Window
from .mail import Mail_Dialog
from .popup_confirm import Ui_extend_confirm as popus_confirm
from .settings import Settings
from .Ui_edit_bookdata import Ui_Dialog as edit_bookdata_ui
from .Ui_fileparser import Ui_Dialog as fileparser_ui
from .Ui_login import Ui_Dialog as login_ui
from .Ui_medianadder import Ui_Dialog as medienadder_ui
from .Ui_parsed_titles import Ui_Form as parsed_titles_ui
from .Ui_reminder import Ui_Dialog as reminder_ui
from .Ui_settings import Ui_Dialog as settings_ui
from .Ui_new_subject import Ui_Dialog as new_subject_ui
__all__ = [
"ext_app",
"app_ext",
"Mail_Dialog",
"medianadder_ui",
"popup_confirm",
"edit_bookdata_ui",
"settings_ui",
"parsed_titles_ui",
]

View File

@@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="geometry">
<rect>
<x>30</x>
<y>260</y>
<width>341</width>
<height>32</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
<widget class="QWidget" name="gridLayoutWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>381</width>
<height>241</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Signatur</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="lineEdit"/>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>Dialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>Dialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

114
src/ui/dialogs/app_ext.py Normal file
View File

@@ -0,0 +1,114 @@
# Form implementation generated from reading ui file 'ui\dialogs\apparat_extend.ui'
#
# Created by: PyQt6 UI code generator 6.3.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(388, 103)
sizePolicy = QtWidgets.QSizePolicy(
QtWidgets.QSizePolicy.Policy.Fixed, QtWidgets.QSizePolicy.Policy.Fixed
)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(Dialog.sizePolicy().hasHeightForWidth())
Dialog.setSizePolicy(sizePolicy)
Dialog.setMinimumSize(QtCore.QSize(388, 103))
Dialog.setMaximumSize(QtCore.QSize(388, 103))
self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
self.buttonBox.setGeometry(QtCore.QRect(290, 30, 81, 241))
self.buttonBox.setOrientation(QtCore.Qt.Orientation.Vertical)
self.buttonBox.setStandardButtons(
QtWidgets.QDialogButtonBox.StandardButton.Abort
| QtWidgets.QDialogButtonBox.StandardButton.Save
)
self.buttonBox.setObjectName("buttonBox")
self.label = QtWidgets.QLabel(Dialog)
self.label.setGeometry(QtCore.QRect(10, 0, 281, 31))
sizePolicy = QtWidgets.QSizePolicy(
QtWidgets.QSizePolicy.Policy.Fixed, QtWidgets.QSizePolicy.Policy.Fixed
)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
self.label.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(10)
self.label.setFont(font)
self.label.setObjectName("label")
self.frame = QtWidgets.QFrame(Dialog)
self.frame.setGeometry(QtCore.QRect(10, 30, 241, 41))
self.frame.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Shadow.Raised)
self.frame.setObjectName("frame")
self.line = QtWidgets.QFrame(self.frame)
self.line.setGeometry(QtCore.QRect(120, 0, 3, 61))
self.line.setFrameShape(QtWidgets.QFrame.Shape.VLine)
self.line.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)
self.line.setObjectName("line")
self.rad_sommer = QtWidgets.QRadioButton(self.frame)
self.rad_sommer.setGeometry(QtCore.QRect(10, 10, 82, 21))
self.rad_sommer.setObjectName("rad_sommer")
self.rad_winter = QtWidgets.QRadioButton(self.frame)
self.rad_winter.setGeometry(QtCore.QRect(140, 10, 82, 21))
self.rad_winter.setObjectName("rad_winter")
self.sem_year = QtWidgets.QLineEdit(Dialog)
self.sem_year.setGeometry(QtCore.QRect(10, 70, 121, 20))
self.sem_year.setObjectName("sem_year")
self.dauerapp = QtWidgets.QCheckBox(Dialog)
self.dauerapp.setGeometry(QtCore.QRect(150, 70, 91, 21))
self.dauerapp.setObjectName("dauerapp")
self.retranslateUi(Dialog)
self.buttonBox.accepted.connect(Dialog.accept) # type: ignore
self.buttonBox.rejected.connect(Dialog.reject) # type: ignore
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.label.setText(
_translate("Dialog", "Bis wann soll der Apparat verlängert werden?")
)
self.rad_sommer.setText(_translate("Dialog", "Sommer"))
self.rad_winter.setText(_translate("Dialog", "Winter"))
self.sem_year.setPlaceholderText(_translate("Dialog", "2023"))
self.dauerapp.setText(_translate("Dialog", "Dauerapparat"))
def get_data(self):
# def __select_sem_state():
# curr_month=QtCore.QDate.currentDate().month()
# if curr_month>=4 and curr_month<=9:
# return "SoSe"
# else:
# return "WiSe"
# if __select_sem_state()=="SoSe":
# self.rad_sommer.setChecked(True)
# else:
# self.rad_winter.setChecked(True)
return {
"semester": f"SoSe {int(self.sem_year.text()[-2:])}"
if self.rad_sommer.isChecked()
else f"WiSe {int(self.sem_year.text()[-2:])}/{int(self.sem_year.text()[-2:])+1}",
"dauerapp": self.dauerapp.isChecked()
if self.dauerapp.isChecked()
else False,
}
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec())

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>300</width>
<height>500</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
</widget>
<resources/>
<connections/>
</ui>

View File

@@ -0,0 +1,191 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>388</width>
<height>103</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>388</width>
<height>103</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>388</width>
<height>103</height>
</size>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="geometry">
<rect>
<x>290</x>
<y>30</y>
<width>81</width>
<height>241</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Abort|QDialogButtonBox::Save</set>
</property>
</widget>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>10</x>
<y>0</y>
<width>281</width>
<height>31</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Bis wann soll der Apparat verlängert werden?</string>
</property>
</widget>
<widget class="QFrame" name="frame">
<property name="geometry">
<rect>
<x>10</x>
<y>30</y>
<width>241</width>
<height>41</height>
</rect>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<widget class="Line" name="line">
<property name="geometry">
<rect>
<x>120</x>
<y>0</y>
<width>3</width>
<height>61</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
<widget class="QRadioButton" name="rad_sommer">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>82</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Sommer</string>
</property>
</widget>
<widget class="QRadioButton" name="rad_winter">
<property name="geometry">
<rect>
<x>140</x>
<y>10</y>
<width>82</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Winter</string>
</property>
</widget>
</widget>
<widget class="QLineEdit" name="sem_year">
<property name="geometry">
<rect>
<x>10</x>
<y>70</y>
<width>121</width>
<height>20</height>
</rect>
</property>
<property name="placeholderText">
<string>2023</string>
</property>
</widget>
<widget class="QCheckBox" name="dauerapp">
<property name="geometry">
<rect>
<x>150</x>
<y>70</y>
<width>91</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Dauerapparat</string>
</property>
</widget>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>Dialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>Dialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@@ -0,0 +1,83 @@
# -*- coding: utf-8 -*-
################################################################################
## Form generated from reading UI file 'apparat_extend.ui'
##
## Created by: Qt User Interface Compiler version 6.4.0
##
## 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 (QAbstractButton, QApplication, QCheckBox, QDialog,
QDialogButtonBox, QFrame, QLabel, QLineEdit,
QRadioButton, QSizePolicy, QWidget)
class Ui_Dialog(object):
def setupUi(self, Dialog):
if not Dialog.objectName():
Dialog.setObjectName(u"Dialog")
Dialog.resize(388, 103)
sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(Dialog.sizePolicy().hasHeightForWidth())
Dialog.setSizePolicy(sizePolicy)
Dialog.setMinimumSize(QSize(388, 103))
Dialog.setMaximumSize(QSize(388, 103))
self.buttonBox = QDialogButtonBox(Dialog)
self.buttonBox.setObjectName(u"buttonBox")
self.buttonBox.setGeometry(QRect(290, 30, 81, 241))
self.buttonBox.setOrientation(Qt.Vertical)
self.buttonBox.setStandardButtons(QDialogButtonBox.Abort|QDialogButtonBox.Save)
self.label = QLabel(Dialog)
self.label.setObjectName(u"label")
self.label.setGeometry(QRect(10, 0, 281, 31))
font = QFont()
font.setPointSize(10)
self.label.setFont(font)
self.frame = QFrame(Dialog)
self.frame.setObjectName(u"frame")
self.frame.setGeometry(QRect(10, 30, 241, 41))
self.frame.setFrameShape(QFrame.StyledPanel)
self.frame.setFrameShadow(QFrame.Raised)
self.line = QFrame(self.frame)
self.line.setObjectName(u"line")
self.line.setGeometry(QRect(120, 0, 3, 61))
self.line.setFrameShape(QFrame.VLine)
self.line.setFrameShadow(QFrame.Sunken)
self.rad_sommer = QRadioButton(self.frame)
self.rad_sommer.setObjectName(u"rad_sommer")
self.rad_sommer.setGeometry(QRect(10, 10, 82, 21))
self.rad_winter = QRadioButton(self.frame)
self.rad_winter.setObjectName(u"rad_winter")
self.rad_winter.setGeometry(QRect(140, 10, 82, 21))
self.sem_year = QLineEdit(Dialog)
self.sem_year.setObjectName(u"sem_year")
self.sem_year.setGeometry(QRect(10, 70, 121, 20))
self.checkBox = QCheckBox(Dialog)
self.checkBox.setObjectName(u"checkBox")
self.checkBox.setGeometry(QRect(150, 70, 91, 21))
self.retranslateUi(Dialog)
self.buttonBox.accepted.connect(Dialog.accept)
self.buttonBox.rejected.connect(Dialog.reject)
QMetaObject.connectSlotsByName(Dialog)
# setupUi
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(QCoreApplication.translate("Dialog", u"Dialog", None))
self.label.setText(QCoreApplication.translate("Dialog", u"Bis wann soll der Apparat verl\u00e4ngert werden?", None))
self.rad_sommer.setText(QCoreApplication.translate("Dialog", u"Sommer", None))
self.rad_winter.setText(QCoreApplication.translate("Dialog", u"Winter", None))
self.sem_year.setPlaceholderText(QCoreApplication.translate("Dialog", u"2023", None))
self.checkBox.setText(QCoreApplication.translate("Dialog", u"Dauerapparat", None))
# retranslateUi

View File

@@ -0,0 +1,78 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>extend_confirm</class>
<widget class="QDialog" name="extend_confirm">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>380</width>
<height>97</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="geometry">
<rect>
<x>290</x>
<y>20</y>
<width>81</width>
<height>241</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
<widget class="QTextEdit" name="textEdit">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>271</width>
<height>81</height>
</rect>
</property>
</widget>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>extend_confirm</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>extend_confirm</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@@ -0,0 +1,45 @@
# -*- coding: utf-8 -*-
################################################################################
## Form generated from reading UI file 'confirm_extend.ui'
##
## Created by: Qt User Interface Compiler version 6.4.0
##
## 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 (QAbstractButton, QApplication, QDialog, QDialogButtonBox,
QSizePolicy, QTextEdit, QWidget)
class Ui_extend_confirm(object):
def setupUi(self, extend_confirm):
if not extend_confirm.objectName():
extend_confirm.setObjectName(u"extend_confirm")
extend_confirm.resize(380, 97)
self.buttonBox = QDialogButtonBox(extend_confirm)
self.buttonBox.setObjectName(u"buttonBox")
self.buttonBox.setGeometry(QRect(290, 20, 81, 241))
self.buttonBox.setOrientation(Qt.Vertical)
self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel|QDialogButtonBox.Ok)
self.textEdit = QTextEdit(extend_confirm)
self.textEdit.setObjectName(u"textEdit")
self.textEdit.setGeometry(QRect(10, 10, 271, 81))
self.retranslateUi(extend_confirm)
self.buttonBox.accepted.connect(extend_confirm.accept)
self.buttonBox.rejected.connect(extend_confirm.reject)
QMetaObject.connectSlotsByName(extend_confirm)
# setupUi
def retranslateUi(self, extend_confirm):
extend_confirm.setWindowTitle(QCoreApplication.translate("extend_confirm", u"Dialog", None))
# retranslateUi

View File

@@ -0,0 +1,216 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>448</width>
<height>572</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="geometry">
<rect>
<x>260</x>
<y>530</y>
<width>161</width>
<height>32</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
<widget class="QWidget" name="gridLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>441</width>
<height>531</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<item row="10" column="1">
<widget class="QLabel" name="label_10">
<property name="text">
<string>Seiten</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label">
<property name="text">
<string>Titel</string>
</property>
</widget>
</item>
<item row="9" column="1">
<widget class="QLabel" name="label_9">
<property name="text">
<string>Jahr</string>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QLabel" name="label_8">
<property name="text">
<string>Sprache</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QLabel" name="label_12">
<property name="text">
<string>Link</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QLineEdit" name="line_edition"/>
</item>
<item row="2" column="1">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Auflage</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Autor</string>
</property>
</widget>
</item>
<item row="6" column="2">
<widget class="QLineEdit" name="line_link">
<property name="cursor">
<cursorShape>ArrowCursor</cursorShape>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Herausgeber</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QLabel" name="label_7">
<property name="text">
<string>ISBN(s)</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLabel" name="label_6">
<property name="text">
<string>PPN</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Signatur</string>
</property>
</widget>
</item>
<item row="8" column="0">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>5</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="2">
<widget class="QLineEdit" name="line_title"/>
</item>
<item row="1" column="2">
<widget class="QLineEdit" name="line_signature"/>
</item>
<item row="3" column="2">
<widget class="QLineEdit" name="line_author"/>
</item>
<item row="8" column="2">
<widget class="QLineEdit" name="line_lang"/>
</item>
<item row="5" column="2">
<widget class="QLineEdit" name="line_ppn"/>
</item>
<item row="7" column="2">
<widget class="QLineEdit" name="line_isbn"/>
</item>
<item row="9" column="2">
<widget class="QLineEdit" name="line_year"/>
</item>
<item row="10" column="2">
<widget class="QLineEdit" name="line_pages"/>
</item>
<item row="4" column="2">
<widget class="QLineEdit" name="line_publisher"/>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>Dialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>Dialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

51
src/ui/dialogs/ext_app.py Normal file
View File

@@ -0,0 +1,51 @@
# Form implementation generated from reading ui file 'ui/dialogs/extend_apparat.ui'
#
# Created by: PyQt6 UI code generator 6.3.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets
class Ui_Frame(object):
def setupUi(self, Frame):
Frame.setObjectName("Frame")
Frame.resize(317, 126)
self.label = QtWidgets.QLabel(Frame)
self.label.setGeometry(QtCore.QRect(60, 20, 231, 16))
self.label.setObjectName("label")
self.buttonBox = QtWidgets.QDialogButtonBox(Frame)
self.buttonBox.setGeometry(QtCore.QRect(90, 90, 156, 23))
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.StandardButton.Cancel|QtWidgets.QDialogButtonBox.StandardButton.Ok)
self.buttonBox.setObjectName("buttonBox")
self.sem_winter = QtWidgets.QRadioButton(Frame)
self.sem_winter.setGeometry(QtCore.QRect(60, 40, 82, 17))
self.sem_winter.setObjectName("sem_winter")
self.sem_sommer = QtWidgets.QRadioButton(Frame)
self.sem_sommer.setGeometry(QtCore.QRect(60, 60, 82, 17))
self.sem_sommer.setObjectName("sem_sommer")
self.sem_year = QtWidgets.QLineEdit(Frame)
self.sem_year.setGeometry(QtCore.QRect(160, 50, 113, 20))
self.sem_year.setObjectName("sem_year")
self.retranslateUi(Frame)
QtCore.QMetaObject.connectSlotsByName(Frame)
def retranslateUi(self, Frame):
_translate = QtCore.QCoreApplication.translate
Frame.setWindowTitle(_translate("Frame", "Frame"))
self.label.setText(_translate("Frame", "Bis wann soll der Apparat verlängert werden?"))
self.sem_winter.setText(_translate("Frame", "Winter"))
self.sem_sommer.setText(_translate("Frame", "Sommer"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Frame = QtWidgets.QFrame()
ui = Ui_Frame()
ui.setupUi(Frame)
Frame.show()
sys.exit(app.exec())

View File

@@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Frame</class>
<widget class="QFrame" name="Frame">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>317</width>
<height>126</height>
</rect>
</property>
<property name="windowTitle">
<string>Frame</string>
</property>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>60</x>
<y>20</y>
<width>231</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Bis wann soll der Apparat verlängert werden?</string>
</property>
</widget>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="geometry">
<rect>
<x>90</x>
<y>90</y>
<width>156</width>
<height>23</height>
</rect>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
<widget class="QRadioButton" name="sem_winter">
<property name="geometry">
<rect>
<x>60</x>
<y>40</y>
<width>82</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>Winter</string>
</property>
</widget>
<widget class="QRadioButton" name="sem_sommer">
<property name="geometry">
<rect>
<x>60</x>
<y>60</y>
<width>82</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>Sommer</string>
</property>
</widget>
<widget class="QLineEdit" name="sem_year">
<property name="geometry">
<rect>
<x>160</x>
<y>50</y>
<width>113</width>
<height>20</height>
</rect>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@@ -0,0 +1,129 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>402</width>
<height>301</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QProgressBar" name="progressBar">
<property name="geometry">
<rect>
<x>10</x>
<y>60</y>
<width>381</width>
<height>23</height>
</rect>
</property>
<property name="value">
<number>24</number>
</property>
</widget>
<widget class="QFrame" name="frame">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>381</width>
<height>41</height>
</rect>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<widget class="QWidget" name="horizontalLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>381</width>
<height>41</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Es wurden</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="count">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>0</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Signaturen gefunden.</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
<widget class="QFrame" name="frame_2">
<property name="geometry">
<rect>
<x>10</x>
<y>100</y>
<width>381</width>
<height>201</height>
</rect>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<widget class="QListWidget" name="listWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>381</width>
<height>191</height>
</rect>
</property>
</widget>
</widget>
</widget>
<resources/>
<connections/>
</ui>

120
src/ui/dialogs/login.ui Normal file
View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>218</width>
<height>190</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="geometry">
<rect>
<x>30</x>
<y>140</y>
<width>161</width>
<height>32</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>20</x>
<y>40</y>
<width>71</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Username</string>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit">
<property name="geometry">
<rect>
<x>80</x>
<y>40</y>
<width>113</width>
<height>21</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>20</x>
<y>80</y>
<width>71</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Password</string>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_2">
<property name="geometry">
<rect>
<x>80</x>
<y>80</y>
<width>113</width>
<height>21</height>
</rect>
</property>
<property name="inputMethodHints">
<set>Qt::ImhSensitiveData</set>
</property>
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>Dialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>Dialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

69
src/ui/dialogs/mail.py Normal file
View File

@@ -0,0 +1,69 @@
import subprocess
import tempfile
from PyQt6 import QtCore, QtGui, QtWidgets
from src.ui.dialogs.mail_preview import Ui_Dialog
class Mail_Dialog(QtWidgets.QDialog, Ui_Dialog):
def __init__(self, parent=None):
super().__init__(parent)
self.setupUi(self)
self.appid = ""
self.mail_data = ""
self.data = None
self.buttonBox.accepted.connect(self.save_mail)
def set_data(self, data: dict):
self.prof_name.setText(data["prof_name"])
self.mail_name.setText(data["mail_name"])
# assign data["general"] to self.data
self.data = data["general"]
def set_mail(self):
email_template = self.comboBox.currentText()
with open(f"mail_vorlagen/{email_template}", "r", encoding="utf-8") as f:
mail_template = f.read()
email_header = email_template.split(".eml")[0]
if "{AppNr}" in email_template:
email_header = email_template.split(".eml")[0].format(AppNr=self.appid)
self.mail_header.setText(email_header)
self.mail_data = mail_template.split("<html>")[0]
mail_html = mail_template.split("<html>")[1]
mail_html = "<html>" + mail_html
print(self.data)
Appname = self.data["Appname"]
mail_html = mail_html.format(
Profname=self.prof_name.text().split(" ")[-1], Appname=Appname
)
self.mail_body.setHtml(mail_html)
def save_mail(self):
# create a temporary file
mail_header = self.mail_header.text()
mail_body = self.mail_body.toHtml()
mail = self.mail_data + mail_body
mail = mail.replace("Subject:", f"Subject: {mail_header}")
with tempfile.NamedTemporaryFile(
mode="w", delete=False, suffix=".eml", encoding="utf-8", dir="mails"
) as f:
f.write(mail)
self.mail_path = f.name
print(self.mail_path)
# open the file using thunderbird
subprocess.Popen(["thunderbird", f"{self.mail_path}"])
# delete the file
# os.remove(self.mail_path)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Dialog = QtWidgets.QDialog()
ui = Mail_Dialog()
ui.setupUi(Dialog)
Dialog.show()
sys.exit(app.exec())

View File

@@ -0,0 +1,81 @@
# Form implementation generated from reading ui file 'ui\dialogs\mail_preview.ui'
#
# Created by: PyQt6 UI code generator 6.3.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(676, 676)
self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
self.buttonBox.setGeometry(QtCore.QRect(310, 630, 341, 32))
self.buttonBox.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.buttonBox.setStandardButtons(
QtWidgets.QDialogButtonBox.StandardButton.Cancel
| QtWidgets.QDialogButtonBox.StandardButton.Ok
)
self.buttonBox.setObjectName("buttonBox")
self.gridLayoutWidget = QtWidgets.QWidget(Dialog)
self.gridLayoutWidget.setGeometry(QtCore.QRect(10, 10, 661, 621))
self.gridLayoutWidget.setObjectName("gridLayoutWidget")
self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget)
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.gridLayout.setObjectName("gridLayout")
self.prof_name = QtWidgets.QLineEdit(self.gridLayoutWidget)
self.prof_name.setObjectName("prof_name")
self.gridLayout.addWidget(self.prof_name, 2, 2, 1, 1)
self.label_3 = QtWidgets.QLabel(self.gridLayoutWidget)
self.label_3.setAlignment(
QtCore.Qt.AlignmentFlag.AlignLeading
| QtCore.Qt.AlignmentFlag.AlignLeft
| QtCore.Qt.AlignmentFlag.AlignTop
)
self.label_3.setObjectName("label_3")
self.gridLayout.addWidget(self.label_3, 4, 0, 1, 1)
self.label_2 = QtWidgets.QLabel(self.gridLayoutWidget)
self.label_2.setObjectName("label_2")
self.gridLayout.addWidget(self.label_2, 2, 0, 1, 1)
self.label_4 = QtWidgets.QLabel(self.gridLayoutWidget)
self.label_4.setObjectName("label_4")
self.gridLayout.addWidget(self.label_4, 3, 0, 1, 1)
self.mail_header = QtWidgets.QLineEdit(self.gridLayoutWidget)
self.mail_header.setObjectName("mail_header")
self.gridLayout.addWidget(self.mail_header, 3, 2, 1, 1)
self.mail_name = QtWidgets.QLineEdit(self.gridLayoutWidget)
self.mail_name.setObjectName("mail_name")
self.gridLayout.addWidget(self.mail_name, 1, 2, 1, 1)
self.mail_body = QtWidgets.QTextEdit(self.gridLayoutWidget)
self.mail_body.setObjectName("mail_body")
self.gridLayout.addWidget(self.mail_body, 4, 2, 1, 1)
self.label = QtWidgets.QLabel(self.gridLayoutWidget)
self.label.setObjectName("label")
self.gridLayout.addWidget(self.label, 1, 0, 1, 1)
self.comboBox = QtWidgets.QComboBox(self.gridLayoutWidget)
self.comboBox.setObjectName("comboBox")
self.gridLayout.addWidget(self.comboBox, 0, 2, 1, 1)
self.label_5 = QtWidgets.QLabel(self.gridLayoutWidget)
self.label_5.setObjectName("label_5")
self.gridLayout.addWidget(self.label_5, 0, 0, 1, 1)
# at selection change, load mail text
self.comboBox.currentIndexChanged.connect(self.set_mail)
self.retranslateUi(Dialog)
self.buttonBox.accepted.connect(Dialog.accept) # type: ignore
self.buttonBox.rejected.connect(Dialog.reject) # type: ignore
# if the dialog is accepted, save the mail and send it
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.label_3.setText(_translate("Dialog", "Mail"))
self.label_2.setText(_translate("Dialog", "Prof"))
self.label_4.setText(_translate("Dialog", "Betreff"))
self.label.setText(_translate("Dialog", "eMail"))
self.label_5.setText(_translate("Dialog", "Art"))

View File

@@ -0,0 +1,133 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>676</width>
<height>676</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="geometry">
<rect>
<x>310</x>
<y>630</y>
<width>341</width>
<height>32</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
<widget class="QWidget" name="gridLayoutWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>661</width>
<height>621</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="2" column="2">
<widget class="QLineEdit" name="prof_name"/>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Mail</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Prof</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Betreff</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QLineEdit" name="mail_header"/>
</item>
<item row="1" column="2">
<widget class="QLineEdit" name="mail_name"/>
</item>
<item row="4" column="2">
<widget class="QTextEdit" name="mail_body"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>eMail</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QComboBox" name="comboBox"/>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Art</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>Dialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>Dialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@@ -0,0 +1,557 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>637</width>
<height>491</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>20</x>
<y>10</y>
<width>47</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Signatur</string>
</property>
</widget>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>20</x>
<y>40</y>
<width>47</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Modus</string>
</property>
</widget>
<widget class="QComboBox" name="comboBox">
<property name="geometry">
<rect>
<x>70</x>
<y>40</y>
<width>69</width>
<height>22</height>
</rect>
</property>
<item>
<property name="text">
<string>ARRAY</string>
</property>
</item>
<item>
<property name="text">
<string>BibTeX</string>
</property>
</item>
<item>
<property name="text">
<string>COinS</string>
</property>
</item>
<item>
<property name="text">
<string>RIS</string>
</property>
</item>
</widget>
<widget class="QLineEdit" name="lineEdit">
<property name="geometry">
<rect>
<x>70</x>
<y>10</y>
<width>113</width>
<height>20</height>
</rect>
</property>
<property name="placeholderText">
<string>Signatur / ISBN</string>
</property>
</widget>
<widget class="QLabel" name="label_3">
<property name="geometry">
<rect>
<x>20</x>
<y>70</y>
<width>47</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Queue</string>
</property>
</widget>
<widget class="QWidget" name="widget" native="true">
<property name="geometry">
<rect>
<x>330</x>
<y>90</y>
<width>301</width>
<height>341</height>
</rect>
</property>
<widget class="QTreeWidget" name="treeWidget">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>301</width>
<height>341</height>
</rect>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<property name="midLineWidth">
<number>0</number>
</property>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="sizeAdjustPolicy">
<enum>QAbstractScrollArea::AdjustToContents</enum>
</property>
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::NoSelection</enum>
</property>
<property name="textElideMode">
<enum>Qt::ElideMiddle</enum>
</property>
<property name="uniformRowHeights">
<bool>true</bool>
</property>
<property name="itemsExpandable">
<bool>false</bool>
</property>
<property name="expandsOnDoubleClick">
<bool>false</bool>
</property>
<attribute name="headerCascadingSectionResizes">
<bool>false</bool>
</attribute>
<attribute name="headerDefaultSectionSize">
<number>96</number>
</attribute>
<attribute name="headerHighlightSections">
<bool>false</bool>
</attribute>
<attribute name="headerMinimumSectionSize">
<number>20</number>
</attribute>
<attribute name="headerStretchLastSection">
<bool>false</bool>
</attribute>
<column>
<property name="text">
<string>Datensatz\Metadata</string>
</property>
<property name="font">
<font>
<pointsize>7</pointsize>
</font>
</property>
</column>
<column>
<property name="text">
<string>Array</string>
</property>
</column>
<column>
<property name="text">
<string>BibTeX</string>
</property>
</column>
<column>
<property name="text">
<string>COinS</string>
</property>
</column>
<column>
<property name="text">
<string>RIS</string>
</property>
</column>
<item>
<property name="text">
<string>PPN</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="background">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>255</red>
<green>0</green>
<blue>0</blue>
</color>
</brush>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>1</string>
</property>
</item>
<item>
<property name="text">
<string>Signatur</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="background">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>0</red>
<green>255</green>
<blue>0</blue>
</color>
</brush>
</property>
<property name="text">
<string>0</string>
</property>
<property name="text">
<string>1</string>
</property>
</item>
<item>
<property name="text">
<string>Autor</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>1</string>
</property>
</item>
<item>
<property name="text">
<string>ISBN</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>1</string>
</property>
</item>
<item>
<property name="text">
<string>Jahr</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>1</string>
</property>
</item>
<item>
<property name="text">
<string>Auflage</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>1</string>
</property>
</item>
<item>
<property name="text">
<string>Sprache</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="text">
<string>1</string>
</property>
</item>
<item>
<property name="text">
<string>Herausgeber</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>1</string>
</property>
</item>
<item>
<property name="text">
<string>Seiten</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>1</string>
</property>
</item>
<item>
<property name="text">
<string>Titel</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>1</string>
</property>
</item>
<item>
<property name="text">
<string>Link</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>0</string>
</property>
<property name="text">
<string>1</string>
</property>
<property name="text">
<string>1</string>
</property>
</item>
</widget>
</widget>
<widget class="QListWidget" name="listWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>90</y>
<width>281</width>
<height>341</height>
</rect>
</property>
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
</widget>
<widget class="QLabel" name="label_4">
<property name="geometry">
<rect>
<x>330</x>
<y>50</y>
<width>181</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Belegbare Felder per Anbieter</string>
</property>
</widget>
<widget class="QLabel" name="label_5">
<property name="geometry">
<rect>
<x>200</x>
<y>70</y>
<width>41</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Anzahl:</string>
</property>
</widget>
<widget class="QLabel" name="list_amount">
<property name="geometry">
<rect>
<x>240</x>
<y>70</y>
<width>47</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>0</string>
</property>
</widget>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="geometry">
<rect>
<x>10</x>
<y>450</y>
<width>156</width>
<height>23</height>
</rect>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
<property name="centerButtons">
<bool>false</bool>
</property>
</widget>
<widget class="QPushButton" name="l_add">
<property name="geometry">
<rect>
<x>190</x>
<y>10</y>
<width>21</width>
<height>23</height>
</rect>
</property>
<property name="focusPolicy">
<enum>Qt::ClickFocus</enum>
</property>
<property name="toolTip">
<string>Clicken oder Shift Enter drücken um den Eintrag hinzuzufügen</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../resources.qrc">
<normaloff>:/information/icons/information.png</normaloff>:/information/icons/information.png</iconset>
</property>
<property name="shortcut">
<string>Shift+Return</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</widget>
<tabstops>
<tabstop>lineEdit</tabstop>
<tabstop>comboBox</tabstop>
<tabstop>listWidget</tabstop>
<tabstop>treeWidget</tabstop>
</tabstops>
<resources>
<include location="../resources.qrc"/>
</resources>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>Dialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>87</x>
<y>461</y>
</hint>
<hint type="destinationlabel">
<x>318</x>
<y>245</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>Dialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>87</x>
<y>461</y>
</hint>
<hint type="destinationlabel">
<x>318</x>
<y>245</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1">
<context>
<name>Dialog</name>
<message>
<location filename="medianadder_ui.py" line="60"/>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="medianadder_ui.py" line="61"/>
<source>Signatur</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="medianadder_ui.py" line="62"/>
<source>Modus</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="medianadder_ui.py" line="63"/>
<source>ARRAY</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="medianadder_ui.py" line="64"/>
<source>BibTeX</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="medianadder_ui.py" line="65"/>
<source>COinS</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="medianadder_ui.py" line="66"/>
<source>RIS</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="medianadder_ui.py" line="68"/>
<source>Queue</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@@ -0,0 +1,82 @@
from PyQt6 import QtCore, QtGui, QtWidgets
from .Ui_medianadder import Ui_Dialog
class MedienAdder(QtWidgets.QDialog):
def __init__(self):
super().__init__()
self.ui = Ui_Dialog()
self.ui.setupUi(self)
# Connect signals and slots for your custom functionality
self.ui.buttonBox.accepted.connect(self.accept)
self.ui.buttonBox.rejected.connect(self.reject)
self.ui.l_add.clicked.connect(self.add_to_list)
self.ui.l_add.setShortcut("Shift+Return")
# Initialize data variables to store the results
self.result_data = []
self.recolorize()
def add_to_list(self):
text = self.ui.lineEdit.text().strip()
if text == "":
return
else:
self.ui.listWidget.addItem(text)
self.ui.list_amount.setText(str(self.ui.listWidget.count()))
self.ui.lineEdit.clear()
def recolorize(self):
# set the color of the cells of the treeWidget to red if the field is not supported by the provider
# else set it to green
for i in range(self.ui.treeWidget.topLevelItemCount()):
for j in range(1, self.ui.treeWidget.columnCount()):
if self.ui.treeWidget.topLevelItem(i).text(j) == "0":
self.ui.treeWidget.topLevelItem(i).setBackground(
j, QtGui.QColor(255, 0, 0)
)
else:
self.ui.treeWidget.topLevelItem(i).setBackground(
j, QtGui.QColor(0, 255, 0)
)
# remove the text from the cells
self.ui.treeWidget.topLevelItem(i).setText(j, "")
def custom_context_menu(self):
menu = QtWidgets.QMenu()
menu.addAction("Remove")
action = menu.exec(QtGui.QCursor.pos())
if action.text() == "Remove":
self.remove_from_list()
def remove_from_list(self):
self.ui.listWidget.takeItem(self.ui.listWidget.currentRow())
self.ui.list_amount.setText(str(self.ui.listWidget.count()))
def add_to_list(self):
text = self.ui.lineEdit.text().strip()
if text:
self.ui.listWidget.addItem(text)
self.ui.list_amount.setText(str(self.ui.listWidget.count()))
self.ui.lineEdit.clear()
def accept(self):
# Gather and store the data you want to return
self.result_data = [
self.ui.listWidget.item(i).text() for i in range(self.ui.listWidget.count())
]
super().accept()
def keyPressEvent(self, event):
if (
event.key() == QtCore.Qt.Key.Key_Return
or event.key() == QtCore.Qt.Key.Key_Enter
):
# Handle the Return key press as needed (e.g., add to list)
self.add_to_list()
event.accept()
else:
super().keyPressEvent(event)

View File

@@ -0,0 +1,132 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>448</width>
<height>165</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Das eingegebene Fach wurde nicht in der Datenbank gefunden. Soll es angelegt werden?</string>
</property>
</widget>
</item>
<item>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="1">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="checkBox">
<property name="text">
<string>Ja</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>0</x>
<y>10</y>
<width>141</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>Name des Neuen Faches:</string>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit">
<property name="geometry">
<rect>
<x>0</x>
<y>30</y>
<width>141</width>
<height>20</height>
</rect>
</property>
</widget>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>Dialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>Dialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@@ -0,0 +1,59 @@
# Form implementation generated from reading ui file '/home/alexander/GitHub/Semesterapparate/ui/dialogs/new_subject.ui'
#
# Created by: PyQt6 UI code generator 6.5.3
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(448, 165)
self.verticalLayout_2 = QtWidgets.QVBoxLayout(Dialog)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.verticalLayout = QtWidgets.QVBoxLayout()
self.verticalLayout.setObjectName("verticalLayout")
self.label = QtWidgets.QLabel(parent=Dialog)
self.label.setObjectName("label")
self.verticalLayout.addWidget(self.label)
self.gridLayout = QtWidgets.QGridLayout()
self.gridLayout.setObjectName("gridLayout")
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.gridLayout.addItem(spacerItem, 0, 1, 1, 1)
self.checkBox = QtWidgets.QCheckBox(parent=Dialog)
self.checkBox.setObjectName("checkBox")
self.gridLayout.addWidget(self.checkBox, 0, 0, 1, 1)
self.verticalLayout.addLayout(self.gridLayout)
self.verticalLayout_2.addLayout(self.verticalLayout)
self.frame = QtWidgets.QFrame(parent=Dialog)
self.frame.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Shadow.Raised)
self.frame.setObjectName("frame")
self.label_2 = QtWidgets.QLabel(parent=self.frame)
self.label_2.setGeometry(QtCore.QRect(0, 10, 141, 16))
self.label_2.setObjectName("label_2")
self.lineEdit = QtWidgets.QLineEdit(parent=self.frame)
self.lineEdit.setGeometry(QtCore.QRect(0, 30, 141, 20))
self.lineEdit.setObjectName("lineEdit")
self.verticalLayout_2.addWidget(self.frame)
self.buttonBox = QtWidgets.QDialogButtonBox(parent=Dialog)
self.buttonBox.setOrientation(QtCore.Qt.Orientation.Horizontal)
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.StandardButton.Cancel|QtWidgets.QDialogButtonBox.StandardButton.Ok)
self.buttonBox.setObjectName("buttonBox")
self.verticalLayout_2.addWidget(self.buttonBox)
self.retranslateUi(Dialog)
self.buttonBox.accepted.connect(Dialog.accept) # type: ignore
self.buttonBox.rejected.connect(Dialog.reject) # type: ignore
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.label.setText(_translate("Dialog", "Das eingegebene Fach wurde nicht in der Datenbank gefunden. Soll es angelegt werden?"))
self.checkBox.setText(_translate("Dialog", "Ja"))
self.label_2.setText(_translate("Dialog", "Name des Neuen Faches:"))

View File

@@ -0,0 +1,163 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>402</width>
<height>316</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QFrame" name="frame">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>381</width>
<height>41</height>
</rect>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<widget class="QWidget" name="horizontalLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>381</width>
<height>41</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Es wurden</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="count">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>0</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>Signaturen gefunden.</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
<widget class="QFrame" name="frame_2">
<property name="geometry">
<rect>
<x>10</x>
<y>80</y>
<width>381</width>
<height>201</height>
</rect>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<widget class="QWidget" name="horizontalLayoutWidget_2">
<property name="geometry">
<rect>
<x>0</x>
<y>10</y>
<width>381</width>
<height>191</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QListWidget" name="listWidget"/>
</item>
<item>
<widget class="QListWidget" name="listWidget_done"/>
</item>
</layout>
</widget>
</widget>
<widget class="QProgressBar" name="progressBar">
<property name="geometry">
<rect>
<x>10</x>
<y>60</y>
<width>381</width>
<height>23</height>
</rect>
</property>
<property name="value">
<number>24</number>
</property>
</widget>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="geometry">
<rect>
<x>230</x>
<y>290</y>
<width>156</width>
<height>23</height>
</rect>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
<widget class="QToolButton" name="toolButton">
<property name="geometry">
<rect>
<x>20</x>
<y>290</y>
<width>25</width>
<height>19</height>
</rect>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@@ -0,0 +1,81 @@
# Form implementation generated from reading ui file '/home/alexander/GitHub/Semesterapparate/ui/dialogs/parsed_titles.ui'
#
# Created by: PyQt6 UI code generator 6.5.3
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(402, 316)
self.frame = QtWidgets.QFrame(parent=Form)
self.frame.setGeometry(QtCore.QRect(10, 10, 381, 41))
self.frame.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Shadow.Raised)
self.frame.setObjectName("frame")
self.horizontalLayoutWidget = QtWidgets.QWidget(parent=self.frame)
self.horizontalLayoutWidget.setGeometry(QtCore.QRect(0, 0, 381, 41))
self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout.setObjectName("horizontalLayout")
self.label = QtWidgets.QLabel(parent=self.horizontalLayoutWidget)
self.label.setObjectName("label")
self.horizontalLayout.addWidget(self.label)
self.count = QtWidgets.QLabel(parent=self.horizontalLayoutWidget)
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.count.setFont(font)
self.count.setTextFormat(QtCore.Qt.TextFormat.PlainText)
self.count.setObjectName("count")
self.horizontalLayout.addWidget(self.count)
self.label_2 = QtWidgets.QLabel(parent=self.horizontalLayoutWidget)
self.label_2.setObjectName("label_2")
self.horizontalLayout.addWidget(self.label_2)
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.horizontalLayout.addItem(spacerItem)
self.frame_2 = QtWidgets.QFrame(parent=Form)
self.frame_2.setGeometry(QtCore.QRect(10, 80, 381, 201))
self.frame_2.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.frame_2.setFrameShadow(QtWidgets.QFrame.Shadow.Raised)
self.frame_2.setObjectName("frame_2")
self.horizontalLayoutWidget_2 = QtWidgets.QWidget(parent=self.frame_2)
self.horizontalLayoutWidget_2.setGeometry(QtCore.QRect(0, 10, 381, 191))
self.horizontalLayoutWidget_2.setObjectName("horizontalLayoutWidget_2")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_2)
self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.listWidget = QtWidgets.QListWidget(parent=self.horizontalLayoutWidget_2)
self.listWidget.setObjectName("listWidget")
self.horizontalLayout_2.addWidget(self.listWidget)
self.listWidget_done = QtWidgets.QListWidget(parent=self.horizontalLayoutWidget_2)
self.listWidget_done.setObjectName("listWidget_done")
self.horizontalLayout_2.addWidget(self.listWidget_done)
self.progressBar = QtWidgets.QProgressBar(parent=Form)
self.progressBar.setGeometry(QtCore.QRect(10, 60, 381, 23))
self.progressBar.setProperty("value", 24)
self.progressBar.setObjectName("progressBar")
self.buttonBox = QtWidgets.QDialogButtonBox(parent=Form)
self.buttonBox.setGeometry(QtCore.QRect(230, 290, 156, 23))
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.StandardButton.Cancel|QtWidgets.QDialogButtonBox.StandardButton.Ok)
self.buttonBox.setObjectName("buttonBox")
self.toolButton = QtWidgets.QToolButton(parent=Form)
self.toolButton.setGeometry(QtCore.QRect(20, 290, 25, 19))
self.toolButton.setObjectName("toolButton")
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
self.label.setText(_translate("Form", "Es wurden"))
self.count.setText(_translate("Form", "0"))
self.label_2.setText(_translate("Form", "Signaturen gefunden."))
self.toolButton.setText(_translate("Form", "..."))

View File

@@ -0,0 +1,48 @@
# Form implementation generated from reading ui file 'ui\dialogs\confirm_extend.ui'
#
# Created by: PyQt6 UI code generator 6.3.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets
class Ui_extend_confirm(object):
def setupUi(self, extend_confirm):
extend_confirm.setObjectName("extend_confirm")
extend_confirm.resize(380, 97)
# icon=QtGui.QIcon(f"ui/icons/{icon}.png")
# extend_confirm.setWindowIcon(icon)
self.buttonBox = QtWidgets.QDialogButtonBox(extend_confirm)
self.buttonBox.setGeometry(QtCore.QRect(290, 20, 81, 241))
self.buttonBox.setOrientation(QtCore.Qt.Orientation.Vertical)
self.buttonBox.setStandardButtons(
QtWidgets.QDialogButtonBox.StandardButton.Cancel
| QtWidgets.QDialogButtonBox.StandardButton.Ok
)
self.buttonBox.setObjectName("buttonBox")
self.textEdit = QtWidgets.QTextEdit(extend_confirm)
self.textEdit.setGeometry(QtCore.QRect(10, 10, 271, 81))
self.textEdit.setObjectName("textEdit")
self.retranslateUi(extend_confirm)
self.buttonBox.accepted.connect(extend_confirm.accept) # type: ignore
self.buttonBox.rejected.connect(extend_confirm.reject) # type: ignore
QtCore.QMetaObject.connectSlotsByName(extend_confirm)
def retranslateUi(self, extend_confirm):
_translate = QtCore.QCoreApplication.translate
extend_confirm.setWindowTitle(_translate("extend_confirm", "Dialog"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
extend_confirm = QtWidgets.QDialog()
ui = Ui_extend_confirm()
ui.setupUi(extend_confirm)
extend_confirm.show()
sys.exit(app.exec())

114
src/ui/dialogs/reminder.ui Normal file
View File

@@ -0,0 +1,114 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>369</width>
<height>308</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="geometry">
<rect>
<x>190</x>
<y>270</y>
<width>161</width>
<height>32</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
<widget class="QTextEdit" name="message_box">
<property name="geometry">
<rect>
<x>10</x>
<y>60</y>
<width>341</width>
<height>201</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>10</x>
<y>30</y>
<width>61</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Nachricht:</string>
</property>
</widget>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>150</x>
<y>30</y>
<width>81</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Erinnerung am:</string>
</property>
</widget>
<widget class="QDateEdit" name="dateEdit">
<property name="geometry">
<rect>
<x>240</x>
<y>30</y>
<width>110</width>
<height>22</height>
</rect>
</property>
</widget>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>Dialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>Dialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

View File

@@ -0,0 +1,48 @@
from omegaconf import OmegaConf
from PyQt6 import QtWidgets
from src.ui.dialogs.Ui_settings import Ui_Dialog as _settings
config = OmegaConf.load("config.yaml")
class Settings(_settings):
def __init__(self):
super().__init__()
self.setupUi(self)
self.retranslateUi(self)
self.load_config()
def load_config(self):
self.db_name.setText(config.database.name)
self.db_path.setText(config.database.path)
self.save_path.setText(config.save_path)
self.os_apps.setChecked(config.default_apps)
def select_db(self):
# open file dialog, limit to .db files
file_dialog = QtWidgets.QFileDialog()
file_dialog.setFileMode(QtWidgets.QFileDialog.FileMode.AnyFile)
file_dialog.setNameFilter("Datenbank (*.db)")
file_dialog.setViewMode(QtWidgets.QFileDialog.ViewMode.Detail)
if file_dialog.exec():
self.db_name.setText(file_dialog.selectedFiles()[0].split("/")[-1])
self.db_path.setText(
file_dialog.selectedFiles()[0].split(self.db_name.text())[0]
)
def set_save_path(self):
# open file dialog, limit to .db files
file_dialog = QtWidgets.QFileDialog()
file_dialog.setFileMode(QtWidgets.QFileDialog.FileMode.Directory)
file_dialog.setViewMode(QtWidgets.QFileDialog.ViewMode.Detail)
if file_dialog.exec():
self.save_path.setText(file_dialog.selectedFiles()[0])
def return_data(self):
config.database.name = self.db_name.text()
config.database.path = self.db_path.text()
config.save_path = self.save_path.text()
config.default_apps = self.os_apps.isChecked()
return config

308
src/ui/dialogs/settings.ui Normal file
View File

@@ -0,0 +1,308 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>743</width>
<height>576</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="geometry">
<rect>
<x>120</x>
<y>540</y>
<width>621</width>
<height>32</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
<widget class="QFrame" name="frame">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>741</width>
<height>541</height>
</rect>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>400</x>
<y>30</y>
<width>161</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Dateispezifische Einstellungen</string>
</property>
</widget>
<widget class="Line" name="line">
<property name="geometry">
<rect>
<x>370</x>
<y>0</y>
<width>20</width>
<height>541</height>
</rect>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="lineWidth">
<number>1</number>
</property>
<property name="midLineWidth">
<number>0</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
<widget class="QTextBrowser" name="textBrowser">
<property name="geometry">
<rect>
<x>400</x>
<y>50</y>
<width>311</width>
<height>51</height>
</rect>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="inputMethodHints">
<set>Qt::ImhNone</set>
</property>
<property name="html">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Hier können Einstellungen für bestehende Dateiformate geändert, oder neue Dateiformate eingefügt werden.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>10</x>
<y>20</y>
<width>161</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>Allgemeine Einstellungen</string>
</property>
</widget>
<widget class="QCheckBox" name="os_apps">
<property name="geometry">
<rect>
<x>410</x>
<y>110</y>
<width>161</width>
<height>17</height>
</rect>
</property>
<property name="toolTip">
<string>Verwendet im Betriebssystem festgelegte Anwendungen um Dateien zu öffnen</string>
</property>
<property name="text">
<string>Standard-Apps verwenden</string>
</property>
</widget>
<widget class="QWidget" name="formLayoutWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>50</y>
<width>361</width>
<height>491</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label_3">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Name der Datenbank, welche verwendet werden soll. &lt;span style=&quot; font-weight:600;&quot;&gt;Muss&lt;/span&gt; auf .db enden&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Datenbankname</string>
</property>
<property name="buddy">
<cstring>db_name</cstring>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_5">
<property name="toolTip">
<string>Pfad, an dem heruntergeladene Dateien gespeichert werden sollen</string>
</property>
<property name="text">
<string>Speicherpfad</string>
</property>
<property name="buddy">
<cstring>save_path</cstring>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="db_path">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="save_path"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Datenbankpfad</string>
</property>
<property name="buddy">
<cstring>db_path</cstring>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="db_name">
<property name="text">
<string>sap.db</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QToolButton" name="tb_set_save_path">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="3" column="1">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="2">
<widget class="QToolButton" name="tb_select_db">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QScrollArea" name="scrollArea">
<property name="geometry">
<rect>
<x>400</x>
<y>130</y>
<width>331</width>
<height>381</height>
</rect>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>329</width>
<height>379</height>
</rect>
</property>
<widget class="QTreeWidget" name="treeWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>331</width>
<height>381</height>
</rect>
</property>
<property name="contextMenuPolicy">
<enum>Qt::ActionsContextMenu</enum>
</property>
</widget>
</widget>
</widget>
</widget>
</widget>
<tabstops>
<tabstop>db_name</tabstop>
<tabstop>db_path</tabstop>
<tabstop>save_path</tabstop>
<tabstop>os_apps</tabstop>
<tabstop>textBrowser</tabstop>
</tabstops>
<resources>
<include location="../resources.qrc"/>
</resources>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>Dialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>358</x>
<y>540</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>Dialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>426</x>
<y>540</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>