150 |
150 |
151 self.__inspector = None |
151 self.__inspector = None |
152 WebInspector.registerView(self) |
152 WebInspector.registerView(self) |
153 |
153 |
154 self.grabGesture(Qt.PinchGesture) |
154 self.grabGesture(Qt.PinchGesture) |
155 |
|
156 def __del__(self): |
|
157 """ |
|
158 Special method doing some cleanup stuff. |
|
159 """ |
|
160 WebInspector.unregisterView(self) |
|
161 |
155 |
162 ## def __addExternalBinding(self, frame=None): |
156 ## def __addExternalBinding(self, frame=None): |
163 ## """ |
157 ## """ |
164 ## Private slot to add javascript bindings for adding search providers. |
158 ## Private slot to add javascript bindings for adding search providers. |
165 ## |
159 ## |
599 |
593 |
600 # TODO: AdBlock |
594 # TODO: AdBlock |
601 ## if not hitTest.isContentEditable() and not hitTest.isContentSelected(): |
595 ## if not hitTest.isContentEditable() and not hitTest.isContentSelected(): |
602 ## self.__menu.addAction(self.__mw.adBlockIcon().menuAction()) |
596 ## self.__menu.addAction(self.__mw.adBlockIcon().menuAction()) |
603 |
597 |
604 self.__menu.addSeparator() |
598 if Preferences.getWebBrowser("WebInspectorEnabled"): |
605 self.__menu.addAction( |
599 self.__menu.addSeparator() |
606 UI.PixmapCache.getIcon("webInspector.png"), |
600 self.__menu.addAction( |
607 self.tr("Inspect Element..."), self.__webInspector) |
601 UI.PixmapCache.getIcon("webInspector.png"), |
|
602 self.tr("Inspect Element..."), self.__webInspector) |
608 |
603 |
609 if not self.__menu.isEmpty(): |
604 if not self.__menu.isEmpty(): |
610 pos = evt.globalPos() |
605 pos = evt.globalPos() |
611 self.__menu.popup(QPoint(pos.x(), pos.y() + 1)) |
606 self.__menu.popup(QPoint(pos.x(), pos.y() + 1)) |
612 |
607 |
838 menu.addAction( |
833 menu.addAction( |
839 UI.PixmapCache.getIcon("wikipedia.png"), |
834 UI.PixmapCache.getIcon("wikipedia.png"), |
840 self.tr("Dictionary"), self.__openLinkInNewTab)\ |
835 self.tr("Dictionary"), self.__openLinkInNewTab)\ |
841 .setData(wiktionaryUrl) |
836 .setData(wiktionaryUrl) |
842 menu.addSeparator() |
837 menu.addSeparator() |
843 ## QString langCode = mApp->currentLanguage().left(2).toUtf8(); |
|
844 ## QUrl googleTranslateUrl = QUrl(QString("https://translate.google.com/#auto/%1/%2").arg(langCode, selectedText)); |
|
845 ## Action* gtwact = new Action(QIcon(":icons/sites/translate.png"), tr("Google Translate")); |
|
846 ## gtwact->setData(googleTranslateUrl); |
|
847 ## connect(gtwact, SIGNAL(triggered()), this, SLOT(openUrlInSelectedTab())); |
|
848 ## connect(gtwact, SIGNAL(ctrlTriggered()), this, SLOT(openUrlInBackgroundTab())); |
|
849 ## menu->addAction(gtwact); |
|
850 ## |
|
851 ## Action* dictact = new Action(QIcon::fromTheme("accessories-dictionary"), tr("Dictionary")); |
|
852 ## dictact->setData(QUrl("http://" + (!langCode.isEmpty() ? langCode + "." : langCode) + "wiktionary.org/wiki/Special:Search?search=" + selectedText)); |
|
853 ## connect(dictact, SIGNAL(triggered()), this, SLOT(openUrlInSelectedTab())); |
|
854 ## connect(dictact, SIGNAL(ctrlTriggered()), this, SLOT(openUrlInBackgroundTab())); |
|
855 ## menu->addAction(dictact); |
|
856 |
838 |
857 guessedUrl = QUrl.fromUserInput(self.selectedText().strip()) |
839 guessedUrl = QUrl.fromUserInput(self.selectedText().strip()) |
858 if self.__isUrlValid(guessedUrl): |
840 if self.__isUrlValid(guessedUrl): |
859 menu.addAction( |
841 menu.addAction( |
860 self.tr("Go to web address"), |
842 self.tr("Go to web address"), |
908 menu.addSeparator() |
890 menu.addSeparator() |
909 menu.addAction(self.__mw.pageSourceAct) |
891 menu.addAction(self.__mw.pageSourceAct) |
910 # TODO: Site Info |
892 # TODO: Site Info |
911 ## menu.addSeparator() |
893 ## menu.addSeparator() |
912 ## menu.addAction(self.__mw.siteInfoAct) |
894 ## menu.addAction(self.__mw.siteInfoAct) |
913 ## if (url().scheme() == QLatin1String("http") || url().scheme() == QLatin1String("https")) { |
895 if self.url().scheme() in ["http", "https"]: |
914 ## const QUrl w3url = QUrl::fromEncoded("http://validator.w3.org/check?uri=" + QUrl::toPercentEncoding(url().toEncoded())); |
896 menu.addSeparator() |
915 ## menu->addAction(QIcon(":icons/sites/w3.png"), tr("Validate page"), this, SLOT(openUrlInSelectedTab()))->setData(w3url); |
897 |
916 ## |
898 w3url = QUrl.fromEncoded( |
917 ## QByteArray langCode = mApp->currentLanguage().left(2).toUtf8(); |
899 b"http://validator.w3.org/check?uri=" + |
918 ## const QUrl gturl = QUrl::fromEncoded("http://translate.google.com/translate?sl=auto&tl=" + langCode + "&u=" + QUrl::toPercentEncoding(url().toEncoded())); |
900 QUrl.toPercentEncoding(bytes(self.url().toEncoded()).decode())) |
919 ## menu->addAction(QIcon(":icons/sites/translate.png"), tr("Translate page"), this, SLOT(openUrlInSelectedTab()))->setData(gturl); |
901 menu.addAction( |
920 ## } |
902 UI.PixmapCache.getIcon("w3.png"), |
|
903 self.tr("Validate Page"), self.__openLinkInNewTab)\ |
|
904 .setData(w3url) |
|
905 |
|
906 from .WebBrowserLanguagesDialog import WebBrowserLanguagesDialog |
|
907 languages = Preferences.toList( |
|
908 Preferences.Prefs.settings.value( |
|
909 "WebBrowser/AcceptLanguages", |
|
910 WebBrowserLanguagesDialog.defaultAcceptLanguages())) |
|
911 if languages: |
|
912 language = languages[0] |
|
913 langCode = language.split("[")[1][:2] |
|
914 googleTranslatorUrl = QUrl.fromEncoded( |
|
915 b"http://translate.google.com/translate?sl=auto&tl=" + |
|
916 langCode.encode() + |
|
917 b"&u=" + |
|
918 QUrl.toPercentEncoding( |
|
919 bytes(self.url().toEncoded()).decode())) |
|
920 menu.addAction( |
|
921 UI.PixmapCache.getIcon("translate.png"), |
|
922 self.tr("Google Translate"), self.__openLinkInNewTab)\ |
|
923 .setData(googleTranslatorUrl) |
921 |
924 |
922 def __checkForForm(self, act, pos): |
925 def __checkForForm(self, act, pos): |
923 """ |
926 """ |
924 Private method to check the given position for an open search form. |
927 Private method to check the given position for an open search form. |
925 |
928 |
1119 if self.__inspector is None: |
1122 if self.__inspector is None: |
1120 from .WebInspector import WebInspector |
1123 from .WebInspector import WebInspector |
1121 self.__inspector = WebInspector() |
1124 self.__inspector = WebInspector() |
1122 self.__inspector.setView(self, True) |
1125 self.__inspector.setView(self, True) |
1123 self.__inspector.show() |
1126 self.__inspector.show() |
1124 elif self.__inspector.isVisible(): |
|
1125 self.__inspector.hide() |
|
1126 else: |
1127 else: |
1127 self.__inspector.show() |
1128 self.closeWebInspector() |
1128 |
1129 |
1129 def closeWebInspector(self): |
1130 def closeWebInspector(self): |
1130 """ |
1131 """ |
1131 Public slot to close the web inspector. |
1132 Public slot to close the web inspector. |
1132 """ |
1133 """ |
1133 if self.__inspector is not None: |
1134 if self.__inspector is not None: |
1134 if self.__inspector.isVisible(): |
1135 if self.__inspector.isVisible(): |
1135 self.__inspector.hide() |
1136 self.__inspector.hide() |
|
1137 WebInspector.unregisterView(self.__inspector) |
1136 self.__inspector.deleteLater() |
1138 self.__inspector.deleteLater() |
1137 self.__inspector = None |
1139 self.__inspector = None |
1138 |
1140 |
1139 def addBookmark(self): |
1141 def addBookmark(self): |
1140 """ |
1142 """ |
1386 self._keyReleaseEvent(evt) |
1388 self._keyReleaseEvent(evt) |
1387 elif evt.type() == QEvent.MouseButtonPress: |
1389 elif evt.type() == QEvent.MouseButtonPress: |
1388 self._mousePressEvent(evt) |
1390 self._mousePressEvent(evt) |
1389 elif evt.type() == QEvent.MouseButtonRelease: |
1391 elif evt.type() == QEvent.MouseButtonRelease: |
1390 self._mouseReleaseEvent(evt) |
1392 self._mouseReleaseEvent(evt) |
1391 ## elif evt.type() == QEvent.MouseMove: |
|
1392 ## self.__mouseMoveEvent(evt) |
|
1393 elif evt.type() == QEvent.Wheel: |
1393 elif evt.type() == QEvent.Wheel: |
1394 self._wheelEvent(evt) |
1394 self._wheelEvent(evt) |
1395 elif evt.type() == QEvent.Gesture: |
1395 elif evt.type() == QEvent.Gesture: |
1396 self._gestureEvent(evt) |
1396 self._gestureEvent(evt) |
1397 ret = evt.isAccepted() |
1397 ret = evt.isAccepted() |
1401 # block already handled events |
1401 # block already handled events |
1402 if obj is self: |
1402 if obj is self: |
1403 if evt.type() in [QEvent.KeyPress, QEvent.KeyRelease, |
1403 if evt.type() in [QEvent.KeyPress, QEvent.KeyRelease, |
1404 QEvent.MouseButtonPress, |
1404 QEvent.MouseButtonPress, |
1405 QEvent.MouseButtonRelease, |
1405 QEvent.MouseButtonRelease, |
1406 ## QEvent.MouseMove, |
|
1407 QEvent.Wheel, QEvent.Gesture]: |
1406 QEvent.Wheel, QEvent.Gesture]: |
1408 return True |
1407 return True |
1409 |
1408 |
1410 return super(WebBrowserView, self).eventFilter(obj, evt) |
1409 return super(WebBrowserView, self).eventFilter(obj, evt) |
1411 |
1410 |