diff --git a/.gitignore b/.gitignore index 2c3dce1..ed468fc 100644 --- a/.gitignore +++ b/.gitignore @@ -216,15 +216,19 @@ compile_commands.json *_qmlcache.qrc -.history/* + +.history +depend +output/output/LOGtoJSON.exe + +.pytest_cache +output +docs/ +config.yaml **/tempCodeRunnerFile.py -output/** -archive/** -.vscode -backup -database -report/** -# Rust -target/ uv.lock +.history +.venv +venv +*.log diff --git a/.trunk/.gitignore b/.trunk/.gitignore deleted file mode 100644 index 15966d0..0000000 --- a/.trunk/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -*out -*logs -*actions -*notifications -*tools -plugins -user_trunk.yaml -user.yaml -tmp diff --git a/.trunk/trunk.yaml b/.trunk/trunk.yaml deleted file mode 100644 index 49ea038..0000000 --- a/.trunk/trunk.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# This file controls the behavior of Trunk: https://docs.trunk.io/cli -# To learn more about the format of this file, see https://docs.trunk.io/reference/trunk-yaml -version: 0.1 -cli: - version: 1.22.8 -plugins: - sources: - - id: trunk - ref: v1.6.4 - uri: https://github.com/trunk-io/plugins diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..9192ff9 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,16 @@ +{ + "files.exclude": { + "**/.git": true, + "**/.svn": true, + "**/.hg": true, + "**/CVS": true, + "**/.DS_Store": true, + "**/Thumbs.db": true, + "**/.trunk/*actions/": true, + "**/.trunk/*logs/": true, + "**/.trunk/*notifications/": true, + "**/.trunk/*out/": true, + "**/.trunk/*plugins/": true + }, + "hide-files.files": [] +} \ No newline at end of file diff --git a/LICENSE b/LICENSE index 664d8c4..aec92ac 100644 --- a/LICENSE +++ b/LICENSE @@ -1,9 +1,21 @@ MIT License -Copyright (c) 2024 WorldTeacher +Copyright (c) 2025 WorldTeacher -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/backup/library.db b/backup/library.db new file mode 100644 index 0000000..e69de29 diff --git a/database/library.db b/database/library.db new file mode 100644 index 0000000..234b692 Binary files /dev/null and b/database/library.db differ diff --git a/src/ui/sources/dialog_addBook_ui.py b/src/ui/sources/dialog_addBook_ui.py new file mode 100644 index 0000000..e8fb499 --- /dev/null +++ b/src/ui/sources/dialog_addBook_ui.py @@ -0,0 +1,54 @@ +# Form implementation generated from reading ui file '/home/alexander/GitHub/LibrarySystem/src/ui/sources/dialog_addBook.ui' +# +# Created by: PyQt6 UI code generator 6.7.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(262, 100) + self.gridLayout = QtWidgets.QGridLayout(Dialog) + self.gridLayout.setObjectName("gridLayout") + self.book_signature = QtWidgets.QLineEdit(parent=Dialog) + self.book_signature.setObjectName("book_signature") + self.gridLayout.addWidget(self.book_signature, 1, 1, 1, 1) + self.label_2 = QtWidgets.QLabel(parent=Dialog) + self.label_2.setObjectName("label_2") + self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1) + self.label = QtWidgets.QLabel(parent=Dialog) + self.label.setObjectName("label") + self.gridLayout.addWidget(self.label, 0, 0, 1, 1) + self.book_title = QtWidgets.QLineEdit(parent=Dialog) + self.book_title.setObjectName("book_title") + self.gridLayout.addWidget(self.book_title, 0, 1, 1, 1) + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setObjectName("horizontalLayout") + self.btn_save = QtWidgets.QPushButton(parent=Dialog) + self.btn_save.setFocusPolicy(QtCore.Qt.FocusPolicy.ClickFocus) + self.btn_save.setObjectName("btn_save") + self.horizontalLayout.addWidget(self.btn_save) + self.btn_cancel = QtWidgets.QPushButton(parent=Dialog) + self.btn_cancel.setFocusPolicy(QtCore.Qt.FocusPolicy.ClickFocus) + self.btn_cancel.setObjectName("btn_cancel") + self.horizontalLayout.addWidget(self.btn_cancel) + self.gridLayout.addLayout(self.horizontalLayout, 2, 1, 1, 1) + + self.retranslateUi(Dialog) + QtCore.QMetaObject.connectSlotsByName(Dialog) + Dialog.setTabOrder(self.book_title, self.book_signature) + Dialog.setTabOrder(self.book_signature, self.btn_save) + Dialog.setTabOrder(self.btn_save, self.btn_cancel) + + def retranslateUi(self, Dialog): + _translate = QtCore.QCoreApplication.translate + Dialog.setWindowTitle(_translate("Dialog", "Dialog")) + self.label_2.setText(_translate("Dialog", "Signatur")) + self.label.setText(_translate("Dialog", "Titel")) + self.btn_save.setText(_translate("Dialog", "Speichern")) + self.btn_cancel.setText(_translate("Dialog", "Abbrechen")) diff --git a/src/ui/sources/dialog_createUser_ui.py b/src/ui/sources/dialog_createUser_ui.py new file mode 100644 index 0000000..4618a8d --- /dev/null +++ b/src/ui/sources/dialog_createUser_ui.py @@ -0,0 +1,61 @@ +# Form implementation generated from reading ui file '/home/alexander/GitHub/LibrarySystem/src/ui/sources/dialog_createUser.ui' +# +# Created by: PyQt6 UI code generator 6.7.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.setWindowModality(QtCore.Qt.WindowModality.WindowModal) + Dialog.resize(400, 132) + self.gridLayout = QtWidgets.QGridLayout(Dialog) + self.gridLayout.setObjectName("gridLayout") + self.userno = QtWidgets.QLineEdit(parent=Dialog) + self.userno.setInputMethodHints(QtCore.Qt.InputMethodHint.ImhDigitsOnly) + self.userno.setObjectName("userno") + self.gridLayout.addWidget(self.userno, 1, 1, 1, 1) + self.label_2 = QtWidgets.QLabel(parent=Dialog) + self.label_2.setObjectName("label_2") + self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1) + self.label_3 = QtWidgets.QLabel(parent=Dialog) + self.label_3.setObjectName("label_3") + self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1) + self.user_mail = QtWidgets.QLineEdit(parent=Dialog) + self.user_mail.setObjectName("user_mail") + self.gridLayout.addWidget(self.user_mail, 2, 1, 1, 1) + self.label = QtWidgets.QLabel(parent=Dialog) + self.label.setObjectName("label") + self.gridLayout.addWidget(self.label, 0, 0, 1, 1) + self.username = QtWidgets.QLineEdit(parent=Dialog) + self.username.setObjectName("username") + self.gridLayout.addWidget(self.username, 0, 1, 1, 1) + self.buttonBox = QtWidgets.QDialogButtonBox(parent=Dialog) + self.buttonBox.setOrientation(QtCore.Qt.Orientation.Horizontal) + self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.StandardButton.Cancel|QtWidgets.QDialogButtonBox.StandardButton.Save) + self.buttonBox.setObjectName("buttonBox") + self.gridLayout.addWidget(self.buttonBox, 4, 1, 1, 1) + spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding) + self.gridLayout.addItem(spacerItem, 3, 0, 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) + Dialog.setTabOrder(self.username, self.userno) + Dialog.setTabOrder(self.userno, self.user_mail) + + def retranslateUi(self, Dialog): + _translate = QtCore.QCoreApplication.translate + Dialog.setWindowTitle(_translate("Dialog", "Nutzer anlegen")) + self.userno.setPlaceholderText(_translate("Dialog", "102888557")) + self.label_2.setText(_translate("Dialog", "Matrikelnummer")) + self.label_3.setText(_translate("Dialog", "Mail")) + self.user_mail.setPlaceholderText(_translate("Dialog", "email@ph-freiburg.de")) + self.label.setText(_translate("Dialog", "Name, Vorname")) + self.username.setPlaceholderText(_translate("Dialog", "Nachname, Vorname")) diff --git a/src/ui/sources/dialog_extendLoanDuration_ui.py b/src/ui/sources/dialog_extendLoanDuration_ui.py new file mode 100644 index 0000000..fc4b437 --- /dev/null +++ b/src/ui/sources/dialog_extendLoanDuration_ui.py @@ -0,0 +1,43 @@ +# Form implementation generated from reading ui file '/home/alexander/GitHub/LibrarySystem/src/ui/sources/dialog_extendLoanDuration.ui' +# +# Created by: PyQt6 UI code generator 6.7.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.setWindowModality(QtCore.Qt.WindowModality.ApplicationModal) + Dialog.resize(400, 300) + self.gridLayout = QtWidgets.QGridLayout(Dialog) + self.gridLayout.setObjectName("gridLayout") + self.extenduntil = QtWidgets.QCalendarWidget(parent=Dialog) + self.extenduntil.setObjectName("extenduntil") + self.gridLayout.addWidget(self.extenduntil, 1, 2, 1, 1) + 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.gridLayout.addWidget(self.buttonBox, 2, 2, 1, 1) + self.label = QtWidgets.QLabel(parent=Dialog) + font = QtGui.QFont() + font.setPointSize(11) + font.setBold(True) + self.label.setFont(font) + self.label.setObjectName("label") + self.gridLayout.addWidget(self.label, 0, 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.setText(_translate("Dialog", "Bitte das Verlängerungsdatum auswählen")) diff --git a/src/ui/sources/dialog_generateReport_ui.py b/src/ui/sources/dialog_generateReport_ui.py new file mode 100644 index 0000000..d611bda --- /dev/null +++ b/src/ui/sources/dialog_generateReport_ui.py @@ -0,0 +1,119 @@ +# Form implementation generated from reading ui file '/home/alexander/GitHub/LibrarySystem/src/ui/sources/dialog_generateReport.ui' +# +# Created by: PyQt6 UI code generator 6.7.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(375, 247) + Dialog.setMinimumSize(QtCore.QSize(40, 0)) + self.verticalLayout = QtWidgets.QVBoxLayout(Dialog) + 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") + self.label_2 = QtWidgets.QLabel(parent=Dialog) + self.label_2.setObjectName("label_2") + self.gridLayout.addWidget(self.label_2, 0, 0, 1, 1) + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setObjectName("horizontalLayout") + self.radio_week = QtWidgets.QRadioButton(parent=Dialog) + self.radio_week.setObjectName("radio_week") + self.horizontalLayout.addWidget(self.radio_week) + self.radio_month = QtWidgets.QRadioButton(parent=Dialog) + self.radio_month.setObjectName("radio_month") + self.horizontalLayout.addWidget(self.radio_month) + self.radio_year = QtWidgets.QRadioButton(parent=Dialog) + self.radio_year.setObjectName("radio_year") + self.horizontalLayout.addWidget(self.radio_year) + self.gridLayout.addLayout(self.horizontalLayout, 1, 1, 1, 1) + self.dayValue = QtWidgets.QLineEdit(parent=Dialog) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Fixed, QtWidgets.QSizePolicy.Policy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.dayValue.sizePolicy().hasHeightForWidth()) + self.dayValue.setSizePolicy(sizePolicy) + self.dayValue.setMinimumSize(QtCore.QSize(0, 0)) + self.dayValue.setMaximumSize(QtCore.QSize(40, 16777215)) + self.dayValue.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) + self.dayValue.setReadOnly(True) + self.dayValue.setObjectName("dayValue") + self.gridLayout.addWidget(self.dayValue, 0, 2, 1, 1) + self.radioButton = QtWidgets.QRadioButton(parent=Dialog) + self.radioButton.setText("") + self.radioButton.setCheckable(True) + self.radioButton.setObjectName("radioButton") + self.gridLayout.addWidget(self.radioButton, 3, 2, 1, 1) + self.reportlink = QtWidgets.QLabel(parent=Dialog) + self.reportlink.setText("") + self.reportlink.setObjectName("reportlink") + self.gridLayout.addWidget(self.reportlink, 3, 1, 1, 1) + self.dayslider = QtWidgets.QSlider(parent=Dialog) + self.dayslider.setFocusPolicy(QtCore.Qt.FocusPolicy.ClickFocus) + self.dayslider.setMinimum(1) + self.dayslider.setMaximum(365) + self.dayslider.setOrientation(QtCore.Qt.Orientation.Horizontal) + self.dayslider.setInvertedControls(True) + self.dayslider.setTickPosition(QtWidgets.QSlider.TickPosition.TicksAbove) + self.dayslider.setTickInterval(10) + self.dayslider.setObjectName("dayslider") + self.gridLayout.addWidget(self.dayslider, 0, 1, 1, 1) + self.frame = QtWidgets.QFrame(parent=Dialog) + self.frame.setFrameShape(QtWidgets.QFrame.Shape.NoFrame) + self.frame.setFrameShadow(QtWidgets.QFrame.Shadow.Plain) + self.frame.setLineWidth(0) + self.frame.setObjectName("frame") + self.gridLayout_2 = QtWidgets.QGridLayout(self.frame) + self.gridLayout_2.setObjectName("gridLayout_2") + self.format_txt = QtWidgets.QRadioButton(parent=self.frame) + self.format_txt.setObjectName("format_txt") + self.gridLayout_2.addWidget(self.format_txt, 0, 0, 1, 1) + self.format_csv = QtWidgets.QRadioButton(parent=self.frame) + self.format_csv.setObjectName("format_csv") + self.gridLayout_2.addWidget(self.format_csv, 0, 1, 1, 1) + self.gridLayout.addWidget(self.frame, 2, 1, 1, 1) + self.label_3 = QtWidgets.QLabel(parent=Dialog) + self.label_3.setObjectName("label_3") + self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1) + self.verticalLayout.addLayout(self.gridLayout) + self.label_4 = QtWidgets.QLabel(parent=Dialog) + self.label_4.setObjectName("label_4") + self.verticalLayout.addWidget(self.label_4) + self.reportprogress = QtWidgets.QProgressBar(parent=Dialog) + self.reportprogress.setProperty("value", 24) + self.reportprogress.setTextVisible(True) + self.reportprogress.setInvertedAppearance(False) + self.reportprogress.setObjectName("reportprogress") + self.verticalLayout.addWidget(self.reportprogress) + self.generateReport = QtWidgets.QPushButton(parent=Dialog) + self.generateReport.setObjectName("generateReport") + self.verticalLayout.addWidget(self.generateReport) + + self.retranslateUi(Dialog) + QtCore.QMetaObject.connectSlotsByName(Dialog) + Dialog.setTabOrder(self.radio_week, self.radio_month) + Dialog.setTabOrder(self.radio_month, self.radio_year) + Dialog.setTabOrder(self.radio_year, self.generateReport) + + def retranslateUi(self, Dialog): + _translate = QtCore.QCoreApplication.translate + Dialog.setWindowTitle(_translate("Dialog", "Dialog")) + self.label.setText(_translate("Dialog", "Wieviele Tage sollen im Bericht erfasst werden?")) + self.label_2.setText(_translate("Dialog", "Tage")) + self.radio_week.setText(_translate("Dialog", "Woche")) + self.radio_month.setText(_translate("Dialog", "Monat")) + self.radio_year.setText(_translate("Dialog", "Jahr")) + self.format_txt.setText(_translate("Dialog", "Text")) + self.format_csv.setText(_translate("Dialog", "Excel")) + self.label_3.setText(_translate("Dialog", "Dateiformat")) + self.label_4.setText(_translate("Dialog", "Fortschritt:")) + self.generateReport.setText(_translate("Dialog", " Bericht erstellen")) diff --git a/src/ui/sources/dialog_settings_ui.py b/src/ui/sources/dialog_settings_ui.py new file mode 100644 index 0000000..326270c --- /dev/null +++ b/src/ui/sources/dialog_settings_ui.py @@ -0,0 +1,161 @@ +# Form implementation generated from reading ui file '/home/alexander/GitHub/LibrarySystem/src/ui/sources/dialog_settings.ui' +# +# Created by: PyQt6 UI code generator 6.7.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(492, 306) + self.formLayout = QtWidgets.QFormLayout(Dialog) + self.formLayout.setObjectName("formLayout") + self.label = QtWidgets.QLabel(parent=Dialog) + self.label.setObjectName("label") + self.formLayout.setWidget(0, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label) + self.institution_name = QtWidgets.QLineEdit(parent=Dialog) + self.institution_name.setObjectName("institution_name") + self.formLayout.setWidget(0, QtWidgets.QFormLayout.ItemRole.FieldRole, self.institution_name) + self.label_3 = QtWidgets.QLabel(parent=Dialog) + self.label_3.setObjectName("label_3") + self.formLayout.setWidget(5, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_3) + self.databasesettings = QtWidgets.QGridLayout() + self.databasesettings.setObjectName("databasesettings") + self.database_name = QtWidgets.QLineEdit(parent=Dialog) + self.database_name.setObjectName("database_name") + self.databasesettings.addWidget(self.database_name, 1, 1, 1, 1) + self.label_4 = QtWidgets.QLabel(parent=Dialog) + self.label_4.setObjectName("label_4") + self.databasesettings.addWidget(self.label_4, 0, 0, 1, 1) + self.label_6 = QtWidgets.QLabel(parent=Dialog) + self.label_6.setObjectName("label_6") + self.databasesettings.addWidget(self.label_6, 2, 0, 1, 1) + self.database_path = QtWidgets.QLineEdit(parent=Dialog) + self.database_path.setObjectName("database_path") + self.databasesettings.addWidget(self.database_path, 0, 1, 1, 1) + self.database_backupLocation = QtWidgets.QLineEdit(parent=Dialog) + self.database_backupLocation.setObjectName("database_backupLocation") + self.databasesettings.addWidget(self.database_backupLocation, 2, 1, 1, 1) + self.label_5 = QtWidgets.QLabel(parent=Dialog) + self.label_5.setObjectName("label_5") + self.databasesettings.addWidget(self.label_5, 1, 0, 1, 1) + self.btn_select_database_path = QtWidgets.QToolButton(parent=Dialog) + self.btn_select_database_path.setObjectName("btn_select_database_path") + self.databasesettings.addWidget(self.btn_select_database_path, 0, 2, 1, 1) + self.btn_select_database_name = QtWidgets.QToolButton(parent=Dialog) + self.btn_select_database_name.setObjectName("btn_select_database_name") + self.databasesettings.addWidget(self.btn_select_database_name, 1, 2, 1, 1) + self.btn_select_database_backupLocation = QtWidgets.QToolButton(parent=Dialog) + self.btn_select_database_backupLocation.setObjectName("btn_select_database_backupLocation") + self.databasesettings.addWidget(self.btn_select_database_backupLocation, 2, 2, 1, 1) + self.formLayout.setLayout(5, QtWidgets.QFormLayout.ItemRole.FieldRole, self.databasesettings) + self.buttonBox = QtWidgets.QDialogButtonBox(parent=Dialog) + self.buttonBox.setOrientation(QtCore.Qt.Orientation.Horizontal) + self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.StandardButton.Cancel|QtWidgets.QDialogButtonBox.StandardButton.Discard|QtWidgets.QDialogButtonBox.StandardButton.Ok) + self.buttonBox.setObjectName("buttonBox") + self.formLayout.setWidget(7, QtWidgets.QFormLayout.ItemRole.FieldRole, self.buttonBox) + self.label_9 = QtWidgets.QLabel(parent=Dialog) + self.label_9.setObjectName("label_9") + self.formLayout.setWidget(6, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_9) + self.gridLayout = QtWidgets.QGridLayout() + self.gridLayout.setObjectName("gridLayout") + self.btn_select_report_path = QtWidgets.QToolButton(parent=Dialog) + self.btn_select_report_path.setObjectName("btn_select_report_path") + self.gridLayout.addWidget(self.btn_select_report_path, 2, 2, 1, 1) + self.label_10 = QtWidgets.QLabel(parent=Dialog) + self.label_10.setText("") + self.label_10.setObjectName("label_10") + self.gridLayout.addWidget(self.label_10, 1, 0, 1, 1) + self.check_generate_report = QtWidgets.QCheckBox(parent=Dialog) + self.check_generate_report.setObjectName("check_generate_report") + self.gridLayout.addWidget(self.check_generate_report, 1, 1, 1, 1) + self.report_path = QtWidgets.QLineEdit(parent=Dialog) + self.report_path.setObjectName("report_path") + self.gridLayout.addWidget(self.report_path, 2, 1, 1, 1) + self.label_8 = QtWidgets.QLabel(parent=Dialog) + self.label_8.setObjectName("label_8") + self.gridLayout.addWidget(self.label_8, 2, 0, 1, 1) + self.label_11 = QtWidgets.QLabel(parent=Dialog) + self.label_11.setObjectName("label_11") + self.gridLayout.addWidget(self.label_11, 0, 0, 1, 1) + self.report_day = QtWidgets.QComboBox(parent=Dialog) + self.report_day.setObjectName("report_day") + self.report_day.addItem("") + self.report_day.addItem("") + self.report_day.addItem("") + self.report_day.addItem("") + self.report_day.addItem("") + self.gridLayout.addWidget(self.report_day, 0, 1, 1, 1) + self.formLayout.setLayout(6, QtWidgets.QFormLayout.ItemRole.FieldRole, self.gridLayout) + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setObjectName("horizontalLayout") + self.delete_inactive_user_duration = QtWidgets.QSpinBox(parent=Dialog) + self.delete_inactive_user_duration.setMaximum(9999) + self.delete_inactive_user_duration.setProperty("value", 365) + self.delete_inactive_user_duration.setObjectName("delete_inactive_user_duration") + self.horizontalLayout.addWidget(self.delete_inactive_user_duration) + self.label_12 = QtWidgets.QLabel(parent=Dialog) + self.label_12.setMaximumSize(QtCore.QSize(43, 16777215)) + self.label_12.setObjectName("label_12") + self.horizontalLayout.addWidget(self.label_12) + self.formLayout.setLayout(3, QtWidgets.QFormLayout.ItemRole.FieldRole, self.horizontalLayout) + self.label_7 = QtWidgets.QLabel(parent=Dialog) + self.label_7.setObjectName("label_7") + self.formLayout.setWidget(3, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_7) + self.horizontalLayout_2 = QtWidgets.QHBoxLayout() + self.horizontalLayout_2.setObjectName("horizontalLayout_2") + self.default_loan_duration = QtWidgets.QSpinBox(parent=Dialog) + self.default_loan_duration.setProperty("value", 7) + self.default_loan_duration.setObjectName("default_loan_duration") + self.horizontalLayout_2.addWidget(self.default_loan_duration) + self.label_13 = QtWidgets.QLabel(parent=Dialog) + self.label_13.setMaximumSize(QtCore.QSize(43, 16777215)) + self.label_13.setObjectName("label_13") + self.horizontalLayout_2.addWidget(self.label_13) + self.formLayout.setLayout(1, QtWidgets.QFormLayout.ItemRole.FieldRole, self.horizontalLayout_2) + self.label_2 = QtWidgets.QLabel(parent=Dialog) + self.label_2.setObjectName("label_2") + self.formLayout.setWidget(1, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_2) + + 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.institution_name, self.database_path) + Dialog.setTabOrder(self.database_path, self.database_name) + Dialog.setTabOrder(self.database_name, self.database_backupLocation) + Dialog.setTabOrder(self.database_backupLocation, self.btn_select_database_path) + Dialog.setTabOrder(self.btn_select_database_path, self.btn_select_database_name) + Dialog.setTabOrder(self.btn_select_database_name, self.btn_select_database_backupLocation) + + def retranslateUi(self, Dialog): + _translate = QtCore.QCoreApplication.translate + Dialog.setWindowTitle(_translate("Dialog", "Dialog")) + self.label.setText(_translate("Dialog", "Name der Einrichtung")) + self.label_3.setText(_translate("Dialog", "Datenbank")) + self.label_4.setText(_translate("Dialog", "Speicherort")) + self.label_6.setText(_translate("Dialog", "Sicherungspfad")) + self.label_5.setText(_translate("Dialog", "Datenbankname")) + self.btn_select_database_path.setText(_translate("Dialog", "...")) + self.btn_select_database_name.setText(_translate("Dialog", "...")) + self.btn_select_database_backupLocation.setText(_translate("Dialog", "...")) + self.label_9.setText(_translate("Dialog", "Bericht")) + self.btn_select_report_path.setText(_translate("Dialog", "...")) + self.check_generate_report.setText(_translate("Dialog", "Bericht erstellen")) + self.label_8.setText(_translate("Dialog", "Speicherpfad")) + self.label_11.setText(_translate("Dialog", "Tag")) + self.report_day.setItemText(0, _translate("Dialog", "Montag")) + self.report_day.setItemText(1, _translate("Dialog", "Dienstag")) + self.report_day.setItemText(2, _translate("Dialog", "Mittwoch")) + self.report_day.setItemText(3, _translate("Dialog", "Donnerstag")) + self.report_day.setItemText(4, _translate("Dialog", "Freitag")) + self.label_12.setText(_translate("Dialog", "Tage(n)")) + self.label_7.setText(_translate("Dialog", "Inaktive Nutzer\n" +"Löschen nach")) + self.label_13.setText(_translate("Dialog", "Tage(n)")) + self.label_2.setText(_translate("Dialog", "Leihdauer")) diff --git a/src/ui/sources/main_Loans_ui.py b/src/ui/sources/main_Loans_ui.py new file mode 100644 index 0000000..3826afb --- /dev/null +++ b/src/ui/sources/main_Loans_ui.py @@ -0,0 +1,110 @@ +# Form implementation generated from reading ui file '/home/alexander/GitHub/LibrarySystem/src/ui/sources/main_Loans.ui' +# +# Created by: PyQt6 UI code generator 6.7.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_MainWindow(object): + def setupUi(self, MainWindow): + MainWindow.setObjectName("MainWindow") + MainWindow.resize(899, 658) + self.centralwidget = QtWidgets.QWidget(parent=MainWindow) + self.centralwidget.setObjectName("centralwidget") + self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget) + self.verticalLayout.setObjectName("verticalLayout") + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setObjectName("horizontalLayout") + self.radio_all = QtWidgets.QRadioButton(parent=self.centralwidget) + self.radio_all.setChecked(True) + self.radio_all.setObjectName("radio_all") + self.horizontalLayout.addWidget(self.radio_all) + self.radio_current = QtWidgets.QRadioButton(parent=self.centralwidget) + self.radio_current.setObjectName("radio_current") + self.horizontalLayout.addWidget(self.radio_current) + self.radio_overdue = QtWidgets.QRadioButton(parent=self.centralwidget) + self.radio_overdue.setObjectName("radio_overdue") + self.horizontalLayout.addWidget(self.radio_overdue) + spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum) + self.horizontalLayout.addItem(spacerItem) + self.verticalLayout.addLayout(self.horizontalLayout) + self.horizontalLayout_2 = QtWidgets.QHBoxLayout() + self.horizontalLayout_2.setObjectName("horizontalLayout_2") + self.searchbar = QtWidgets.QLineEdit(parent=self.centralwidget) + self.searchbar.setObjectName("searchbar") + self.horizontalLayout_2.addWidget(self.searchbar) + self.searchFields = QtWidgets.QComboBox(parent=self.centralwidget) + self.searchFields.setObjectName("searchFields") + self.searchFields.addItem("") + self.searchFields.addItem("") + self.searchFields.addItem("") + self.horizontalLayout_2.addWidget(self.searchFields) + self.verticalLayout.addLayout(self.horizontalLayout_2) + self.loanTable = QtWidgets.QTableWidget(parent=self.centralwidget) + self.loanTable.setEditTriggers(QtWidgets.QAbstractItemView.EditTrigger.NoEditTriggers) + self.loanTable.setSelectionMode(QtWidgets.QAbstractItemView.SelectionMode.SingleSelection) + self.loanTable.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectionBehavior.SelectRows) + self.loanTable.setObjectName("loanTable") + self.loanTable.setColumnCount(7) + self.loanTable.setRowCount(0) + item = QtWidgets.QTableWidgetItem() + self.loanTable.setHorizontalHeaderItem(0, item) + item = QtWidgets.QTableWidgetItem() + self.loanTable.setHorizontalHeaderItem(1, item) + item = QtWidgets.QTableWidgetItem() + self.loanTable.setHorizontalHeaderItem(2, item) + item = QtWidgets.QTableWidgetItem() + self.loanTable.setHorizontalHeaderItem(3, item) + item = QtWidgets.QTableWidgetItem() + self.loanTable.setHorizontalHeaderItem(4, item) + item = QtWidgets.QTableWidgetItem() + self.loanTable.setHorizontalHeaderItem(5, item) + item = QtWidgets.QTableWidgetItem() + self.loanTable.setHorizontalHeaderItem(6, item) + self.verticalLayout.addWidget(self.loanTable) + MainWindow.setCentralWidget(self.centralwidget) + self.menubar = QtWidgets.QMenuBar(parent=MainWindow) + self.menubar.setGeometry(QtCore.QRect(0, 0, 899, 22)) + self.menubar.setObjectName("menubar") + self.menuDatei = QtWidgets.QMenu(parent=self.menubar) + self.menuDatei.setObjectName("menuDatei") + MainWindow.setMenuBar(self.menubar) + self.actionBeenden = QtGui.QAction(parent=MainWindow) + self.actionBeenden.setObjectName("actionBeenden") + self.menuDatei.addAction(self.actionBeenden) + self.menubar.addAction(self.menuDatei.menuAction()) + + self.retranslateUi(MainWindow) + self.actionBeenden.triggered.connect(MainWindow.close) # type: ignore + QtCore.QMetaObject.connectSlotsByName(MainWindow) + + def retranslateUi(self, MainWindow): + _translate = QtCore.QCoreApplication.translate + MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) + self.radio_all.setText(_translate("MainWindow", "Alle Ausleihen")) + self.radio_current.setText(_translate("MainWindow", "Aktuell Entliehene Medien")) + self.radio_overdue.setText(_translate("MainWindow", "Überzogene Medien")) + self.searchFields.setItemText(0, _translate("MainWindow", "Titel")) + self.searchFields.setItemText(1, _translate("MainWindow", "Signatur")) + self.searchFields.setItemText(2, _translate("MainWindow", "Nutzer")) + item = self.loanTable.horizontalHeaderItem(0) + item.setText(_translate("MainWindow", "ISBN")) + item = self.loanTable.horizontalHeaderItem(1) + item.setText(_translate("MainWindow", "Signatur")) + item = self.loanTable.horizontalHeaderItem(2) + item.setText(_translate("MainWindow", "Titel")) + item = self.loanTable.horizontalHeaderItem(3) + item.setText(_translate("MainWindow", "Nutzerkonto")) + item = self.loanTable.horizontalHeaderItem(4) + item.setText(_translate("MainWindow", "entliehen am")) + item = self.loanTable.horizontalHeaderItem(5) + item.setText(_translate("MainWindow", "entliehen bis")) + item = self.loanTable.horizontalHeaderItem(6) + item.setText(_translate("MainWindow", "Zurückgegeben am")) + self.menuDatei.setTitle(_translate("MainWindow", "Datei")) + self.actionBeenden.setText(_translate("MainWindow", "Beenden")) + self.actionBeenden.setShortcut(_translate("MainWindow", "Q")) diff --git a/src/ui/sources/main_UserInterface_ui.py b/src/ui/sources/main_UserInterface_ui.py new file mode 100644 index 0000000..ff0ff41 --- /dev/null +++ b/src/ui/sources/main_UserInterface_ui.py @@ -0,0 +1,229 @@ +# Form implementation generated from reading ui file '/home/alexander/GitHub/LibrarySystem/src/ui/sources/main_UserInterface.ui' +# +# Created by: PyQt6 UI code generator 6.7.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_MainWindow(object): + def setupUi(self, MainWindow): + MainWindow.setObjectName("MainWindow") + MainWindow.resize(800, 602) + self.centralwidget = QtWidgets.QWidget(parent=MainWindow) + self.centralwidget.setObjectName("centralwidget") + self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget) + self.verticalLayout.setObjectName("verticalLayout") + self.gridLayout = QtWidgets.QGridLayout() + self.gridLayout.setObjectName("gridLayout") + self.horizontalLayout_4 = QtWidgets.QHBoxLayout() + self.horizontalLayout_4.setObjectName("horizontalLayout_4") + self.duedate = QtWidgets.QDateEdit(parent=self.centralwidget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.duedate.sizePolicy().hasHeightForWidth()) + self.duedate.setSizePolicy(sizePolicy) + self.duedate.setMinimumSize(QtCore.QSize(130, 0)) + self.duedate.setMaximumSize(QtCore.QSize(100, 16777215)) + self.duedate.setBaseSize(QtCore.QSize(70, 0)) + self.duedate.setObjectName("duedate") + self.horizontalLayout_4.addWidget(self.duedate) + spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum) + self.horizontalLayout_4.addItem(spacerItem) + self.gridLayout.addLayout(self.horizontalLayout_4, 5, 1, 1, 1) + self.label_3 = QtWidgets.QLabel(parent=self.centralwidget) + self.label_3.setObjectName("label_3") + self.gridLayout.addWidget(self.label_3, 3, 0, 1, 1) + self.label_6 = QtWidgets.QLabel(parent=self.centralwidget) + self.label_6.setAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignLeft|QtCore.Qt.AlignmentFlag.AlignVCenter) + self.label_6.setObjectName("label_6") + self.gridLayout.addWidget(self.label_6, 5, 0, 1, 1) + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setObjectName("horizontalLayout") + self.label_5 = QtWidgets.QLabel(parent=self.centralwidget) + font = QtGui.QFont() + font.setPointSize(14) + font.setBold(True) + self.label_5.setFont(font) + self.label_5.setObjectName("label_5") + self.horizontalLayout.addWidget(self.label_5) + self.mode = QtWidgets.QLabel(parent=self.centralwidget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Fixed, QtWidgets.QSizePolicy.Policy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.mode.sizePolicy().hasHeightForWidth()) + self.mode.setSizePolicy(sizePolicy) + self.mode.setMinimumSize(QtCore.QSize(62, 0)) + self.mode.setMaximumSize(QtCore.QSize(62, 16777215)) + self.mode.setBaseSize(QtCore.QSize(62, 0)) + self.mode.setAutoFillBackground(False) + self.mode.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel) + self.mode.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken) + self.mode.setLineWidth(2) + self.mode.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) + self.mode.setObjectName("mode") + self.horizontalLayout.addWidget(self.mode) + self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 1) + self.label = QtWidgets.QLabel(parent=self.centralwidget) + self.label.setObjectName("label") + self.gridLayout.addWidget(self.label, 1, 0, 1, 1) + self.input_username = QtWidgets.QLineEdit(parent=self.centralwidget) + self.input_username.setObjectName("input_username") + self.gridLayout.addWidget(self.input_username, 2, 1, 1, 1) + self.input_file_ident = QtWidgets.QLineEdit(parent=self.centralwidget) + self.input_file_ident.setObjectName("input_file_ident") + self.gridLayout.addWidget(self.input_file_ident, 3, 1, 1, 1) + self.horizontalLayout_3 = QtWidgets.QHBoxLayout() + self.horizontalLayout_3.setObjectName("horizontalLayout_3") + spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum) + self.horizontalLayout_3.addItem(spacerItem1) + self.btn_createNewUser = QtWidgets.QPushButton(parent=self.centralwidget) + self.btn_createNewUser.setObjectName("btn_createNewUser") + self.horizontalLayout_3.addWidget(self.btn_createNewUser) + self.gridLayout.addLayout(self.horizontalLayout_3, 0, 1, 1, 1) + self.label_2 = QtWidgets.QLabel(parent=self.centralwidget) + self.label_2.setObjectName("label_2") + self.gridLayout.addWidget(self.label_2, 2, 0, 1, 1) + self.input_userno = QtWidgets.QLineEdit(parent=self.centralwidget) + self.input_userno.setObjectName("input_userno") + self.gridLayout.addWidget(self.input_userno, 1, 1, 1, 1) + self.verticalLayout.addLayout(self.gridLayout) + self.groupBox = QtWidgets.QGroupBox(parent=self.centralwidget) + self.groupBox.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) + self.groupBox.setObjectName("groupBox") + self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.groupBox) + self.horizontalLayout_2.setObjectName("horizontalLayout_2") + self.userdata = QtWidgets.QTextEdit(parent=self.groupBox) + font = QtGui.QFont() + font.setFamily("Arial") + font.setPointSize(11) + font.setBold(True) + self.userdata.setFont(font) + self.userdata.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) + self.userdata.setReadOnly(True) + self.userdata.setObjectName("userdata") + self.horizontalLayout_2.addWidget(self.userdata) + self.groupBox_2 = QtWidgets.QGroupBox(parent=self.groupBox) + self.groupBox_2.setObjectName("groupBox_2") + self.gridLayout_2 = QtWidgets.QGridLayout(self.groupBox_2) + self.gridLayout_2.setObjectName("gridLayout_2") + self.btn_show_lentmedia = QtWidgets.QPushButton(parent=self.groupBox_2) + self.btn_show_lentmedia.setFocusPolicy(QtCore.Qt.FocusPolicy.ClickFocus) + self.btn_show_lentmedia.setText("") + self.btn_show_lentmedia.setObjectName("btn_show_lentmedia") + self.gridLayout_2.addWidget(self.btn_show_lentmedia, 0, 1, 1, 1) + self.label_4 = QtWidgets.QLabel(parent=self.groupBox_2) + self.label_4.setAlignment(QtCore.Qt.AlignmentFlag.AlignRight|QtCore.Qt.AlignmentFlag.AlignTrailing|QtCore.Qt.AlignmentFlag.AlignVCenter) + self.label_4.setObjectName("label_4") + self.gridLayout_2.addWidget(self.label_4, 0, 0, 1, 1) + self.label_7 = QtWidgets.QLabel(parent=self.groupBox_2) + self.label_7.setObjectName("label_7") + self.gridLayout_2.addWidget(self.label_7, 1, 0, 1, 1) + self.nextReturnDate = QtWidgets.QLabel(parent=self.groupBox_2) + self.nextReturnDate.setText("") + self.nextReturnDate.setObjectName("nextReturnDate") + self.gridLayout_2.addWidget(self.nextReturnDate, 1, 1, 1, 1) + self.horizontalLayout_2.addWidget(self.groupBox_2) + self.horizontalLayout_2.setStretch(0, 3) + self.horizontalLayout_2.setStretch(1, 1) + self.verticalLayout.addWidget(self.groupBox) + self.mediaOverview = QtWidgets.QTableWidget(parent=self.centralwidget) + self.mediaOverview.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) + self.mediaOverview.setObjectName("mediaOverview") + self.mediaOverview.setColumnCount(3) + self.mediaOverview.setRowCount(0) + item = QtWidgets.QTableWidgetItem() + self.mediaOverview.setHorizontalHeaderItem(0, item) + item = QtWidgets.QTableWidgetItem() + self.mediaOverview.setHorizontalHeaderItem(1, item) + item = QtWidgets.QTableWidgetItem() + self.mediaOverview.setHorizontalHeaderItem(2, item) + self.verticalLayout.addWidget(self.mediaOverview) + self.verticalLayout.setStretch(1, 10) + self.verticalLayout.setStretch(2, 20) + MainWindow.setCentralWidget(self.centralwidget) + self.menubar = QtWidgets.QMenuBar(parent=MainWindow) + self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 22)) + self.menubar.setObjectName("menubar") + self.menuDatei = QtWidgets.QMenu(parent=self.menubar) + self.menuDatei.setObjectName("menuDatei") + self.menuHotkeys = QtWidgets.QMenu(parent=self.menubar) + self.menuHotkeys.setObjectName("menuHotkeys") + self.menuFenster = QtWidgets.QMenu(parent=self.menubar) + self.menuFenster.setObjectName("menuFenster") + MainWindow.setMenuBar(self.menubar) + self.statusbar = QtWidgets.QStatusBar(parent=MainWindow) + self.statusbar.setObjectName("statusbar") + MainWindow.setStatusBar(self.statusbar) + self.actionEinstellungen = QtGui.QAction(parent=MainWindow) + self.actionEinstellungen.setObjectName("actionEinstellungen") + self.actionBeenden = QtGui.QAction(parent=MainWindow) + self.actionBeenden.setObjectName("actionBeenden") + self.actionRueckgabemodus = QtGui.QAction(parent=MainWindow) + self.actionRueckgabemodus.setObjectName("actionRueckgabemodus") + self.actionNutzer = QtGui.QAction(parent=MainWindow) + self.actionNutzer.setObjectName("actionNutzer") + self.actionNutzer_2 = QtGui.QAction(parent=MainWindow) + self.actionNutzer_2.setObjectName("actionNutzer_2") + self.actionAusleihistorie = QtGui.QAction(parent=MainWindow) + self.actionAusleihistorie.setObjectName("actionAusleihistorie") + self.actionBericht_erstellen = QtGui.QAction(parent=MainWindow) + self.actionBericht_erstellen.setObjectName("actionBericht_erstellen") + self.actionNutzer_3 = QtGui.QAction(parent=MainWindow) + self.actionNutzer_3.setObjectName("actionNutzer_3") + self.menuDatei.addAction(self.actionEinstellungen) + self.menuDatei.addAction(self.actionBeenden) + self.menuHotkeys.addAction(self.actionRueckgabemodus) + self.menuFenster.addAction(self.actionNutzer) + self.menuFenster.addAction(self.actionAusleihistorie) + self.menuFenster.addAction(self.actionBericht_erstellen) + self.menubar.addAction(self.menuDatei.menuAction()) + self.menubar.addAction(self.menuHotkeys.menuAction()) + self.menubar.addAction(self.menuFenster.menuAction()) + + self.retranslateUi(MainWindow) + self.actionBeenden.triggered.connect(MainWindow.close) # type: ignore + QtCore.QMetaObject.connectSlotsByName(MainWindow) + MainWindow.setTabOrder(self.btn_createNewUser, self.input_userno) + MainWindow.setTabOrder(self.input_userno, self.input_username) + MainWindow.setTabOrder(self.input_username, self.input_file_ident) + + def retranslateUi(self, MainWindow): + _translate = QtCore.QCoreApplication.translate + MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) + self.label_3.setText(_translate("MainWindow", "Signatur")) + self.label_6.setText(_translate("MainWindow", "Ausleihe bis")) + self.label_5.setText(_translate("MainWindow", "Modus")) + self.mode.setText(_translate("MainWindow", "Rückgabe")) + self.label.setText(_translate("MainWindow", "Matrikelnummer")) + self.btn_createNewUser.setText(_translate("MainWindow", "Neuen Nutzer anlegen")) + self.label_2.setText(_translate("MainWindow", "Benutzername")) + self.groupBox.setTitle(_translate("MainWindow", "Nutzerdaten")) + self.groupBox_2.setTitle(_translate("MainWindow", "Ausleihdaten")) + self.label_4.setText(_translate("MainWindow", "Anzahl Ausleihen")) + self.label_7.setText(_translate("MainWindow", "Nächstes Rückgabedatum")) + item = self.mediaOverview.horizontalHeaderItem(0) + item.setText(_translate("MainWindow", "Signatur")) + item = self.mediaOverview.horizontalHeaderItem(1) + item.setText(_translate("MainWindow", "Titel")) + item = self.mediaOverview.horizontalHeaderItem(2) + item.setText(_translate("MainWindow", "Status")) + self.menuDatei.setTitle(_translate("MainWindow", "Datei")) + self.menuHotkeys.setTitle(_translate("MainWindow", "Hotkeys")) + self.menuFenster.setTitle(_translate("MainWindow", "Fenster")) + self.actionEinstellungen.setText(_translate("MainWindow", "Einstellungen")) + self.actionBeenden.setText(_translate("MainWindow", "Beenden")) + self.actionRueckgabemodus.setText(_translate("MainWindow", "Rückgabemodus")) + self.actionRueckgabemodus.setShortcut(_translate("MainWindow", "F5")) + self.actionNutzer.setText(_translate("MainWindow", "Nutzer")) + self.actionNutzer.setShortcut(_translate("MainWindow", "F6")) + self.actionNutzer_2.setText(_translate("MainWindow", "Nutzer")) + self.actionAusleihistorie.setText(_translate("MainWindow", "Ausleihhistorie")) + self.actionAusleihistorie.setShortcut(_translate("MainWindow", "F8")) + self.actionBericht_erstellen.setText(_translate("MainWindow", "Bericht erstellen")) + self.actionBericht_erstellen.setShortcut(_translate("MainWindow", "F7")) + self.actionNutzer_3.setText(_translate("MainWindow", "Nutzer")) diff --git a/src/ui/sources/main_userData_ui.py b/src/ui/sources/main_userData_ui.py new file mode 100644 index 0000000..4db4c87 --- /dev/null +++ b/src/ui/sources/main_userData_ui.py @@ -0,0 +1,197 @@ +# Form implementation generated from reading ui file '/home/alexander/GitHub/LibrarySystem/src/ui/sources/main_userData.ui' +# +# Created by: PyQt6 UI code generator 6.7.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_MainWindow(object): + def setupUi(self, MainWindow): + MainWindow.setObjectName("MainWindow") + MainWindow.setWindowModality(QtCore.Qt.WindowModality.WindowModal) + MainWindow.resize(800, 600) + self.centralwidget = QtWidgets.QWidget(parent=MainWindow) + self.centralwidget.setObjectName("centralwidget") + self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget) + self.verticalLayout.setObjectName("verticalLayout") + self.gridLayout = QtWidgets.QGridLayout() + self.gridLayout.setObjectName("gridLayout") + self.frame = QtWidgets.QFrame(parent=self.centralwidget) + self.frame.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel) + self.frame.setFrameShadow(QtWidgets.QFrame.Shadow.Raised) + self.frame.setObjectName("frame") + self.horizontalLayout = QtWidgets.QHBoxLayout(self.frame) + self.horizontalLayout.setObjectName("horizontalLayout") + spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum) + self.horizontalLayout.addItem(spacerItem) + self.btn_userChange_save = QtWidgets.QPushButton(parent=self.frame) + self.btn_userChange_save.setStatusTip("") + self.btn_userChange_save.setObjectName("btn_userChange_save") + self.horizontalLayout.addWidget(self.btn_userChange_save) + self.btn_userchange_cancel = QtWidgets.QPushButton(parent=self.frame) + self.btn_userchange_cancel.setObjectName("btn_userchange_cancel") + self.horizontalLayout.addWidget(self.btn_userchange_cancel) + spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum) + self.horizontalLayout.addItem(spacerItem1) + self.gridLayout.addWidget(self.frame, 3, 1, 1, 1) + self.label = QtWidgets.QLabel(parent=self.centralwidget) + self.label.setObjectName("label") + self.gridLayout.addWidget(self.label, 0, 0, 1, 1) + self.user_no = QtWidgets.QLineEdit(parent=self.centralwidget) + self.user_no.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) + self.user_no.setReadOnly(True) + self.user_no.setObjectName("user_no") + self.gridLayout.addWidget(self.user_no, 1, 1, 1, 1) + self.label_3 = QtWidgets.QLabel(parent=self.centralwidget) + self.label_3.setObjectName("label_3") + self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1) + self.name = QtWidgets.QLineEdit(parent=self.centralwidget) + self.name.setObjectName("name") + self.gridLayout.addWidget(self.name, 0, 1, 1, 1) + self.label_2 = QtWidgets.QLabel(parent=self.centralwidget) + self.label_2.setObjectName("label_2") + self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1) + self.mail = QtWidgets.QLineEdit(parent=self.centralwidget) + self.mail.setObjectName("mail") + self.gridLayout.addWidget(self.mail, 2, 1, 1, 1) + self.horizontalLayout_4 = QtWidgets.QHBoxLayout() + self.horizontalLayout_4.setObjectName("horizontalLayout_4") + self.label_5 = QtWidgets.QLabel(parent=self.centralwidget) + self.label_5.setObjectName("label_5") + self.horizontalLayout_4.addWidget(self.label_5) + self.deleteUser = QtWidgets.QToolButton(parent=self.centralwidget) + self.deleteUser.setMinimumSize(QtCore.QSize(30, 30)) + self.deleteUser.setText("") + self.deleteUser.setObjectName("deleteUser") + self.horizontalLayout_4.addWidget(self.deleteUser) + self.gridLayout.addLayout(self.horizontalLayout_4, 3, 0, 1, 1) + self.verticalLayout.addLayout(self.gridLayout) + self.line = QtWidgets.QFrame(parent=self.centralwidget) + self.line.setFrameShape(QtWidgets.QFrame.Shape.HLine) + self.line.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken) + self.line.setObjectName("line") + self.verticalLayout.addWidget(self.line) + self.label_4 = QtWidgets.QLabel(parent=self.centralwidget) + font = QtGui.QFont() + font.setPointSize(12) + self.label_4.setFont(font) + self.label_4.setObjectName("label_4") + self.verticalLayout.addWidget(self.label_4) + self.horizontalLayout_2 = QtWidgets.QHBoxLayout() + self.horizontalLayout_2.setObjectName("horizontalLayout_2") + self.radio_allLoanedMedia = QtWidgets.QRadioButton(parent=self.centralwidget) + self.radio_allLoanedMedia.setChecked(False) + self.radio_allLoanedMedia.setObjectName("radio_allLoanedMedia") + self.horizontalLayout_2.addWidget(self.radio_allLoanedMedia) + self.radio_currentlyLoaned = QtWidgets.QRadioButton(parent=self.centralwidget) + self.radio_currentlyLoaned.setChecked(True) + self.radio_currentlyLoaned.setObjectName("radio_currentlyLoaned") + self.horizontalLayout_2.addWidget(self.radio_currentlyLoaned) + self.radio_overdueLoans = QtWidgets.QRadioButton(parent=self.centralwidget) + self.radio_overdueLoans.setObjectName("radio_overdueLoans") + self.horizontalLayout_2.addWidget(self.radio_overdueLoans) + spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum) + self.horizontalLayout_2.addItem(spacerItem2) + self.verticalLayout.addLayout(self.horizontalLayout_2) + self.horizontalLayout_3 = QtWidgets.QHBoxLayout() + self.horizontalLayout_3.setObjectName("horizontalLayout_3") + self.searchbox = QtWidgets.QLineEdit(parent=self.centralwidget) + self.searchbox.setObjectName("searchbox") + self.horizontalLayout_3.addWidget(self.searchbox) + self.searchfilter = QtWidgets.QComboBox(parent=self.centralwidget) + self.searchfilter.setObjectName("searchfilter") + self.searchfilter.addItem("") + self.searchfilter.addItem("") + self.horizontalLayout_3.addWidget(self.searchfilter) + spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum) + self.horizontalLayout_3.addItem(spacerItem3) + self.btn_extendSelectedMedia = QtWidgets.QPushButton(parent=self.centralwidget) + self.btn_extendSelectedMedia.setEnabled(False) + self.btn_extendSelectedMedia.setObjectName("btn_extendSelectedMedia") + self.horizontalLayout_3.addWidget(self.btn_extendSelectedMedia) + self.verticalLayout.addLayout(self.horizontalLayout_3) + self.UserMediaTable = QtWidgets.QTableWidget(parent=self.centralwidget) + self.UserMediaTable.setMouseTracking(True) + self.UserMediaTable.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) + self.UserMediaTable.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarPolicy.ScrollBarAlwaysOff) + self.UserMediaTable.setEditTriggers(QtWidgets.QAbstractItemView.EditTrigger.NoEditTriggers) + self.UserMediaTable.setAlternatingRowColors(True) + self.UserMediaTable.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectionBehavior.SelectRows) + self.UserMediaTable.setObjectName("UserMediaTable") + self.UserMediaTable.setColumnCount(6) + self.UserMediaTable.setRowCount(0) + item = QtWidgets.QTableWidgetItem() + self.UserMediaTable.setHorizontalHeaderItem(0, item) + item = QtWidgets.QTableWidgetItem() + self.UserMediaTable.setHorizontalHeaderItem(1, item) + item = QtWidgets.QTableWidgetItem() + self.UserMediaTable.setHorizontalHeaderItem(2, item) + item = QtWidgets.QTableWidgetItem() + self.UserMediaTable.setHorizontalHeaderItem(3, item) + item = QtWidgets.QTableWidgetItem() + self.UserMediaTable.setHorizontalHeaderItem(4, item) + item = QtWidgets.QTableWidgetItem() + self.UserMediaTable.setHorizontalHeaderItem(5, item) + self.UserMediaTable.horizontalHeader().setDefaultSectionSize(156) + self.UserMediaTable.horizontalHeader().setMinimumSectionSize(43) + self.UserMediaTable.horizontalHeader().setSortIndicatorShown(True) + self.UserMediaTable.verticalHeader().setDefaultSectionSize(31) + self.UserMediaTable.verticalHeader().setMinimumSectionSize(25) + self.verticalLayout.addWidget(self.UserMediaTable) + MainWindow.setCentralWidget(self.centralwidget) + self.menubar = QtWidgets.QMenuBar(parent=MainWindow) + self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 22)) + self.menubar.setObjectName("menubar") + MainWindow.setMenuBar(self.menubar) + self.statusbar = QtWidgets.QStatusBar(parent=MainWindow) + self.statusbar.setSizeGripEnabled(True) + self.statusbar.setObjectName("statusbar") + MainWindow.setStatusBar(self.statusbar) + + self.retranslateUi(MainWindow) + QtCore.QMetaObject.connectSlotsByName(MainWindow) + MainWindow.setTabOrder(self.name, self.mail) + MainWindow.setTabOrder(self.mail, self.btn_userChange_save) + MainWindow.setTabOrder(self.btn_userChange_save, self.btn_userchange_cancel) + MainWindow.setTabOrder(self.btn_userchange_cancel, self.radio_allLoanedMedia) + MainWindow.setTabOrder(self.radio_allLoanedMedia, self.radio_currentlyLoaned) + MainWindow.setTabOrder(self.radio_currentlyLoaned, self.radio_overdueLoans) + MainWindow.setTabOrder(self.radio_overdueLoans, self.searchbox) + MainWindow.setTabOrder(self.searchbox, self.searchfilter) + MainWindow.setTabOrder(self.searchfilter, self.btn_extendSelectedMedia) + MainWindow.setTabOrder(self.btn_extendSelectedMedia, self.UserMediaTable) + MainWindow.setTabOrder(self.UserMediaTable, self.user_no) + + def retranslateUi(self, MainWindow): + _translate = QtCore.QCoreApplication.translate + MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) + self.btn_userChange_save.setText(_translate("MainWindow", "Speichern")) + self.btn_userchange_cancel.setText(_translate("MainWindow", "Abbrechen")) + self.label.setText(_translate("MainWindow", "Name, Vorname")) + self.label_3.setText(_translate("MainWindow", "Mail")) + self.label_2.setText(_translate("MainWindow", "Matrikelnummer")) + self.label_5.setText(_translate("MainWindow", "Nutzer Löschen")) + self.label_4.setText(_translate("MainWindow", "Medien")) + self.radio_allLoanedMedia.setText(_translate("MainWindow", "Alle Ausleihen")) + self.radio_currentlyLoaned.setText(_translate("MainWindow", "Aktuell entliehen")) + self.radio_overdueLoans.setText(_translate("MainWindow", "Überzogen")) + self.searchfilter.setItemText(0, _translate("MainWindow", "Titel")) + self.searchfilter.setItemText(1, _translate("MainWindow", "Signatur")) + self.btn_extendSelectedMedia.setText(_translate("MainWindow", "Ausgewählte Verlängern")) + self.UserMediaTable.setSortingEnabled(True) + item = self.UserMediaTable.horizontalHeaderItem(0) + item.setText(_translate("MainWindow", "ISBN")) + item = self.UserMediaTable.horizontalHeaderItem(1) + item.setText(_translate("MainWindow", "Signatur")) + item = self.UserMediaTable.horizontalHeaderItem(2) + item.setText(_translate("MainWindow", "Titel")) + item = self.UserMediaTable.horizontalHeaderItem(3) + item.setText(_translate("MainWindow", "entliehen am")) + item = self.UserMediaTable.horizontalHeaderItem(4) + item.setText(_translate("MainWindow", "entliehen bis")) + item = self.UserMediaTable.horizontalHeaderItem(5) + item.setText(_translate("MainWindow", "Rückgabe am")) diff --git a/test.py b/test.py new file mode 100644 index 0000000..600f768 --- /dev/null +++ b/test.py @@ -0,0 +1,4 @@ +from src.ui.loans import launch + + +launch() \ No newline at end of file