In jedem TreeItem werden Daten des Nodes komplett gespeichert.

This commit is contained in:
2025-08-12 20:08:26 +02:00
parent b6f41e188e
commit b69b8755a8
+15 -5
View File
@@ -964,12 +964,13 @@ class MainWindow(QMainWindow):
def _create_tree_item_from_node(self, node): def _create_tree_item_from_node(self, node):
""" """
Erstellt ein QTreeWidgetItem aus einem TreeNode oder XslFile. Erstellt ein QTreeWidgetItem aus einem TreeNode oder XslFile.
Speichert die vollständigen Node-Daten für spätere Verwendung.
Args: Args:
node: TreeNode oder XslFile Objekt node: TreeNode oder XslFile Objekt
Returns: Returns:
QTreeWidgetItem: Das erstellte Tree-Item QTreeWidgetItem: Das erstellte Tree-Item mit vollständigen Node-Daten
""" """
try: try:
# Erstelle Tree-Item # Erstelle Tree-Item
@@ -979,14 +980,18 @@ class MainWindow(QMainWindow):
bez_text = str(node.bez) if node.bez else "" bez_text = str(node.bez) if node.bez else ""
item.setText(0, bez_text) item.setText(0, bez_text)
# Speichere das komplette Node-Objekt als UserRole-Daten
# Dies ermöglicht späteren Zugriff auf alle Node-Eigenschaften
item.setData(0, Qt.ItemDataRole.UserRole, node)
# Setze zusätzliche Informationen in Spalte 1 # Setze zusätzliche Informationen in Spalte 1
if isinstance(node, TreeNode): if isinstance(node, TreeNode):
# TreeNode: Zeige Anzahl der Kinder # TreeNode: Zeige Anzahl der Kinder
child_count = len(node.children) if node.children else 0 child_count = len(node.children) if node.children else 0
item.setText(1, f"({child_count} Kinder)") item.setText(1, f"({child_count} Kinder)")
# Speichere Node-ID als Data # Speichere zusätzlich die Node-ID in UserRole+1 für Kompatibilität
item.setData(0, Qt.ItemDataRole.UserRole, node.id) item.setData(0, Qt.ItemDataRole.UserRole + 1, node.id)
# Lade Kinder rekursiv # Lade Kinder rekursiv
if node.children: if node.children:
@@ -998,8 +1003,8 @@ class MainWindow(QMainWindow):
# XslFile: Zeige XSL-Datei-Pfad # XslFile: Zeige XSL-Datei-Pfad
item.setText(1, str(node.xsl_file)) item.setText(1, str(node.xsl_file))
# Speichere XslFile-ID als Data # Speichere zusätzlich die Node-ID in UserRole+1 für Kompatibilität
item.setData(0, Qt.ItemDataRole.UserRole, node.id) item.setData(0, Qt.ItemDataRole.UserRole + 1, node.id)
# Lade XML-Dateien als Kinder # Lade XML-Dateien als Kinder
if node.xmls: if node.xmls:
@@ -1007,6 +1012,11 @@ class MainWindow(QMainWindow):
xml_item = QTreeWidgetItem() xml_item = QTreeWidgetItem()
xml_item.setText(0, f"XML: {xml.xml.name}") xml_item.setText(0, f"XML: {xml.xml.name}")
xml_item.setText(1, str(xml.xml)) xml_item.setText(1, str(xml.xml))
# Speichere auch das XmlFile-Objekt für XML-Items
xml_item.setData(0, Qt.ItemDataRole.UserRole, xml)
xml_item.setData(0, Qt.ItemDataRole.UserRole + 1, f"xml_{xml.xml.name}")
item.addChild(xml_item) item.addChild(xml_item)
return item return item