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:
+24
-2
@@ -726,7 +726,7 @@ class MainWindow(QMainWindow):
|
|||||||
else:
|
else:
|
||||||
# Kein Diff-PDF - Viewer leeren falls noch ein PDF geladen ist
|
# Kein Diff-PDF - Viewer leeren falls noch ein PDF geladen ist
|
||||||
if self.pdf_documents:
|
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()
|
self._clear_pdf_viewer()
|
||||||
else:
|
else:
|
||||||
logger.debug("XML-File-Daten fehlen (xml_file_obj oder xsl_id_str ist None)")
|
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}")
|
logger.error(f"Fehler beim Starten der Transformation: {e}")
|
||||||
QMessageBox.critical(self, "Fehler", f"Fehler beim Starten: {str(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):
|
def _on_transformation_job_started(self, xml_file_name: str, xsl_id_str: str):
|
||||||
"""
|
"""
|
||||||
Signal-Handler: Ein Job wurde gestartet.
|
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")
|
logger.info(f"Map hat {len(self.xml_item_map)} Einträge")
|
||||||
tree_item = self.xml_item_map.get(map_key)
|
tree_item = self.xml_item_map.get(map_key)
|
||||||
if tree_item:
|
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)
|
# Entferne vorhandenes Widget (falls Icon vorhanden)
|
||||||
self.ui.treeWidget.removeItemWidget(tree_item, 2)
|
self.ui.treeWidget.removeItemWidget(tree_item, 2)
|
||||||
|
|
||||||
@@ -3487,7 +3509,7 @@ class MainWindow(QMainWindow):
|
|||||||
progress_widget, progress_bar = self._create_centered_progress_bar()
|
progress_widget, progress_bar = self._create_centered_progress_bar()
|
||||||
self.ui.treeWidget.setItemWidget(tree_item, 2, progress_widget)
|
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:
|
else:
|
||||||
logger.warning(f"Kein TreeWidget-Item für {xml_file_name} gefunden")
|
logger.warning(f"Kein TreeWidget-Item für {xml_file_name} gefunden")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user