--- a/WebBrowser/WebBrowserView.py Tue Apr 26 19:09:18 2016 +0200 +++ b/WebBrowser/WebBrowserView.py Wed Apr 27 19:44:22 2016 +0200 @@ -578,6 +578,8 @@ @param hitTest reference to the hit test object @type WebHitTestResult """ + from WebBrowser.WebBrowserWindow import WebBrowserWindow + if not menu.isEmpty(): menu.addSeparator() @@ -599,6 +601,28 @@ UI.PixmapCache.getIcon("mailSend.png"), self.tr("Send Image Link"), self.__sendLink).setData(hitTest.imageUrl()) + + if hitTest.imageUrl().scheme() in ["http", "https"]: + menu.addSeparator() + engine = WebBrowserWindow.imageSearchEngine() + searchEngineName = engine.searchEngine() + menu.addAction( + UI.PixmapCache.getIcon("{0}.png".format( + searchEngineName.lower())), + self.tr("Search image in {0}").format(searchEngineName), + self.__searchImage).setData( + engine.getSearchQuery(hitTest.imageUrl())) + self.__imageSearchMenu = menu.addMenu( + self.tr("Search image with...")) + for searchEngineName in engine.searchEngineNames(): + self.__imageSearchMenu.addAction( + UI.PixmapCache.getIcon("{0}.png".format( + searchEngineName.lower())), + self.tr("Search image in {0}").format(searchEngineName), + self.__searchImage).setData( + engine.getSearchQuery( + hitTest.imageUrl(), searchEngineName)) + menu.addSeparator() menu.addAction( UI.PixmapCache.getIcon("adBlockPlus.png"), @@ -969,6 +993,14 @@ dlg = WebBrowserWindow.adBlockManager().showDialog() dlg.addCustomRule(url) + def __searchImage(self): + """ + Private slot to search for an image URL. + """ + act = self.sender() + url = act.data() + self.setSource(url, newTab=True) + def __downloadMedia(self): """ Private slot to download a media and save it to disk.