Neue Menü mit eingerichteten Projekten

This commit is contained in:
2025-06-22 11:58:57 +02:00
parent ea9324637f
commit 51e3453f92
3 changed files with 95 additions and 8 deletions
+25 -3
View File
@@ -159,7 +159,7 @@
<item> <item>
<widget class="QFrame" name="frame_3"> <widget class="QFrame" name="frame_3">
<property name="frameShape"> <property name="frameShape">
<enum>QFrame::Shape::StyledPanel</enum> <enum>QFrame::Shape::NoFrame</enum>
</property> </property>
<property name="frameShadow"> <property name="frameShadow">
<enum>QFrame::Shadow::Raised</enum> <enum>QFrame::Shadow::Raised</enum>
@@ -174,6 +174,18 @@
<enum>QFrame::Shadow::Raised</enum> <enum>QFrame::Shadow::Raised</enum>
</property> </property>
<layout class="QHBoxLayout" name="horizontalLayout_3"> <layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item> <item>
<spacer name="horizontalSpacer_4"> <spacer name="horizontalSpacer_4">
<property name="orientation"> <property name="orientation">
@@ -276,8 +288,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>792</width> <width>794</width>
<height>781</height> <height>801</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_3"> <layout class="QVBoxLayout" name="verticalLayout_3">
@@ -320,6 +332,8 @@
<addaction name="actionNeu"/> <addaction name="actionNeu"/>
<addaction name="action_ffnen"/> <addaction name="action_ffnen"/>
<addaction name="separator"/> <addaction name="separator"/>
<addaction name="actionVorhandene_Projekte"/>
<addaction name="separator"/>
<addaction name="actionEinstellungen"/> <addaction name="actionEinstellungen"/>
<addaction name="separator"/> <addaction name="separator"/>
<addaction name="actionBeenden"/> <addaction name="actionBeenden"/>
@@ -374,6 +388,14 @@
<string>Ctrl+S</string> <string>Ctrl+S</string>
</property> </property>
</action> </action>
<action name="actionVorhandene_Projekte">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Vorhandene Projekte</string>
</property>
</action>
</widget> </widget>
<resources/> <resources/>
<connections> <connections>
+9 -2
View File
@@ -43,6 +43,9 @@ class Ui_MainWindow(object):
self.actionEinstellungen.setObjectName(u"actionEinstellungen") self.actionEinstellungen.setObjectName(u"actionEinstellungen")
icon3 = QIcon(QIcon.fromTheme(QIcon.ThemeIcon.DocumentProperties)) icon3 = QIcon(QIcon.fromTheme(QIcon.ThemeIcon.DocumentProperties))
self.actionEinstellungen.setIcon(icon3) 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 = QWidget(MainWindow)
self.centralwidget.setObjectName(u"centralwidget") self.centralwidget.setObjectName(u"centralwidget")
self.horizontalLayout = QHBoxLayout(self.centralwidget) self.horizontalLayout = QHBoxLayout(self.centralwidget)
@@ -137,7 +140,7 @@ class Ui_MainWindow(object):
self.frame_3 = QFrame(self.centralwidget) self.frame_3 = QFrame(self.centralwidget)
self.frame_3.setObjectName(u"frame_3") 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.frame_3.setFrameShadow(QFrame.Shadow.Raised)
self.verticalLayout_4 = QVBoxLayout(self.frame_3) self.verticalLayout_4 = QVBoxLayout(self.frame_3)
self.verticalLayout_4.setObjectName(u"verticalLayout_4") self.verticalLayout_4.setObjectName(u"verticalLayout_4")
@@ -147,6 +150,7 @@ class Ui_MainWindow(object):
self.frame_4.setFrameShadow(QFrame.Shadow.Raised) self.frame_4.setFrameShadow(QFrame.Shadow.Raised)
self.horizontalLayout_3 = QHBoxLayout(self.frame_4) self.horizontalLayout_3 = QHBoxLayout(self.frame_4)
self.horizontalLayout_3.setObjectName(u"horizontalLayout_3") 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.horizontalSpacer_4 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
self.horizontalLayout_3.addItem(self.horizontalSpacer_4) self.horizontalLayout_3.addItem(self.horizontalSpacer_4)
@@ -199,7 +203,7 @@ class Ui_MainWindow(object):
self.scrollArea_2.setWidgetResizable(True) self.scrollArea_2.setWidgetResizable(True)
self.scrollAreaWidgetContents_2 = QWidget() self.scrollAreaWidgetContents_2 = QWidget()
self.scrollAreaWidgetContents_2.setObjectName(u"scrollAreaWidgetContents_2") 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 = QVBoxLayout(self.scrollAreaWidgetContents_2)
self.verticalLayout_3.setObjectName(u"verticalLayout_3") self.verticalLayout_3.setObjectName(u"verticalLayout_3")
self.label_3 = QLabel(self.scrollAreaWidgetContents_2) self.label_3 = QLabel(self.scrollAreaWidgetContents_2)
@@ -237,6 +241,8 @@ class Ui_MainWindow(object):
self.menuProjekt.addAction(self.actionNeu) self.menuProjekt.addAction(self.actionNeu)
self.menuProjekt.addAction(self.action_ffnen) self.menuProjekt.addAction(self.action_ffnen)
self.menuProjekt.addSeparator() self.menuProjekt.addSeparator()
self.menuProjekt.addAction(self.actionVorhandene_Projekte)
self.menuProjekt.addSeparator()
self.menuProjekt.addAction(self.actionEinstellungen) self.menuProjekt.addAction(self.actionEinstellungen)
self.menuProjekt.addSeparator() self.menuProjekt.addSeparator()
self.menuProjekt.addAction(self.actionBeenden) self.menuProjekt.addAction(self.actionBeenden)
@@ -262,6 +268,7 @@ class Ui_MainWindow(object):
#if QT_CONFIG(shortcut) #if QT_CONFIG(shortcut)
self.actionEinstellungen.setShortcut(QCoreApplication.translate("MainWindow", u"Ctrl+S", None)) self.actionEinstellungen.setShortcut(QCoreApplication.translate("MainWindow", u"Ctrl+S", None))
#endif // QT_CONFIG(shortcut) #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.setText(QCoreApplication.translate("MainWindow", u"nur ge\u00e4nderte generieren", None))
self.pushButton_2.setText(QCoreApplication.translate("MainWindow", u"Alle generieren", None)) self.pushButton_2.setText(QCoreApplication.translate("MainWindow", u"Alle generieren", None))
self.label.setText("") self.label.setText("")
+61 -3
View File
@@ -3,10 +3,9 @@ import os
import time import time
from PySide6.QtCore import Qt, QSize from PySide6.QtCore import Qt, QSize
from PySide6.QtGui import QCursor, QPixmap, QImage, QPainter, QAction from PySide6.QtGui import QCursor, QPixmap, QPainter, QAction
from PySide6.QtWidgets import QLabel, QMainWindow, QApplication, QStyleFactory from PySide6.QtWidgets import QLabel, QMainWindow, QApplication, QStyleFactory, QMenu
from PySide6.QtPdf import QPdfDocument from PySide6.QtPdf import QPdfDocument
from PySide6.QtPdfWidgets import QPdfView
from ui.MainWinddow_ui import Ui_MainWindow from ui.MainWinddow_ui import Ui_MainWindow
from ui.AppSettings import AppSettingsDlg from ui.AppSettings import AppSettingsDlg
@@ -58,6 +57,9 @@ class MainWindow(QMainWindow):
# Theme-Menü initialisieren # Theme-Menü initialisieren
self._setup_theme_menu() self._setup_theme_menu()
# Vorhandene Projekte-Menü initialisieren
self._setup_projects_menu()
# #
if (theme := app_settings.theme): if (theme := app_settings.theme):
self.change_theme(theme) self.change_theme(theme)
@@ -94,6 +96,59 @@ class MainWindow(QMainWindow):
# Füge die Aktion zum Theme-Menü hinzu # Füge die Aktion zum Theme-Menü hinzu
self.ui.menuThema.addAction(action) 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): def change_theme(self, theme_name):
""" """
Wechselt das Theme der Anwendung. Wechselt das Theme der Anwendung.
@@ -525,6 +580,9 @@ class MainWindow(QMainWindow):
print(f"Projekt-ID: {new_id}") print(f"Projekt-ID: {new_id}")
print(f"Projekt-Ordner: {project_data['project_dir']}") print(f"Projekt-Ordner: {project_data['project_dir']}")
# Aktualisiere das Projekte-Menü
self._setup_projects_menu()
except Exception as e: except Exception as e:
print(f"Fehler beim Erstellen des neuen Projekts: {e}") print(f"Fehler beim Erstellen des neuen Projekts: {e}")