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
+10 -5
View File
@@ -973,6 +973,7 @@ class MainWindow(QMainWindow):
def _load_nodes_to_tree(self): def _load_nodes_to_tree(self):
""" """
Lädt die Nodes aus den Projekt-Einstellungen in das TreeWidget. Lädt die Nodes aus den Projekt-Einstellungen in das TreeWidget.
Sortiert die Items alphabetisch nach ihrer ID.
""" """
print("Lade Nodes in TreeWidget...") print("Lade Nodes in TreeWidget...")
@@ -989,12 +990,15 @@ class MainWindow(QMainWindow):
print("Keine Nodes in den Projekt-Einstellungen gefunden") print("Keine Nodes in den Projekt-Einstellungen gefunden")
return return
# Lade alle Root-Nodes # Sortiere Root-Nodes alphabetisch nach ID
for node in self.pdf_project.nodes: sorted_nodes = sorted(self.pdf_project.nodes, key=lambda node: node.id)
# Lade alle Root-Nodes (sortiert)
for node in sorted_nodes:
tree_item = self._create_tree_item_from_node(node) tree_item = self._create_tree_item_from_node(node)
self.ui.treeWidget.addTopLevelItem(tree_item) self.ui.treeWidget.addTopLevelItem(tree_item)
print(f"{len(self.pdf_project.nodes)} Root-Nodes in TreeWidget geladen") print(f"{len(self.pdf_project.nodes)} Root-Nodes in TreeWidget geladen (alphabetisch sortiert)")
except Exception as e: except Exception as e:
print(f"Fehler beim Laden der Nodes in TreeWidget: {e}") print(f"Fehler beim Laden der Nodes in TreeWidget: {e}")
@@ -1031,9 +1035,10 @@ class MainWindow(QMainWindow):
# Speichere zusätzlich die Node-ID in UserRole+1 für Kompatibilität # Speichere zusätzlich die Node-ID in UserRole+1 für Kompatibilität
item.setData(0, Qt.ItemDataRole.UserRole + 1, node.id) item.setData(0, Qt.ItemDataRole.UserRole + 1, node.id)
# Lade Knoten rekursiv # Lade Knoten rekursiv (sortiert nach ID)
if node.children: if node.children:
for child in node.children: sorted_children = sorted(node.children, key=lambda child: child.id)
for child in sorted_children:
child_item = self._create_tree_item_from_node(child) child_item = self._create_tree_item_from_node(child)
item.addChild(child_item) item.addChild(child_item)
+16 -10
View File
@@ -129,7 +129,8 @@ class XmlToXslAssignDialog(QDialog):
self._load_project_nodes() self._load_project_nodes()
def _load_project_nodes(self): 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: if not self.project_nodes:
return return
@@ -137,8 +138,11 @@ class XmlToXslAssignDialog(QDialog):
self.ui.xslNodesTree.clear() self.ui.xslNodesTree.clear()
self.xsl_checkboxes.clear() self.xsl_checkboxes.clear()
# Alle Root-Nodes laden # Sortiere Root-Nodes alphabetisch nach ID
for node in self.project_nodes: 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) tree_item = self._create_tree_item_from_node(node)
if tree_item: # Nur hinzufügen wenn Item erstellt wurde if tree_item: # Nur hinzufügen wenn Item erstellt wurde
self.ui.xslNodesTree.addTopLevelItem(tree_item) self.ui.xslNodesTree.addTopLevelItem(tree_item)
@@ -176,14 +180,16 @@ class XmlToXslAssignDialog(QDialog):
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} Knoten") 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: if node.children:
for child in node.children: # Filtere und sortiere Kinder
# Nur TreeNode und XslFile hinzufügen, keine XmlFile valid_children = [child for child in node.children if isinstance(child, (TreeNode, XslFile))]
if isinstance(child, (TreeNode, XslFile)): sorted_children = sorted(valid_children, key=lambda child: child.id)
child_item = self._create_tree_item_from_node(child)
if child_item: for child in sorted_children:
item.addChild(child_item) child_item = self._create_tree_item_from_node(child)
if child_item:
item.addChild(child_item)
elif isinstance(node, XslFile): elif isinstance(node, XslFile):
# XslFile: Zeige XSL-Datei-Pfad # XslFile: Zeige XSL-Datei-Pfad