eric7/HelpViewer/HelpViewerImpl_qtb.py

branch
eric7
changeset 8689
da40117c42d6
parent 8683
e8a907801549
child 8693
d51660d6f1b9
equal deleted inserted replaced
8688:153dba284368 8689:da40117c42d6
5 5
6 """ 6 """
7 Module implementing the QTextBrowser based help viewer class. 7 Module implementing the QTextBrowser based help viewer class.
8 """ 8 """
9 9
10 from PyQt6.QtCore import Qt, QByteArray, QUrl 10 from PyQt6.QtCore import Qt, QByteArray, QUrl, QEvent
11 from PyQt6.QtGui import QDesktopServices, QImage 11 from PyQt6.QtGui import QDesktopServices, QImage
12 from PyQt6.QtWidgets import QTextBrowser 12 from PyQt6.QtWidgets import QTextBrowser
13 13
14 from .HelpViewerImpl import HelpViewerImpl 14 from .HelpViewerImpl import HelpViewerImpl
15 15
31 HelpViewerImpl.__init__(self, engine) 31 HelpViewerImpl.__init__(self, engine)
32 32
33 self.__zoomCount = 0 33 self.__zoomCount = 0
34 34
35 self.sourceChanged.connect(self.titleChanged) 35 self.sourceChanged.connect(self.titleChanged)
36
37 self.grabGesture(Qt.GestureType.PinchGesture)
36 38
37 def setUrl(self, url): 39 def setUrl(self, url):
38 """ 40 """
39 Public method to set the URL of the document to be shown. 41 Public method to set the URL of the document to be shown.
40 42
151 if self.__zoomCount > -5: 153 if self.__zoomCount > -5:
152 self.__zoomCount -= 1 154 self.__zoomCount -= 1
153 self.zoomOut() 155 self.zoomOut()
154 self.zoomChanged.emit() 156 self.zoomChanged.emit()
155 157
158 def setScale(self, scale):
159 """
160 Public method to set the zoom level.
161
162 @param scale zoom level to set
163 @type int
164 """
165 if -5 <= scale <= 10:
166 self.zoomOut(scale)
167 self.__zoomCount = scale
168 self.zoomChanged.emit()
169
156 def resetScale(self): 170 def resetScale(self):
157 """ 171 """
158 Public method to reset the zoom level. 172 Public method to reset the zoom level.
159 """ 173 """
160 if self.__zoomCount != 0: 174 if self.__zoomCount != 0:
203 self.scaleDown() 217 self.scaleDown()
204 evt.accept() 218 evt.accept()
205 else: 219 else:
206 QTextBrowser.wheelEvent(self, evt) 220 QTextBrowser.wheelEvent(self, evt)
207 221
208 # TODO: implement context menu 222 def keyPressEvent(self, evt):
223 """
224 Public method to handle key press events.
225
226 @param evt reference to the key event
227 @type QKeyEvent
228 """
229 if evt.key() == Qt.Key.Key_ZoomIn:
230 self.scaleUp()
231 evt.accept()
232 elif evt.key() == Qt.Key.Key_ZoomOut:
233 self.scaleDown()
234 evt.accept()
235 elif evt.key() == Qt.Key.Key_Plus:
236 if evt.modifiers() & Qt.KeyboardModifier.ControlModifier:
237 self.scaleUp()
238 evt.accept()
239 elif evt.key() == Qt.Key.Key_Minus:
240 if evt.modifiers() & Qt.KeyboardModifier.ControlModifier:
241 self.scaleDown()
242 evt.accept()
243 elif evt.key() == Qt.Key.Key_0:
244 if evt.modifiers() & Qt.KeyboardModifier.ControlModifier:
245 self.resetScale()
246 evt.accept()
247 elif evt.key() == Qt.Key.Key_Backspace:
248 self.backward()
249 evt.accept()
250
251 def event(self, evt):
252 """
253 Public method handling events.
254
255 @param evt reference to the event
256 @type QEvent
257 @return flag indicating the event was handled
258 @rtype bool
259 """
260 if evt.type() == QEvent.Type.Gesture:
261 self.gestureEvent(evt)
262 return True
263
264 return super().event(evt)
265
266 def gestureEvent(self, evt):
267 """
268 Protected method handling gesture events.
269
270 @param evt reference to the gesture event
271 @type QGestureEvent
272 """
273 pinch = evt.gesture(Qt.GestureType.PinchGesture)
274 if pinch:
275 if pinch.state() == Qt.GestureState.GestureStarted:
276 zoom = (self.getZoom() + 6) / 10.0
277 pinch.setTotalScaleFactor(zoom)
278 elif pinch.state() == Qt.GestureState.GestureUpdated:
279 zoom = int(pinch.totalScaleFactor() * 10) - 6
280 if zoom <= -5:
281 zoom = -5
282 pinch.setTotalScaleFactor(0.1)
283 elif zoom >= 10:
284 zoom = 10
285 pinch.setTotalScaleFactor(1.6)
286 self.setScale(zoom)
287 evt.accept()
288
289 # TODO: implement context menu
290 # - Open Link
291 # - Open Link in New Page
292 # - Open Link in Background Page
293 # - Copy
294 # - Copy Link LOcation
295 # - Select All
209 # TODO: add Ctrl+LMB action (open link in new page) 296 # TODO: add Ctrl+LMB action (open link in new page)

eric ide

mercurial