669 """ |
669 """ |
670 if not menu.isEmpty(): |
670 if not menu.isEmpty(): |
671 menu.addSeparator() |
671 menu.addSeparator() |
672 |
672 |
673 act = menu.addAction( |
673 act = menu.addAction( |
674 UI.PixmapCache.getIcon("openNewTab.png"), |
674 UI.PixmapCache.getIcon("openNewTab"), |
675 self.tr("Open Link in New Tab\tCtrl+LMB")) |
675 self.tr("Open Link in New Tab\tCtrl+LMB")) |
676 act.setData(hitTest.linkUrl()) |
676 act.setData(hitTest.linkUrl()) |
677 act.triggered.connect( |
677 act.triggered.connect( |
678 lambda: self.__openLinkInNewTab(act)) |
678 lambda: self.__openLinkInNewTab(act)) |
679 act = menu.addAction( |
679 act = menu.addAction( |
680 UI.PixmapCache.getIcon("newWindow.png"), |
680 UI.PixmapCache.getIcon("newWindow"), |
681 self.tr("Open Link in New Window")) |
681 self.tr("Open Link in New Window")) |
682 act.setData(hitTest.linkUrl()) |
682 act.setData(hitTest.linkUrl()) |
683 act.triggered.connect( |
683 act.triggered.connect( |
684 lambda: self.__openLinkInNewWindow(act)) |
684 lambda: self.__openLinkInNewWindow(act)) |
685 act = menu.addAction( |
685 act = menu.addAction( |
686 UI.PixmapCache.getIcon("privateMode.png"), |
686 UI.PixmapCache.getIcon("privateMode"), |
687 self.tr("Open Link in New Private Window")) |
687 self.tr("Open Link in New Private Window")) |
688 act.setData(hitTest.linkUrl()) |
688 act.setData(hitTest.linkUrl()) |
689 act.triggered.connect( |
689 act.triggered.connect( |
690 lambda: self.__openLinkInNewPrivateWindow(act)) |
690 lambda: self.__openLinkInNewPrivateWindow(act)) |
691 menu.addSeparator() |
691 menu.addSeparator() |
692 menu.addAction( |
692 menu.addAction( |
693 UI.PixmapCache.getIcon("download.png"), |
693 UI.PixmapCache.getIcon("download"), |
694 self.tr("Save Lin&k"), self.__downloadLink) |
694 self.tr("Save Lin&k"), self.__downloadLink) |
695 act = menu.addAction( |
695 act = menu.addAction( |
696 UI.PixmapCache.getIcon("bookmark22.png"), |
696 UI.PixmapCache.getIcon("bookmark22"), |
697 self.tr("Bookmark this Link")) |
697 self.tr("Bookmark this Link")) |
698 act.setData(hitTest.linkUrl()) |
698 act.setData(hitTest.linkUrl()) |
699 act.triggered.connect( |
699 act.triggered.connect( |
700 lambda: self.__bookmarkLink(act)) |
700 lambda: self.__bookmarkLink(act)) |
701 menu.addSeparator() |
701 menu.addSeparator() |
702 act = menu.addAction( |
702 act = menu.addAction( |
703 UI.PixmapCache.getIcon("editCopy.png"), |
703 UI.PixmapCache.getIcon("editCopy"), |
704 self.tr("Copy Link to Clipboard")) |
704 self.tr("Copy Link to Clipboard")) |
705 act.setData(hitTest.linkUrl()) |
705 act.setData(hitTest.linkUrl()) |
706 act.triggered.connect( |
706 act.triggered.connect( |
707 lambda: self.__copyLink(act)) |
707 lambda: self.__copyLink(act)) |
708 act = menu.addAction( |
708 act = menu.addAction( |
709 UI.PixmapCache.getIcon("mailSend.png"), |
709 UI.PixmapCache.getIcon("mailSend"), |
710 self.tr("Send Link")) |
710 self.tr("Send Link")) |
711 act.setData(hitTest.linkUrl()) |
711 act.setData(hitTest.linkUrl()) |
712 act.triggered.connect( |
712 act.triggered.connect( |
713 lambda: self.__sendLink(act)) |
713 lambda: self.__sendLink(act)) |
714 if ( |
714 if ( |
715 Preferences.getWebBrowser("VirusTotalEnabled") and |
715 Preferences.getWebBrowser("VirusTotalEnabled") and |
716 Preferences.getWebBrowser("VirusTotalServiceKey") != "" |
716 Preferences.getWebBrowser("VirusTotalServiceKey") != "" |
717 ): |
717 ): |
718 act = menu.addAction( |
718 act = menu.addAction( |
719 UI.PixmapCache.getIcon("virustotal.png"), |
719 UI.PixmapCache.getIcon("virustotal"), |
720 self.tr("Scan Link with VirusTotal")) |
720 self.tr("Scan Link with VirusTotal")) |
721 act.setData(hitTest.linkUrl()) |
721 act.setData(hitTest.linkUrl()) |
722 act.triggered.connect( |
722 act.triggered.connect( |
723 lambda: self.__virusTotal(act)) |
723 lambda: self.__virusTotal(act)) |
724 |
724 |
733 """ |
733 """ |
734 if not menu.isEmpty(): |
734 if not menu.isEmpty(): |
735 menu.addSeparator() |
735 menu.addSeparator() |
736 |
736 |
737 act = menu.addAction( |
737 act = menu.addAction( |
738 UI.PixmapCache.getIcon("openNewTab.png"), |
738 UI.PixmapCache.getIcon("openNewTab"), |
739 self.tr("Open Image in New Tab")) |
739 self.tr("Open Image in New Tab")) |
740 act.setData(hitTest.imageUrl()) |
740 act.setData(hitTest.imageUrl()) |
741 act.triggered.connect( |
741 act.triggered.connect( |
742 lambda: self.__openLinkInNewTab(act)) |
742 lambda: self.__openLinkInNewTab(act)) |
743 menu.addSeparator() |
743 menu.addSeparator() |
744 menu.addAction( |
744 menu.addAction( |
745 UI.PixmapCache.getIcon("download.png"), |
745 UI.PixmapCache.getIcon("download"), |
746 self.tr("Save Image"), self.__downloadImage) |
746 self.tr("Save Image"), self.__downloadImage) |
747 menu.addAction( |
747 menu.addAction( |
748 self.tr("Copy Image to Clipboard"), self.__copyImage) |
748 self.tr("Copy Image to Clipboard"), self.__copyImage) |
749 act = menu.addAction( |
749 act = menu.addAction( |
750 UI.PixmapCache.getIcon("editCopy.png"), |
750 UI.PixmapCache.getIcon("editCopy"), |
751 self.tr("Copy Image Location to Clipboard")) |
751 self.tr("Copy Image Location to Clipboard")) |
752 act.setData(hitTest.imageUrl()) |
752 act.setData(hitTest.imageUrl()) |
753 act.triggered.connect( |
753 act.triggered.connect( |
754 lambda: self.__copyLink(act)) |
754 lambda: self.__copyLink(act)) |
755 act = menu.addAction( |
755 act = menu.addAction( |
756 UI.PixmapCache.getIcon("mailSend.png"), |
756 UI.PixmapCache.getIcon("mailSend"), |
757 self.tr("Send Image Link")) |
757 self.tr("Send Image Link")) |
758 act.setData(hitTest.imageUrl()) |
758 act.setData(hitTest.imageUrl()) |
759 act.triggered.connect( |
759 act.triggered.connect( |
760 lambda: self.__sendLink(act)) |
760 lambda: self.__sendLink(act)) |
761 |
761 |
762 if hitTest.imageUrl().scheme() in ["http", "https"]: |
762 if hitTest.imageUrl().scheme() in ["http", "https"]: |
763 menu.addSeparator() |
763 menu.addSeparator() |
764 engine = WebBrowserWindow.imageSearchEngine() |
764 engine = WebBrowserWindow.imageSearchEngine() |
765 searchEngineName = engine.searchEngine() |
765 searchEngineName = engine.searchEngine() |
766 act = menu.addAction( |
766 act = menu.addAction( |
767 UI.PixmapCache.getIcon("{0}.png".format( |
767 UI.PixmapCache.getIcon("{0}".format( |
768 searchEngineName.lower())), |
768 searchEngineName.lower())), |
769 self.tr("Search image in {0}").format(searchEngineName)) |
769 self.tr("Search image in {0}").format(searchEngineName)) |
770 act.setData(engine.getSearchQuery(hitTest.imageUrl())) |
770 act.setData(engine.getSearchQuery(hitTest.imageUrl())) |
771 act.triggered.connect( |
771 act.triggered.connect( |
772 lambda: self.__searchImage(act)) |
772 lambda: self.__searchImage(act)) |
773 self.__imageSearchMenu = menu.addMenu( |
773 self.__imageSearchMenu = menu.addMenu( |
774 self.tr("Search image with...")) |
774 self.tr("Search image with...")) |
775 for searchEngineName in engine.searchEngineNames(): |
775 for searchEngineName in engine.searchEngineNames(): |
776 act = self.__imageSearchMenu.addAction( |
776 act = self.__imageSearchMenu.addAction( |
777 UI.PixmapCache.getIcon("{0}.png".format( |
777 UI.PixmapCache.getIcon("{0}".format( |
778 searchEngineName.lower())), |
778 searchEngineName.lower())), |
779 self.tr("Search image in {0}").format(searchEngineName)) |
779 self.tr("Search image in {0}").format(searchEngineName)) |
780 act.setData(engine.getSearchQuery( |
780 act.setData(engine.getSearchQuery( |
781 hitTest.imageUrl(), searchEngineName)) |
781 hitTest.imageUrl(), searchEngineName)) |
782 act.triggered.connect( |
782 act.triggered.connect( |
783 lambda: self.__searchImage(act)) |
783 lambda: self.__searchImage(act)) |
784 |
784 |
785 menu.addSeparator() |
785 menu.addSeparator() |
786 act = menu.addAction( |
786 act = menu.addAction( |
787 UI.PixmapCache.getIcon("adBlockPlus.png"), |
787 UI.PixmapCache.getIcon("adBlockPlus"), |
788 self.tr("Block Image")) |
788 self.tr("Block Image")) |
789 act.setData(hitTest.imageUrl().toString()) |
789 act.setData(hitTest.imageUrl().toString()) |
790 act.triggered.connect( |
790 act.triggered.connect( |
791 lambda: self.__blockImage(act)) |
791 lambda: self.__blockImage(act)) |
792 if ( |
792 if ( |
793 Preferences.getWebBrowser("VirusTotalEnabled") and |
793 Preferences.getWebBrowser("VirusTotalEnabled") and |
794 Preferences.getWebBrowser("VirusTotalServiceKey") != "" |
794 Preferences.getWebBrowser("VirusTotalServiceKey") != "" |
795 ): |
795 ): |
796 act = menu.addAction( |
796 act = menu.addAction( |
797 UI.PixmapCache.getIcon("virustotal.png"), |
797 UI.PixmapCache.getIcon("virustotal"), |
798 self.tr("Scan Image with VirusTotal")) |
798 self.tr("Scan Image with VirusTotal")) |
799 act.setData(hitTest.imageUrl()) |
799 act.setData(hitTest.imageUrl()) |
800 act.triggered.connect( |
800 act.triggered.connect( |
801 lambda: self.__virusTotal(act)) |
801 lambda: self.__virusTotal(act)) |
802 |
802 |
812 if not menu.isEmpty(): |
812 if not menu.isEmpty(): |
813 menu.addSeparator() |
813 menu.addSeparator() |
814 |
814 |
815 if hitTest.mediaPaused(): |
815 if hitTest.mediaPaused(): |
816 menu.addAction( |
816 menu.addAction( |
817 UI.PixmapCache.getIcon("mediaPlaybackStart.png"), |
817 UI.PixmapCache.getIcon("mediaPlaybackStart"), |
818 self.tr("Play"), self.__pauseMedia) |
818 self.tr("Play"), self.__pauseMedia) |
819 else: |
819 else: |
820 menu.addAction( |
820 menu.addAction( |
821 UI.PixmapCache.getIcon("mediaPlaybackPause.png"), |
821 UI.PixmapCache.getIcon("mediaPlaybackPause"), |
822 self.tr("Pause"), self.__pauseMedia) |
822 self.tr("Pause"), self.__pauseMedia) |
823 if hitTest.mediaMuted(): |
823 if hitTest.mediaMuted(): |
824 menu.addAction( |
824 menu.addAction( |
825 UI.PixmapCache.getIcon("audioVolumeHigh.png"), |
825 UI.PixmapCache.getIcon("audioVolumeHigh"), |
826 self.tr("Unmute"), self.__muteMedia) |
826 self.tr("Unmute"), self.__muteMedia) |
827 else: |
827 else: |
828 menu.addAction( |
828 menu.addAction( |
829 UI.PixmapCache.getIcon("audioVolumeMuted.png"), |
829 UI.PixmapCache.getIcon("audioVolumeMuted"), |
830 self.tr("Mute"), self.__muteMedia) |
830 self.tr("Mute"), self.__muteMedia) |
831 menu.addSeparator() |
831 menu.addSeparator() |
832 act = menu.addAction( |
832 act = menu.addAction( |
833 UI.PixmapCache.getIcon("editCopy.png"), |
833 UI.PixmapCache.getIcon("editCopy"), |
834 self.tr("Copy Media Address to Clipboard")) |
834 self.tr("Copy Media Address to Clipboard")) |
835 act.setData(hitTest.mediaUrl()) |
835 act.setData(hitTest.mediaUrl()) |
836 act.triggered.connect( |
836 act.triggered.connect( |
837 lambda: self.__copyLink(act)) |
837 lambda: self.__copyLink(act)) |
838 act = menu.addAction( |
838 act = menu.addAction( |
839 UI.PixmapCache.getIcon("mailSend.png"), |
839 UI.PixmapCache.getIcon("mailSend"), |
840 self.tr("Send Media Address")) |
840 self.tr("Send Media Address")) |
841 act.setData(hitTest.mediaUrl()) |
841 act.setData(hitTest.mediaUrl()) |
842 act.triggered.connect( |
842 act.triggered.connect( |
843 lambda: self.__sendLink(act)) |
843 lambda: self.__sendLink(act)) |
844 menu.addAction( |
844 menu.addAction( |
845 UI.PixmapCache.getIcon("download.png"), |
845 UI.PixmapCache.getIcon("download"), |
846 self.tr("Save Media"), self.__downloadMedia) |
846 self.tr("Save Media"), self.__downloadMedia) |
847 |
847 |
848 def __createSelectedTextContextMenu(self, menu, hitTest): |
848 def __createSelectedTextContextMenu(self, menu, hitTest): |
849 """ |
849 """ |
850 Private method to populate the context menu for selected text. |
850 Private method to populate the context menu for selected text. |
896 langCode = language.split("[")[1][:2] |
896 langCode = language.split("[")[1][:2] |
897 googleTranslatorUrl = QUrl( |
897 googleTranslatorUrl = QUrl( |
898 "http://translate.google.com/#auto/{0}/{1}".format( |
898 "http://translate.google.com/#auto/{0}/{1}".format( |
899 langCode, self.selectedText())) |
899 langCode, self.selectedText())) |
900 act = menu.addAction( |
900 act = menu.addAction( |
901 UI.PixmapCache.getIcon("translate.png"), |
901 UI.PixmapCache.getIcon("translate"), |
902 self.tr("Google Translate")) |
902 self.tr("Google Translate")) |
903 act.setData(googleTranslatorUrl) |
903 act.setData(googleTranslatorUrl) |
904 act.triggered.connect( |
904 act.triggered.connect( |
905 lambda: self.__openLinkInNewTab(act)) |
905 lambda: self.__openLinkInNewTab(act)) |
906 wiktionaryUrl = QUrl( |
906 wiktionaryUrl = QUrl( |
907 "http://{0}.wiktionary.org/wiki/Special:Search?search={1}" |
907 "http://{0}.wiktionary.org/wiki/Special:Search?search={1}" |
908 .format(langCode, self.selectedText())) |
908 .format(langCode, self.selectedText())) |
909 act = menu.addAction( |
909 act = menu.addAction( |
910 UI.PixmapCache.getIcon("wikipedia.png"), |
910 UI.PixmapCache.getIcon("wikipedia"), |
911 self.tr("Dictionary")) |
911 self.tr("Dictionary")) |
912 act.setData(wiktionaryUrl) |
912 act.setData(wiktionaryUrl) |
913 act.triggered.connect( |
913 act.triggered.connect( |
914 lambda: self.__openLinkInNewTab(act)) |
914 lambda: self.__openLinkInNewTab(act)) |
915 menu.addSeparator() |
915 menu.addSeparator() |
940 # special menu for the spedd dial page |
940 # special menu for the spedd dial page |
941 menu.addAction(self.__mw.backAct) |
941 menu.addAction(self.__mw.backAct) |
942 menu.addAction(self.__mw.forwardAct) |
942 menu.addAction(self.__mw.forwardAct) |
943 menu.addSeparator() |
943 menu.addSeparator() |
944 menu.addAction( |
944 menu.addAction( |
945 UI.PixmapCache.getIcon("plus.png"), |
945 UI.PixmapCache.getIcon("plus"), |
946 self.tr("Add New Page"), self.__addSpeedDial) |
946 self.tr("Add New Page"), self.__addSpeedDial) |
947 menu.addAction( |
947 menu.addAction( |
948 UI.PixmapCache.getIcon("preferences-general.png"), |
948 UI.PixmapCache.getIcon("preferences-general"), |
949 self.tr("Configure Speed Dial"), self.__configureSpeedDial) |
949 self.tr("Configure Speed Dial"), self.__configureSpeedDial) |
950 menu.addSeparator() |
950 menu.addSeparator() |
951 menu.addAction( |
951 menu.addAction( |
952 UI.PixmapCache.getIcon("reload.png"), |
952 UI.PixmapCache.getIcon("reload"), |
953 self.tr("Reload All Dials"), self.__reloadAllSpeedDials) |
953 self.tr("Reload All Dials"), self.__reloadAllSpeedDials) |
954 menu.addSeparator() |
954 menu.addSeparator() |
955 menu.addAction( |
955 menu.addAction( |
956 self.tr("Reset to Default Dials"), self.__resetSpeedDials) |
956 self.tr("Reset to Default Dials"), self.__resetSpeedDials) |
957 return |
957 return |
958 |
958 |
959 menu.addAction( |
959 menu.addAction( |
960 UI.PixmapCache.getIcon("bookmark22.png"), |
960 UI.PixmapCache.getIcon("bookmark22"), |
961 self.tr("Bookmark this Page"), self.addBookmark) |
961 self.tr("Bookmark this Page"), self.addBookmark) |
962 act = menu.addAction( |
962 act = menu.addAction( |
963 UI.PixmapCache.getIcon("editCopy.png"), |
963 UI.PixmapCache.getIcon("editCopy"), |
964 self.tr("Copy Page Link")) |
964 self.tr("Copy Page Link")) |
965 act.setData(self.url()) |
965 act.setData(self.url()) |
966 act.triggered.connect( |
966 act.triggered.connect( |
967 lambda: self.__copyLink(act)) |
967 lambda: self.__copyLink(act)) |
968 act = menu.addAction( |
968 act = menu.addAction( |
969 UI.PixmapCache.getIcon("mailSend.png"), |
969 UI.PixmapCache.getIcon("mailSend"), |
970 self.tr("Send Page Link")) |
970 self.tr("Send Page Link")) |
971 act.setData(self.url()) |
971 act.setData(self.url()) |
972 act.triggered.connect( |
972 act.triggered.connect( |
973 lambda: self.__sendLink(act)) |
973 lambda: self.__sendLink(act)) |
974 menu.addSeparator() |
974 menu.addSeparator() |