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:
+67
-28
@@ -116,7 +116,9 @@ class AppSettingsDlg(QDialog):
|
|||||||
self.ui.tableDiffPdfs.doubleClicked.connect(self._edit_diff_pdf)
|
self.ui.tableDiffPdfs.doubleClicked.connect(self._edit_diff_pdf)
|
||||||
|
|
||||||
# PDF-Projekte Tabelle
|
# PDF-Projekte Tabelle
|
||||||
self.ui.tablePdfProjects.setHorizontalHeaderLabels(["Name", "Projekt-Ordner", "XSL-Ordner", "Java-VM", "Saxon", "Apache FOP", "Diff-PDF"])
|
self.ui.tablePdfProjects.setHorizontalHeaderLabels(
|
||||||
|
["Name", "Projekt-Ordner", "XSL-Ordner", "Java-VM", "Saxon", "Apache FOP", "Diff-PDF"]
|
||||||
|
)
|
||||||
self.ui.tablePdfProjects.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers)
|
self.ui.tablePdfProjects.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers)
|
||||||
self.ui.tablePdfProjects.doubleClicked.connect(self._edit_pdf_project)
|
self.ui.tablePdfProjects.doubleClicked.connect(self._edit_pdf_project)
|
||||||
|
|
||||||
@@ -291,6 +293,11 @@ class AppSettingsDlg(QDialog):
|
|||||||
# FopWorkerPool-Checkbox setzen
|
# FopWorkerPool-Checkbox setzen
|
||||||
self.ui.checkBoxUseFopPool.setChecked(self.settings.use_fop_worker_pool)
|
self.ui.checkBoxUseFopPool.setChecked(self.settings.use_fop_worker_pool)
|
||||||
|
|
||||||
|
def _refresh_main_window_projects_menu(self):
|
||||||
|
"""Aktualisiert das Projekte-Menü im MainWindow, falls vorhanden."""
|
||||||
|
if self.parent() and hasattr(self.parent(), "_setup_projects_menu"):
|
||||||
|
self.parent()._setup_projects_menu()
|
||||||
|
|
||||||
# XSL-Ordner Methoden
|
# XSL-Ordner Methoden
|
||||||
def _add_xsl_dir(self):
|
def _add_xsl_dir(self):
|
||||||
"""Fügt einen neuen XSL-Ordner hinzu."""
|
"""Fügt einen neuen XSL-Ordner hinzu."""
|
||||||
@@ -306,6 +313,7 @@ class AppSettingsDlg(QDialog):
|
|||||||
|
|
||||||
self.settings.xsl_dirs = self.temp_xsl_dirs.copy()
|
self.settings.xsl_dirs = self.temp_xsl_dirs.copy()
|
||||||
self.settings.save()
|
self.settings.save()
|
||||||
|
self._refresh_main_window_projects_menu()
|
||||||
|
|
||||||
def _remove_xsl_dir(self):
|
def _remove_xsl_dir(self):
|
||||||
"""Entfernt den ausgewählten XSL-Ordner."""
|
"""Entfernt den ausgewählten XSL-Ordner."""
|
||||||
@@ -317,6 +325,7 @@ class AppSettingsDlg(QDialog):
|
|||||||
|
|
||||||
self.settings.xsl_dirs = self.temp_xsl_dirs.copy()
|
self.settings.xsl_dirs = self.temp_xsl_dirs.copy()
|
||||||
self.settings.save()
|
self.settings.save()
|
||||||
|
self._refresh_main_window_projects_menu()
|
||||||
|
|
||||||
def _update_xsl_buttons(self):
|
def _update_xsl_buttons(self):
|
||||||
"""Aktualisiert den Status der XSL-Buttons."""
|
"""Aktualisiert den Status der XSL-Buttons."""
|
||||||
@@ -339,6 +348,7 @@ class AppSettingsDlg(QDialog):
|
|||||||
|
|
||||||
self.settings.java_vms = self.temp_java_vms.copy()
|
self.settings.java_vms = self.temp_java_vms.copy()
|
||||||
self.settings.save()
|
self.settings.save()
|
||||||
|
self._refresh_main_window_projects_menu()
|
||||||
|
|
||||||
def _remove_java_vm(self):
|
def _remove_java_vm(self):
|
||||||
"""Entfernt die ausgewählte Java VM."""
|
"""Entfernt die ausgewählte Java VM."""
|
||||||
@@ -350,6 +360,7 @@ class AppSettingsDlg(QDialog):
|
|||||||
|
|
||||||
self.settings.java_vms = self.temp_java_vms.copy()
|
self.settings.java_vms = self.temp_java_vms.copy()
|
||||||
self.settings.save()
|
self.settings.save()
|
||||||
|
self._refresh_main_window_projects_menu()
|
||||||
|
|
||||||
def _update_java_vm_buttons(self):
|
def _update_java_vm_buttons(self):
|
||||||
"""Aktualisiert den Status der Java VM-Buttons."""
|
"""Aktualisiert den Status der Java VM-Buttons."""
|
||||||
@@ -375,6 +386,7 @@ class AppSettingsDlg(QDialog):
|
|||||||
|
|
||||||
self.settings.saxon_jars = self.temp_saxon_jars.copy()
|
self.settings.saxon_jars = self.temp_saxon_jars.copy()
|
||||||
self.settings.save()
|
self.settings.save()
|
||||||
|
self._refresh_main_window_projects_menu()
|
||||||
|
|
||||||
def _remove_saxon(self):
|
def _remove_saxon(self):
|
||||||
"""Entfernt die ausgewählte Saxon JAR."""
|
"""Entfernt die ausgewählte Saxon JAR."""
|
||||||
@@ -386,6 +398,7 @@ class AppSettingsDlg(QDialog):
|
|||||||
|
|
||||||
self.settings.saxon_jars = self.temp_saxon_jars.copy()
|
self.settings.saxon_jars = self.temp_saxon_jars.copy()
|
||||||
self.settings.save()
|
self.settings.save()
|
||||||
|
self._refresh_main_window_projects_menu()
|
||||||
|
|
||||||
def _update_saxon_buttons(self):
|
def _update_saxon_buttons(self):
|
||||||
"""Aktualisiert den Status der Saxon-Buttons."""
|
"""Aktualisiert den Status der Saxon-Buttons."""
|
||||||
@@ -411,6 +424,7 @@ class AppSettingsDlg(QDialog):
|
|||||||
|
|
||||||
self.settings.apache_fops = self.temp_apache_fops.copy()
|
self.settings.apache_fops = self.temp_apache_fops.copy()
|
||||||
self.settings.save()
|
self.settings.save()
|
||||||
|
self._refresh_main_window_projects_menu()
|
||||||
|
|
||||||
def _remove_apache_fop(self):
|
def _remove_apache_fop(self):
|
||||||
"""Entfernt die ausgewählte Apache FOP Konfiguration."""
|
"""Entfernt die ausgewählte Apache FOP Konfiguration."""
|
||||||
@@ -422,6 +436,7 @@ class AppSettingsDlg(QDialog):
|
|||||||
|
|
||||||
self.settings.apache_fops = self.temp_apache_fops.copy()
|
self.settings.apache_fops = self.temp_apache_fops.copy()
|
||||||
self.settings.save()
|
self.settings.save()
|
||||||
|
self._refresh_main_window_projects_menu()
|
||||||
|
|
||||||
def _update_apache_fop_buttons(self):
|
def _update_apache_fop_buttons(self):
|
||||||
"""Aktualisiert den Status der Apache FOP-Buttons."""
|
"""Aktualisiert den Status der Apache FOP-Buttons."""
|
||||||
@@ -448,6 +463,7 @@ class AppSettingsDlg(QDialog):
|
|||||||
|
|
||||||
self.settings.diff_pdfs = self.temp_diff_pdfs.copy()
|
self.settings.diff_pdfs = self.temp_diff_pdfs.copy()
|
||||||
self.settings.save()
|
self.settings.save()
|
||||||
|
self._refresh_main_window_projects_menu()
|
||||||
|
|
||||||
def _remove_diff_pdf(self):
|
def _remove_diff_pdf(self):
|
||||||
"""Entfernt die ausgewählte Diff PDF Konfiguration."""
|
"""Entfernt die ausgewählte Diff PDF Konfiguration."""
|
||||||
@@ -459,6 +475,7 @@ class AppSettingsDlg(QDialog):
|
|||||||
|
|
||||||
self.settings.diff_pdfs = self.temp_diff_pdfs.copy()
|
self.settings.diff_pdfs = self.temp_diff_pdfs.copy()
|
||||||
self.settings.save()
|
self.settings.save()
|
||||||
|
self._refresh_main_window_projects_menu()
|
||||||
|
|
||||||
def _update_diff_pdf_buttons(self):
|
def _update_diff_pdf_buttons(self):
|
||||||
"""Aktualisiert den Status der Diff PDF-Buttons."""
|
"""Aktualisiert den Status der Diff PDF-Buttons."""
|
||||||
@@ -478,15 +495,15 @@ class AppSettingsDlg(QDialog):
|
|||||||
# Erstelle PdfProject-Objekt
|
# Erstelle PdfProject-Objekt
|
||||||
new_project = Project(
|
new_project = Project(
|
||||||
id=new_id,
|
id=new_id,
|
||||||
name=project_data['name'],
|
name=project_data["name"],
|
||||||
project_dir=Path(project_data['project_dir']),
|
project_dir=Path(project_data["project_dir"]),
|
||||||
java_vm_id=project_data['java_vm_id'] if project_data['java_vm_id'] != -1 else 1,
|
java_vm_id=project_data["java_vm_id"] if project_data["java_vm_id"] != -1 else 1,
|
||||||
diff_pdf_id=project_data['diff_pdf_id'] if project_data['diff_pdf_id'] != -1 else 1,
|
diff_pdf_id=project_data["diff_pdf_id"] if project_data["diff_pdf_id"] != -1 else 1,
|
||||||
saxon_jar_id=project_data['saxon_jar_id'] if project_data['saxon_jar_id'] != -1 else 1,
|
saxon_jar_id=project_data["saxon_jar_id"] if project_data["saxon_jar_id"] != -1 else 1,
|
||||||
apache_fop_id=project_data['apache_fop_id'] if project_data['apache_fop_id'] != -1 else 1,
|
apache_fop_id=project_data["apache_fop_id"] if project_data["apache_fop_id"] != -1 else 1,
|
||||||
xsl_dir_id=project_data['xsl_dir_id'] if project_data['xsl_dir_id'] != -1 else 1,
|
xsl_dir_id=project_data["xsl_dir_id"] if project_data["xsl_dir_id"] != -1 else 1,
|
||||||
postgre_sql_db_id=project_data['postgre_sql_db_id'] if project_data['postgre_sql_db_id'] != -1 else 1,
|
postgre_sql_db_id=project_data["postgre_sql_db_id"] if project_data["postgre_sql_db_id"] != -1 else 1,
|
||||||
fop_config_dir=Path(project_data['fop_config_dir']) if project_data.get('fop_config_dir') else None,
|
fop_config_dir=Path(project_data["fop_config_dir"]) if project_data.get("fop_config_dir") else None,
|
||||||
)
|
)
|
||||||
|
|
||||||
self.temp_pdf_projects.append(new_project)
|
self.temp_pdf_projects.append(new_project)
|
||||||
@@ -494,6 +511,7 @@ class AppSettingsDlg(QDialog):
|
|||||||
|
|
||||||
self.settings.pdf_projects = self.temp_pdf_projects.copy()
|
self.settings.pdf_projects = self.temp_pdf_projects.copy()
|
||||||
self.settings.save()
|
self.settings.save()
|
||||||
|
self._refresh_main_window_projects_menu()
|
||||||
|
|
||||||
def _remove_pdf_project(self):
|
def _remove_pdf_project(self):
|
||||||
"""Entfernt das ausgewählte PDF-Projekt."""
|
"""Entfernt das ausgewählte PDF-Projekt."""
|
||||||
@@ -505,6 +523,7 @@ class AppSettingsDlg(QDialog):
|
|||||||
|
|
||||||
self.settings.pdf_projects = self.temp_pdf_projects.copy()
|
self.settings.pdf_projects = self.temp_pdf_projects.copy()
|
||||||
self.settings.save()
|
self.settings.save()
|
||||||
|
self._refresh_main_window_projects_menu()
|
||||||
|
|
||||||
def _update_pdf_project_buttons(self):
|
def _update_pdf_project_buttons(self):
|
||||||
"""Aktualisiert den Status der PDF-Projekt-Buttons."""
|
"""Aktualisiert den Status der PDF-Projekt-Buttons."""
|
||||||
@@ -632,15 +651,15 @@ class AppSettingsDlg(QDialog):
|
|||||||
|
|
||||||
# Projektdaten für Dialog vorbereiten
|
# Projektdaten für Dialog vorbereiten
|
||||||
project_data = {
|
project_data = {
|
||||||
'name': pdf_project.name,
|
"name": pdf_project.name,
|
||||||
'project_dir': str(pdf_project.project_dir),
|
"project_dir": str(pdf_project.project_dir),
|
||||||
'java_vm_id': pdf_project.java_vm_id,
|
"java_vm_id": pdf_project.java_vm_id,
|
||||||
'diff_pdf_id': pdf_project.diff_pdf_id,
|
"diff_pdf_id": pdf_project.diff_pdf_id,
|
||||||
'saxon_jar_id': pdf_project.saxon_jar_id,
|
"saxon_jar_id": pdf_project.saxon_jar_id,
|
||||||
'apache_fop_id': pdf_project.apache_fop_id,
|
"apache_fop_id": pdf_project.apache_fop_id,
|
||||||
'xsl_dir_id': pdf_project.xsl_dir_id,
|
"xsl_dir_id": pdf_project.xsl_dir_id,
|
||||||
'postgre_sql_db_id': pdf_project.postgre_sql_db_id,
|
"postgre_sql_db_id": pdf_project.postgre_sql_db_id,
|
||||||
'fop_config_dir': str(pdf_project.fop_config_dir) if pdf_project.fop_config_dir else None
|
"fop_config_dir": str(pdf_project.fop_config_dir) if pdf_project.fop_config_dir else None,
|
||||||
}
|
}
|
||||||
|
|
||||||
# Dialog im Edit-Modus öffnen (Projekt-Name und -Ordner deaktiviert)
|
# Dialog im Edit-Modus öffnen (Projekt-Name und -Ordner deaktiviert)
|
||||||
@@ -650,19 +669,36 @@ class AppSettingsDlg(QDialog):
|
|||||||
new_data = dialog.get_project_data()
|
new_data = dialog.get_project_data()
|
||||||
|
|
||||||
# Nur die Einstellungen aktualisieren (Name und Ordner bleiben unverändert)
|
# Nur die Einstellungen aktualisieren (Name und Ordner bleiben unverändert)
|
||||||
pdf_project.java_vm_id = new_data['java_vm_id'] if new_data['java_vm_id'] != -1 else pdf_project.java_vm_id
|
pdf_project.java_vm_id = (
|
||||||
pdf_project.diff_pdf_id = new_data['diff_pdf_id'] if new_data['diff_pdf_id'] != -1 else pdf_project.diff_pdf_id
|
new_data["java_vm_id"] if new_data["java_vm_id"] != -1 else pdf_project.java_vm_id
|
||||||
pdf_project.saxon_jar_id = new_data['saxon_jar_id'] if new_data['saxon_jar_id'] != -1 else pdf_project.saxon_jar_id
|
)
|
||||||
pdf_project.apache_fop_id = new_data['apache_fop_id'] if new_data['apache_fop_id'] != -1 else pdf_project.apache_fop_id
|
pdf_project.diff_pdf_id = (
|
||||||
pdf_project.xsl_dir_id = new_data['xsl_dir_id'] if new_data['xsl_dir_id'] != -1 else pdf_project.xsl_dir_id
|
new_data["diff_pdf_id"] if new_data["diff_pdf_id"] != -1 else pdf_project.diff_pdf_id
|
||||||
pdf_project.postgre_sql_db_id = new_data['postgre_sql_db_id'] if new_data['postgre_sql_db_id'] != -1 else pdf_project.postgre_sql_db_id
|
)
|
||||||
pdf_project.fop_config_dir = Path(new_data['fop_config_dir']) if new_data.get('fop_config_dir') else None
|
pdf_project.saxon_jar_id = (
|
||||||
|
new_data["saxon_jar_id"] if new_data["saxon_jar_id"] != -1 else pdf_project.saxon_jar_id
|
||||||
|
)
|
||||||
|
pdf_project.apache_fop_id = (
|
||||||
|
new_data["apache_fop_id"] if new_data["apache_fop_id"] != -1 else pdf_project.apache_fop_id
|
||||||
|
)
|
||||||
|
pdf_project.xsl_dir_id = (
|
||||||
|
new_data["xsl_dir_id"] if new_data["xsl_dir_id"] != -1 else pdf_project.xsl_dir_id
|
||||||
|
)
|
||||||
|
pdf_project.postgre_sql_db_id = (
|
||||||
|
new_data["postgre_sql_db_id"]
|
||||||
|
if new_data["postgre_sql_db_id"] != -1
|
||||||
|
else pdf_project.postgre_sql_db_id
|
||||||
|
)
|
||||||
|
pdf_project.fop_config_dir = (
|
||||||
|
Path(new_data["fop_config_dir"]) if new_data.get("fop_config_dir") else None
|
||||||
|
)
|
||||||
|
|
||||||
self._populate_pdf_project_table()
|
self._populate_pdf_project_table()
|
||||||
|
|
||||||
# Einstellungen speichern
|
# Einstellungen speichern
|
||||||
self.settings.pdf_projects = self.temp_pdf_projects.copy()
|
self.settings.pdf_projects = self.temp_pdf_projects.copy()
|
||||||
self.settings.save()
|
self.settings.save()
|
||||||
|
self._refresh_main_window_projects_menu()
|
||||||
|
|
||||||
# PostgreSQL Methoden
|
# PostgreSQL Methoden
|
||||||
def _add_postgresql_db(self):
|
def _add_postgresql_db(self):
|
||||||
@@ -679,13 +715,14 @@ class AppSettingsDlg(QDialog):
|
|||||||
port=data["port"],
|
port=data["port"],
|
||||||
database=data["database"],
|
database=data["database"],
|
||||||
username=data["username"],
|
username=data["username"],
|
||||||
password=data["password"]
|
password=data["password"],
|
||||||
)
|
)
|
||||||
self.temp_postgresql_dbs.append(new_postgresql_db)
|
self.temp_postgresql_dbs.append(new_postgresql_db)
|
||||||
self._populate_postgresql_db_table()
|
self._populate_postgresql_db_table()
|
||||||
|
|
||||||
self.settings.postgresql_dbs = self.temp_postgresql_dbs.copy()
|
self.settings.postgresql_dbs = self.temp_postgresql_dbs.copy()
|
||||||
self.settings.save()
|
self.settings.save()
|
||||||
|
self._refresh_main_window_projects_menu()
|
||||||
|
|
||||||
def _remove_postgresql_db(self):
|
def _remove_postgresql_db(self):
|
||||||
"""Entfernt die ausgewählte PostgreSQL-Datenbank."""
|
"""Entfernt die ausgewählte PostgreSQL-Datenbank."""
|
||||||
@@ -697,6 +734,7 @@ class AppSettingsDlg(QDialog):
|
|||||||
|
|
||||||
self.settings.postgresql_dbs = self.temp_postgresql_dbs.copy()
|
self.settings.postgresql_dbs = self.temp_postgresql_dbs.copy()
|
||||||
self.settings.save()
|
self.settings.save()
|
||||||
|
self._refresh_main_window_projects_menu()
|
||||||
|
|
||||||
def _update_postgresql_db_buttons(self):
|
def _update_postgresql_db_buttons(self):
|
||||||
"""Aktualisiert den Status der PostgreSQL-Buttons."""
|
"""Aktualisiert den Status der PostgreSQL-Buttons."""
|
||||||
@@ -717,7 +755,7 @@ class AppSettingsDlg(QDialog):
|
|||||||
"port": postgresql_db.port,
|
"port": postgresql_db.port,
|
||||||
"database": postgresql_db.database,
|
"database": postgresql_db.database,
|
||||||
"username": postgresql_db.username,
|
"username": postgresql_db.username,
|
||||||
"password": postgresql_db.password
|
"password": postgresql_db.password,
|
||||||
}
|
}
|
||||||
dialog.set_data(data)
|
dialog.set_data(data)
|
||||||
|
|
||||||
@@ -756,6 +794,7 @@ class AppSettingsDlg(QDialog):
|
|||||||
self.settings.use_fop_worker_pool = self.ui.checkBoxUseFopPool.isChecked()
|
self.settings.use_fop_worker_pool = self.ui.checkBoxUseFopPool.isChecked()
|
||||||
|
|
||||||
self.settings.save()
|
self.settings.save()
|
||||||
|
self._refresh_main_window_projects_menu()
|
||||||
|
|
||||||
super().accept()
|
super().accept()
|
||||||
|
|
||||||
|
|||||||
+32
-5
@@ -191,22 +191,47 @@ class MainWindow(
|
|||||||
|
|
||||||
def _setup_projects_menu(self):
|
def _setup_projects_menu(self):
|
||||||
"""Initialisiert das Vorhandene Projekte-Menü mit gespeicherten Projekten."""
|
"""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
|
# Prüfe ob Projekte vorhanden sind
|
||||||
if not app_settings.pdf_projects:
|
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.setEnabled(False)
|
||||||
self.ui.actionVorhandene_Projekte.setText("Vorhandene Projekte (keine vorhanden)")
|
self.ui.actionVorhandene_Projekte.setText("Vorhandene Projekte (keine vorhanden)")
|
||||||
|
logger.info("Projekte-Menü deaktiviert - keine Projekte vorhanden")
|
||||||
return
|
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.setEnabled(True)
|
||||||
self.ui.actionVorhandene_Projekte.setText("Vorhandene Projekte")
|
self.ui.actionVorhandene_Projekte.setText("Vorhandene Projekte")
|
||||||
|
|
||||||
# Erstelle ein Untermenü für die Projekte
|
# Erstelle ein Untermenü für die Projekte
|
||||||
projects_menu = QMenu(self)
|
projects_menu = QMenu(self)
|
||||||
|
|
||||||
# Füge jedes Projekt als Menü-Eintrag hinzu
|
# Füge jedes gültige Projekt als Menü-Eintrag hinzu
|
||||||
for project in app_settings.pdf_projects:
|
for project in valid_projects:
|
||||||
project_action = QAction(project.name, self)
|
project_action = QAction(project.name, self)
|
||||||
project_action.setToolTip(f"Projekt-Ordner: {project.project_dir}")
|
project_action.setToolTip(f"Projekt-Ordner: {project.project_dir}")
|
||||||
|
|
||||||
@@ -218,7 +243,9 @@ class MainWindow(
|
|||||||
# Setze das Untermenü für die Aktion
|
# Setze das Untermenü für die Aktion
|
||||||
self.ui.actionVorhandene_Projekte.setMenu(projects_menu)
|
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):
|
def open_existing_project(self, project: Project):
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user