aboutsummaryrefslogtreecommitdiffstats
path: root/examples/demos/documentviewer/pdfviewer/zoomselector.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/demos/documentviewer/pdfviewer/zoomselector.py')
-rw-r--r--examples/demos/documentviewer/pdfviewer/zoomselector.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/examples/demos/documentviewer/pdfviewer/zoomselector.py b/examples/demos/documentviewer/pdfviewer/zoomselector.py
new file mode 100644
index 000000000..e5da5708f
--- /dev/null
+++ b/examples/demos/documentviewer/pdfviewer/zoomselector.py
@@ -0,0 +1,54 @@
+# Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB).
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+from PySide6.QtWidgets import QComboBox
+from PySide6.QtCore import Signal, Slot
+from PySide6.QtPdfWidgets import QPdfView
+
+
+ZOOM_LEVELS = ["Fit Width", "Fit Page", "12%", "25%", "33%", "50%", "66%",
+ "75%", "100%", "125%", "150%", "200%", "400%"]
+
+
+class ZoomSelector(QComboBox):
+ zoomModeChanged = Signal(QPdfView.ZoomMode)
+ zoomFactorChanged = Signal(float)
+
+ def __init__(self, parent):
+ super().__init__(parent)
+ self.setEditable(True)
+
+ for z in ZOOM_LEVELS:
+ self.addItem(z)
+
+ self.currentTextChanged.connect(self.onCurrentTextChanged)
+ self.lineEdit().editingFinished.connect(self._editingFinished)
+
+ @Slot()
+ def _editingFinished(self):
+ self.onCurrentTextChanged(self.lineEdit().text())
+
+ @Slot(float)
+ def setZoomFactor(self, zoomFactor):
+ z = int(100 * zoomFactor)
+ self.setCurrentText(f"{z}%")
+
+ @Slot()
+ def reset(self):
+ self.setCurrentIndex(8) # 100%
+
+ @Slot(str)
+ def onCurrentTextChanged(self, text):
+ if text == "Fit Width":
+ self.zoomModeChanged.emit(QPdfView.ZoomMode.FitToWidth)
+ elif text == "Fit Page":
+ self.zoomModeChanged.emit(QPdfView.ZoomMode.FitInView)
+ else:
+ factor = 1.0
+ withoutPercent = text.replace('%', '')
+ zoomLevel = int(withoutPercent)
+ if zoomLevel:
+ factor = zoomLevel / 100.0
+
+ self.zoomModeChanged.emit(QPdfView.ZoomMode.Custom)
+ self.zoomFactorChanged.emit(factor)