diff --git a/docs/Ausleihhistorie.md b/docs/Ausleihhistorie.md
new file mode 100644
index 0000000..8a9fd77
--- /dev/null
+++ b/docs/Ausleihhistorie.md
@@ -0,0 +1,15 @@
+# Ausleihhistorie
+
+
+!!! info
+
+ Die Ausleihhistorie kann vom Ausleihsystem immer aufgerufen werden. Dazu kann man entweder das Menu öffnen (Fenster -> Ausleihhistorie) oder den festgelegten Shortcut verwenden.
+
+# Bedienung
+Hier werden alle Medien angezeigt.
+Über die Filter kann man gezielt
+ - alle Ausleihen
+ - aktuell entliehene Medien
+ - überzogene Medien
+anzeigen.
+Zudem kann man mithilfe der Eingabezeile unter den Filteroptionen gezielt nach einem Titel, Nutzer oder einer Signatur gesucht werden.
\ No newline at end of file
diff --git a/docs/Ausleihsystem.md b/docs/Ausleihsystem.md
new file mode 100644
index 0000000..08246b8
--- /dev/null
+++ b/docs/Ausleihsystem.md
@@ -0,0 +1,47 @@
+# Ausleihsystem
+
+
+
+## Oberfläche
+
+
+
+Die Oberfläche kann generell in drei Bereiche unterteilt werden:
+ - Konto und Ausleihe
+ - Nutzerdaten
+ - Historie
+
+### Konto und Ausleihe
+
+Hier werden die Kontodaten und die Ausleihen angezeigt.
+Der Bereich beschränkt sich auf folgende Inhalte:
+
+
+Hier werden folgende Daten angezeigt
+
+- Modus: entweder "Ausleihe" oder "Rückgabe" (1)
+- Matrikelnummer: die Matrikelnummer des Nutzers, um das Konto zu öffnen (3)
+- Benutzername: der Benutzername des Nutzers (3)
+- Signatur: die Signatur des Mediums, welches entliehen oder zurückgegeben wird (4)
+- Ausleihe bis: bis wann das Medium ausgeliehen wird, Zeitraum wird in den Einstellungen angepasst
+- Nutzer anlegen: ein Knopf, um einen neuen Nutzer anzulegen (2)
+
+### Nutzerdaten
+Hier werden die Nutzerdaten angezeigt. Vorraussetzung ist, dass ein Nutzer angelegt und geöffnet wurde, oder dass ein Medium zurückgegeben wurde.
+Dieser Bereich beschränkt sich auf folgende Inhalte:
+
+
+
+- Das Feld Nutzerdaten (6)beinhaltet
+ - Namen
+ - Matrikelnummer
+ - E-Mail
+- Das Feld Ausleihdaten beinhaltet:
+ - Anzahl Ausleihen (5) : ein klickbares Feld, welches die Anzahl der Ausleihen anzeigt. Beim Klick wird die Übersicht des aktiven Nutzers angezeigt.
+ - Nächstes Rückgabedatum (wird angezeigt wenn ein Nutzer (mehr als) eine Ausleihe hat und ein Medium zurückgegeben wurde oder ein Nutzer geöffnet wird)
+
+### Historie (7)
+Das Feld der Historie listet alle Medien auf, die im aktiven Prozess ausgeliehen oder zurückgegeben wurden.
+
+
+
diff --git a/docs/Bericht erstellen.md b/docs/Bericht erstellen.md
new file mode 100644
index 0000000..76522fe
--- /dev/null
+++ b/docs/Bericht erstellen.md
@@ -0,0 +1,27 @@
+# Bericht erstellen
+
+
+
+## Information
+Diese Oberfläche kann immer von der [Hauptoberfläche](Ausleihsystem.md) geöffnet werden. Hierzu entweder
+`Fenster -> Bericht erstellen` oder den Shortcut F7 verwenden
+
+
+## Bericht generieren
+
+Um einen Bericht zu erstellen, müssen folgende Kriterien erfüllt sein:
+
+- Zeitspanne festgelegt (Entweder über den Slider, oder über die Woche / Monat / Jahr Knöpfe)
+- Datenformat ausgewählt
+
+Nachdem diese Kriterien erfüllt sind, kann der Bericht über den Knopf `Bericht erstellen` erstellt werden. Der Bericht wird erstellt, bei größeren Datensätzen kann es länger dauern, eine Fortschrittsanzeige gibt an, wie weit der Prozess ist.
+
+Wurde der Bericht erfolgreich erstellt, sieht die Oberfläche wie folgt aus:
+
+
+
+Über einen Klick auf `Report` wird die entsprechende Datei geöffnet.
+
+!!! info
+
+ Text öffnet das Notepad, Excel öffnet Excel
\ No newline at end of file
diff --git a/docs/Einstellungen.md b/docs/Einstellungen.md
new file mode 100644
index 0000000..19d3963
--- /dev/null
+++ b/docs/Einstellungen.md
@@ -0,0 +1,21 @@
+# Einstellungen
+
+
+## Bedienung
+Hier werden die Einstellungen geändert. Sobald ein Wert geändert wird, ist es möglich die Einstellungen rückgängig zu machen, oder die Änderungen zu speichern.
+
+## Besonderheiten
+Der Knopf neben Speicherort, Datenbankname, Sicherungspfad und Speicherpfad kann verwendet werden, um den Pfad gezielt zu setzen.
+
+Beim Datenbanknamen wird allerdings nur der Name der Datenbank übernommen
+
+## Hinweis
+
+Einige Aktionen (bspw. Änderungen der Shortcuts) erfordern einen Neustart der Anwendung. Dies wird beim Speichern der Einstellungen mit folgendem Dialog dargestelt:
+
+
+
+Im Anschluss an diesen Dialog erscheint ein neuer Dialog:
+
+
+
diff --git a/docs/Nutzer anlegen.md b/docs/Nutzer anlegen.md
new file mode 100644
index 0000000..56eb6cd
--- /dev/null
+++ b/docs/Nutzer anlegen.md
@@ -0,0 +1,18 @@
+# Nutzer anlegen
+
+
+
+## Information
+Diese Oberfläche kann nur geöffnet werden, wenn die [Hauptoberfläche](Ausleihsystem.md) geöffnet ist. Hierzu muss bei dieser auf folgenden Knopf gedrückt werden:
+
+
+## Bedienung
+Um einen Nutzer anzulegen, müssen alle Angaben korrekt ausgefüllt sein.
+### Limitierungen
+Folgende Regeln sind zwingend einzuhalten:
+- Nachname, Vorname muss mit `, ` getrennt sein
+- Matrikelnummer darf nicht länger als 20 Zeichen sein und nur Nummern enthalten
+- Mail muss einem validen Schema entsprechen (s. Bild)
+
+Nachdem alle Kriterien erfüllt sind, kann der Knopf `Save` angeklickt werden. Der Nutzer wird gespeichert und in der [Hauptoberfläche](Ausleihsystem.md) geöffnet.
+
diff --git a/docs/Nutzeroberfläche.md b/docs/Nutzeroberfläche.md
new file mode 100644
index 0000000..a3f1564
--- /dev/null
+++ b/docs/Nutzeroberfläche.md
@@ -0,0 +1,31 @@
+# Nutzerdatenfenster
+
+
+!!! info
+ Die Nutzeroberfläche kann nur geöffnet werden, wenn ein Nutzer offen ist. Ansonsten wird ein Fehler angezeigt. (s. unten)
+
+
+
+# Bedeutung der Felder
+- (1) Nutzerdaten:
+
+ Name des Nutzers, Matrikelnummer, E-Mail
+ Wird eine Angabe geändert, erscheint Feld (3) um diese Angaben entweder zu speichern oder um die Änderungen rückgängig zu machen.
+
+- (2) Nutzer Löschen:
+
+ Mit dem Klick auf den Mülleimer wird der Nutzer gelöscht. Alle zugewiesenen Ausleihen werden in der [Ausleihhistorie](Ausleihhistorie.md) mit den Nutzerkonto `gelöscht` angezeigt.
+
+- (4) Medien:
+
+ Umfasst unter anderem Feld (5), welches ein neues Fenster zum [verlängern](ausleihe verlängern.md) der Ausleihe öffnet.
+ Mit einem Klick auf
+ - Alle Ausleihen
+ - Aktuell entliehen
+ - Überzogen
+werden die Einträge der Tabelle gefiltert. Zusätzlich kann mithilfe der Eingabezeile unter den Filteroptionen gezielt nach einem Titel oder einer Signatur gesucht werden.
+
+- (5) Verlängern:
+
+ Um Medien zu verlängern, müssen diese in der Tabelle angeklickt werden. Mit Strg können mehrere Medien gleichzeitig ausgewählt und verlängert werden. Hierzu wird ein neues Fenster geöffnet, siehe [Ausleihe verlängern](ausleihe verlängern.md).
+
diff --git a/docs/ausleihe verlängern.md b/docs/ausleihe verlängern.md
new file mode 100644
index 0000000..6f79498
--- /dev/null
+++ b/docs/ausleihe verlängern.md
@@ -0,0 +1,9 @@
+# Medien verlängern
+
+
+## Information
+Die Ausleihe verlängern kann nur geöffnet werden, wenn ein Nutzer offen ist.
+
+Diese Oberfläche erlaubt es, eine oder mehrere Medien zu verlängern. Hierzu muss ein neues, in der Zukunft liegendes Datum ausgewählt und mit OK bestätigt werden.
+
+In der Datenbank wird nun das neue Datum gespeichert und die Einträge in der Tabelle werden aktualisiert.
\ No newline at end of file
diff --git a/docs/images/add_user.png b/docs/images/add_user.png
new file mode 100644
index 0000000..a322daf
Binary files /dev/null and b/docs/images/add_user.png differ
diff --git a/docs/images/createUser.png b/docs/images/createUser.png
new file mode 100644
index 0000000..4fdec9f
Binary files /dev/null and b/docs/images/createUser.png differ
diff --git a/docs/images/err_nouser.png b/docs/images/err_nouser.png
new file mode 100644
index 0000000..fd10a9d
Binary files /dev/null and b/docs/images/err_nouser.png differ
diff --git a/docs/images/extend.png b/docs/images/extend.png
new file mode 100644
index 0000000..3103f64
Binary files /dev/null and b/docs/images/extend.png differ
diff --git a/docs/images/generateReport.png b/docs/images/generateReport.png
new file mode 100644
index 0000000..2ee367a
Binary files /dev/null and b/docs/images/generateReport.png differ
diff --git a/docs/images/generatedReport.png b/docs/images/generatedReport.png
new file mode 100644
index 0000000..6122367
Binary files /dev/null and b/docs/images/generatedReport.png differ
diff --git a/docs/images/loanhistory.png b/docs/images/loanhistory.png
new file mode 100644
index 0000000..cb03be1
Binary files /dev/null and b/docs/images/loanhistory.png differ
diff --git a/docs/images/main_ktoarea.png b/docs/images/main_ktoarea.png
new file mode 100644
index 0000000..1ff5e41
Binary files /dev/null and b/docs/images/main_ktoarea.png differ
diff --git a/docs/images/main_marked areas.png b/docs/images/main_marked areas.png
new file mode 100644
index 0000000..8ff89d8
Binary files /dev/null and b/docs/images/main_marked areas.png differ
diff --git a/docs/images/main_no_user.png b/docs/images/main_no_user.png
new file mode 100644
index 0000000..e283cd3
Binary files /dev/null and b/docs/images/main_no_user.png differ
diff --git a/docs/images/main_user_active.png b/docs/images/main_user_active.png
new file mode 100644
index 0000000..f13e02a
Binary files /dev/null and b/docs/images/main_user_active.png differ
diff --git a/docs/images/main_userdata.png b/docs/images/main_userdata.png
new file mode 100644
index 0000000..41a6bf8
Binary files /dev/null and b/docs/images/main_userdata.png differ
diff --git a/docs/images/restart.png b/docs/images/restart.png
new file mode 100644
index 0000000..249f44d
Binary files /dev/null and b/docs/images/restart.png differ
diff --git a/docs/images/settings.png b/docs/images/settings.png
new file mode 100644
index 0000000..4e69c82
Binary files /dev/null and b/docs/images/settings.png differ
diff --git a/docs/images/settings_changed_restart.png b/docs/images/settings_changed_restart.png
new file mode 100644
index 0000000..cc3b71d
Binary files /dev/null and b/docs/images/settings_changed_restart.png differ
diff --git a/docs/images/user_main.png b/docs/images/user_main.png
new file mode 100644
index 0000000..fd55dc5
Binary files /dev/null and b/docs/images/user_main.png differ
diff --git a/docs/index.md b/docs/index.md
new file mode 100644
index 0000000..3f3d567
--- /dev/null
+++ b/docs/index.md
@@ -0,0 +1,20 @@
+# Übersicht
+
+!!! info
+
+ Einige Knöpfe sind auf Englisch. Diese Einstellung kann ich leider nicht ändern, da diese Übersetzung von der Anwendung automatisch ausgeführt werden
+
+
+## [Hauptoberfläche](Ausleihsystem.md)
+Die Hauptoberfläche wird angezeigt, wenn die Anwendung gestartet wird.
+Von hier aus können Nutzer angelegt und bearbeitet werden, Medien ausgeliehen und zurückgegeben werden, sowie verschiedene Unterbereiche anzeigen.
+
+Unterbereiche umfassen:
+
+- [Nutzerdaten](Nutzeroberfläche.md) - Daten für den aktuellen Nutzer anzeigen und bearbeiten
+- [Nutzer anlegen](Nutzer anlegen.md) - Neuen Nutzer anlegen
+- [Ausleihhistorie](Ausleihhistorie.md) - Historie der Ausleihen
+- [Bericht erstellen](Bericht erstellen.md) - Bericht für einen festgelegten Zeitrahmen erstellen
+- [Einstellungen](Einstellungen.md)
+
+## Navigation
diff --git a/docs/shortcuts.md b/docs/shortcuts.md
new file mode 100644
index 0000000..9368ebe
--- /dev/null
+++ b/docs/shortcuts.md
@@ -0,0 +1,16 @@
+# Shortcuts
+
+!!! info
+
+ Die Shortcuts können für die Anwendung manuell festgelegt werden.
+ Dafür in den [Einstellungen](Einstellungen.md) unter Shortcuts den neuen Shortcut eingeben und speichern
+
+Standardmäßig sind die Shortcuts wie folgt festgelegt:
+
+| Shortcut | Standard |
+| ------- | -------- |
+| Ausleihhistorie | F7 |
+| Bericht erstellen | F6 |
+| Hilfe | F1 |
+| Nutzer | F5 |
+| Rückgabemodus | F8 |
diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css
new file mode 100644
index 0000000..dd4026f
--- /dev/null
+++ b/docs/stylesheets/extra.css
@@ -0,0 +1,5 @@
+.md-typeset .admonition,
+.md-typeset details {
+ border-width: 0;
+ border-left-width: 4px;
+}
\ No newline at end of file
diff --git a/icons/icons.yaml b/icons/icons.yaml
index 1dc2e7c..2c9a3d1 100644
--- a/icons/icons.yaml
+++ b/icons/icons.yaml
@@ -15,3 +15,4 @@ icons:
user: user.svg
warning: warning.svg
delete: delete.svg
+ restart: restart.svg
diff --git a/icons/restart.svg b/icons/restart.svg
new file mode 100644
index 0000000..8fa96d4
--- /dev/null
+++ b/icons/restart.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/mkdocs.yml b/mkdocs.yml
new file mode 100644
index 0000000..52fbb20
--- /dev/null
+++ b/mkdocs.yml
@@ -0,0 +1,30 @@
+site_name: LibrarySystem
+theme:
+ features:
+ - search.suggest
+ - search.highlight
+ name: material
+ icon:
+ admonition:
+ note: fontawesome/solid/note-sticky
+ abstract: fontawesome/solid/book
+ info: fontawesome/solid/circle-info
+ tip: fontawesome/solid/bullhorn
+ success: fontawesome/solid/check
+ question: fontawesome/solid/circle-question
+ warning: fontawesome/solid/triangle-exclamation
+ failure: fontawesome/solid/bomb
+ danger: fontawesome/solid/skull
+ bug: fontawesome/solid/robot
+ example: fontawesome/solid/flask
+ quote: fontawesome/solid/quote-left
+
+markdown_extensions:
+ - admonition
+ - pymdownx.details
+ - pymdownx.superfences
+ - tables
+extra_css:
+ - stylesheets/extra.css
+plugins:
+ - search
\ No newline at end of file
diff --git a/src/logic/documentation_thread.py b/src/logic/documentation_thread.py
new file mode 100644
index 0000000..ed2c7cc
--- /dev/null
+++ b/src/logic/documentation_thread.py
@@ -0,0 +1,12 @@
+from PyQt6.QtCore import QThread, pyqtSignal
+from src.utils import launch_documentation
+
+class DocumentationThread(QThread):
+ def __init__(self):
+ super().__init__()
+
+ def run(self):
+ launch_documentation()
+
+
+
diff --git a/src/ui/sources/Ui_dialog_generateReport.py b/src/ui/sources/Ui_dialog_generateReport.py
index 76022fe..ecc84da 100644
--- a/src/ui/sources/Ui_dialog_generateReport.py
+++ b/src/ui/sources/Ui_dialog_generateReport.py
@@ -12,7 +12,7 @@ from PyQt6 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
- Dialog.resize(375, 247)
+ Dialog.resize(375, 245)
Dialog.setMinimumSize(QtCore.QSize(40, 0))
self.verticalLayout = QtWidgets.QVBoxLayout(Dialog)
self.verticalLayout.setObjectName("verticalLayout")
diff --git a/src/ui/sources/Ui_main_UserInterface.py b/src/ui/sources/Ui_main_UserInterface.py
index c5577ac..e5f8621 100644
--- a/src/ui/sources/Ui_main_UserInterface.py
+++ b/src/ui/sources/Ui_main_UserInterface.py
@@ -142,6 +142,9 @@ class Ui_MainWindow(object):
self.menuHotkeys.setObjectName("menuHotkeys")
self.menuFenster = QtWidgets.QMenu(parent=self.menubar)
self.menuFenster.setObjectName("menuFenster")
+ self.menuHilfe = QtWidgets.QMenu(parent=self.menubar)
+ self.menuHilfe.setGeometry(QtCore.QRect(2484, 209, 181, 94))
+ self.menuHilfe.setObjectName("menuHilfe")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(parent=MainWindow)
self.statusbar.setObjectName("statusbar")
@@ -158,15 +161,22 @@ class Ui_MainWindow(object):
self.actionAusleihhistorie.setObjectName("actionAusleihhistorie")
self.actionBericht_erstellen = QtGui.QAction(parent=MainWindow)
self.actionBericht_erstellen.setObjectName("actionBericht_erstellen")
+ self.actionDokumentation_ffnen = QtGui.QAction(parent=MainWindow)
+ self.actionDokumentation_ffnen.setObjectName("actionDokumentation_ffnen")
+ self.actionProblem_melden = QtGui.QAction(parent=MainWindow)
+ self.actionProblem_melden.setObjectName("actionProblem_melden")
self.menuDatei.addAction(self.actionEinstellungen)
self.menuDatei.addAction(self.actionBeenden)
self.menuHotkeys.addAction(self.actionRueckgabemodus)
self.menuFenster.addAction(self.actionNutzer)
self.menuFenster.addAction(self.actionAusleihhistorie)
self.menuFenster.addAction(self.actionBericht_erstellen)
+ self.menuHilfe.addAction(self.actionDokumentation_ffnen)
+ self.menuHilfe.addAction(self.actionProblem_melden)
self.menubar.addAction(self.menuDatei.menuAction())
self.menubar.addAction(self.menuHotkeys.menuAction())
self.menubar.addAction(self.menuFenster.menuAction())
+ self.menubar.addAction(self.menuHilfe.menuAction())
self.retranslateUi(MainWindow)
self.actionBeenden.triggered.connect(MainWindow.close) # type: ignore
@@ -198,6 +208,7 @@ class Ui_MainWindow(object):
self.menuDatei.setTitle(_translate("MainWindow", "Datei"))
self.menuHotkeys.setTitle(_translate("MainWindow", "Hotkeys"))
self.menuFenster.setTitle(_translate("MainWindow", "Fenster"))
+ self.menuHilfe.setTitle(_translate("MainWindow", "Hilfe"))
self.actionEinstellungen.setText(_translate("MainWindow", "Einstellungen"))
self.actionBeenden.setText(_translate("MainWindow", "Beenden"))
self.actionRueckgabemodus.setText(_translate("MainWindow", "Rückgabemodus"))
@@ -208,3 +219,6 @@ class Ui_MainWindow(object):
self.actionAusleihhistorie.setShortcut(_translate("MainWindow", "F8"))
self.actionBericht_erstellen.setText(_translate("MainWindow", "Bericht erstellen"))
self.actionBericht_erstellen.setShortcut(_translate("MainWindow", "F7"))
+ self.actionDokumentation_ffnen.setText(_translate("MainWindow", "Dokumentation öffnen"))
+ self.actionDokumentation_ffnen.setShortcut(_translate("MainWindow", "F1"))
+ self.actionProblem_melden.setText(_translate("MainWindow", "Problem melden"))
diff --git a/src/ui/sources/dialog_generateReport.ui b/src/ui/sources/dialog_generateReport.ui
index 1700beb..e478a02 100644
--- a/src/ui/sources/dialog_generateReport.ui
+++ b/src/ui/sources/dialog_generateReport.ui
@@ -7,7 +7,7 @@
00375
- 247
+ 245
diff --git a/src/ui/sources/main_UserInterface.ui b/src/ui/sources/main_UserInterface.ui
index e7e7621..46614e8 100644
--- a/src/ui/sources/main_UserInterface.ui
+++ b/src/ui/sources/main_UserInterface.ui
@@ -278,9 +278,25 @@
+
+
+
+ 2484
+ 209
+ 181
+ 94
+
+
+
+ Hilfe
+
+
+
+
+
@@ -309,11 +325,6 @@
F6
-
-
- Nutzer
-
- Ausleihhistorie
@@ -330,9 +341,17 @@
F7
-
+
- Nutzer
+ Dokumentation öffnen
+
+
+ F1
+
+
+
+
+ Problem melden
diff --git a/src/utils/__init__.py b/src/utils/__init__.py
index ea00422..d004bfe 100644
--- a/src/utils/__init__.py
+++ b/src/utils/__init__.py
@@ -1,4 +1,5 @@
from .log import Log
from .icon import Icon
from .debug import debugMessage
-from .stringtodate import stringToDate
\ No newline at end of file
+from .stringtodate import stringToDate
+from .documentation import launch_documentation
\ No newline at end of file
diff --git a/src/utils/documentation.py b/src/utils/documentation.py
new file mode 100644
index 0000000..0b5bf8e
--- /dev/null
+++ b/src/utils/documentation.py
@@ -0,0 +1,21 @@
+from pyramid.config import Configurator
+from wsgiref.simple_server import make_server
+import os
+def website():
+ config = Configurator()
+
+ # Set up static file serving from the 'site/' directory
+ config.add_static_view(name='/', path=os.path.join(os.getcwd(), 'site'), cache_max_age=3600)
+
+ app = config.make_wsgi_app()
+ return app
+
+def launch_documentation():
+ app = website()
+ server = make_server('localhost', 6543, app)
+ print("Serving MkDocs documentation on http://0.0.0.0:6543")
+ server.serve_forever()
+
+if __name__ == '__main__':
+ pass
+
\ No newline at end of file