Sun, 04 Mar 2018 14:52:46 +0100
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): """