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)
def contextMenuEvent(self, evt): """ Protected method called to create a context menu. This method is overridden from QWebView. @param evt reference to the context menu event object (QContextMenuEvent) """ pos = evt.pos() menu = QMenu(self) hit = self.page().mainFrame().hitTestContent(evt.pos()) if not hit.linkUrl().isEmpty(): act = menu.addAction(self.trUtf8("Open Link in New Tab\tCtrl+LMB"), self.__openLinkInNewTab) act.setData(QVariant(hit.linkUrl())) menu.addSeparator() menu.addAction(self.trUtf8("Save Lin&k"), self.__downloadLink) act = menu.addAction(self.trUtf8("Bookmark this Link"), self.__bookmarkLink) act.setData(QVariant(hit.linkUrl())) menu.addSeparator() menu.addAction(self.trUtf8("Copy Link to Clipboard"), self.__copyLink) if not hit.imageUrl().isEmpty(): if not menu.isEmpty(): menu.addSeparator() act = menu.addAction(self.trUtf8("Open Image in New Tab"), self.__openLinkInNewTab) act.setData(QVariant(hit.imageUrl())) menu.addSeparator() menu.addAction(self.trUtf8("Save Image"), self.__downloadImage) menu.addAction(self.trUtf8("Copy Image to Clipboard"), self.__copyImage) act = menu.addAction(self.trUtf8("Copy Image Location to Clipboard"), self.__copyImageLocation) act.setData(QVariant(hit.imageUrl().toString())) menu.addSeparator() act = menu.addAction(self.trUtf8("Block Image"), self.__blockImage) act.setData(QVariant(hit.imageUrl().toString())) if not menu.isEmpty(): menu.addSeparator() menu.addAction(self.mw.newTabAct) menu.addAction(self.mw.newAct) menu.addSeparator() menu.addAction(self.mw.saveAsAct) menu.addSeparator() menu.addAction(self.trUtf8("Bookmark this Page"), self.__addBookmark) menu.addSeparator() menu.addAction(self.mw.backAct) menu.addAction(self.mw.forwardAct) menu.addAction(self.mw.homeAct) menu.addSeparator() menu.addAction(self.mw.zoomInAct) menu.addAction(self.mw.zoomOutAct) menu.addSeparator() if not self.selectedText().isEmpty(): menu.addAction(self.mw.copyAct) menu.addAction(self.mw.findAct) menu.addSeparator() if not self.selectedText().isEmpty(): self.__searchMenu = menu.addMenu(self.trUtf8("Search with...")) engineNames = self.mw.openSearchManager().allEnginesNames() for engineName in engineNames: engine = self.mw.openSearchManager().engine(engineName) act = OpenSearchEngineAction(engine, self.__searchMenu) self.__searchMenu.addAction(act) act.setData(QVariant(engineName)) self.connect(self.__searchMenu, SIGNAL("triggered(QAction *)"), self.__searchRequested) menu.addSeparator() menu.addAction(self.trUtf8("Web Inspector..."), self.__webInspector) menu.exec_(evt.globalPos())