Helpviewer/HelpWebSearchWidget.py

branch
5_2_x
changeset 2201
2cb2e3bb4f3f
parent 1509
c0b5e693b0eb
child 2302
f29e9405c851
diff -r 719cf8ba4743 -r 2cb2e3bb4f3f Helpviewer/HelpWebSearchWidget.py
--- a/Helpviewer/HelpWebSearchWidget.py	Fri Nov 09 16:34:35 2012 +0100
+++ b/Helpviewer/HelpWebSearchWidget.py	Fri Nov 09 16:35:27 2012 +0100
@@ -8,7 +8,7 @@
 """
 
 from PyQt4.QtCore import pyqtSignal, QUrl, QModelIndex, QTimer, Qt
-from PyQt4.QtGui import QWidget, QMenu, QHBoxLayout, QStandardItem, QStandardItemModel, \
+from PyQt4.QtGui import QMenu, QStandardItem, QStandardItemModel, \
     QCompleter, QFont, QIcon, QPixmap
 from PyQt4.QtWebKit import QWebSettings, QWebPage
 
@@ -16,43 +16,14 @@
 
 import Preferences
 
-from E5Gui.E5LineEdit import E5LineEdit
+from E5Gui.E5LineEdit import E5LineEdit, E5ClearableLineEdit
 from E5Gui.E5LineEditButton import E5LineEditButton
 
 from .OpenSearch.OpenSearchManager import OpenSearchManager
 from .OpenSearch.OpenSearchEngineAction import OpenSearchEngineAction
 
 
-class HelpWebSearchEdit(E5LineEdit):
-    """
-    Class implementing the web search line edit.
-    """
-    def __init__(self, mainWindow, parent=None):
-        """
-        Constructor
-        
-        @param mainWindow reference to the main window (HelpWindow)
-        @param parent reference to the parent widget (QWidget)
-        """
-        super().__init__(parent)
-        
-        self.__mw = mainWindow
-    
-    def mousePressEvent(self, evt):
-        """
-        Protected method called by a mouse press event.
-        
-        @param evt reference to the mouse event (QMouseEvent)
-        """
-        if evt.button() == Qt.XButton1:
-            self.__mw.currentBrowser().pageAction(QWebPage.Back).trigger()
-        elif evt.button() == Qt.XButton2:
-            self.__mw.currentBrowser().pageAction(QWebPage.Forward).trigger()
-        else:
-            super().mousePressEvent(evt)
-
-
-class HelpWebSearchWidget(QWidget):
+class HelpWebSearchWidget(E5ClearableLineEdit):
     """
     Class implementing a web search widget for the web browser.
     
@@ -68,46 +39,31 @@
         """
         super().__init__(parent)
         
-        self.mw = parent
+        self.__mw = parent
         
         self.__openSearchManager = OpenSearchManager(self)
         self.__openSearchManager.currentEngineChanged.connect(self.__currentEngineChanged)
         self.__currentEngine = ""
         
-        self.__layout = QHBoxLayout(self)
-        self.__layout.setMargin(0)
-        self.__layout.setSpacing(0)
-        self.setLayout(self.__layout)
-        
         self.__enginesMenu = QMenu(self)
         
-        self.__searchEdit = HelpWebSearchEdit(self.mw, parent=self)
-        self.__layout.addWidget(self.__searchEdit)
-        
         self.__engineButton = E5LineEditButton(self)
         self.__engineButton.setMenu(self.__enginesMenu)
-        self.__searchEdit.addWidget(self.__engineButton, E5LineEdit.LeftSide)
+        self.addWidget(self.__engineButton, E5LineEdit.LeftSide)
         
         self.__searchButton = E5LineEditButton(self)
         self.__searchButton.setIcon(UI.PixmapCache.getIcon("webSearch.png"))
-        self.__searchEdit.addWidget(self.__searchButton, E5LineEdit.LeftSide)
-        
-        self.__clearButton = E5LineEditButton(self)
-        self.__clearButton.setIcon(UI.PixmapCache.getIcon("clearLeft.png"))
-        self.__searchEdit.addWidget(self.__clearButton, E5LineEdit.RightSide)
-        self.__clearButton.setVisible(False)
+        self.addWidget(self.__searchButton, E5LineEdit.LeftSide)
         
         self.__model = QStandardItemModel(self)
         self.__completer = QCompleter()
         self.__completer.setModel(self.__model)
         self.__completer.setCompletionMode(QCompleter.UnfilteredPopupCompletion)
-        self.__completer.setWidget(self.__searchEdit)
+        self.__completer.setWidget(self)
         
         self.__searchButton.clicked[()].connect(self.__searchButtonClicked)
-        self.__clearButton.clicked[()].connect(self.__searchEdit.clear)
-        self.__searchEdit.textEdited.connect(self.__textEdited)
-        self.__searchEdit.textChanged.connect(self.__textChanged)
-        self.__searchEdit.returnPressed[()].connect(self.__searchNow)
+        self.textEdited.connect(self.__textEdited)
+        self.returnPressed[()].connect(self.__searchNow)
         self.__completer.activated[QModelIndex].connect(self.__completerActivated)
         self.__completer.highlighted[QModelIndex].connect(self.__completerHighlighted)
         self.__enginesMenu.aboutToShow.connect(self.__showEnginesMenu)
@@ -130,7 +86,7 @@
         """
         Private slot to perform the web search.
         """
-        searchText = self.__searchEdit.text()
+        searchText = self.text()
         if not searchText:
             return
         
@@ -219,7 +175,7 @@
            self.__recentSearchesItem.index().row() == index.row():
             return False
         
-        self.__searchEdit.setText(index.data())
+        self.setText(index.data())
         return True
     
     def __textEdited(self, txt):
@@ -239,19 +195,11 @@
             self.__completer.setCompletionPrefix(txt)
             self.__completer.complete()
     
-    def __textChanged(self, txt):
-        """
-        Private slot to handle changes of the search text.
-        
-        @param txt search text (string)
-        """
-        self.__clearButton.setVisible(txt != "")
-    
     def __getSuggestions(self):
         """
         Private slot to get search suggestions from the configured search engine.
         """
-        searchText = self.__searchEdit.text()
+        searchText = self.text()
         if searchText:
             self.__openSearchManager.currentEngine().requestSuggestions(searchText)
     
@@ -283,7 +231,7 @@
                 action.setCheckable(True)
                 action.setChecked(True)
         
-        ct = self.mw.currentBrowser()
+        ct = self.__mw.currentBrowser()
         linkedResources = ct.linkedResources("search")
         
         if len(linkedResources) > 0:
@@ -314,7 +262,7 @@
             action.setIcon(ct.icon())
         
         self.__enginesMenu.addSeparator()
-        self.__enginesMenu.addAction(self.mw.searchEnginesAction())
+        self.__enginesMenu.addAction(self.__mw.searchEnginesAction())
         
         if self.__recentSearches:
             self.__enginesMenu.addAction(self.trUtf8("Clear Recent Searches"),
@@ -354,7 +302,7 @@
         """
         self.__recentSearches = []
         self.__setupCompleterMenu()
-        self.__searchEdit.clear()
+        super().clear()
         self.clearFocus()
     
     def preferencesChanged(self):
@@ -401,12 +349,12 @@
         
         newEngine = self.__openSearchManager.currentEngine()
         if newEngine.networkAccessManager() is None:
-            newEngine.setNetworkAccessManager(self.mw.networkAccessManager())
+            newEngine.setNetworkAccessManager(self.__mw.networkAccessManager())
         newEngine.imageChanged.connect(self.__engineImageChanged)
         if self.__suggestionsEnabled:
             newEngine.suggestions.connect(self.__newSuggestions)
         
-        self.__searchEdit.setInactiveText(self.__openSearchManager.currentEngineName())
+        self.setInactiveText(self.__openSearchManager.currentEngineName())
         self.__currentEngine = self.__openSearchManager.currentEngineName()
         self.__engineButton.setIcon(
             QIcon(QPixmap.fromImage(self.__openSearchManager.currentEngine().image())))
@@ -427,8 +375,8 @@
         @param evt reference to the mouse event (QMouseEvent)
         """
         if evt.button() == Qt.XButton1:
-            self.mw.currentBrowser().pageAction(QWebPage.Back).trigger()
+            self.__mw.currentBrowser().pageAction(QWebPage.Back).trigger()
         elif evt.button() == Qt.XButton2:
-            self.mw.currentBrowser().pageAction(QWebPage.Forward).trigger()
+            self.__mw.currentBrowser().pageAction(QWebPage.Forward).trigger()
         else:
             super().mousePressEvent(evt)

eric ide

mercurial