From 1d953186ea27a0814ccc7bb9b301f551347ede31 Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Sat, 20 Dec 2025 19:54:51 +0100 Subject: [PATCH] =?UTF-8?q?Legacy-Code=20entfernen:=20=5Fload=5Fimages()?= =?UTF-8?q?=20Funktion=20gel=C3=B6scht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- src/ui/MainWindow.py | 150 ------------------------------------------- 1 file changed, 150 deletions(-) diff --git a/src/ui/MainWindow.py b/src/ui/MainWindow.py index 338480d..2f80d9e 100644 --- a/src/ui/MainWindow.py +++ b/src/ui/MainWindow.py @@ -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.