Feat: Projektweite XSLT-Parameter mit Vererbungshierarchie (v1.4.0)

Ermöglicht die Definition von XSLT-Parametern auf Projektebene, die als
Basis für alle Transformationen dienen und von TreeNode- bzw. XslFile-
Parametern überschrieben werden können (Projekt < TreeNode < XslFile).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-04 10:57:05 +02:00
parent d1def05607
commit a0626a78a3
16 changed files with 579 additions and 195 deletions
+13 -1
View File
@@ -5,6 +5,7 @@ from PySide6.QtWidgets import QDialog, QFileDialog, QMessageBox
from conf import app_settings
from ui.PdfProject_ui import Ui_projectDlg
from ui.ProjectXsltParamsDialog import ProjectXsltParamsDialog
class PdfProjectDlg(QDialog):
@@ -26,6 +27,7 @@ class PdfProjectDlg(QDialog):
# Projektdaten speichern
self.project_data = project_data or {}
self.edit_mode = edit_mode
self.xslt_params: dict[str, str] = dict(self.project_data.get("xslt_params", {}))
# Dialog-Eigenschaften setzen
self.setModal(True)
@@ -53,6 +55,9 @@ class PdfProjectDlg(QDialog):
# Browse-Button für FOP-Config-Ordner
self.ui.btnBrowseFopConfig.clicked.connect(self.browse_fop_config_dir)
# XSLT-Parameter bearbeiten
self.ui.btnEditXsltParams.clicked.connect(self._edit_xslt_params)
# OK/Cancel Buttons sind bereits in der UI-Datei verbunden
# self.ui.buttonBox.accepted.connect(self.accept)
# self.ui.buttonBox.rejected.connect(self.reject)
@@ -190,6 +195,12 @@ class PdfProjectDlg(QDialog):
if selected_dir:
self.ui.lineFopConfigDir.setText(selected_dir)
def _edit_xslt_params(self):
"""Öffnet den Dialog zur Bearbeitung der projektweiten XSLT-Parameter."""
dialog = ProjectXsltParamsDialog(self, self.xslt_params)
if dialog.exec() == ProjectXsltParamsDialog.DialogCode.Accepted:
self.xslt_params = dialog.get_params()
def validate_and_accept(self):
"""Validiert die Eingaben und akzeptiert den Dialog."""
# Projekt-Name prüfen
@@ -269,7 +280,8 @@ class PdfProjectDlg(QDialog):
'apache_fop_id': self.ui.cB_ApacheFop.currentData(),
'diff_pdf_id': self.ui.cB_Diff_Pdf.currentData(),
'postgre_sql_db_id': self.ui.cB_Postgres.currentData(),
'fop_config_dir': fop_config_dir if fop_config_dir else None
'fop_config_dir': fop_config_dir if fop_config_dir else None,
'xslt_params': self.xslt_params,
}
def _configure_edit_mode(self):