Edit-Dialoge: XSLT-Parameter nebeneinander + Force-Transformation
UI-Redesign für TreeNodeEditDialog und XslFileEditDialog: - XSLT-Parameter-Tabellen werden jetzt nebeneinander angezeigt - Eigene Parameter (editierbar) links, geerbte Parameter (read-only) rechts - Bessere Übersicht durch direkten visuellen Vergleich - Fensterbreite auf ~870px erhöht für optimale Darstellung - Icons für Hinzufügen/Entfernen-Buttons hinzugefügt - Kompakteres Layout durch reduzierte Margins Neue Funktionalität: Force-Transformation nach Bearbeitung - Neue CheckBox "Alle XML-Dateien neu transformieren (force)" in beiden Dialogen - Beim Schließen mit OK werden alle untergeordneten XML-Dateien transformiert - TreeNodeEditDialog: Transformiert rekursiv alle XML-Dateien unter dem Knoten - XslFileEditDialog: Transformiert alle XML-Dateien der XSL-Datei - Transformation erfolgt auch bei bereits aktuellem Output (force=True) Implementierungsdetails: - TreeNodeEditDialog.get_data() gibt jetzt force_transform zurück - XslFileEditDialog.get_data() gibt jetzt force_transform zurück - MainWindow._find_item_by_node() findet Item nach TreeWidget-Neuladen - MainWindow._edit_tree_node() startet Force-Transformation bei Bedarf - MainWindow._edit_xsl_file() startet Force-Transformation bei Bedarf 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -887,6 +887,39 @@ class MainWindow(QMainWindow):
|
||||
print(f"Fehler beim Bestimmen des Node-Typs aus Daten: {e}")
|
||||
return "Unknown"
|
||||
|
||||
def _find_item_by_node(self, node_obj):
|
||||
"""
|
||||
Findet ein TreeWidgetItem basierend auf einem Node-Objekt.
|
||||
|
||||
Args:
|
||||
node_obj: Das Node-Objekt (TreeNode, XslFile oder XmlFile)
|
||||
|
||||
Returns:
|
||||
QTreeWidgetItem oder None wenn nicht gefunden
|
||||
"""
|
||||
def search_recursive(item):
|
||||
"""Rekursive Suche durch TreeWidget."""
|
||||
# Prüfe aktuelles Item
|
||||
item_node = item.data(0, Qt.ItemDataRole.UserRole)
|
||||
if item_node is node_obj:
|
||||
return item
|
||||
|
||||
# Durchsuche Kinder
|
||||
for i in range(item.childCount()):
|
||||
child = item.child(i)
|
||||
result = search_recursive(child)
|
||||
if result:
|
||||
return result
|
||||
return None
|
||||
|
||||
# Durchsuche alle Root-Items
|
||||
for i in range(self.ui.treeWidget.topLevelItemCount()):
|
||||
root_item = self.ui.treeWidget.topLevelItem(i)
|
||||
result = search_recursive(root_item)
|
||||
if result:
|
||||
return result
|
||||
return None
|
||||
|
||||
def _find_node_by_id(self, nodes, target_id):
|
||||
"""
|
||||
Sucht rekursiv nach einem Node mit der angegebenen ID.
|
||||
@@ -1650,6 +1683,16 @@ class MainWindow(QMainWindow):
|
||||
# Aktualisiere das TreeWidget
|
||||
self._load_nodes_to_tree()
|
||||
|
||||
# Wenn Force-Transformation gewünscht, führe sie aus
|
||||
if data.get("force_transform", False):
|
||||
# Finde das neue Item nach dem Neuladen
|
||||
new_item = self._find_item_by_node(node)
|
||||
if new_item:
|
||||
logger.info(f"Starte Force-Transformation für TreeNode '{node.bez}'")
|
||||
self._transform_tree_node(new_item, force=True)
|
||||
else:
|
||||
logger.warning(f"Konnte Item für TreeNode '{node.bez}' nicht finden")
|
||||
|
||||
# QMessageBox.information(self, "Erfolg", "TreeNode wurde erfolgreich aktualisiert.")
|
||||
|
||||
except Exception as e:
|
||||
@@ -1811,6 +1854,16 @@ class MainWindow(QMainWindow):
|
||||
# Aktualisiere das TreeWidget
|
||||
self._load_nodes_to_tree()
|
||||
|
||||
# Wenn Force-Transformation gewünscht, führe sie aus
|
||||
if data.get("force_transform", False):
|
||||
# Finde das neue Item nach dem Neuladen
|
||||
new_item = self._find_item_by_node(node)
|
||||
if new_item:
|
||||
logger.info(f"Starte Force-Transformation für XslFile '{node.bez}'")
|
||||
self._transform_xsl_file(new_item, force=True)
|
||||
else:
|
||||
logger.warning(f"Konnte Item für XslFile '{node.bez}' nicht finden")
|
||||
|
||||
# QMessageBox.information(self, "Erfolg", "XSL-Datei wurde erfolgreich aktualisiert.")
|
||||
|
||||
except Exception as e:
|
||||
|
||||
Reference in New Issue
Block a user