--- a/WebBrowser/WebBrowserView.py Wed Feb 07 20:14:09 2018 +0100 +++ b/WebBrowser/WebBrowserView.py Thu Feb 08 18:57:11 2018 +0100 @@ -556,10 +556,10 @@ boldFont.setBold(True) for suggestion in contextMenuData.spellCheckerSuggestions(): - act = menu.addAction( - suggestion, - self.__replaceMisspelledWord) + act = menu.addAction(suggestion) act.setFont(boldFont) + act.triggered.connect( + lambda: self.__replaceMisspelledWord)(act) if not bool(menu.actions()): menu.addAction(self.tr("No suggestions")).setEnabled(False) @@ -614,41 +614,55 @@ if not menu.isEmpty(): menu.addSeparator() - menu.addAction( + act = menu.addAction( UI.PixmapCache.getIcon("openNewTab.png"), - self.tr("Open Link in New Tab\tCtrl+LMB"), - self.__openLinkInNewTab).setData(hitTest.linkUrl()) - menu.addAction( + self.tr("Open Link in New Tab\tCtrl+LMB")) + act.setData(hitTest.linkUrl()) + act.triggered.connect( + lambda: self.__openLinkInNewTab(act)) + act = menu.addAction( UI.PixmapCache.getIcon("newWindow.png"), - self.tr("Open Link in New Window"), - self.__openLinkInNewWindow).setData(hitTest.linkUrl()) - menu.addAction( + self.tr("Open Link in New Window")) + act.setData(hitTest.linkUrl()) + act.triggered.connect( + lambda: self.__openLinkInNewWindow(act)) + act = menu.addAction( UI.PixmapCache.getIcon("privateMode.png"), - self.tr("Open Link in New Private Window"), - self.__openLinkInNewPrivateWindow).setData(hitTest.linkUrl()) + self.tr("Open Link in New Private Window")) + act.setData(hitTest.linkUrl()) + act.triggered.connect( + lambda: self.__openLinkInNewPrivateWindow(act)) menu.addSeparator() menu.addAction( UI.PixmapCache.getIcon("download.png"), self.tr("Save Lin&k"), self.__downloadLink) - menu.addAction( + act = menu.addAction( UI.PixmapCache.getIcon("bookmark22.png"), - self.tr("Bookmark this Link"), self.__bookmarkLink)\ - .setData(hitTest.linkUrl()) + self.tr("Bookmark this Link")) + act.setData(hitTest.linkUrl()) + act.triggered.connect( + lambda: self.__bookmarkLink(act)) menu.addSeparator() - menu.addAction( + act = menu.addAction( UI.PixmapCache.getIcon("editCopy.png"), - self.tr("Copy Link to Clipboard"), self.__copyLink)\ - .setData(hitTest.linkUrl()) - menu.addAction( + self.tr("Copy Link to Clipboard")) + act.setData(hitTest.linkUrl()) + act.triggered.connect( + lambda: self.__copyLink(act)) + act = menu.addAction( UI.PixmapCache.getIcon("mailSend.png"), - self.tr("Send Link"), - self.__sendLink).setData(hitTest.linkUrl()) + self.tr("Send Link")) + act.setData(hitTest.linkUrl()) + act.triggered.connect( + lambda: self.__sendLink(act)) if Preferences.getWebBrowser("VirusTotalEnabled") and \ Preferences.getWebBrowser("VirusTotalServiceKey") != "": - menu.addAction( + act = menu.addAction( UI.PixmapCache.getIcon("virustotal.png"), - self.tr("Scan Link with VirusTotal"), - self.__virusTotal).setData(hitTest.linkUrl()) + self.tr("Scan Link with VirusTotal")) + act.setData(hitTest.linkUrl()) + act.triggered.connect( + lambda: self.__virusTotal(act)) def __createImageContextMenu(self, menu, hitTest): """ @@ -662,57 +676,69 @@ if not menu.isEmpty(): menu.addSeparator() - menu.addAction( + act = menu.addAction( UI.PixmapCache.getIcon("openNewTab.png"), - self.tr("Open Image in New Tab"), - self.__openLinkInNewTab).setData(hitTest.imageUrl()) + self.tr("Open Image in New Tab")) + act.setData(hitTest.imageUrl()) + act.triggered.connect( + lambda: self.__openLinkInNewTab(act)) menu.addSeparator() menu.addAction( UI.PixmapCache.getIcon("download.png"), self.tr("Save Image"), self.__downloadImage) menu.addAction( self.tr("Copy Image to Clipboard"), self.__copyImage) - menu.addAction( + act = menu.addAction( UI.PixmapCache.getIcon("editCopy.png"), - self.tr("Copy Image Location to Clipboard"), - self.__copyLink).setData(hitTest.imageUrl()) - menu.addAction( + self.tr("Copy Image Location to Clipboard")) + act.setData(hitTest.imageUrl()) + act.triggered.connect( + lambda: self.__copyLink(act)) + act = menu.addAction( UI.PixmapCache.getIcon("mailSend.png"), - self.tr("Send Image Link"), - self.__sendLink).setData(hitTest.imageUrl()) + self.tr("Send Image Link")) + act.setData(hitTest.imageUrl()) + act.triggered.connect( + lambda: self.__sendLink(act)) if hitTest.imageUrl().scheme() in ["http", "https"]: menu.addSeparator() engine = WebBrowserWindow.imageSearchEngine() searchEngineName = engine.searchEngine() - menu.addAction( + act = 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.tr("Search image in {0}").format(searchEngineName)) + act.setData(engine.getSearchQuery(hitTest.imageUrl())) + act.triggered.connect( + lambda: self.__searchImage(act)) self.__imageSearchMenu = menu.addMenu( self.tr("Search image with...")) for searchEngineName in engine.searchEngineNames(): - self.__imageSearchMenu.addAction( + act = 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)) + self.tr("Search image in {0}").format(searchEngineName)) + act.setData(engine.getSearchQuery( + hitTest.imageUrl(), searchEngineName)) + act.triggered.connect( + lambda: self.__searchImage(act)) menu.addSeparator() - menu.addAction( + act = menu.addAction( UI.PixmapCache.getIcon("adBlockPlus.png"), - self.tr("Block Image"), self.__blockImage)\ - .setData(hitTest.imageUrl().toString()) + self.tr("Block Image")) + act.setData(hitTest.imageUrl().toString()) + act.triggered.connect( + lambda: self.__blockImage(act)) if Preferences.getWebBrowser("VirusTotalEnabled") and \ Preferences.getWebBrowser("VirusTotalServiceKey") != "": - menu.addAction( + act = menu.addAction( UI.PixmapCache.getIcon("virustotal.png"), - self.tr("Scan Image with VirusTotal"), - self.__virusTotal).setData(hitTest.imageUrl()) + self.tr("Scan Image with VirusTotal")) + act.setData(hitTest.imageUrl()) + act.triggered.connect( + lambda: self.__virusTotal(act)) def __createMediaContextMenu(self, menu, hitTest): """ @@ -743,14 +769,18 @@ UI.PixmapCache.getIcon("audioVolumeMuted.png"), self.tr("Mute"), self.__muteMedia) menu.addSeparator() - menu.addAction( + act = menu.addAction( UI.PixmapCache.getIcon("editCopy.png"), - self.tr("Copy Media Address to Clipboard"), - self.__copyLink).setData(hitTest.mediaUrl()) - menu.addAction( + self.tr("Copy Media Address to Clipboard")) + act.setData(hitTest.mediaUrl()) + act.triggered.connect( + lambda: self.__copyLink(act)) + act = menu.addAction( UI.PixmapCache.getIcon("mailSend.png"), - self.tr("Send Media Address"), self.__sendLink)\ - .setData(hitTest.mediaUrl()) + self.tr("Send Media Address")) + act.setData(hitTest.mediaUrl()) + act.triggered.connect( + lambda: self.__sendLink(act)) menu.addAction( UI.PixmapCache.getIcon("download.png"), self.tr("Save Media"), self.__downloadMedia) @@ -769,10 +799,12 @@ menu.addAction(self.__mw.copyAct) menu.addSeparator() - menu.addAction( + act = menu.addAction( UI.PixmapCache.getIcon("mailSend.png"), - self.tr("Send Text"), - self.__sendLink).setData(self.selectedText()) + self.tr("Send Text")) + act.setData(self.selectedText()) + act.triggered.connect( + lambda: self.__sendLink(act)) engineName = self.__mw.openSearchManager().currentEngineName() if engineName: @@ -804,24 +836,29 @@ googleTranslatorUrl = QUrl( "http://translate.google.com/#auto/{0}/{1}".format( langCode, self.selectedText())) - menu.addAction( + act = menu.addAction( UI.PixmapCache.getIcon("translate.png"), - self.tr("Google Translate"), self.__openLinkInNewTab)\ - .setData(googleTranslatorUrl) + self.tr("Google Translate")) + act.setData(googleTranslatorUrl) + act.triggered.connect( + lambda: self.__openLinkInNewTab(act)) wiktionaryUrl = QUrl( "http://{0}.wiktionary.org/wiki/Special:Search?search={1}" .format(langCode, self.selectedText())) - menu.addAction( + act = menu.addAction( UI.PixmapCache.getIcon("wikipedia.png"), - self.tr("Dictionary"), self.__openLinkInNewTab)\ - .setData(wiktionaryUrl) + self.tr("Dictionary")) + act.setData(wiktionaryUrl) + act.triggered.connect( + lambda: self.__openLinkInNewTab(act)) menu.addSeparator() guessedUrl = QUrl.fromUserInput(self.selectedText().strip()) if self.__isUrlValid(guessedUrl): - menu.addAction( - self.tr("Go to web address"), - self.__openLinkInNewTab).setData(guessedUrl) + act = menu.addAction(self.tr("Go to web address")) + act.setData(guessedUrl) + act.triggered.connect( + lambda: self.__openLinkInNewTab(act)) def __createPageContextMenu(self, menu): """ @@ -860,12 +897,18 @@ menu.addAction( UI.PixmapCache.getIcon("bookmark22.png"), self.tr("Bookmark this Page"), self.addBookmark) - menu.addAction( + act = menu.addAction( UI.PixmapCache.getIcon("editCopy.png"), - self.tr("Copy Page Link"), self.__copyLink).setData(self.url()) - menu.addAction( + self.tr("Copy Page Link")) + act.setData(self.url()) + act.triggered.connect( + lambda: self.__copyLink(act)) + act = menu.addAction( UI.PixmapCache.getIcon("mailSend.png"), - self.tr("Send Page Link"), self.__sendLink).setData(self.url()) + self.tr("Send Page Link")) + act.setData(self.url()) + act.triggered.connect( + lambda: self.__sendLink(act)) menu.addSeparator() from .UserAgent.UserAgentMenu import UserAgentMenu @@ -896,10 +939,12 @@ w3url = QUrl.fromEncoded( b"http://validator.w3.org/check?uri=" + QUrl.toPercentEncoding(bytes(self.url().toEncoded()).decode())) - menu.addAction( + act = menu.addAction( UI.PixmapCache.getIcon("w3.png"), - self.tr("Validate Page"), self.__openLinkInNewTab)\ - .setData(w3url) + self.tr("Validate Page")) + act.setData(w3url) + act.triggered.connect( + lambda: self.__openLinkInNewTab(act)) from .WebBrowserLanguagesDialog import WebBrowserLanguagesDialog languages = Preferences.toList( @@ -915,11 +960,13 @@ b"&u=" + QUrl.toPercentEncoding( bytes(self.url().toEncoded()).decode())) - menu.addAction( + act = menu.addAction( UI.PixmapCache.getIcon("translate.png"), - self.tr("Google Translate"), self.__openLinkInNewTab)\ - .setData(googleTranslatorUrl) - + self.tr("Google Translate")) + act.setData(googleTranslatorUrl) + act.triggered.connect( + lambda: self.__openLinkInNewTab(act)) + def __checkForForm(self, act, pos): """ Private method to check the given position for an open search form. @@ -970,55 +1017,65 @@ bool(url.scheme()) and \ "." in url.host() - def __replaceMisspelledWord(self): + def __replaceMisspelledWord(self, act): """ Private slot to replace a misspelled word under the context menu. + + @param act reference to the action that triggered + @type QAction """ - act = self.sender() suggestion = act.text() self.page().replaceMisspelledWord(suggestion) - def __openLinkInNewTab(self): + def __openLinkInNewTab(self, act): """ Private method called by the context menu to open a link in a new tab. + + @param act reference to the action that triggered + @type QAction """ - act = self.sender() url = act.data() if url.isEmpty(): return self.setSource(url, newTab=True) - def __openLinkInNewWindow(self): + def __openLinkInNewWindow(self, act): """ Private slot called by the context menu to open a link in a new window. + + @param act reference to the action that triggered + @type QAction """ - act = self.sender() url = act.data() if url.isEmpty(): return self.__mw.newWindow(url) - def __openLinkInNewPrivateWindow(self): + def __openLinkInNewPrivateWindow(self, act): """ Private slot called by the context menu to open a link in a new private window. + + @param act reference to the action that triggered + @type QAction """ - act = self.sender() url = act.data() if url.isEmpty(): return self.__mw.newPrivateWindow(url) - def __bookmarkLink(self): + def __bookmarkLink(self, act): """ Private slot to bookmark a link via the context menu. + + @param act reference to the action that triggered + @type QAction """ - act = self.sender() url = act.data() if url.isEmpty(): return @@ -1028,11 +1085,13 @@ dlg.setUrl(bytes(url.toEncoded()).decode()) dlg.exec_() - def __sendLink(self): + def __sendLink(self, act): """ Private slot to send a link via email. + + @param act reference to the action that triggered + @type QAction """ - act = self.sender() data = act.data() if isinstance(data, QUrl) and data.isEmpty(): return @@ -1041,11 +1100,13 @@ data = data.toString() QDesktopServices.openUrl(QUrl("mailto:?body=" + data)) - def __copyLink(self): + def __copyLink(self, act): """ Private slot to copy a link to the clipboard. + + @param act reference to the action that triggered + @type QAction """ - act = self.sender() data = act.data() if isinstance(data, QUrl) and data.isEmpty(): return @@ -1072,20 +1133,24 @@ """ self.triggerPageAction(QWebEnginePage.CopyImageToClipboard) - def __blockImage(self): + def __blockImage(self, act): """ Private slot to add a block rule for an image URL. + + @param act reference to the action that triggered + @type QAction """ - act = self.sender() url = act.data() dlg = WebBrowserWindow.adBlockManager().showDialog() dlg.addCustomRule(url) - def __searchImage(self): + def __searchImage(self, act): """ Private slot to search for an image URL. + + @param act reference to the action that triggered + @type QAction """ - act = self.sender() url = act.data() self.setSource(url, newTab=True) @@ -1107,11 +1172,13 @@ """ self.triggerPageAction(QWebEnginePage.ToggleMediaMute) - def __virusTotal(self): + def __virusTotal(self, act): """ Private slot to scan the selected URL with VirusTotal. + + @param act reference to the action that triggered + @type QAction """ - act = self.sender() url = act.data() self.__mw.requestVirusTotalScan(url)