From 8a37992bea1799409e305f4f3bdbf78731a733db Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Sat, 17 Jan 2026 20:29:29 +0100 Subject: [PATCH] Feature: XSL-Knoten bei fehlenden Dateien deaktivieren MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- src/ui/mixins/tree_manager.py | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/ui/mixins/tree_manager.py b/src/ui/mixins/tree_manager.py index 60333f6..8b10484 100644 --- a/src/ui/mixins/tree_manager.py +++ b/src/ui/mixins/tree_manager.py @@ -578,6 +578,26 @@ class TreeManagerMixin: if diff_count > 0: 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 if node.xmls: for xml in node.xmls: @@ -594,7 +614,11 @@ class TreeManagerMixin: xml_item.setData(1, Qt.ItemDataRole.UserRole, xsl_id_str) # 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 if not xml_abs_path.exists(): xml_item.setDisabled(True)