Feature: XSL-Knoten bei fehlenden Dateien deaktivieren

Beim Laden des Projekts werden nun auch XSL-Knoten automatisch deaktiviert (ausgegraut), wenn die entsprechende XSL-Datei nicht im XSL-Verzeichnis vorhanden ist.

Zusätzlich werden alle untergeordneten XML-Knoten ebenfalls deaktiviert, wenn die übergeordnete XSL-Datei fehlt. Dies verhindert, dass Transformationen mit fehlenden XSL-Dateien gestartet werden und gibt sofortige visuelle Rückmeldung.

- XSL-Knoten werden mit setDisabled(True) deaktiviert
- Tooltip zeigt den vollständigen Pfad der fehlenden XSL-Datei
- Alle untergeordneten XML-Knoten werden ebenfalls deaktiviert
- Warnung wird ins Log geschrieben

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-17 20:29:29 +01:00
parent 91fe597301
commit 8a37992bea
+25 -1
View File
@@ -578,6 +578,26 @@ class TreeManagerMixin:
if diff_count > 0: if diff_count > 0:
item.setText(2, str(diff_count)) item.setText(2, str(diff_count))
# Prüfe ob XSL-Datei existiert
xsl_file_missing = False
if hasattr(self, "project") and self.project:
from conf import app_settings
# Hole XSL-Verzeichnis aus Projekt-Konfiguration
xsl_dir = next(
(xd for xd in app_settings.xsl_dirs if xd.id == self.project.xsl_dir_id), None
)
if xsl_dir:
# Konstruiere absoluten Pfad zur XSL-Datei
xsl_file_abs = xsl_dir.path_to_root_dir / node.xsl_file
if not xsl_file_abs.exists():
xsl_file_missing = True
item.setDisabled(True)
item.setToolTip(0, f"XSL-Datei nicht gefunden: {xsl_file_abs}")
logger.warning(f"XSL-Datei nicht vorhanden: {xsl_file_abs}")
# Lade XML-Dateien als Knoten # Lade XML-Dateien als Knoten
if node.xmls: if node.xmls:
for xml in node.xmls: for xml in node.xmls:
@@ -594,7 +614,11 @@ class TreeManagerMixin:
xml_item.setData(1, Qt.ItemDataRole.UserRole, xsl_id_str) xml_item.setData(1, Qt.ItemDataRole.UserRole, xsl_id_str)
# Prüfe ob XML-Datei existiert und deaktiviere Knoten falls nicht # Prüfe ob XML-Datei existiert und deaktiviere Knoten falls nicht
if hasattr(self, "project") and self.project: # Wenn XSL-Datei fehlt, deaktiviere auch alle untergeordneten XML-Knoten
if xsl_file_missing:
xml_item.setDisabled(True)
xml_item.setToolTip(0, "XML-Knoten deaktiviert: Übergeordnete XSL-Datei fehlt")
elif hasattr(self, "project") and self.project:
xml_abs_path = self.project.project_dir / xml.xml xml_abs_path = self.project.project_dir / xml.xml
if not xml_abs_path.exists(): if not xml_abs_path.exists():
xml_item.setDisabled(True) xml_item.setDisabled(True)