Merge branch 'bearbeiten_der_nodes'
This commit is contained in:
+123
-4
@@ -12,6 +12,8 @@ from PySide6.QtPdf import QPdfDocument
|
||||
from ui.MainWinddow_ui import Ui_MainWindow
|
||||
from ui.AppSettings import AppSettingsDlg
|
||||
from ui.PdfProject import PdfProjectDlg
|
||||
from ui.TreeNodeEditDialog import TreeNodeEditDialog
|
||||
from ui.XslFileEditDialog import XslFileEditDialog
|
||||
from conf import app_settings, Project, ProjectData, TreeNode, XslFile, XmlFile
|
||||
from pathlib import Path
|
||||
|
||||
@@ -1040,9 +1042,49 @@ class MainWindow(QMainWindow):
|
||||
# TODO: Dialog zum Auswählen der XSL-Datei öffnen
|
||||
|
||||
def _edit_tree_node(self, item):
|
||||
"""Bearbeitet einen TreeNode."""
|
||||
"""
|
||||
Bearbeitet einen TreeNode.
|
||||
|
||||
Args:
|
||||
item: Das TreeWidgetItem des TreeNode
|
||||
"""
|
||||
print(f"TreeNode bearbeiten: {item.text(0)}")
|
||||
# TODO: Dialog zum Bearbeiten der Node-Daten öffnen
|
||||
|
||||
try:
|
||||
# Hole das Node-Objekt aus dem TreeWidgetItem
|
||||
node = item.data(0, Qt.ItemDataRole.UserRole)
|
||||
if not node or not isinstance(node, TreeNode):
|
||||
QMessageBox.warning(self, "Warnung", "Kein gültiger TreeNode gefunden.")
|
||||
return
|
||||
|
||||
# Sammle Eltern-Parameter
|
||||
parent_params = self._collect_parent_params(item)
|
||||
|
||||
# Erstelle und zeige den Dialog
|
||||
dialog = TreeNodeEditDialog(self, node, parent_params)
|
||||
if dialog.exec() == TreeNodeEditDialog.DialogCode.Accepted:
|
||||
# Hole die bearbeiteten Daten
|
||||
data = dialog.get_data()
|
||||
if data:
|
||||
# Aktualisiere den Node
|
||||
node.bez = data['bez']
|
||||
node.xslt_params = data['xslt_params']
|
||||
|
||||
print(f"TreeNode '{node.bez}' wurde aktualisiert")
|
||||
print(f"XSLT-Parameter: {node.xslt_params}")
|
||||
|
||||
# Speichere die Änderungen
|
||||
self._save_project_settings()
|
||||
|
||||
# Aktualisiere das TreeWidget
|
||||
self._load_nodes_to_tree()
|
||||
|
||||
QMessageBox.information(self, "Erfolg", "TreeNode wurde erfolgreich aktualisiert.")
|
||||
|
||||
except Exception as e:
|
||||
error_msg = f"Fehler beim Bearbeiten des TreeNode: {str(e)}"
|
||||
print(error_msg)
|
||||
QMessageBox.critical(self, "Fehler", error_msg)
|
||||
|
||||
def _delete_tree_node(self, item):
|
||||
"""Löscht einen TreeNode."""
|
||||
@@ -1161,9 +1203,49 @@ class MainWindow(QMainWindow):
|
||||
QMessageBox.critical(self, "Fehler", error_msg)
|
||||
|
||||
def _edit_xsl_file(self, item):
|
||||
"""Bearbeitet eine XSL-Datei."""
|
||||
"""
|
||||
Bearbeitet eine XSL-Datei.
|
||||
|
||||
Args:
|
||||
item: Das TreeWidgetItem des XslFile
|
||||
"""
|
||||
print(f"XslFile bearbeiten: {item.text(0)}")
|
||||
# TODO: Dialog zum Bearbeiten der XSL-Datei öffnen
|
||||
|
||||
try:
|
||||
# Hole das Node-Objekt aus dem TreeWidgetItem
|
||||
node = item.data(0, Qt.ItemDataRole.UserRole)
|
||||
if not node or not isinstance(node, XslFile):
|
||||
QMessageBox.warning(self, "Warnung", "Keine gültige XSL-Datei gefunden.")
|
||||
return
|
||||
|
||||
# Sammle Eltern-Parameter
|
||||
parent_params = self._collect_parent_params(item)
|
||||
|
||||
# Erstelle und zeige den Dialog
|
||||
dialog = XslFileEditDialog(self, node, parent_params)
|
||||
if dialog.exec() == XslFileEditDialog.DialogCode.Accepted:
|
||||
# Hole die bearbeiteten Daten
|
||||
data = dialog.get_data()
|
||||
if data:
|
||||
# Aktualisiere den Node
|
||||
node.bez = data['bez']
|
||||
node.xslt_params = data['xslt_params']
|
||||
|
||||
print(f"XslFile '{node.bez}' wurde aktualisiert")
|
||||
print(f"XSLT-Parameter: {node.xslt_params}")
|
||||
|
||||
# Speichere die Änderungen
|
||||
self._save_project_settings()
|
||||
|
||||
# Aktualisiere das TreeWidget
|
||||
self._load_nodes_to_tree()
|
||||
|
||||
QMessageBox.information(self, "Erfolg", "XSL-Datei wurde erfolgreich aktualisiert.")
|
||||
|
||||
except Exception as e:
|
||||
error_msg = f"Fehler beim Bearbeiten der XSL-Datei: {str(e)}"
|
||||
print(error_msg)
|
||||
QMessageBox.critical(self, "Fehler", error_msg)
|
||||
|
||||
def _delete_xsl_file(self, item):
|
||||
"""Löscht eine XSL-Datei."""
|
||||
@@ -1432,6 +1514,43 @@ class MainWindow(QMainWindow):
|
||||
existing_node.children.append(new_child)
|
||||
print(f"Neues Kind hinzugefügt zu Node {existing_node.id}: {new_child.bez}")
|
||||
|
||||
def _collect_parent_params(self, item):
|
||||
"""
|
||||
Sammelt die XSLT-Parameter aller Eltern-Nodes.
|
||||
|
||||
Args:
|
||||
item: Das TreeWidgetItem
|
||||
|
||||
Returns:
|
||||
dict: Dictionary mit allen Eltern-Parametern
|
||||
"""
|
||||
parent_params = {}
|
||||
|
||||
try:
|
||||
# Gehe die Hierarchie nach oben durch
|
||||
current_item = item.parent()
|
||||
|
||||
while current_item:
|
||||
# Hole das Node-Objekt
|
||||
parent_node = current_item.data(0, Qt.ItemDataRole.UserRole)
|
||||
|
||||
if parent_node and hasattr(parent_node, 'xslt_params') and parent_node.xslt_params:
|
||||
# Füge die Parameter des Eltern-Nodes hinzu
|
||||
# Eltern-Parameter haben niedrigere Priorität (werden überschrieben)
|
||||
for key, value in parent_node.xslt_params.items():
|
||||
if key not in parent_params: # Nur hinzufügen wenn noch nicht vorhanden
|
||||
parent_params[key] = value
|
||||
|
||||
# Gehe zum nächsten Eltern-Element
|
||||
current_item = current_item.parent()
|
||||
|
||||
print(f"Gesammelte Eltern-Parameter: {parent_params}")
|
||||
return parent_params
|
||||
|
||||
except Exception as e:
|
||||
print(f"Fehler beim Sammeln der Eltern-Parameter: {e}")
|
||||
return {}
|
||||
|
||||
def _save_project_settings(self):
|
||||
"""
|
||||
Speichert die aktualisierten Projekt-Einstellungen.
|
||||
|
||||
Reference in New Issue
Block a user