eric7/HelpViewer/HelpViewerWidget.py

branch
eric7
changeset 8681
6285e8374d99
parent 8680
85503ff2fce9
child 8683
e8a907801549
--- 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()

eric ide

mercurial