UX-Verbesserung: Automatisches Öffnen von Tree-Knoten während Transformation

Beim Durchführen von Transformationen werden jetzt die betroffenen XML-Knoten im Baum automatisch geöffnet und sichtbar gemacht, damit der Benutzer den Fortschritt besser verfolgen kann.

Änderungen:
- Neue Hilfsmethode _expand_tree_item_parents() zum rekursiven Öffnen aller Eltern-Knoten
- _on_transformation_job_started() erweitert um Auto-Expand und Scroll-to-Item
- Verbesserte Log-Meldung für besseres Debugging

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-27 17:44:46 +01:00
parent 2d866a0fb5
commit 4634b6e027
+24 -2
View File
@@ -726,7 +726,7 @@ class MainWindow(QMainWindow):
else:
# Kein Diff-PDF - Viewer leeren falls noch ein PDF geladen ist
if self.pdf_documents:
logger.debug(f"XML-Knoten ohne Diff-PDF ausgewählt, leere Viewer")
logger.debug("XML-Knoten ohne Diff-PDF ausgewählt, leere Viewer")
self._clear_pdf_viewer()
else:
logger.debug("XML-File-Daten fehlen (xml_file_obj oder xsl_id_str ist None)")
@@ -3460,6 +3460,22 @@ class MainWindow(QMainWindow):
logger.error(f"Fehler beim Starten der Transformation: {e}")
QMessageBox.critical(self, "Fehler", f"Fehler beim Starten: {str(e)}")
def _expand_tree_item_parents(self, item: QTreeWidgetItem):
"""
Öffnet alle Eltern-Knoten eines Tree-Items rekursiv.
Args:
item: Das Tree-Item, dessen Eltern geöffnet werden sollen
"""
if item is None:
return
# Rekursiv alle Eltern öffnen
parent = item.parent()
while parent is not None:
parent.setExpanded(True)
parent = parent.parent()
def _on_transformation_job_started(self, xml_file_name: str, xsl_id_str: str):
"""
Signal-Handler: Ein Job wurde gestartet.
@@ -3480,6 +3496,12 @@ class MainWindow(QMainWindow):
logger.info(f"Map hat {len(self.xml_item_map)} Einträge")
tree_item = self.xml_item_map.get(map_key)
if tree_item:
# Öffne alle Eltern-Knoten, damit der Benutzer den Fortschritt sehen kann
self._expand_tree_item_parents(tree_item)
# Scrolle zum Item, damit es sichtbar ist
self.ui.treeWidget.scrollToItem(tree_item)
# Entferne vorhandenes Widget (falls Icon vorhanden)
self.ui.treeWidget.removeItemWidget(tree_item, 2)
@@ -3487,7 +3509,7 @@ class MainWindow(QMainWindow):
progress_widget, progress_bar = self._create_centered_progress_bar()
self.ui.treeWidget.setItemWidget(tree_item, 2, progress_widget)
logger.debug(f"Progress Bar für {xml_file_name} gesetzt")
logger.debug(f"Progress Bar für {xml_file_name} gesetzt und Eltern-Knoten geöffnet")
else:
logger.warning(f"Kein TreeWidget-Item für {xml_file_name} gefunden")