Feature: Buttons zum Öffnen von Ref- und New-PDFs im System-Viewer
Neue Buttons im PDF-Vergleichs-Viewer: - "Vorher (Referenz)" Button öffnet Referenz-PDF im System-PDF-Viewer - "Nachher (Neu)" Button öffnet neue PDF im System-PDF-Viewer - Beide Buttons sind initial deaktiviert - Automatische Aktivierung beim Laden von Diff-PDFs - Automatische Deaktivierung beim Leeren des Viewers Implementierung: - Neue Instanzvariablen: current_ref_pdf_path, current_new_pdf_path - Handler-Methoden: _on_view_ref_pdf_clicked(), _on_view_new_pdf_clicked() - QDesktopServices.openUrl() für plattformunabhängiges Öffnen - Fehlerbehandlung und Logging UI-Änderungen: - Buttons in MainWinddow.ui hinzugefügt (view_ref_pdf, view_new_pdf) - MainWinddow_ui.py automatisch generiert 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
+58
-2
@@ -5,8 +5,8 @@ import hashlib
|
||||
import logging
|
||||
from typing import List
|
||||
|
||||
from PySide6.QtCore import Qt, QSize, QThread, Signal
|
||||
from PySide6.QtGui import QCursor, QPixmap, QPainter, QAction, QIcon, QDragEnterEvent, QDropEvent
|
||||
from PySide6.QtCore import Qt, QSize, QThread, Signal, QUrl
|
||||
from PySide6.QtGui import QCursor, QPixmap, QPainter, QAction, QIcon, QDragEnterEvent, QDropEvent, QDesktopServices
|
||||
from PySide6.QtWidgets import (
|
||||
QLabel,
|
||||
QMainWindow,
|
||||
@@ -508,6 +508,10 @@ class MainWindow(QMainWindow):
|
||||
self.current_diff_xml_path = None
|
||||
self.current_diff_xsl_id = None
|
||||
|
||||
# Pfade zu aktuellen Ref- und New-PDFs (für System-Viewer)
|
||||
self.current_ref_pdf_path = None
|
||||
self.current_new_pdf_path = None
|
||||
|
||||
# Cache für die aktuell gerenderten Pixmaps (Performance-Optimierung)
|
||||
self.current_rendered_pixmaps = None
|
||||
|
||||
@@ -1108,6 +1112,10 @@ class MainWindow(QMainWindow):
|
||||
# Button "Accept Changes" verbinden
|
||||
self.ui.accept_changes.clicked.connect(self._on_accept_changes_clicked)
|
||||
|
||||
# Buttons zum Öffnen von PDFs im System-Viewer verbinden
|
||||
self.ui.view_ref_pdf.clicked.connect(self._on_view_ref_pdf_clicked)
|
||||
self.ui.view_new_pdf.clicked.connect(self._on_view_new_pdf_clicked)
|
||||
|
||||
def _setup_tree_context_menu(self):
|
||||
"""Richtet das Kontextmenü für das TreeWidget ein."""
|
||||
# Aktiviere Kontextmenü für das TreeWidget
|
||||
@@ -1958,6 +1966,14 @@ class MainWindow(QMainWindow):
|
||||
# PDF-Dokumente speichern
|
||||
self.pdf_documents[pdf_basename] = {"diff": diff_doc, "ref": ref_doc, "new": new_doc}
|
||||
|
||||
# PDF-Pfade für System-Viewer speichern
|
||||
self.current_ref_pdf_path = ref_pdf_path
|
||||
self.current_new_pdf_path = new_pdf_path
|
||||
|
||||
# Buttons zum Öffnen der PDFs im System-Viewer aktivieren
|
||||
self.ui.view_ref_pdf.setEnabled(True)
|
||||
self.ui.view_new_pdf.setEnabled(True)
|
||||
|
||||
logger.info(f"PDFs geladen: {pdf_basename}")
|
||||
logger.info(f" diff: {diff_doc.pageCount()} Seiten")
|
||||
logger.info(f" ref: {ref_doc.pageCount()} Seiten")
|
||||
@@ -4640,6 +4656,12 @@ class MainWindow(QMainWindow):
|
||||
self.current_diff_xml_path = None
|
||||
self.current_diff_xsl_id = None
|
||||
|
||||
# PDF-Pfade zurücksetzen und Buttons deaktivieren
|
||||
self.current_ref_pdf_path = None
|
||||
self.current_new_pdf_path = None
|
||||
self.ui.view_ref_pdf.setEnabled(False)
|
||||
self.ui.view_new_pdf.setEnabled(False)
|
||||
|
||||
logger.info("PDF-Viewer geleert")
|
||||
|
||||
def _on_accept_changes_clicked(self):
|
||||
@@ -4740,6 +4762,40 @@ class MainWindow(QMainWindow):
|
||||
logger.error(f"Fehler beim Akzeptieren der Änderungen: {e}")
|
||||
QMessageBox.critical(self, "Fehler", f"Fehler beim Akzeptieren der Änderungen:\n{str(e)}")
|
||||
|
||||
def _on_view_ref_pdf_clicked(self):
|
||||
"""
|
||||
Handler für view_ref_pdf Button.
|
||||
Öffnet die Referenz-PDF im systemseitig installierten PDF-Viewer.
|
||||
"""
|
||||
if not self.current_ref_pdf_path or not self.current_ref_pdf_path.exists():
|
||||
QMessageBox.warning(self, "Fehler", "Referenz-PDF nicht gefunden")
|
||||
logger.warning("Referenz-PDF nicht verfügbar")
|
||||
return
|
||||
|
||||
logger.info(f"Öffne Referenz-PDF im System-Viewer: {self.current_ref_pdf_path}")
|
||||
url = QUrl.fromLocalFile(str(self.current_ref_pdf_path))
|
||||
if not QDesktopServices.openUrl(url):
|
||||
QMessageBox.critical(
|
||||
self, "Fehler", f"Konnte Referenz-PDF nicht öffnen:\n{self.current_ref_pdf_path}"
|
||||
)
|
||||
logger.error(f"Fehler beim Öffnen der Referenz-PDF: {self.current_ref_pdf_path}")
|
||||
|
||||
def _on_view_new_pdf_clicked(self):
|
||||
"""
|
||||
Handler für view_new_pdf Button.
|
||||
Öffnet die neue PDF im systemseitig installierten PDF-Viewer.
|
||||
"""
|
||||
if not self.current_new_pdf_path or not self.current_new_pdf_path.exists():
|
||||
QMessageBox.warning(self, "Fehler", "Neue PDF nicht gefunden")
|
||||
logger.warning("Neue PDF nicht verfügbar")
|
||||
return
|
||||
|
||||
logger.info(f"Öffne neue PDF im System-Viewer: {self.current_new_pdf_path}")
|
||||
url = QUrl.fromLocalFile(str(self.current_new_pdf_path))
|
||||
if not QDesktopServices.openUrl(url):
|
||||
QMessageBox.critical(self, "Fehler", f"Konnte neue PDF nicht öffnen:\n{self.current_new_pdf_path}")
|
||||
logger.error(f"Fehler beim Öffnen der neuen PDF: {self.current_new_pdf_path}")
|
||||
|
||||
def closeEvent(self, event):
|
||||
"""Wird beim Schließen der Anwendung aufgerufen."""
|
||||
# UI-Zustände speichern
|
||||
|
||||
Reference in New Issue
Block a user