Feature: Icons für TreeNodes, XSL-Nodes und XML-Nodes hinzufügen
Fügt visuelle Icons für bessere Übersichtlichkeit im TreeWidget hinzu: - TreeNode: Ordner-Icon (folder-open mit Fallback) - XslFile: Script/Code-Icon (text-x-script) - XmlFile: XML-Dokument-Icon (text-xml) Icons verwenden QIcon.ThemeIcon für bessere Kompatibilität und System-Theme-Integration mit automatischen Fallbacks.
This commit is contained in:
@@ -545,6 +545,20 @@ class TreeManagerMixin:
|
|||||||
# Dies ermöglicht späteren Zugriff auf alle Node-Eigenschaften
|
# Dies ermöglicht späteren Zugriff auf alle Node-Eigenschaften
|
||||||
item.setData(0, Qt.ItemDataRole.UserRole, node)
|
item.setData(0, Qt.ItemDataRole.UserRole, node)
|
||||||
|
|
||||||
|
# Setze Icon basierend auf Node-Typ
|
||||||
|
if isinstance(node, TreeNode):
|
||||||
|
# TreeNode: Ordner-Icon
|
||||||
|
folder_icon = QIcon.fromTheme(QIcon.ThemeIcon.FolderOpen)
|
||||||
|
if folder_icon.isNull():
|
||||||
|
folder_icon = QIcon.fromTheme("folder")
|
||||||
|
item.setIcon(0, folder_icon)
|
||||||
|
elif isinstance(node, XslFile):
|
||||||
|
# XslFile: Code/Script-Icon für XSL-Dateien
|
||||||
|
xsl_icon = QIcon.fromTheme("text-x-script")
|
||||||
|
if xsl_icon.isNull():
|
||||||
|
xsl_icon = QIcon.fromTheme("text-x-generic")
|
||||||
|
item.setIcon(0, xsl_icon)
|
||||||
|
|
||||||
# Setze zusätzliche Informationen in Spalte 1
|
# Setze zusätzliche Informationen in Spalte 1
|
||||||
if isinstance(node, TreeNode):
|
if isinstance(node, TreeNode):
|
||||||
# TreeNode: Zeige Anzahl der Knoten
|
# TreeNode: Zeige Anzahl der Knoten
|
||||||
@@ -584,9 +598,7 @@ class TreeManagerMixin:
|
|||||||
from conf import app_settings
|
from conf import app_settings
|
||||||
|
|
||||||
# Hole XSL-Verzeichnis aus Projekt-Konfiguration
|
# Hole XSL-Verzeichnis aus Projekt-Konfiguration
|
||||||
xsl_dir = next(
|
xsl_dir = next((xd for xd in app_settings.xsl_dirs if xd.id == self.project.xsl_dir_id), None)
|
||||||
(xd for xd in app_settings.xsl_dirs if xd.id == self.project.xsl_dir_id), None
|
|
||||||
)
|
|
||||||
|
|
||||||
if xsl_dir:
|
if xsl_dir:
|
||||||
# Konstruiere absoluten Pfad zur XSL-Datei
|
# Konstruiere absoluten Pfad zur XSL-Datei
|
||||||
@@ -613,6 +625,14 @@ class TreeManagerMixin:
|
|||||||
xsl_id_str = "_".join(str(x) for x in node.id)
|
xsl_id_str = "_".join(str(x) for x in node.id)
|
||||||
xml_item.setData(1, Qt.ItemDataRole.UserRole, xsl_id_str)
|
xml_item.setData(1, Qt.ItemDataRole.UserRole, xsl_id_str)
|
||||||
|
|
||||||
|
# Setze XML-Icon
|
||||||
|
xml_icon = QIcon.fromTheme("text-xml")
|
||||||
|
if xml_icon.isNull():
|
||||||
|
xml_icon = QIcon.fromTheme("application-xml")
|
||||||
|
if xml_icon.isNull():
|
||||||
|
xml_icon = QIcon.fromTheme(QIcon.ThemeIcon.TextXGeneric)
|
||||||
|
xml_item.setIcon(0, xml_icon)
|
||||||
|
|
||||||
# Prüfe ob XML-Datei existiert und deaktiviere Knoten falls nicht
|
# Prüfe ob XML-Datei existiert und deaktiviere Knoten falls nicht
|
||||||
# Wenn XSL-Datei fehlt, deaktiviere auch alle untergeordneten XML-Knoten
|
# Wenn XSL-Datei fehlt, deaktiviere auch alle untergeordneten XML-Knoten
|
||||||
if xsl_file_missing:
|
if xsl_file_missing:
|
||||||
|
|||||||
Reference in New Issue
Block a user