Helpviewer/HelpWebSearchWidget.py

changeset 6175
330ffed830a4
parent 6121
d3d64f3128b3
child 6645
ad476851d7e0
diff -r bb2989d750ce -r 330ffed830a4 Helpviewer/HelpWebSearchWidget.py
--- a/Helpviewer/HelpWebSearchWidget.py	Sun Mar 04 14:52:32 2018 +0100
+++ b/Helpviewer/HelpWebSearchWidget.py	Sun Mar 04 14:52:46 2018 +0100
@@ -51,6 +51,8 @@
         self.__currentEngine = ""
         
         self.__enginesMenu = QMenu(self)
+        self.__enginesMenu.triggered.connect(
+            self.__handleEnginesMenuActionTriggered)
         
         self.__engineButton = E5LineEditButton(self)
         self.__engineButton.setMenu(self.__enginesMenu)
@@ -241,8 +243,6 @@
             engine = self.__openSearchManager.engine(engineName)
             action = OpenSearchEngineAction(engine, self.__enginesMenu)
             action.setData(engineName)
-            action.triggered.connect(
-                lambda: self.__changeCurrentEngine(action))
             self.__enginesMenu.addAction(action)
             
             if self.__openSearchManager.currentEngineName() == engineName:
@@ -278,38 +278,32 @@
                 self.tr("Add '{0}'").format(title))
             action.setData(url)
             action.setIcon(ct.icon())
-            action.triggered.connect(
-                lambda: self.__addEngineFromUrl(action))
         
         self.__enginesMenu.addSeparator()
         self.__enginesMenu.addAction(self.__mw.searchEnginesAction())
         
         if self.__recentSearches:
-            self.__enginesMenu.addAction(self.tr("Clear Recent Searches"),
-                                         self.clear)
+            act = self.__enginesMenu.addAction(
+                self.tr("Clear Recent Searches"))
+            act.setData("@@CLEAR@@")
     
-    def __changeCurrentEngine(self, action):
+    def __handleEnginesMenuActionTriggered(self, action):
         """
-        Private slot to handle the selection of a search engine.
+        Private slot to handle an action of the menu being triggered.
         
         @param action reference to the action that triggered
         @type QAction
         """
-        name = action.data()
-        self.__openSearchManager.setCurrentEngineName(name)
-    
-    def __addEngineFromUrl(self, action):
-        """
-        Private slot to add a search engine given its URL.
-        
-        @param action reference to the action that triggered
-        @type QAction
-        """
-        url = action.data()
-        if not isinstance(url, QUrl):
-            return
-        
-        self.__openSearchManager.addEngine(url)
+        actData = action.data()
+        if isinstance(actData, QUrl):
+            # add search engine
+            self.__openSearchManager.addEngine(actData)
+        elif isinstance(actData, str):
+            # engine name or special action
+            if actData == "@@CLEAR@@":
+                self.clear()
+            else:
+                self.__openSearchManager.setCurrentEngineName(actData)
     
     def __searchButtonClicked(self):
         """

eric ide

mercurial