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)