Legacy-Code entfernen: _load_images() Funktion gelöscht
Die Funktion _load_images() war Legacy-Code aus der Entwicklungsphase und versuchte PDFs aus einem nicht existierenden Verzeichnis (ui/res/pdf/) zu laden. Die tatsächliche PDF-Anzeige erfolgt über _load_pdf_for_comparison(), die PDFs aus dem Projekt-Verzeichnis lädt. Entfernt: - _load_images() Funktion (144 Zeilen) - Aufruf in __init__() - Ungenutzte Imports: glob, os 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,3 @@
|
||||
import glob
|
||||
import os
|
||||
import time
|
||||
import polars as pl
|
||||
import shutil
|
||||
@@ -252,9 +250,6 @@ class MainWindow(QMainWindow):
|
||||
else:
|
||||
self.change_theme("Fusion")
|
||||
|
||||
# Bilder laden
|
||||
self._load_images()
|
||||
|
||||
# Signale und Slots verbinden
|
||||
self._connect_signals()
|
||||
|
||||
@@ -419,151 +414,6 @@ class MainWindow(QMainWindow):
|
||||
except Exception as e:
|
||||
logger.error(f"Fehler beim Wechseln des Themes: {e}")
|
||||
|
||||
def _load_images(self):
|
||||
"""Lädt PDF-Thumbnails und bereitet On-Demand-Rendering vor."""
|
||||
# Entferne bestehende Widgets aus den Layouts
|
||||
self._clear_layout(self.ui.verticalLayout_2)
|
||||
self._clear_layout(self.ui.verticalLayout_3)
|
||||
|
||||
# Dicts zurücksetzen
|
||||
self.thumbnail_to_page = {}
|
||||
self.pdf_documents = {}
|
||||
self.current_rendered_pixmaps = None
|
||||
|
||||
# Basis-Pfad zu den PDF-Ordnern
|
||||
base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
pdf_base_dir = os.path.join(base_dir, "ui", "res", "pdf")
|
||||
|
||||
diff_dir = os.path.join(pdf_base_dir, "diff")
|
||||
ref_dir = os.path.join(pdf_base_dir, "ref")
|
||||
new_dir = os.path.join(pdf_base_dir, "new")
|
||||
|
||||
# Prüfe ob diff-Ordner existiert und PDF-Dateien enthält
|
||||
if not os.path.exists(diff_dir):
|
||||
logger.warning(f"Diff-Ordner nicht gefunden: {diff_dir}")
|
||||
return
|
||||
|
||||
# Finde alle PDF-Dateien im diff-Ordner
|
||||
diff_pdfs = glob.glob(os.path.join(diff_dir, "*.pdf"))
|
||||
if not diff_pdfs:
|
||||
logger.warning("Keine PDF-Dateien im diff-Ordner gefunden")
|
||||
return
|
||||
|
||||
logger.debug(f"Gefundene PDF-Dateien im diff-Ordner: {diff_pdfs}")
|
||||
|
||||
# Für jede PDF-Datei im diff-Ordner
|
||||
for diff_pdf_path in diff_pdfs:
|
||||
pdf_filename = os.path.basename(diff_pdf_path)
|
||||
ref_pdf_path = os.path.join(ref_dir, pdf_filename)
|
||||
new_pdf_path = os.path.join(new_dir, pdf_filename)
|
||||
|
||||
# Prüfe ob gleichnamige PDFs in ref und new existieren
|
||||
if not os.path.exists(ref_pdf_path):
|
||||
logger.warning(f"Referenz-PDF nicht gefunden: {ref_pdf_path}")
|
||||
continue
|
||||
if not os.path.exists(new_pdf_path):
|
||||
logger.warning(f"New-PDF nicht gefunden: {new_pdf_path}")
|
||||
continue
|
||||
|
||||
try:
|
||||
# Alle drei PDF-Dateien öffnen mit QtPdf
|
||||
diff_doc = QPdfDocument()
|
||||
ref_doc = QPdfDocument()
|
||||
new_doc = QPdfDocument()
|
||||
|
||||
# PDF-Dateien laden
|
||||
diff_doc.load(diff_pdf_path)
|
||||
ref_doc.load(ref_pdf_path)
|
||||
new_doc.load(new_pdf_path)
|
||||
|
||||
# Warten bis PDFs geladen sind
|
||||
if (
|
||||
diff_doc.status() != QPdfDocument.Status.Ready
|
||||
or ref_doc.status() != QPdfDocument.Status.Ready
|
||||
or new_doc.status() != QPdfDocument.Status.Ready
|
||||
):
|
||||
logger.error(f"Fehler beim Laden der PDFs für {pdf_filename}")
|
||||
continue
|
||||
|
||||
# PDF-Dokumente für später speichern
|
||||
self.pdf_documents[pdf_filename] = {"diff": diff_doc, "ref": ref_doc, "new": new_doc}
|
||||
|
||||
logger.info(f"PDFs geladen: {pdf_filename}")
|
||||
logger.debug(f" diff: {diff_doc.pageCount()} Seiten")
|
||||
logger.debug(f" ref: {ref_doc.pageCount()} Seiten")
|
||||
logger.debug(f" new: {new_doc.pageCount()} Seiten")
|
||||
|
||||
# Nehme die Seitenzahl der diff-PDF als Basis
|
||||
max_pages = diff_doc.pageCount()
|
||||
|
||||
# Performance-Test: Messe Thumbnail-Erstellung
|
||||
start_time = time.time()
|
||||
|
||||
# Erstelle nur Thumbnails (keine Vollbilder)
|
||||
for page_num in range(max_pages):
|
||||
# Nur diff-Seite für Thumbnail rendern
|
||||
page_size = diff_doc.pagePointSize(page_num)
|
||||
|
||||
# Skalierung für Thumbnail (entspricht ca. Matrix(1.0, 1.0) in PyMuPDF)
|
||||
scale_factor = 200.0 / page_size.width() # 200 Pixel Breite für Thumbnail
|
||||
|
||||
# Seite rendern
|
||||
page_image = diff_doc.render(
|
||||
page_num, QSize(int(page_size.width() * scale_factor), int(page_size.height() * scale_factor))
|
||||
)
|
||||
|
||||
diff_pixmap = QPixmap.fromImage(page_image)
|
||||
|
||||
# Thumbnail erstellen und zur linken Spalte hinzufügen
|
||||
thumbnail = QLabel()
|
||||
thumbnail.setObjectName(f"thumbnail_{pdf_filename}_page_{page_num + 1}")
|
||||
thumbnail.setPixmap(diff_pixmap.scaledToWidth(200, Qt.TransformationMode.SmoothTransformation))
|
||||
thumbnail.setCursor(QCursor(Qt.CursorShape.PointingHandCursor))
|
||||
thumbnail.setMouseTracking(True)
|
||||
self.ui.verticalLayout_2.addWidget(thumbnail)
|
||||
|
||||
# Seitennummer für Thumbnail anzeigen
|
||||
thumbnail_info = QLabel(f"Seite {page_num + 1}")
|
||||
thumbnail_info.setAlignment(Qt.AlignmentFlag.AlignCenter)
|
||||
self.ui.verticalLayout_2.addWidget(thumbnail_info)
|
||||
|
||||
# Beziehung zwischen Thumbnail und Seitennummer speichern
|
||||
self.thumbnail_to_page[thumbnail] = {"pdf_filename": pdf_filename, "page_num": page_num}
|
||||
|
||||
# Click-Event für das Thumbnail einrichten
|
||||
thumbnail.mousePressEvent = lambda event, t=thumbnail: self.on_thumbnail_clicked(event, t)
|
||||
|
||||
logger.debug(f"Thumbnail für Seite {page_num + 1} erstellt")
|
||||
|
||||
thumbnail_time = time.time() - start_time
|
||||
logger.debug(f"Performance: {max_pages} Thumbnails in {thumbnail_time:.3f}s")
|
||||
|
||||
# Setze die erste PDF als aktuelle PDF
|
||||
if self.current_pdf is None:
|
||||
self.current_pdf = pdf_filename
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Fehler beim Laden der PDFs: {e}")
|
||||
|
||||
# Erstelle das eine Vollbild-Label für die rechte Spalte (immer erstellen)
|
||||
if self.fullsize_label is None:
|
||||
self.fullsize_label = QLabel()
|
||||
self.fullsize_label.setObjectName("fullsize_current_page")
|
||||
self.fullsize_label.setAlignment(Qt.AlignmentFlag.AlignHCenter)
|
||||
self.fullsize_label.setCursor(QCursor(Qt.CursorShape.OpenHandCursor))
|
||||
self.ui.verticalLayout_3.addWidget(self.fullsize_label)
|
||||
|
||||
# Drag-to-Scroll Events für das große Bild einrichten
|
||||
self.fullsize_label.mousePressEvent = lambda event: self.on_fullsize_mouse_press(event, self.fullsize_label)
|
||||
self.fullsize_label.mouseMoveEvent = lambda event: self.on_fullsize_mouse_move(event, self.fullsize_label)
|
||||
self.fullsize_label.mouseReleaseEvent = lambda event: self.on_fullsize_mouse_release(
|
||||
event, self.fullsize_label
|
||||
)
|
||||
|
||||
# Zeige die erste Seite initial an
|
||||
if self.current_pdf:
|
||||
self.render_and_display_page(self.current_pdf, 0)
|
||||
|
||||
def render_and_display_page(self, pdf_filename, page_num):
|
||||
"""
|
||||
Rendert und zeigt eine spezifische Seite in der Vollansicht an.
|
||||
|
||||
Reference in New Issue
Block a user