Helpviewer: Fixed some sender() related issues. maintenance release-18.03

Sun, 04 Mar 2018 14:52:46 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 04 Mar 2018 14:52:46 +0100
branch
maintenance
changeset 6204
89dc65b937cc
parent 6203
66918894148a
child 6205
ad8ed15f90e5

Helpviewer: Fixed some sender() related issues.
(grafted from 330ffed830a47798ed8966675a50f1860920820d)

Helpviewer/HelpWebSearchWidget.py file | annotate | diff | comparison | revisions
Helpviewer/OpenSearch/OpenSearchManager.py file | annotate | diff | comparison | revisions
--- 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):
         """
--- a/Helpviewer/OpenSearch/OpenSearchManager.py	Sun Mar 04 14:52:32 2018 +0100
+++ b/Helpviewer/OpenSearch/OpenSearchManager.py	Sun Mar 04 14:52:46 2018 +0100
@@ -417,31 +417,31 @@
         @param reply reference to the network reply
         @type QNetworkReply
         """
-        if reply.error() != QNetworkReply.NoError:
-            reply.close()
-            if reply in self.__replies:
-                self.__replies.remove(reply)
-            return
-        
-        from .OpenSearchReader import OpenSearchReader
-        reader = OpenSearchReader()
-        engine = reader.read(reply)
-        
         reply.close()
         if reply in self.__replies:
             self.__replies.remove(reply)
         
-        if not engine.isValid():
-            return
-        
-        if self.engineExists(engine.name()):
-            return
-        
-        if not self.__confirmAddition(engine):
-            return
-        
-        if not self.__addEngineByEngine(engine):
-            return
+        if reply.error() == QNetworkReply.NoError:
+            from .OpenSearchReader import OpenSearchReader
+            reader = OpenSearchReader()
+            engine = reader.read(reply)
+            
+            if not engine.isValid():
+                return
+            
+            if self.engineExists(engine.name()):
+                return
+            
+            if not self.__confirmAddition(engine):
+                return
+            
+            if not self.__addEngineByEngine(engine):
+                return
+        else:
+            # some error happened
+            from Helpviewer.HelpWindow import HelpWindow
+            HelpWindow.getWindow().statusBar().showMessage(
+                reply.errorString(), 10000)
     
     def convertKeywordSearchToUrl(self, keywordSearch):
         """

eric ide

mercurial