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:
+32
-5
@@ -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):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user