Feature: Aktions-Menü mit Batch-Transformationen und UI-Bereinigung

- Neues Aktions-Menü mit Transformations- und Datenbankfunktionen
- Menü wird beim Projekt-Laden automatisch aktiviert
- Neue Aktion: Alle XML-Dateien transformieren (inkrementell)
- Neue Aktion: Alle XML-Dateien neu transformieren (force)
- Neue Aktion: Aus Datenbank laden (ersetzt Button)
- Entfernte obsolete Buttons (pushButton, pushButton_2, pB_lade_aus_fn2)
- UI-Bereinigung: Button-Frame unterhalb TreeWidget entfernt
- Batch-Transformationen sammeln rekursiv alle XML/XSL-Paare
- Bestätigungsdialoge mit Job-Anzahl und Warnungen
- Deutsche Log-Meldungen und Fehlertexte
This commit is contained in:
2026-01-25 15:23:32 +01:00
parent 2858d46ef1
commit 3bdc0a0daa
4 changed files with 206 additions and 126 deletions
+8 -8
View File
@@ -284,6 +284,10 @@ class MainWindow(
# Worker-Pools werden jetzt erst beim Start der Transformation initialisiert (lazy loading)
# Aktiviere das Aktions-Menü, da ein Projekt geladen wurde
self.ui.menuAktion.setEnabled(True)
logger.info("Aktions-Menü aktiviert nach Projekt-Laden")
except Exception as e:
logger.error(f"Fehler beim Laden des Projekts '{project.name}': {e}")
# Fallback: Erstelle Standard-Einstellungen
@@ -326,8 +330,6 @@ class MainWindow(
def _connect_signals(self):
"""Verbindet Signale mit den entsprechenden Slots."""
# Button-Klicks verbinden
self.ui.pushButton.clicked.connect(self.on_button_clicked)
# Zoom-Slider verbinden
self.ui.zoom.valueChanged.connect(self.apply_zoom)
@@ -340,6 +342,8 @@ class MainWindow(
# Menü-Aktionen verbinden
self.ui.actionNeu.triggered.connect(self.open_new_project_dialog)
self.ui.actionEinstellungen.triggered.connect(self.open_settings_dialog)
self.ui.actionAlle_XML_Dateien_transformieren.triggered.connect(self._transform_all_xml_files)
self.ui.actionAlle_XML_Dateien_neu_transformieren_force.triggered.connect(self._transform_all_xml_files_force)
# Worker-Pool-Metriken Menüeintrag (programmatisch hinzufügen)
from PySide6.QtGui import QAction
@@ -360,8 +364,8 @@ class MainWindow(
else:
self.ui.menuProjekt.addAction(self.action_worker_metrics)
# Button "lade aus FN2" verbinden
self.ui.pB_lade_aus_fn2.clicked.connect(self.on_load_from_fn2_clicked)
# Menü-Aktion "Aus Datenbank laden" verbinden (macht das Gleiche wie Button)
self.ui.actionAus_Datenbank_laden.triggered.connect(self.on_load_from_fn2_clicked)
# Button "Accept Changes" verbinden
self.ui.accept_changes.clicked.connect(self._on_accept_changes_clicked)
@@ -462,10 +466,6 @@ class MainWindow(
logger.error(f"Fehler beim Erstellen der Projekt-Struktur: {e}")
raise
def on_button_clicked(self):
"""Wird ausgeführt, wenn der Button geklickt wird."""
logger.debug("Button wurde geklickt!")
def _update_diff_icons_for_existing_pdfs(self):
"""
Durchläuft alle XML-Items und setzt Icons für bereits existierende Diff-PDFs.