Alphabetische Sortierung des Knotenbaums

This commit is contained in:
2025-09-19 20:29:56 +02:00
parent dcfaf09ebd
commit 98cc8b26f6
2 changed files with 26 additions and 15 deletions
+16 -10
View File
@@ -129,7 +129,8 @@ class XmlToXslAssignDialog(QDialog):
self._load_project_nodes()
def _load_project_nodes(self):
"""Lädt die Projekt-Knoten in das TreeWidget (ohne XML-Knoten)."""
"""Lädt die Projekt-Knoten in das TreeWidget (ohne XML-Knoten).
Sortiert die Items alphabetisch nach ihrer ID."""
if not self.project_nodes:
return
@@ -137,8 +138,11 @@ class XmlToXslAssignDialog(QDialog):
self.ui.xslNodesTree.clear()
self.xsl_checkboxes.clear()
# Alle Root-Nodes laden
for node in self.project_nodes:
# Sortiere Root-Nodes alphabetisch nach ID
sorted_nodes = sorted(self.project_nodes, key=lambda node: node.id)
# Alle Root-Nodes laden (sortiert)
for node in sorted_nodes:
tree_item = self._create_tree_item_from_node(node)
if tree_item: # Nur hinzufügen wenn Item erstellt wurde
self.ui.xslNodesTree.addTopLevelItem(tree_item)
@@ -176,14 +180,16 @@ class XmlToXslAssignDialog(QDialog):
child_count = len(node.children) if node.children else 0
item.setText(1, f"{child_count} Knoten")
# Lade Knoten rekursiv (nur TreeNode und XslFile, keine XML)
# Lade Knoten rekursiv (sortiert nach ID, nur TreeNode und XslFile, keine XML)
if node.children:
for child in node.children:
# Nur TreeNode und XslFile hinzufügen, keine XmlFile
if isinstance(child, (TreeNode, XslFile)):
child_item = self._create_tree_item_from_node(child)
if child_item:
item.addChild(child_item)
# Filtere und sortiere Kinder
valid_children = [child for child in node.children if isinstance(child, (TreeNode, XslFile))]
sorted_children = sorted(valid_children, key=lambda child: child.id)
for child in sorted_children:
child_item = self._create_tree_item_from_node(child)
if child_item:
item.addChild(child_item)
elif isinstance(node, XslFile):
# XslFile: Zeige XSL-Datei-Pfad