diff --git a/src/MainWindow.py b/src/MainWindow.py index 0673f12..b9f6be5 100644 --- a/src/MainWindow.py +++ b/src/MainWindow.py @@ -23,6 +23,12 @@ class MainWindow(QMainWindow): # Dict zum Speichern der Beziehung zwischen Thumbnails und großen Bildern self.thumbnail_to_full_image = {} + # Dict zum Speichern der Original-Pixmaps für Zoom-Funktion + self.original_pixmaps = {} + + # Aktueller Zoom-Faktor + self.current_zoom = 100 # 100% + # Bilder laden self._load_images() @@ -35,6 +41,10 @@ class MainWindow(QMainWindow): self._clear_layout(self.ui.verticalLayout_2) self._clear_layout(self.ui.verticalLayout_3) + # Dicts zurücksetzen + self.thumbnail_to_full_image = {} + self.original_pixmaps = {} + # Pfad zum Ressourcen-Ordner base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) res_dir = os.path.join(base_dir, "src", "ui", "res") @@ -49,10 +59,13 @@ class MainWindow(QMainWindow): for gif_file in gif_files: filename = os.path.basename(gif_file) + # Original-Pixmap laden und speichern + original_pixmap = QPixmap(gif_file) + # Thumbnail erstellen und zur linken Spalte hinzufügen thumbnail = QLabel() thumbnail.setObjectName(f"thumbnail_{filename}") - thumbnail.setPixmap(QPixmap(gif_file).scaledToWidth(200)) + thumbnail.setPixmap(original_pixmap.scaledToWidth(200)) thumbnail.setCursor(QCursor(Qt.CursorShape.PointingHandCursor)) thumbnail.setMouseTracking(True) self.ui.verticalLayout_2.addWidget(thumbnail) @@ -60,11 +73,12 @@ class MainWindow(QMainWindow): # Vollbild-Version erstellen und zur rechten Spalte hinzufügen fullsize = QLabel() fullsize.setObjectName(f"fullsize_{filename}") - fullsize.setPixmap(QPixmap(gif_file)) + fullsize.setPixmap(original_pixmap) self.ui.verticalLayout_3.addWidget(fullsize) - # Beziehung zwischen Thumbnail und Vollbild speichern + # Beziehungen speichern self.thumbnail_to_full_image[thumbnail] = fullsize + self.original_pixmaps[fullsize] = original_pixmap # Click-Event für das Thumbnail einrichten thumbnail.mousePressEvent = lambda event, t=thumbnail: self.on_thumbnail_clicked(event, t) @@ -81,7 +95,10 @@ class MainWindow(QMainWindow): def _connect_signals(self): """Verbindet Signale mit den entsprechenden Slots.""" # Button-Klicks verbinden - # self.ui.pushButton.clicked.connect(self.on_button_clicked) + self.ui.pushButton.clicked.connect(self.on_button_clicked) + + # Zoom-Slider verbinden + self.ui.zoom.valueChanged.connect(self.apply_zoom) def on_button_clicked(self): """Wird ausgeführt, wenn der Button geklickt wird.""" @@ -102,3 +119,22 @@ class MainWindow(QMainWindow): full_image = self.thumbnail_to_full_image.get(thumbnail) if full_image: self.ui.scrollArea_2.ensureWidgetVisible(full_image) + + def apply_zoom(self, zoom_value): + """ + Wendet den Zoom-Faktor auf alle Bilder im rechten Panel an. + + Args: + zoom_value: Der neue Zoom-Wert (in Prozent) + """ + self.current_zoom = zoom_value + print(f"Zoom geändert auf {zoom_value}%") + + # Wende den Zoom auf alle Bilder an + for fullsize_label, original_pixmap in self.original_pixmaps.items(): + # Berechne die neue Größe basierend auf dem Zoom-Faktor + new_width = int(original_pixmap.width() * zoom_value / 100) + + # Skaliere das Bild und setze es ins Label + scaled_pixmap = original_pixmap.scaledToWidth(new_width, Qt.TransformationMode.SmoothTransformation) + fullsize_label.setPixmap(scaled_pixmap)