diff -r 85503ff2fce9 -r 6285e8374d99 eric7/HelpViewer/HelpViewerImpl_qtb.py --- a/eric7/HelpViewer/HelpViewerImpl_qtb.py Mon Oct 11 19:59:45 2021 +0200 +++ b/eric7/HelpViewer/HelpViewerImpl_qtb.py Tue Oct 12 19:54:03 2021 +0200 @@ -30,6 +30,8 @@ QTextBrowser.__init__(self, parent=parent) HelpViewerImpl.__init__(self, engine) + self.__zoomCount = 0 + self.sourceChanged.connect(self.titleChanged) def setUrl(self, url): @@ -123,3 +125,76 @@ # forward for ind in range(index): self.forward() + + def scaleUp(self): + """ + Public method to zoom in. + """ + if self.__zoomCount < 10: + self.__zoomCount += 1 + self.zoomIn() + self.zoomChanged.emit() + + def scaleDown(self): + """ + Public method to zoom out. + """ + if self.__zoomCount > -5: + self.__zoomCount -= 1 + self.zoomOut() + self.zoomChanged.emit() + + def resetScale(self): + """ + Public method to reset the zoom level. + """ + if self.__zoomCount != 0: + self.zoomOut(self.__zoomCount) + self.zoomChanged.emit() + self.__zoomCount = 0 + + def scale(self): + """ + Public method to get the zoom level. + + @return current zoom level + @rtype int + """ + return self.__zoomCount + + def isScaleUpAvailable(self): + """ + Public method to check, if the max. zoom level is reached. + + @return flag indicating scale up is available + @rtype bool + """ + return self.__zoomCount < 10 + + def isScaleDownAvailable(self): + """ + Public method to check, if the min. zoom level is reached. + + @return flag indicating scale down is available + @rtype bool + """ + return self.__zoomCount > -5 + + def wheelEvent(self, evt): + """ + Public method to handle wheel event to zoom. + + @param evt reference to the event object + @type QWheelEvent + """ + if evt.modifiers() == Qt.KeyboardModifier.ControlModifier: + if evt.angleDelta().y() > 0: + self.scaleUp() + else: + self.scaleDown() + evt.accept() + else: + QTextBrowser.wheelEvent(self, evt) + + # TODO: implement context menu + # TODO: add Ctrl+LMB action (open link in new page)