diff --git a/src/ui/MainWinddow.ui b/src/ui/MainWinddow.ui index af990ed..83f41fb 100644 --- a/src/ui/MainWinddow.ui +++ b/src/ui/MainWinddow.ui @@ -159,7 +159,7 @@ - QFrame::Shape::StyledPanel + QFrame::Shape::NoFrame QFrame::Shadow::Raised @@ -174,6 +174,18 @@ QFrame::Shadow::Raised + + 0 + + + 0 + + + 0 + + + 0 + @@ -276,8 +288,8 @@ 0 0 - 792 - 781 + 794 + 801 @@ -320,6 +332,8 @@ + + @@ -374,6 +388,14 @@ Ctrl+S + + + false + + + Vorhandene Projekte + + diff --git a/src/ui/MainWinddow_ui.py b/src/ui/MainWinddow_ui.py index e6c8cca..71b8dbe 100644 --- a/src/ui/MainWinddow_ui.py +++ b/src/ui/MainWinddow_ui.py @@ -43,6 +43,9 @@ class Ui_MainWindow(object): self.actionEinstellungen.setObjectName(u"actionEinstellungen") icon3 = QIcon(QIcon.fromTheme(QIcon.ThemeIcon.DocumentProperties)) self.actionEinstellungen.setIcon(icon3) + self.actionVorhandene_Projekte = QAction(MainWindow) + self.actionVorhandene_Projekte.setObjectName(u"actionVorhandene_Projekte") + self.actionVorhandene_Projekte.setEnabled(False) self.centralwidget = QWidget(MainWindow) self.centralwidget.setObjectName(u"centralwidget") self.horizontalLayout = QHBoxLayout(self.centralwidget) @@ -137,7 +140,7 @@ class Ui_MainWindow(object): self.frame_3 = QFrame(self.centralwidget) self.frame_3.setObjectName(u"frame_3") - self.frame_3.setFrameShape(QFrame.Shape.StyledPanel) + self.frame_3.setFrameShape(QFrame.Shape.NoFrame) self.frame_3.setFrameShadow(QFrame.Shadow.Raised) self.verticalLayout_4 = QVBoxLayout(self.frame_3) self.verticalLayout_4.setObjectName(u"verticalLayout_4") @@ -147,6 +150,7 @@ class Ui_MainWindow(object): self.frame_4.setFrameShadow(QFrame.Shadow.Raised) self.horizontalLayout_3 = QHBoxLayout(self.frame_4) self.horizontalLayout_3.setObjectName(u"horizontalLayout_3") + self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0) self.horizontalSpacer_4 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum) self.horizontalLayout_3.addItem(self.horizontalSpacer_4) @@ -199,7 +203,7 @@ class Ui_MainWindow(object): self.scrollArea_2.setWidgetResizable(True) self.scrollAreaWidgetContents_2 = QWidget() self.scrollAreaWidgetContents_2.setObjectName(u"scrollAreaWidgetContents_2") - self.scrollAreaWidgetContents_2.setGeometry(QRect(0, 0, 792, 781)) + self.scrollAreaWidgetContents_2.setGeometry(QRect(0, 0, 794, 801)) self.verticalLayout_3 = QVBoxLayout(self.scrollAreaWidgetContents_2) self.verticalLayout_3.setObjectName(u"verticalLayout_3") self.label_3 = QLabel(self.scrollAreaWidgetContents_2) @@ -237,6 +241,8 @@ class Ui_MainWindow(object): self.menuProjekt.addAction(self.actionNeu) self.menuProjekt.addAction(self.action_ffnen) self.menuProjekt.addSeparator() + self.menuProjekt.addAction(self.actionVorhandene_Projekte) + self.menuProjekt.addSeparator() self.menuProjekt.addAction(self.actionEinstellungen) self.menuProjekt.addSeparator() self.menuProjekt.addAction(self.actionBeenden) @@ -262,6 +268,7 @@ class Ui_MainWindow(object): #if QT_CONFIG(shortcut) self.actionEinstellungen.setShortcut(QCoreApplication.translate("MainWindow", u"Ctrl+S", None)) #endif // QT_CONFIG(shortcut) + self.actionVorhandene_Projekte.setText(QCoreApplication.translate("MainWindow", u"Vorhandene Projekte", None)) self.pushButton.setText(QCoreApplication.translate("MainWindow", u"nur ge\u00e4nderte generieren", None)) self.pushButton_2.setText(QCoreApplication.translate("MainWindow", u"Alle generieren", None)) self.label.setText("") diff --git a/src/ui/MainWindow.py b/src/ui/MainWindow.py index a2d3c88..f964155 100644 --- a/src/ui/MainWindow.py +++ b/src/ui/MainWindow.py @@ -3,10 +3,9 @@ import os import time from PySide6.QtCore import Qt, QSize -from PySide6.QtGui import QCursor, QPixmap, QImage, QPainter, QAction -from PySide6.QtWidgets import QLabel, QMainWindow, QApplication, QStyleFactory +from PySide6.QtGui import QCursor, QPixmap, QPainter, QAction +from PySide6.QtWidgets import QLabel, QMainWindow, QApplication, QStyleFactory, QMenu from PySide6.QtPdf import QPdfDocument -from PySide6.QtPdfWidgets import QPdfView from ui.MainWinddow_ui import Ui_MainWindow from ui.AppSettings import AppSettingsDlg @@ -58,6 +57,9 @@ class MainWindow(QMainWindow): # Theme-Menü initialisieren self._setup_theme_menu() + # Vorhandene Projekte-Menü initialisieren + self._setup_projects_menu() + # if (theme := app_settings.theme): self.change_theme(theme) @@ -94,6 +96,59 @@ class MainWindow(QMainWindow): # Füge die Aktion zum Theme-Menü hinzu self.ui.menuThema.addAction(action) + def _setup_projects_menu(self): + """Initialisiert das Vorhandene Projekte-Menü mit gespeicherten Projekten.""" + # Prüfe ob Projekte vorhanden sind + if not app_settings.pdf_projects: + # Keine Projekte vorhanden - Menü deaktiviert lassen + self.ui.actionVorhandene_Projekte.setEnabled(False) + self.ui.actionVorhandene_Projekte.setText("Vorhandene Projekte (keine vorhanden)") + return + + # Projekte vorhanden - Menü aktivieren und Untermenü erstellen + self.ui.actionVorhandene_Projekte.setEnabled(True) + self.ui.actionVorhandene_Projekte.setText("Vorhandene Projekte") + + # Erstelle ein Untermenü für die Projekte + projects_menu = QMenu(self) + + # Füge jedes Projekt als Menü-Eintrag hinzu + for project in app_settings.pdf_projects: + project_action = QAction(project.name, self) + project_action.setToolTip(f"Projekt-Ordner: {project.project_dir}") + + # Verbinde die Aktion mit der Projekt-Öffnen-Funktion + project_action.triggered.connect( + lambda checked, proj=project: self.open_existing_project(proj) + ) + + projects_menu.addAction(project_action) + + # Setze das Untermenü für die Aktion + self.ui.actionVorhandene_Projekte.setMenu(projects_menu) + + print(f"Projekte-Menü initialisiert mit {len(app_settings.pdf_projects)} Projekten") + + def open_existing_project(self, project: PdfProject): + """ + Öffnet ein vorhandenes Projekt. + + Args: + project: Das zu öffnende PdfProject-Objekt + """ + print(f"Öffne Projekt: {project.name}") + print(f"Projekt-Ordner: {project.project_dir}") + + # Hier könnte die Logik zum Laden des Projekts implementiert werden + # Zum Beispiel: + # - PDF-Dateien aus dem Projekt-Ordner laden + # - Projekt-spezifische Einstellungen anwenden + # - UI entsprechend aktualisieren + + # Für jetzt nur eine Meldung ausgeben + print(f"Projekt '{project.name}' wurde ausgewählt") + # TODO: Implementiere Projekt-Lade-Logik + def change_theme(self, theme_name): """ Wechselt das Theme der Anwendung. @@ -525,6 +580,9 @@ class MainWindow(QMainWindow): print(f"Projekt-ID: {new_id}") print(f"Projekt-Ordner: {project_data['project_dir']}") + # Aktualisiere das Projekte-Menü + self._setup_projects_menu() + except Exception as e: print(f"Fehler beim Erstellen des neuen Projekts: {e}")