eric6/WebBrowser/WebBrowserView.py

branch
maintenance
changeset 7560
343db73c4842
parent 7362
028bf21bb5a2
parent 7533
88261c96484b
child 7655
8f53d26009a2
equal deleted inserted replaced
7507:a4eb1787ea41 7560:343db73c4842
583 qVersionTuple() >= (5, 11, 0) or 583 qVersionTuple() >= (5, 11, 0) or
584 Preferences.getWebBrowser("WebInspectorEnabled") 584 Preferences.getWebBrowser("WebInspectorEnabled")
585 ): 585 ):
586 self.__menu.addSeparator() 586 self.__menu.addSeparator()
587 self.__menu.addAction( 587 self.__menu.addAction(
588 UI.PixmapCache.getIcon("webInspector.png"), 588 UI.PixmapCache.getIcon("webInspector"),
589 self.tr("Inspect Element..."), self.__webInspector) 589 self.tr("Inspect Element..."), self.__webInspector)
590 590
591 if not self.__menu.isEmpty(): 591 if not self.__menu.isEmpty():
592 pos = evt.globalPos() 592 pos = evt.globalPos()
593 self.__menu.popup(QPoint(pos.x(), pos.y() + 1)) 593 self.__menu.popup(QPoint(pos.x(), pos.y() + 1))
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.
858 menu.addSeparator() 858 menu.addSeparator()
859 859
860 menu.addAction(self.__mw.copyAct) 860 menu.addAction(self.__mw.copyAct)
861 menu.addSeparator() 861 menu.addSeparator()
862 act = menu.addAction( 862 act = menu.addAction(
863 UI.PixmapCache.getIcon("mailSend.png"), 863 UI.PixmapCache.getIcon("mailSend"),
864 self.tr("Send Text")) 864 self.tr("Send Text"))
865 act.setData(self.selectedText()) 865 act.setData(self.selectedText())
866 act.triggered.connect( 866 act.triggered.connect(
867 lambda: self.__sendLink(act)) 867 lambda: self.__sendLink(act))
868 868
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()
1000 1000
1001 w3url = QUrl.fromEncoded( 1001 w3url = QUrl.fromEncoded(
1002 b"http://validator.w3.org/check?uri=" + 1002 b"http://validator.w3.org/check?uri=" +
1003 QUrl.toPercentEncoding(bytes(self.url().toEncoded()).decode())) 1003 QUrl.toPercentEncoding(bytes(self.url().toEncoded()).decode()))
1004 act = menu.addAction( 1004 act = menu.addAction(
1005 UI.PixmapCache.getIcon("w3.png"), 1005 UI.PixmapCache.getIcon("w3"),
1006 self.tr("Validate Page")) 1006 self.tr("Validate Page"))
1007 act.setData(w3url) 1007 act.setData(w3url)
1008 act.triggered.connect( 1008 act.triggered.connect(
1009 lambda: self.__openLinkInNewTab(act)) 1009 lambda: self.__openLinkInNewTab(act))
1010 1010
1021 langCode.encode() + 1021 langCode.encode() +
1022 b"&u=" + 1022 b"&u=" +
1023 QUrl.toPercentEncoding( 1023 QUrl.toPercentEncoding(
1024 bytes(self.url().toEncoded()).decode())) 1024 bytes(self.url().toEncoded()).decode()))
1025 act = menu.addAction( 1025 act = menu.addAction(
1026 UI.PixmapCache.getIcon("translate.png"), 1026 UI.PixmapCache.getIcon("translate"),
1027 self.tr("Google Translate")) 1027 self.tr("Google Translate"))
1028 act.setData(googleTranslatorUrl) 1028 act.setData(googleTranslatorUrl)
1029 act.triggered.connect( 1029 act.triggered.connect(
1030 lambda: self.__openLinkInNewTab(act)) 1030 lambda: self.__openLinkInNewTab(act))
1031 1031

eric ide

mercurial