eric7/HelpViewer/HelpViewerWidget.py

branch
eric7
changeset 8702
131ef7267fd4
parent 8699
8438a5a0437f
child 8705
327e596607f8
--- a/eric7/HelpViewer/HelpViewerWidget.py	Tue Oct 19 19:55:21 2021 +0200
+++ b/eric7/HelpViewer/HelpViewerWidget.py	Tue Oct 19 19:57:26 2021 +0200
@@ -24,6 +24,9 @@
     WEBENGINE_AVAILABLE = False
 
 from EricWidgets import EricFileDialog, EricMessageBox
+from EricWidgets.EricTextEditSearchWidget import (
+    EricTextEditSearchWidget, EricTextEditType
+)
 
 import UI.PixmapCache
 import Utilities
@@ -167,7 +170,14 @@
         self.__buttonLine3.setFrameShadow(QFrame.Shadow.Sunken)
         self.__navButtonsLayout.addWidget(self.__buttonLine3)
         
-        # TODO: add find button to show the find widget
+        self.__searchButton = QToolButton(self)
+        self.__searchButton.setIcon(UI.PixmapCache.getIcon("find"))
+        self.__searchButton.setToolTip(
+            self.tr("Show or hide the search pane"))
+        self.__searchButton.setCheckable(True)
+        self.__searchButton.setChecked(False)
+        self.__searchButton.clicked.connect(self.showHideSearch)
+        self.__navButtonsLayout.addWidget(self.__searchButton)
         
         self.__navButtonsLayout.addStretch()
         
@@ -193,7 +203,11 @@
         
         ###################################################################
         
-        # TODO: addd a search widget (EricTextEditSearchWidget)
+        self.__searchWidget = EricTextEditSearchWidget(
+            self, widthForHeight=False, enableClose=True)
+        self.__layout.addWidget(self.__searchWidget)
+        self.__searchWidget.closePressed.connect(self.__searchWidgetClosed)
+        self.__searchWidget.hide()
         
         ###################################################################
         
@@ -436,7 +450,7 @@
         if url is None:
             url = QUrl("about:blank")
         
-        viewer = self.__newViewer()
+        viewer, viewerType = self.__newViewer()
         viewer.setLink(url)
         
         cv = self.currentViewer()
@@ -450,6 +464,7 @@
             self.__helpStack.addWidget(viewer)
             self.__openPagesList.addPage(viewer, background=background)
             viewer.setFocus(Qt.FocusReason.OtherFocusReason)
+            self.__searchWidget.attachTextEdit(viewer, editType=viewerType)
         
         return viewer
     
@@ -520,19 +535,22 @@
         """
         Private method to create a new help viewer.
         
-        @return help viewer
-        @rtype HelpViewerImpl
+        @return tuple containing the reference to the created help viewer
+            object and its type
+        @rtype tuple of (HelpViewerImpl, EricTextEditType)
         """
         if WEBENGINE_AVAILABLE:
             from .HelpViewerImplQWE import HelpViewerImplQWE
             viewer = HelpViewerImplQWE(self.__helpEngine, self)
+            viewerType = EricTextEditType.QWEBENGINEVIEW
         else:
             from .HelpViewerImplQTB import HelpViewerImplQTB
             viewer = HelpViewerImplQTB(self.__helpEngine, self)
+            viewerType = EricTextEditType.QTEXTBROWSER
         
         viewer.zoomChanged.connect(self.__checkActionButtons)
         
-        return viewer
+        return viewer, viewerType
     
     def currentViewer(self):
         """
@@ -791,6 +809,14 @@
         self.__checkActionButtons()
         cv = self.currentViewer()
         if cv:
+            self.__searchWidget.attachTextEdit(
+                cv,
+                editType=(
+                    EricTextEditType.QWEBENGINEVIEW
+                    if WEBENGINE_AVAILABLE else
+                    EricTextEditType.QTEXTBROWSER
+                )
+            )
             cv.setFocus(Qt.FocusReason.OtherFocusReason)
     
     #######################################################################
@@ -1138,6 +1164,45 @@
                 "PdfViewerEnabled"))
     
     #######################################################################
+    ## Search widget related methods below
+    #######################################################################
+    
+    @pyqtSlot()
+    def __searchWidgetClosed(self):
+        """
+        Private slot to handle the closing of the search widget.
+        """
+        self.__searchButton.setChecked(False)
+    
+    @pyqtSlot(bool)
+    def showHideSearch(self, visible):
+        """
+        Public slot to show or hide the search widget.
+        
+        @param visible flag indicating to show or hide the search widget
+        @type bool
+        """
+        self.__searchWidget.setVisible(visible)
+        if visible:
+            self.__searchWidget.activate()
+        else:
+            self.__searchWidget.deactivate()
+    
+    @pyqtSlot()
+    def searchPrev(self):
+        """
+        Public slot to find the previous occurrence of the current search term.
+        """
+        self.__searchWidget.findPrev()
+    
+    @pyqtSlot()
+    def searchNext(self):
+        """
+        Public slot to find the next occurrence of the current search term.
+        """
+        self.__searchWidget.findNext()
+    
+    #######################################################################
     ## Utility methods below
     #######################################################################
     

eric ide

mercurial