def __showEnginesMenu(self): """ Private slot to handle the display of the engines menu. """ self.__enginesMenu.clear() engineNames = self.__openSearchManager.allEnginesNames() for engineName in engineNames: engine = self.__openSearchManager.engine(engineName) action = OpenSearchEngineAction(engine, self.__enginesMenu) action.setData(QVariant(engineName)) self.connect(action, SIGNAL("triggered()"), self.__changeCurrentEngine) self.__enginesMenu.addAction(action) if self.__openSearchManager.currentEngineName() == engineName: action.setCheckable(True) action.setChecked(True) ct = self.mw.currentBrowser() linkedResources = ct.linkedResources("search") if len(linkedResources) > 0: self.__enginesMenu.addSeparator() for linkedResource in linkedResources: url = QUrl(linkedResource.href) title = linkedResource.title mimetype = linkedResource.type_ if mimetype != "application/opensearchdescription+xml": continue if url.isEmpty(): continue if url.isRelative(): url = ct.url().resolved(url) if title.isEmpty(): if ct.title().isEmpty(): title = url.host() else: title = ct.title() action = self.__enginesMenu.addAction(self.trUtf8("Add '%1'").arg(title), self.__addEngineFromUrl) action.setData(QVariant(url)) action.setIcon(ct.icon()) self.__enginesMenu.addSeparator() self.__enginesMenu.addAction(self.mw.searchEnginesAction()) if not self.__recentSearches.isEmpty(): self.__enginesMenu.addAction(self.trUtf8("Clear Recent Searches"), self.clear)