Feature: Zoom per STRG+Mausrad im PDF-Viewer
Neue Zoom-Funktion für bessere Bedienung: - STRG+Mausrad rauf: Zoom vergrößern (+10% pro Schritt) - STRG+Mausrad runter: Zoom verkleinern (-10% pro Schritt) - Respektiert Slider-Grenzen (25% bis 300%) - Funktioniert nur wenn PDF geladen ist (Slider aktiviert) Implementierung: - Event-Filter für scrollArea_2 (PDF-Viewer) - eventFilter() Methode fängt Wheel-Events ab - Prüft auf ControlModifier (STRG-Taste) - Aktualisiert Zoom-Slider (triggert automatisch apply_zoom) Technische Details: - _setup_scroll_area_zoom() in __init__ - installEventFilter(self) für scrollArea_2 - QEvent.Type.Wheel mit Qt.KeyboardModifier.ControlModifier - Zoom-Schrittweite: 10% 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
+55
-1
@@ -5,7 +5,7 @@ import hashlib
|
||||
import logging
|
||||
from typing import List
|
||||
|
||||
from PySide6.QtCore import Qt, QSize, QThread, Signal, QUrl
|
||||
from PySide6.QtCore import Qt, QSize, QThread, Signal, QUrl, QEvent
|
||||
from PySide6.QtGui import QCursor, QPixmap, QPainter, QAction, QIcon, QDragEnterEvent, QDropEvent, QDesktopServices
|
||||
from PySide6.QtWidgets import (
|
||||
QLabel,
|
||||
@@ -575,6 +575,9 @@ class MainWindow(QMainWindow):
|
||||
# Drag&Drop für TreeWidget aktivieren
|
||||
self._setup_drag_drop()
|
||||
|
||||
# Zoom per Mausrad (STRG+Mausrad) für PDF-Viewer aktivieren
|
||||
self._setup_scroll_area_zoom()
|
||||
|
||||
# Gespeicherte UI-Zustände wiederherstellen
|
||||
self._restore_ui_state()
|
||||
|
||||
@@ -2854,6 +2857,16 @@ class MainWindow(QMainWindow):
|
||||
except Exception as e:
|
||||
logger.error(f"Fehler beim Aktivieren von Drag&Drop: {e}")
|
||||
|
||||
def _setup_scroll_area_zoom(self):
|
||||
"""Aktiviert Zoom per STRG+Mausrad für die PDF-ScrollArea."""
|
||||
try:
|
||||
# Installiere Event-Filter für scrollArea_2 (PDF-Viewer)
|
||||
self.ui.scrollArea_2.installEventFilter(self)
|
||||
logger.debug("Zoom per STRG+Mausrad für PDF-Viewer aktiviert")
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Fehler beim Aktivieren von Scroll-Area-Zoom: {e}")
|
||||
|
||||
def tree_drag_enter_event(self, event: QDragEnterEvent):
|
||||
"""
|
||||
Wird ausgeführt, wenn ein Drag-Vorgang über das TreeWidget beginnt.
|
||||
@@ -4804,6 +4817,47 @@ class MainWindow(QMainWindow):
|
||||
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 eventFilter(self, obj, event):
|
||||
"""
|
||||
Event-Filter für Zoom per STRG+Mausrad im PDF-Viewer.
|
||||
|
||||
Args:
|
||||
obj: Das Objekt, das das Event erhalten hat
|
||||
event: Das Event
|
||||
|
||||
Returns:
|
||||
True wenn Event behandelt wurde, sonst False
|
||||
"""
|
||||
# Prüfe ob Event von scrollArea_2 kommt und ein Wheel-Event ist
|
||||
if obj == self.ui.scrollArea_2 and event.type() == QEvent.Type.Wheel:
|
||||
# Prüfe ob STRG-Taste gedrückt ist
|
||||
if event.modifiers() & Qt.KeyboardModifier.ControlModifier:
|
||||
# Zoom-Schritte: 10% pro Mausrad-Klick
|
||||
zoom_step = 10
|
||||
|
||||
# Mausrad-Delta (positiv = nach oben, negativ = nach unten)
|
||||
delta = event.angleDelta().y()
|
||||
|
||||
# Aktuellen Zoom-Wert holen
|
||||
current_zoom = self.ui.zoom.value()
|
||||
|
||||
# Neuen Zoom-Wert berechnen
|
||||
if delta > 0:
|
||||
# Zoom rein (rauf scrollen)
|
||||
new_zoom = min(current_zoom + zoom_step, self.ui.zoom.maximum())
|
||||
else:
|
||||
# Zoom raus (runter scrollen)
|
||||
new_zoom = max(current_zoom - zoom_step, self.ui.zoom.minimum())
|
||||
|
||||
# Zoom-Slider aktualisieren (triggert automatisch apply_zoom)
|
||||
self.ui.zoom.setValue(new_zoom)
|
||||
|
||||
# Event als behandelt markieren
|
||||
return True
|
||||
|
||||
# Für alle anderen Events: Standard-Verarbeitung
|
||||
return super().eventFilter(obj, event)
|
||||
|
||||
def closeEvent(self, event):
|
||||
"""Wird beim Schließen der Anwendung aufgerufen."""
|
||||
# UI-Zustände speichern
|
||||
|
||||
Reference in New Issue
Block a user