Feature: Automatische Aktualisierung des Projekte-Menüs und Validierung der Projekt-Verzeichnisse

- AppSettings: Menü-Update nach jedem app_settings.save() Aufruf
- MainWindow: Prüfung der Projekt-Verzeichnis-Existenz beim Start
- Nur gültige Projekte werden im Menü angezeigt
- Ungültige Projekte werden ausgeblendet mit Logging-Warnung
- Memory-Leak-Prävention durch korrektes Aufräumen alter Menüs
This commit is contained in:
2026-01-20 20:29:34 +01:00
parent c8e1a541cd
commit bad4d55ebd
2 changed files with 135 additions and 69 deletions
+32 -5
View File
@@ -191,22 +191,47 @@ class MainWindow(
def _setup_projects_menu(self):
"""Initialisiert das Vorhandene Projekte-Menü mit gespeicherten Projekten."""
# Entferne das alte Untermenü, falls vorhanden
old_menu = self.ui.actionVorhandene_Projekte.menu()
if old_menu:
old_menu.clear()
old_menu.deleteLater()
# Prüfe ob Projekte vorhanden sind
if not app_settings.pdf_projects:
# Keine Projekte vorhanden - Menü deaktiviert lassen
# Keine Projekte vorhanden - Menü deaktivieren
self.ui.actionVorhandene_Projekte.setEnabled(False)
self.ui.actionVorhandene_Projekte.setText("Vorhandene Projekte (keine vorhanden)")
logger.info("Projekte-Menü deaktiviert - keine Projekte vorhanden")
return
# Projekte vorhanden - Menü aktivieren und Untermenü erstellen
# Filtere nur existierende Projekte
valid_projects = []
invalid_projects = []
for project in app_settings.pdf_projects:
if project.project_dir.exists():
valid_projects.append(project)
else:
invalid_projects.append(project)
logger.warning(f"Projekt-Verzeichnis existiert nicht: {project.name}{project.project_dir}")
# Wenn keine gültigen Projekte vorhanden sind
if not valid_projects:
self.ui.actionVorhandene_Projekte.setEnabled(False)
self.ui.actionVorhandene_Projekte.setText("Vorhandene Projekte (keine gültigen vorhanden)")
logger.warning(f"Projekte-Menü deaktiviert - {len(invalid_projects)} ungültige(s) Projekt(e) gefunden")
return
# Gültige 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:
# Füge jedes gültige Projekt als Menü-Eintrag hinzu
for project in valid_projects:
project_action = QAction(project.name, self)
project_action.setToolTip(f"Projekt-Ordner: {project.project_dir}")
@@ -218,7 +243,9 @@ class MainWindow(
# Setze das Untermenü für die Aktion
self.ui.actionVorhandene_Projekte.setMenu(projects_menu)
logger.info(f"Projekte-Menü initialisiert mit {len(app_settings.pdf_projects)} Projekten")
logger.info(f"Projekte-Menü initialisiert mit {len(valid_projects)} gültigen Projekt(en)")
if invalid_projects:
logger.warning(f"{len(invalid_projects)} ungültige(s) Projekt(e) ausgeblendet")
def open_existing_project(self, project: Project):
"""