--- a/eric7/HelpViewer/HelpViewerWidget.py Mon Oct 11 19:59:45 2021 +0200 +++ b/eric7/HelpViewer/HelpViewerWidget.py Tue Oct 12 19:54:03 2021 +0200 @@ -9,12 +9,12 @@ import os -from PyQt6.QtCore import pyqtSlot, Qt, QUrl +from PyQt6.QtCore import pyqtSlot, QUrl from PyQt6.QtGui import QAction from PyQt6.QtHelp import QHelpEngine from PyQt6.QtWidgets import ( QWidget, QHBoxLayout, QVBoxLayout, QComboBox, QSizePolicy, QStackedWidget, - QToolButton, QButtonGroup, QAbstractButton, QMenu + QToolButton, QButtonGroup, QAbstractButton, QMenu, QFrame ) from EricWidgets import EricFileDialog, EricMessageBox @@ -81,22 +81,14 @@ self.__navButtonsLayout.addStretch() - # TODO: add backward button self.__backwardButton = QToolButton(self) self.__backwardButton.setIcon(UI.PixmapCache.getIcon("back")) self.__backwardButton.setToolTip(self.tr("Move one page backward")) - self.__backwardButton.setToolButtonStyle( - Qt.ToolButtonStyle.ToolButtonIconOnly) - self.__backwardButton.setAutoRaise(True) self.__backwardButton.clicked.connect(self.__backward) - # TODO: add forward button self.__forwardButton = QToolButton(self) self.__forwardButton.setIcon(UI.PixmapCache.getIcon("forward")) self.__forwardButton.setToolTip(self.tr("Move one page forward")) - self.__forwardButton.setToolButtonStyle( - Qt.ToolButtonStyle.ToolButtonIconOnly) - self.__forwardButton.setAutoRaise(True) self.__forwardButton.clicked.connect(self.__forward) self.__backForButtonLayout = QHBoxLayout() @@ -106,16 +98,40 @@ self.__backForButtonLayout.addWidget(self.__forwardButton) self.__navButtonsLayout.addLayout(self.__backForButtonLayout) - # TODO: add reload button self.__reloadButton = QToolButton(self) self.__reloadButton.setIcon(UI.PixmapCache.getIcon("reload")) self.__reloadButton.setToolTip(self.tr("Reload the current page")) self.__reloadButton.clicked.connect(self.__reload) self.__navButtonsLayout.addWidget(self.__reloadButton) + self.__buttonLine1 = QFrame(self) + self.__buttonLine1.setFrameShape(QFrame.Shape.VLine) + self.__buttonLine1.setFrameShadow(QFrame.Shadow.Sunken) + self.__navButtonsLayout.addWidget(self.__buttonLine1) + # TODO: add zoom in button + self.__zoomInButton = QToolButton(self) + self.__zoomInButton.setIcon(UI.PixmapCache.getIcon("zoomIn")) + self.__zoomInButton.setToolTip( + self.tr("Zoom in on the current page")) + self.__zoomInButton.clicked.connect(self.__zoomIn) + self.__navButtonsLayout.addWidget(self.__zoomInButton) + # TODO: add zoom out button + self.__zoomOutButton = QToolButton(self) + self.__zoomOutButton.setIcon(UI.PixmapCache.getIcon("zoomOut")) + self.__zoomOutButton.setToolTip( + self.tr("Zoom out on the current page")) + self.__zoomOutButton.clicked.connect(self.__zoomOut) + self.__navButtonsLayout.addWidget(self.__zoomOutButton) + # TODO: add zoom reset button + self.__zoomResetButton = QToolButton(self) + self.__zoomResetButton.setIcon(UI.PixmapCache.getIcon("zoomReset")) + self.__zoomResetButton.setToolTip( + self.tr("Reset the zoom level of the current page")) + self.__zoomResetButton.clicked.connect(self.__zoomReset) + self.__navButtonsLayout.addWidget(self.__zoomResetButton) self.__navButtonsLayout.addStretch() @@ -181,7 +197,7 @@ self.__initActionsMenu() self.addPage() - self.__checkActionButtons(0) + self.__checkActionButtons() def __addNavigationButton(self, iconName, toolTip): """ @@ -319,6 +335,9 @@ except ImportError: from .HelpViewerImpl_qtb import HelpViewerImpl_qtb viewer = HelpViewerImpl_qtb(self.__helpEngine, self) + + viewer.zoomChanged.connect(self.__checkActionButtons) + return viewer def currentViewer(self): @@ -449,17 +468,16 @@ if cv: cv.reload() - @pyqtSlot(int) - def __checkActionButtons(self, row): + @pyqtSlot() + def __checkActionButtons(self): """ Private slot to set the enabled state of the action buttons. - - @param row index of the current page - @type int """ cv = self.currentViewer() self.__backwardButton.setEnabled(cv and cv.isBackwardAvailable()) self.__forwardButton.setEnabled(cv and cv.isForwardAvailable()) + self.__zoomInButton.setEnabled(cv and cv.isScaleUpAvailable()) + self.__zoomOutButton.setEnabled(cv and cv.isScaleDownAvailable()) def __showBackMenu(self): """ @@ -468,7 +486,7 @@ cv = self.currentViewer() if cv: self.__backMenu.clear() - backwardHistoryCount = max(cv.backwardHistoryCount(), 20) + backwardHistoryCount = min(cv.backwardHistoryCount(), 20) # show max. 20 items for index in range(1, backwardHistoryCount + 1): @@ -488,7 +506,7 @@ cv = self.currentViewer() if cv: self.__forwardMenu.clear() - forwardHistoryCount = max(cv.forwardHistoryCount(), 20) + forwardHistoryCount = min(cv.forwardHistoryCount(), 20) # show max. 20 items for index in range(1, forwardHistoryCount + 1): @@ -517,8 +535,38 @@ """ Private slot to clear the history of the current viewer. """ - cb = self.__mw.currentBrowser() - if cb is not None: - cb.history().clear() - self.__mw.setForwardAvailable(cb.isForwardAvailable()) - self.__mw.setBackwardAvailable(cb.isBackwardAvailable()) + cv = self.currentViewer() + if cv: + cv.clearHistory() + self.__checkActionButtons() + + ####################################################################### + ## Zoom related methods below + ####################################################################### + + @pyqtSlot() + def __zoomIn(self): + """ + Private slot to zoom in. + """ + cv = self.currentViewer() + if cv: + cv.scaleUp() + + @pyqtSlot() + def __zoomOut(self): + """ + Private slot to zoom out. + """ + cv = self.currentViewer() + if cv: + cv.scaleDown() + + @pyqtSlot() + def __zoomReset(self): + """ + Private slot to reset the zoom level. + """ + cv = self.currentViewer() + if cv: + cv.resetScale()