9704
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1
|
# -*- coding: utf-8 -*- |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
3
|
# Copyright (c) 2023 Detlev Offenbach <detlev@die-offenbachs.de> |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4
|
# |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7
|
Module implementing a specialized PDF view class. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10
|
from PyQt6.QtCore import QSize, Qt, pyqtSlot, QEvent |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11
|
from PyQt6.QtGui import QGuiApplication |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12
|
from PyQt6.QtPdfWidgets import QPdfView |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14
|
from .PdfZoomSelector import PdfZoomSelector |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17
|
class PdfView(QPdfView): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19
|
Class implementing a specialized PDF view. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22
|
def __init__(self, parent): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24
|
Constructor |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26
|
@param parent reference to the parent widget |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27
|
@type QWidget |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29
|
super().__init__(parent) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31
|
self.__screenResolution = ( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32
|
QGuiApplication.primaryScreen().logicalDotsPerInch() / 72.0 |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35
|
self.grabGesture(Qt.GestureType.PinchGesture) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37
|
def __zoomInOut(self, zoomIn): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39
|
Private method to zoom into or out of the view. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41
|
@param zoomIn flag indicating to zoom into the view |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42
|
@type bool |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44
|
zoomFactor = self.__zoomFactorForMode(self.zoomMode()) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46
|
factors = list(PdfZoomSelector.ZoomValues) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47
|
factors.append(self.__zoomFactorForMode(QPdfView.ZoomMode.FitInView)) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48
|
factors.append(self.__zoomFactorForMode(QPdfView.ZoomMode.FitToWidth)) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49
|
if zoomIn: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50
|
factors.sort() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51
|
if zoomFactor >= factors[-1]: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52
|
return |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53
|
newIndex = next(x for x, val in enumerate(factors) if val > zoomFactor) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54
|
else: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55
|
factors.sort(reverse=True) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56
|
if zoomFactor <= factors[-1]: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57
|
return |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58
|
newIndex = next(x for x, val in enumerate(factors) if val < zoomFactor) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59
|
newFactor = factors[newIndex] |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60
|
if newFactor == self.__zoomFactorForMode(QPdfView.ZoomMode.FitInView): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61
|
self.setZoomMode(QPdfView.ZoomMode.FitInView) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62
|
self.zoomModeChanged.emit(QPdfView.ZoomMode.FitInView) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63
|
elif newFactor == self.__zoomFactorForMode(QPdfView.ZoomMode.FitToWidth): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64
|
self.setZoomMode(QPdfView.ZoomMode.FitToWidth) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65
|
self.zoomModeChanged.emit(QPdfView.ZoomMode.FitToWidth) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66
|
else: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67
|
self.setZoomFactor(newFactor) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68
|
self.zoomFactorChanged.emit(newFactor) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69
|
self.setZoomMode(QPdfView.ZoomMode.Custom) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70
|
self.zoomModeChanged.emit(QPdfView.ZoomMode.Custom) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72
|
def __zoomFactorForMode(self, zoomMode): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74
|
Private method to calculate the zoom factor iaw. the current zoom mode. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76
|
@param zoomMode zoom mode to get the zoom factor for |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77
|
@type QPdfView.ZoomMode |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78
|
@return zoom factor |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79
|
@rtype float |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81
|
if zoomMode == QPdfView.ZoomMode.Custom: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82
|
return self.zoomFactor() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83
|
else: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84
|
viewport = self.viewport() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85
|
curPage = self.pageNavigator().currentPage() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86
|
margins = self.documentMargins() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87
|
if zoomMode == QPdfView.ZoomMode.FitToWidth: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88
|
pageSize = ( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89
|
self.document().pagePointSize(curPage) * self.__screenResolution |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90
|
).toSize() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91
|
factor = ( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92
|
viewport.width() - margins.left() - margins.right() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93
|
) / pageSize.width() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94
|
pageSize *= factor |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95
|
else: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96
|
# QPdfView.ZoomMode.FitInView |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97
|
viewportSize = viewport.size() + QSize( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98
|
-margins.left() - margins.right(), -self.pageSpacing() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100
|
pageSize = ( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101
|
self.document().pagePointSize(curPage) * self.__screenResolution |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102
|
).toSize() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103
|
pageSize = pageSize.scaled( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104
|
viewportSize, Qt.AspectRatioMode.KeepAspectRatio |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106
|
zoomFactor = pageSize.width() / ( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107
|
self.document().pagePointSize(curPage) * self.__screenResolution |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108
|
).width() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109
|
return zoomFactor |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111
|
@pyqtSlot() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112
|
def zoomIn(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114
|
Public slot to zoom into the view. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116
|
self.__zoomInOut(True) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118
|
@pyqtSlot() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119
|
def zoomOut(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121
|
Public slot to zoom out of the view. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123
|
self.__zoomInOut(False) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125
|
@pyqtSlot() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126
|
def zoomReset(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128
|
Public slot to reset the zoom factor of the view. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130
|
if self.zoomMode() != QPdfView.ZoomMode.Custom or self.zoomFactor() != 1.0: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131
|
self.setZoomFactor(1.0) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132
|
self.zoomFactorChanged.emit(1.0) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133
|
self.setZoomMode(QPdfView.ZoomMode.Custom) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134
|
self.zoomModeChanged.emit(QPdfView.ZoomMode.Custom) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136
|
def wheelEvent(self, evt): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138
|
Protected method to handle wheel events. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140
|
@param evt reference to the wheel event |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141
|
@type QWheelEvent |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143
|
delta = evt.angleDelta().y() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144
|
if evt.modifiers() & Qt.KeyboardModifier.ControlModifier: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145
|
if delta < 0: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146
|
self.zoomOut() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147
|
elif delta > 0: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148
|
self.zoomIn() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149
|
evt.accept() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150
|
return |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152
|
elif evt.modifiers() & Qt.KeyboardModifier.ShiftModifier: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153
|
if delta < 0: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154
|
self.pageNavigator().back() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155
|
elif delta > 0: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156
|
self.pageNavigator().forward() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157
|
evt.accept() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158
|
return |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160
|
super().wheelEvent(evt) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162
|
def event(self, evt): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164
|
Public method handling events. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166
|
@param evt reference to the event |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167
|
@type QEvent |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168
|
@return flag indicating, if the event was handled |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169
|
@rtype bool |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
171
|
if evt.type() == QEvent.Type.Gesture: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172
|
self.gestureEvent(evt) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173
|
return True |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175
|
return super().event(evt) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
176
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
177
|
def gestureEvent(self, evt): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
178
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179
|
Protected method handling gesture events. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181
|
@param evt reference to the gesture event |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182
|
@type QGestureEvent |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184
|
pinch = evt.gesture(Qt.GestureType.PinchGesture) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185
|
if pinch: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186
|
if pinch.state() == Qt.GestureState.GestureStarted: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187
|
pinch.setTotalScaleFactor(self.__zoomFactorForMode(self.zoomMode())) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188
|
elif pinch.state() == Qt.GestureState.GestureUpdated: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189
|
if self.zoomMode() != QPdfView.ZoomMode.Custom: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
190
|
self.setZoomMode(QPdfView.ZoomMode.Custom) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
191
|
self.zoomModeChanged.emit(QPdfView.ZoomMode.Custom) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192
|
zoomFactor = pinch.totalScaleFactor() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
193
|
self.setZoomFactor(zoomFactor) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194
|
self.zoomFactorChanged.emit(zoomFactor) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195
|
evt.accept() |