Version 1.6.5: 'Bearbeiten' als Standard-Aktion im Tree-Kontextmenü

Der Menüpunkt 'Bearbeiten' steht nun ganz oben im Kontextmenü aller
Knotentypen (TreeNode, XslFile, XmlFile), wird fett dargestellt und
öffnet sich per Doppelklick auf den jeweiligen Knoten.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-24 13:17:01 +02:00
parent 1bd20824b4
commit 5f10b79906
6 changed files with 57 additions and 20 deletions
+1 -1
View File
@@ -4,7 +4,7 @@
<!-- Paket-Definition (ersetzt Product in v4) --> <!-- Paket-Definition (ersetzt Product in v4) -->
<Package <Package
Name="DocuMentor" Name="DocuMentor"
Version="1.6.4" Version="1.6.5"
Manufacturer="Vitali Graf / Software- und Datenbankentwicklung" Manufacturer="Vitali Graf / Software- und Datenbankentwicklung"
UpgradeCode="F498B66C-726D-44AA-95F4-CB4FBDCEF26E" UpgradeCode="F498B66C-726D-44AA-95F4-CB4FBDCEF26E"
Language="1031" Language="1031"
+1 -1
View File
@@ -253,5 +253,5 @@ HINWEISE
================================================================================ ================================================================================
Stand: April 2026 Stand: April 2026
Erstellt für: DocuMentor v1.6.4 Erstellt für: DocuMentor v1.6.5
================================================================================ ================================================================================
+1 -1
View File
@@ -10,7 +10,7 @@
; Build-Befehl: iscc installer.iss ; Build-Befehl: iscc installer.iss
#define MyAppName "DocuMentor" #define MyAppName "DocuMentor"
#define MyAppVersion "1.6.4" #define MyAppVersion "1.6.5"
#define MyAppPublisher "Ihr Name/Organisation" #define MyAppPublisher "Ihr Name/Organisation"
#define MyAppURL "https://github.com/yourusername/xsl-validator" #define MyAppURL "https://github.com/yourusername/xsl-validator"
#define MyAppExeName "DocuMentor.exe" #define MyAppExeName "DocuMentor.exe"
+1 -1
View File
@@ -1,6 +1,6 @@
[project] [project]
name = "DocuMentor" name = "DocuMentor"
version = "1.6.4" version = "1.6.5"
description = "Professionelle XSL-Transformations-Verwaltung und PDF-Generierung" description = "Professionelle XSL-Transformations-Verwaltung und PDF-Generierung"
readme = "README.md" readme = "README.md"
license = {text = "MIT"} license = {text = "MIT"}
+52 -15
View File
@@ -59,12 +59,31 @@ class TreeManagerMixin:
# Aktiviere Kontextmenü für das TreeWidget # Aktiviere Kontextmenü für das TreeWidget
self.ui.treeWidget.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu) self.ui.treeWidget.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
self.ui.treeWidget.customContextMenuRequested.connect(self._show_tree_context_menu) self.ui.treeWidget.customContextMenuRequested.connect(self._show_tree_context_menu)
self.ui.treeWidget.itemDoubleClicked.connect(self._on_tree_item_double_clicked)
# Verbinde Selection-Changed-Signal für automatisches Laden von Diff-PDFs # Verbinde Selection-Changed-Signal für automatisches Laden von Diff-PDFs
self.ui.treeWidget.itemSelectionChanged.connect(self._on_tree_selection_changed) self.ui.treeWidget.itemSelectionChanged.connect(self._on_tree_selection_changed)
logger.debug("Kontextmenü und Selection-Handler für TreeWidget eingerichtet") logger.debug("Kontextmenü und Selection-Handler für TreeWidget eingerichtet")
def _on_tree_item_double_clicked(self, item, column):
"""
Behandelt Doppelklick auf ein TreeWidget-Item, indem die Bearbeiten-Aktion ausgeführt wird.
Args:
item: Das angeklickte TreeWidgetItem
column: Die Spalte des Doppelklicks
"""
if item.isDisabled():
return
node_type = self._get_node_type_from_item(item)
if node_type == ItemType.TREE_NODE:
self._edit_tree_node(item)
elif node_type == ItemType.XSL_FILE:
self._edit_xsl_file(item)
elif node_type == ItemType.XML_FILE:
self._edit_xml_file(item)
def _show_tree_context_menu(self, position): def _show_tree_context_menu(self, position):
""" """
Zeigt das Kontextmenü für das TreeWidget an. Zeigt das Kontextmenü für das TreeWidget an.
@@ -299,6 +318,17 @@ class TreeManagerMixin:
if node_type == ItemType.TREE_NODE: if node_type == ItemType.TREE_NODE:
# Kontextmenü für TreeNode # Kontextmenü für TreeNode
action_edit = QAction("Bearbeiten", self)
action_edit.setIcon(QIcon(QIcon.fromTheme(QIcon.ThemeIcon.DocumentProperties)))
action_edit.triggered.connect(lambda: self._edit_tree_node(item))
font = action_edit.font()
font.setBold(True)
action_edit.setFont(font)
menu.addAction(action_edit)
menu.setDefaultAction(action_edit)
menu.addSeparator()
action_add_child = QAction("Unterknoten hinzufügen", self) action_add_child = QAction("Unterknoten hinzufügen", self)
action_add_child.setIcon(QIcon(QIcon.fromTheme("folder-new"))) action_add_child.setIcon(QIcon(QIcon.fromTheme("folder-new")))
action_add_child.triggered.connect(lambda: self._add_tree_node_child(item)) action_add_child.triggered.connect(lambda: self._add_tree_node_child(item))
@@ -341,11 +371,6 @@ class TreeManagerMixin:
menu.addSeparator() menu.addSeparator()
action_edit = QAction("Bearbeiten", self)
action_edit.setIcon(QIcon(QIcon.fromTheme(QIcon.ThemeIcon.DocumentProperties)))
action_edit.triggered.connect(lambda: self._edit_tree_node(item))
menu.addAction(action_edit)
action_delete = QAction("Löschen", self) action_delete = QAction("Löschen", self)
action_delete.setIcon(QIcon(QIcon.fromTheme(QIcon.ThemeIcon.EditDelete))) action_delete.setIcon(QIcon(QIcon.fromTheme(QIcon.ThemeIcon.EditDelete)))
action_delete.triggered.connect(lambda: self._delete_tree_node(item)) action_delete.triggered.connect(lambda: self._delete_tree_node(item))
@@ -353,6 +378,17 @@ class TreeManagerMixin:
elif node_type == ItemType.XSL_FILE: elif node_type == ItemType.XSL_FILE:
# Kontextmenü für XslFile # Kontextmenü für XslFile
action_edit = QAction("Bearbeiten", self)
action_edit.setIcon(QIcon(QIcon.fromTheme(QIcon.ThemeIcon.DocumentProperties)))
action_edit.triggered.connect(lambda: self._edit_xsl_file(item))
font = action_edit.font()
font.setBold(True)
action_edit.setFont(font)
menu.addAction(action_edit)
menu.setDefaultAction(action_edit)
menu.addSeparator()
action_add_xml = QAction("XML-Datei hinzufügen", self) action_add_xml = QAction("XML-Datei hinzufügen", self)
action_add_xml.setIcon(QIcon(QIcon.fromTheme("document-new"))) action_add_xml.setIcon(QIcon(QIcon.fromTheme("document-new")))
action_add_xml.triggered.connect(lambda: self._add_xml_file_to_xsl(item)) action_add_xml.triggered.connect(lambda: self._add_xml_file_to_xsl(item))
@@ -397,11 +433,6 @@ class TreeManagerMixin:
menu.addSeparator() menu.addSeparator()
action_edit = QAction("Bearbeiten", self)
action_edit.setIcon(QIcon(QIcon.fromTheme(QIcon.ThemeIcon.DocumentProperties)))
action_edit.triggered.connect(lambda: self._edit_xsl_file(item))
menu.addAction(action_edit)
action_delete = QAction("Löschen", self) action_delete = QAction("Löschen", self)
action_delete.setIcon(QIcon(QIcon.fromTheme(QIcon.ThemeIcon.EditDelete))) action_delete.setIcon(QIcon(QIcon.fromTheme(QIcon.ThemeIcon.EditDelete)))
action_delete.triggered.connect(lambda: self._delete_xsl_file(item)) action_delete.triggered.connect(lambda: self._delete_xsl_file(item))
@@ -409,6 +440,17 @@ class TreeManagerMixin:
elif node_type == ItemType.XML_FILE: elif node_type == ItemType.XML_FILE:
# Kontextmenü für XmlFile # Kontextmenü für XmlFile
action_edit = QAction("Bearbeiten", self)
action_edit.setIcon(QIcon(QIcon.fromTheme(QIcon.ThemeIcon.DocumentProperties)))
action_edit.triggered.connect(lambda: self._edit_xml_file(item))
font = action_edit.font()
font.setBold(True)
action_edit.setFont(font)
menu.addAction(action_edit)
menu.setDefaultAction(action_edit)
menu.addSeparator()
# Transformations-Aktionen # Transformations-Aktionen
action_transform = QAction("Transformieren", self) action_transform = QAction("Transformieren", self)
action_transform.setIcon(QIcon(QIcon.fromTheme("system-run"))) action_transform.setIcon(QIcon(QIcon.fromTheme("system-run")))
@@ -422,11 +464,6 @@ class TreeManagerMixin:
menu.addSeparator() menu.addSeparator()
action_edit = QAction("Bearbeiten", self)
action_edit.setIcon(QIcon(QIcon.fromTheme(QIcon.ThemeIcon.DocumentProperties)))
action_edit.triggered.connect(lambda: self._edit_xml_file(item))
menu.addAction(action_edit)
action_delete = QAction("Löschen", self) action_delete = QAction("Löschen", self)
action_delete.setIcon(QIcon(QIcon.fromTheme(QIcon.ThemeIcon.EditDelete))) action_delete.setIcon(QIcon(QIcon.fromTheme(QIcon.ThemeIcon.EditDelete)))
action_delete.triggered.connect(lambda: self._delete_xml_file(item)) action_delete.triggered.connect(lambda: self._delete_xml_file(item))
Generated
+1 -1
View File
@@ -39,7 +39,7 @@ wheels = [
[[package]] [[package]]
name = "documentor" name = "documentor"
version = "1.6.4" version = "1.6.5"
source = { virtual = "." } source = { virtual = "." }
dependencies = [ dependencies = [
{ name = "connectorx" }, { name = "connectorx" },