Feat: Ref-PDF automatisch im internen Viewer anzeigen wenn keine Diff-PDF vorhanden

Beim Auswählen eines XML-Knotens im Baum wird jetzt die Ref-PDF direkt im
internen Viewer geladen, sofern keine Diff-PDF existiert. Der Kontextmenü-Eintrag
"Ref-PDF öffnen" und der zugehörige Handler wurden entfernt.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-14 17:01:19 +01:00
parent 93f9bb90dd
commit 4f2d136d17
3 changed files with 121 additions and 92 deletions
+2 -62
View File
@@ -1,8 +1,8 @@
import logging
import shutil
from PySide6.QtCore import Qt, QUrl, QEvent
from PySide6.QtGui import QAction, QDesktopServices
from PySide6.QtCore import Qt, QEvent
from PySide6.QtGui import QAction
from PySide6.QtWidgets import (
QMainWindow,
QApplication,
@@ -870,66 +870,6 @@ class MainWindow(
logger.error(f"Fehler beim Akzeptieren der Änderungen: {e}")
QMessageBox.critical(self, "Fehler", f"Fehler beim Akzeptieren der Änderungen:\n{str(e)}")
def _open_ref_pdf_for_xml_file(self, item):
"""
Handler für Kontextmenü-Aktion "Ref-PDF öffnen" bei XML-Dateien.
Öffnet die Referenz-PDF für die ausgewählte XML-Datei im systemseitig installierten PDF-Viewer.
Args:
item: Das TreeWidgetItem der XML-Datei
"""
try:
if not self.project:
QMessageBox.warning(self, "Fehler", "Kein Projekt geöffnet")
return
# Hole XML-Datei-Objekt
xml_file_obj = item.data(0, Qt.ItemDataRole.UserRole)
if not xml_file_obj:
QMessageBox.warning(self, "Fehler", "XML-Datei-Objekt nicht gefunden")
return
# Hole Parent-Item (XslFile)
parent_item = item.parent()
if not parent_item:
QMessageBox.warning(self, "Fehler", "Parent-Item nicht gefunden")
return
# Hole XslFile-Objekt
xsl_file_obj = parent_item.data(0, Qt.ItemDataRole.UserRole)
if not xsl_file_obj:
QMessageBox.warning(self, "Fehler", "XSL-Datei-Objekt nicht gefunden")
return
# Erstelle XSL-ID-String
xsl_id_str = "_".join(map(str, xsl_file_obj.id))
# Ermittle PDF-Dateinamen
xml_file_path = xml_file_obj.xml
xml_stem = xml_file_path.stem
pdf_basename = f"{xml_stem}_xsl_{xsl_id_str}.pdf"
# Pfad zur Ref-PDF
ref_dir = self.project.project_dir / "ref"
ref_pdf_path = ref_dir / pdf_basename
# Prüfe ob Ref-PDF existiert
if not ref_pdf_path.exists():
QMessageBox.warning(self, "Fehler", f"Referenz-PDF nicht gefunden:\n{pdf_basename}")
logger.warning(f"Referenz-PDF nicht gefunden: {ref_pdf_path}")
return
# Öffne Ref-PDF im System-Viewer
logger.info(f"Öffne Referenz-PDF im System-Viewer: {ref_pdf_path}")
url = QUrl.fromLocalFile(str(ref_pdf_path))
if not QDesktopServices.openUrl(url):
QMessageBox.critical(self, "Fehler", f"Konnte Referenz-PDF nicht öffnen:\n{ref_pdf_path}")
logger.error(f"Fehler beim Öffnen der Referenz-PDF: {ref_pdf_path}")
except Exception as e:
logger.error(f"Fehler beim Öffnen der Referenz-PDF: {e}")
QMessageBox.critical(self, "Fehler", f"Fehler beim Öffnen der Referenz-PDF:\n{str(e)}")
def eventFilter(self, obj, event):
"""
Event-Filter für Zoom per STRG+Mausrad im PDF-Viewer.