diff --git a/src/ui/MainWinddow.ui b/src/ui/MainWinddow.ui
index 9ae505f..a165852 100644
--- a/src/ui/MainWinddow.ui
+++ b/src/ui/MainWinddow.ui
@@ -278,7 +278,10 @@
-
-
+
+
+ false
+
Vorher (Referenz)
@@ -286,6 +289,9 @@
-
+
+ Doppelklick um diesen Slider auf Mitte zu stellen
+
-100
@@ -298,7 +304,10 @@
-
-
+
+
+ false
+
Nachher (Neu)
@@ -326,6 +335,9 @@
-
+
+ Doppelklick um den Zoom zurückzusetzen
+
25
@@ -381,6 +393,9 @@
-
+
+ true
+
QFrame::Shape::NoFrame
diff --git a/src/ui/MainWinddow_ui.py b/src/ui/MainWinddow_ui.py
index b149c1c..dde5b1b 100644
--- a/src/ui/MainWinddow_ui.py
+++ b/src/ui/MainWinddow_ui.py
@@ -169,10 +169,11 @@ class Ui_MainWindow(object):
self.horizontalLayout_3.addItem(self.horizontalSpacer_4)
- self.label_6 = QLabel(self.frame_4)
- self.label_6.setObjectName(u"label_6")
+ self.view_ref_pdf = QPushButton(self.frame_4)
+ self.view_ref_pdf.setObjectName(u"view_ref_pdf")
+ self.view_ref_pdf.setEnabled(False)
- self.horizontalLayout_3.addWidget(self.label_6)
+ self.horizontalLayout_3.addWidget(self.view_ref_pdf)
self.alpha = QSlider(self.frame_4)
self.alpha.setObjectName(u"alpha")
@@ -182,10 +183,11 @@ class Ui_MainWindow(object):
self.horizontalLayout_3.addWidget(self.alpha)
- self.label_7 = QLabel(self.frame_4)
- self.label_7.setObjectName(u"label_7")
+ self.view_new_pdf = QPushButton(self.frame_4)
+ self.view_new_pdf.setObjectName(u"view_new_pdf")
+ self.view_new_pdf.setEnabled(False)
- self.horizontalLayout_3.addWidget(self.label_7)
+ self.horizontalLayout_3.addWidget(self.view_new_pdf)
self.horizontalSpacer_2 = QSpacerItem(40, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
@@ -224,6 +226,7 @@ class Ui_MainWindow(object):
self.scrollArea_2 = QScrollArea(self.frame_3)
self.scrollArea_2.setObjectName(u"scrollArea_2")
+ self.scrollArea_2.setEnabled(True)
self.scrollArea_2.setFrameShape(QFrame.Shape.NoFrame)
self.scrollArea_2.setFrameShadow(QFrame.Shadow.Raised)
self.scrollArea_2.setWidgetResizable(True)
@@ -287,9 +290,15 @@ class Ui_MainWindow(object):
self.pB_lade_aus_fn2.setText(QCoreApplication.translate("MainWindow", u"lade aus FN2", None))
self.label.setText("")
self.label_2.setText("")
- self.label_6.setText(QCoreApplication.translate("MainWindow", u"Vorher (Referenz)", None))
- self.label_7.setText(QCoreApplication.translate("MainWindow", u"Nachher (Neu)", None))
+ self.view_ref_pdf.setText(QCoreApplication.translate("MainWindow", u"Vorher (Referenz)", None))
+#if QT_CONFIG(tooltip)
+ self.alpha.setToolTip(QCoreApplication.translate("MainWindow", u"Doppelklick um diesen Slider auf Mitte zu stellen", None))
+#endif // QT_CONFIG(tooltip)
+ self.view_new_pdf.setText(QCoreApplication.translate("MainWindow", u"Nachher (Neu)", None))
self.label_5.setText(QCoreApplication.translate("MainWindow", u"Zoom", None))
+#if QT_CONFIG(tooltip)
+ self.zoom.setToolTip(QCoreApplication.translate("MainWindow", u"Doppelklick um den Zoom zur\u00fcckzusetzen", None))
+#endif // QT_CONFIG(tooltip)
self.accept_changes.setText(QCoreApplication.translate("MainWindow", u"\u2705 \u00c4nderungen \u00fcbernehmen", None))
self.menuProjekt.setTitle(QCoreApplication.translate("MainWindow", u"Projekt", None))
self.menuThema.setTitle(QCoreApplication.translate("MainWindow", u"Thema", None))
diff --git a/src/ui/MainWindow.py b/src/ui/MainWindow.py
index 1197c6a..9b763e9 100644
--- a/src/ui/MainWindow.py
+++ b/src/ui/MainWindow.py
@@ -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