diff --git a/src/ui/MainWindow.py b/src/ui/MainWindow.py index 4441b82..62573f0 100644 --- a/src/ui/MainWindow.py +++ b/src/ui/MainWindow.py @@ -973,6 +973,7 @@ class MainWindow(QMainWindow): def _load_nodes_to_tree(self): """ Lädt die Nodes aus den Projekt-Einstellungen in das TreeWidget. + Sortiert die Items alphabetisch nach ihrer ID. """ print("Lade Nodes in TreeWidget...") @@ -989,12 +990,15 @@ class MainWindow(QMainWindow): print("Keine Nodes in den Projekt-Einstellungen gefunden") return - # Lade alle Root-Nodes - for node in self.pdf_project.nodes: + # Sortiere Root-Nodes alphabetisch nach ID + 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) 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: 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 item.setData(0, Qt.ItemDataRole.UserRole + 1, node.id) - # Lade Knoten rekursiv + # Lade Knoten rekursiv (sortiert nach ID) 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) item.addChild(child_item) diff --git a/src/ui/XmlToXslAssignDialog.py b/src/ui/XmlToXslAssignDialog.py index 50c0560..6269310 100644 --- a/src/ui/XmlToXslAssignDialog.py +++ b/src/ui/XmlToXslAssignDialog.py @@ -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