Sat, 22 May 2021 19:58:24 +0200
Sorted the eric specific extensions into packages named like the corresponding PyQt packages (i.e. EricCore,EricGui and EricWidgets).
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
7923
91e843545d9a
Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7766
diff
changeset
|
3 | # Copyright (c) 2008 - 2021 Detlev Offenbach <detlev@die-offenbachs.de> |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | Module implementing the helpbrowser using QWebView. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | |
8318
962bce857696
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
11 | from PyQt6.QtCore import ( |
7366
bd743eacfbca
Changed code to avoid some obsoleted Qt functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
12 | pyqtSlot, pyqtSignal, QUrl, QUrlQuery, QTimer, QEventLoop, QPoint, QPointF, |
bd743eacfbca
Changed code to avoid some obsoleted Qt functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
13 | QT_VERSION |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
14 | ) |
8318
962bce857696
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
15 | from PyQt6.QtGui import QDesktopServices |
962bce857696
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
16 | from PyQt6.QtWebEngineWidgets import ( |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
17 | QWebEnginePage, QWebEngineSettings, QWebEngineScript |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
18 | ) |
7366
bd743eacfbca
Changed code to avoid some obsoleted Qt functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
19 | try: |
8318
962bce857696
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
20 | from PyQt6.QtWebEngine import PYQT_WEBENGINE_VERSION |
7380
c99320e859ca
Fixed an issue related to showing the application name in the menu bar of Gnome desktop under Wayland.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7366
diff
changeset
|
21 | # __IGNORE_EXCEPTION__ |
c99320e859ca
Fixed an issue related to showing the application name in the menu bar of Gnome desktop under Wayland.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7366
diff
changeset
|
22 | except (AttributeError, ImportError): |
7366
bd743eacfbca
Changed code to avoid some obsoleted Qt functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
23 | PYQT_WEBENGINE_VERSION = QT_VERSION |
8318
962bce857696
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
24 | from PyQt6.QtWebChannel import QWebChannel |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | |
7766 | 26 | try: |
8318
962bce857696
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
27 | from PyQt6.QtNetwork import QSslConfiguration, QSslCertificate |
7766 | 28 | SSL_AVAILABLE = True |
29 | except ImportError: | |
30 | SSL_AVAILABLE = False | |
31 | ||
8358
144a6b854f70
Sorted the eric specific extensions into packages named like the corresponding PyQt packages (i.e. EricCore,EricGui and EricWidgets).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8356
diff
changeset
|
32 | from EricWidgets import EricMessageBox |
5829
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
33 | |
4788
7076adec8ddd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4787
diff
changeset
|
34 | from WebBrowser.WebBrowserWindow import WebBrowserWindow |
4355
40ec6bef4c22
Started to implement the HTML5 feature permission manager and associated dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4353
diff
changeset
|
35 | |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
36 | from .JavaScript.ExternalJsObject import ExternalJsObject |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
37 | |
4728
0367675d783d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4726
diff
changeset
|
38 | from .Tools.WebHitTestResult import WebHitTestResult |
6692
c104c120e043
Web Browser (NG): some compatibility changes for Qt 5.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6662
diff
changeset
|
39 | from .Tools import Scripts |
4728
0367675d783d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4726
diff
changeset
|
40 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | import Preferences |
7766 | 42 | import Globals |
1960
d8c45fe8a1b9
Reworked some of the AdBlock code to achieve some speed improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1953
diff
changeset
|
43 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
923
diff
changeset
|
44 | |
4710
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
45 | class WebBrowserPage(QWebEnginePage): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | Class implementing an enhanced web page. |
5829
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
48 | |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
49 | @signal safeBrowsingAbort() emitted to indicate an abort due to a safe |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
50 | browsing event |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
51 | @signal safeBrowsingBad(threatType, threatMessages) emitted to indicate a |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
52 | malicious web site as determined by safe browsing |
6656
273a2130adbe
WebBrowserPage: added support for the printRequested signal as of Qt 5.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6645
diff
changeset
|
53 | @signal printPageRequested() emitted to indicate a print request of the |
273a2130adbe
WebBrowserPage: added support for the printRequested signal as of Qt 5.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6645
diff
changeset
|
54 | shown web page |
6149
e611e45a17d6
Fixed a few code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6146
diff
changeset
|
55 | @signal navigationRequestAccepted(url, navigation type, main frame) emitted |
e611e45a17d6
Fixed a few code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6146
diff
changeset
|
56 | to signal an accepted navigation request |
7766 | 57 | @signal sslConfigurationChanged() emitted to indicate a change of the |
58 | stored SSL configuration data | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | """ |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
60 | SafeJsWorld = QWebEngineScript.ScriptWorldId.ApplicationWorld |
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
61 | UnsafeJsWorld = QWebEngineScript.ScriptWorldId.MainWorld |
5001
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
62 | |
5829
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
63 | safeBrowsingAbort = pyqtSignal() |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
64 | safeBrowsingBad = pyqtSignal(str, str) |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
65 | |
6656
273a2130adbe
WebBrowserPage: added support for the printRequested signal as of Qt 5.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6645
diff
changeset
|
66 | printPageRequested = pyqtSignal() |
6146
94a4e8d1ac4f
WebBrowserPage: Made it emit a navigationRequestAccepted signal when the request was in the main frame and accepted by the underlying engine.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6142
diff
changeset
|
67 | navigationRequestAccepted = pyqtSignal(QUrl, QWebEnginePage.NavigationType, |
94a4e8d1ac4f
WebBrowserPage: Made it emit a navigationRequestAccepted signal when the request was in the main frame and accepted by the underlying engine.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6142
diff
changeset
|
68 | bool) |
6142
304a469455c8
Added support for printing from within a web page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6140
diff
changeset
|
69 | |
7766 | 70 | sslConfigurationChanged = pyqtSignal() |
71 | ||
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
923
diff
changeset
|
72 | def __init__(self, parent=None): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | Constructor |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | @param parent parent widget of this window (QWidget) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | """ |
8218
7c09585bd960
Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8143
diff
changeset
|
78 | super().__init__( |
4788
7076adec8ddd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4787
diff
changeset
|
79 | WebBrowserWindow.webProfile(), parent) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | |
6695
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
81 | self.__printer = None |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
82 | self.__badSite = False |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
83 | self.__registerProtocolHandlerRequest = None |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
84 | |
4710
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
85 | self.featurePermissionRequested.connect( |
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
86 | self.__featurePermissionRequested) |
4743
f9e2e536d130
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4742
diff
changeset
|
87 | self.authenticationRequired.connect( |
6120
4c60a21ce6dd
Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6093
diff
changeset
|
88 | lambda url, auth: WebBrowserWindow.networkManager().authentication( |
4c60a21ce6dd
Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6093
diff
changeset
|
89 | url, auth, self)) |
4787
2a19edf4db14
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4768
diff
changeset
|
90 | self.proxyAuthenticationRequired.connect( |
4788
7076adec8ddd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4787
diff
changeset
|
91 | WebBrowserWindow.networkManager().proxyAuthentication) |
4884
6983af705a7f
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4864
diff
changeset
|
92 | self.fullScreenRequested.connect(self.__fullScreenRequested) |
4964
a894e8c92369
Implemented the JavaScript status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4925
diff
changeset
|
93 | self.urlChanged.connect(self.__urlChanged) |
7201
6b42677d7043
Modified sources to be in line with the minimum Qt/PyQt requirement (v 5.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7192
diff
changeset
|
94 | self.contentsSizeChanged.connect(self.__contentsSizeChanged) |
8243
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8221
diff
changeset
|
95 | self.registerProtocolHandlerRequested.connect( |
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8221
diff
changeset
|
96 | self.__registerProtocolHandlerRequested) |
6268
eb6e49388114
WebBrowserPage: reintroduced the workaround for the loadFinished signale not working in Qt 5.10 and 5.11.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6234
diff
changeset
|
97 | |
7766 | 98 | self.__sslConfiguration = None |
99 | ||
6140
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
100 | # Workaround for changing webchannel world inside |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
101 | # acceptNavigationRequest not working |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
102 | self.__channelUrl = QUrl() |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
103 | self.__channelWorldId = -1 |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
104 | self.__setupChannelTimer = QTimer(self) |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
105 | self.__setupChannelTimer.setSingleShot(True) |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
106 | self.__setupChannelTimer.setInterval(100) |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
107 | self.__setupChannelTimer.timeout.connect(self.__setupChannelTimeout) |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
108 | |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
109 | @pyqtSlot() |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
110 | def __setupChannelTimeout(self): |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
111 | """ |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
112 | Private slot to initiate the setup of the web channel. |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
113 | """ |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
114 | self.__setupWebChannelForUrl(self.__channelUrl) |
6139
d24997c47244
Fixed an issue in the new web browser with Qt 5.10.0
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6137
diff
changeset
|
115 | |
4710
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
116 | def acceptNavigationRequest(self, url, type_, isMainFrame): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | """ |
4726
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4725
diff
changeset
|
118 | Public method to determine, if a request may be accepted. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | |
4710
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
120 | @param url URL to navigate to |
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
121 | @type QUrl |
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
122 | @param type_ type of the navigation request |
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
123 | @type QWebEnginePage.NavigationType |
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
124 | @param isMainFrame flag indicating, that the request originated from |
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
125 | the main frame |
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
126 | @type bool |
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
127 | @return flag indicating acceptance |
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
128 | @rtype bool |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | """ |
4710
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
130 | scheme = url.scheme() |
757
d3daf1d8f058
Fixed the handling of 'javascript' schemes in the web browser and enhanced the download manager a bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
748
diff
changeset
|
131 | if scheme == "mailto": |
4710
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
132 | QDesktopServices.openUrl(url) |
757
d3daf1d8f058
Fixed the handling of 'javascript' schemes in the web browser and enhanced the download manager a bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
748
diff
changeset
|
133 | return False |
d3daf1d8f058
Fixed the handling of 'javascript' schemes in the web browser and enhanced the download manager a bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
748
diff
changeset
|
134 | |
4710
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
135 | # AdBlock |
8221
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
136 | if ( |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
137 | url.scheme() == "abp" and |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
138 | WebBrowserWindow.adBlockManager().addSubscriptionFromUrl(url) |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
139 | ): |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
140 | return False |
4886
b56735d36159
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4884
diff
changeset
|
141 | |
5716
27a7c7064686
Improved installion of GreaseMonkey user scripts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
142 | # GreaseMonkey |
7540
7a44cb47054b
WebBrowserPage: fixed an AttributeError caused by using PyQtWebEngine 5.14 with older Qt variants.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7380
diff
changeset
|
143 | try: |
7a44cb47054b
WebBrowserPage: fixed an AttributeError caused by using PyQtWebEngine 5.14 with older Qt variants.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7380
diff
changeset
|
144 | # PyQtWebEngine >= 5.14.0 |
7366
bd743eacfbca
Changed code to avoid some obsoleted Qt functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
145 | navigationType = type_ in [ |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
146 | QWebEnginePage.NavigationType.NavigationTypeLinkClicked, |
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
147 | QWebEnginePage.NavigationType.NavigationTypeRedirect |
7366
bd743eacfbca
Changed code to avoid some obsoleted Qt functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
148 | ] |
7540
7a44cb47054b
WebBrowserPage: fixed an AttributeError caused by using PyQtWebEngine 5.14 with older Qt variants.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7380
diff
changeset
|
149 | except AttributeError: |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
150 | navigationType = ( |
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
151 | type_ == |
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
152 | QWebEnginePage.NavigationType.NavigationTypeLinkClicked |
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
153 | ) |
7366
bd743eacfbca
Changed code to avoid some obsoleted Qt functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
154 | if navigationType and url.toString().endswith(".user.js"): |
5716
27a7c7064686
Improved installion of GreaseMonkey user scripts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
155 | WebBrowserWindow.greaseMonkeyManager().downloadScript(url) |
27a7c7064686
Improved installion of GreaseMonkey user scripts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
156 | return False |
27a7c7064686
Improved installion of GreaseMonkey user scripts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
157 | |
6142
304a469455c8
Added support for printing from within a web page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6140
diff
changeset
|
158 | if url.scheme() == "eric": |
6174
bb2989d750ce
WebBrowser: Fixed some sender() related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6149
diff
changeset
|
159 | if url.path() == "AddSearchProvider": |
bb2989d750ce
WebBrowser: Fixed some sender() related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6149
diff
changeset
|
160 | query = QUrlQuery(url) |
bb2989d750ce
WebBrowser: Fixed some sender() related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6149
diff
changeset
|
161 | self.view().mainWindow().openSearchManager().addEngine( |
bb2989d750ce
WebBrowser: Fixed some sender() related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6149
diff
changeset
|
162 | QUrl(query.queryItemValue("url"))) |
bb2989d750ce
WebBrowser: Fixed some sender() related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6149
diff
changeset
|
163 | return False |
bb2989d750ce
WebBrowser: Fixed some sender() related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6149
diff
changeset
|
164 | elif url.path() == "PrintPage": |
6656
273a2130adbe
WebBrowserPage: added support for the printRequested signal as of Qt 5.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6645
diff
changeset
|
165 | self.printPageRequested.emit() |
6142
304a469455c8
Added support for printing from within a web page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6140
diff
changeset
|
166 | return False |
304a469455c8
Added support for printing from within a web page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6140
diff
changeset
|
167 | |
5829
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
168 | # Safe Browsing |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
169 | self.__badSite = False |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
170 | from WebBrowser.SafeBrowsing.SafeBrowsingManager import ( |
6093
5ed91fe54bc9
Implemented some optimizations with respect to Google Safe Browsing and browser startup with Qt Help support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
171 | SafeBrowsingManager |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
172 | ) |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
173 | if ( |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
174 | SafeBrowsingManager.isEnabled() and |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
175 | url.scheme() not in SafeBrowsingManager.getIgnoreSchemes() |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
176 | ): |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
177 | threatLists = ( |
6234
fb1f9e681848
Web Browser NG, Safe Browsing: improved error handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6233
diff
changeset
|
178 | WebBrowserWindow.safeBrowsingManager().lookupUrl(url)[0] |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
179 | ) |
5829
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
180 | if threatLists: |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
181 | threatMessages = ( |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
182 | WebBrowserWindow.safeBrowsingManager() |
5829
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
183 | .getThreatMessages(threatLists) |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
184 | ) |
8356
68ec9c3d4de5
Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8354
diff
changeset
|
185 | res = EricMessageBox.warning( |
5829
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
186 | WebBrowserWindow.getWindow(), |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
187 | self.tr("Suspicuous URL detected"), |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
188 | self.tr("<p>The URL <b>{0}</b> was found in the Safe" |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
189 | " Browsing database.</p>{1}").format( |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
190 | url.toString(), "".join(threatMessages)), |
8356
68ec9c3d4de5
Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8354
diff
changeset
|
191 | EricMessageBox.Abort | EricMessageBox.Ignore, |
68ec9c3d4de5
Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8354
diff
changeset
|
192 | EricMessageBox.Abort) |
68ec9c3d4de5
Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8354
diff
changeset
|
193 | if res == EricMessageBox.Abort: |
5829
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
194 | self.safeBrowsingAbort.emit() |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
195 | return False |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
196 | |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
197 | self.__badSite = True |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
198 | threatType = ( |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
199 | WebBrowserWindow.safeBrowsingManager() |
5829
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
200 | .getThreatType(threatLists[0]) |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
201 | ) |
5829
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
202 | self.safeBrowsingBad.emit(threatType, "".join(threatMessages)) |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
203 | |
7366
bd743eacfbca
Changed code to avoid some obsoleted Qt functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
204 | result = QWebEnginePage.acceptNavigationRequest( |
bd743eacfbca
Changed code to avoid some obsoleted Qt functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
205 | self, url, type_, isMainFrame) |
6137
27962f3f457f
Some minor changes in the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6136
diff
changeset
|
206 | |
6146
94a4e8d1ac4f
WebBrowserPage: Made it emit a navigationRequestAccepted signal when the request was in the main frame and accepted by the underlying engine.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6142
diff
changeset
|
207 | if result: |
94a4e8d1ac4f
WebBrowserPage: Made it emit a navigationRequestAccepted signal when the request was in the main frame and accepted by the underlying engine.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6142
diff
changeset
|
208 | if isMainFrame: |
94a4e8d1ac4f
WebBrowserPage: Made it emit a navigationRequestAccepted signal when the request was in the main frame and accepted by the underlying engine.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6142
diff
changeset
|
209 | isWeb = url.scheme() in ("http", "https", "ftp", "ftps", |
94a4e8d1ac4f
WebBrowserPage: Made it emit a navigationRequestAccepted signal when the request was in the main frame and accepted by the underlying engine.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6142
diff
changeset
|
210 | "file") |
94a4e8d1ac4f
WebBrowserPage: Made it emit a navigationRequestAccepted signal when the request was in the main frame and accepted by the underlying engine.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6142
diff
changeset
|
211 | globalJsEnabled = WebBrowserWindow.webSettings().testAttribute( |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
212 | QWebEngineSettings.WebAttribute.JavascriptEnabled) |
6146
94a4e8d1ac4f
WebBrowserPage: Made it emit a navigationRequestAccepted signal when the request was in the main frame and accepted by the underlying engine.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6142
diff
changeset
|
213 | if isWeb: |
94a4e8d1ac4f
WebBrowserPage: Made it emit a navigationRequestAccepted signal when the request was in the main frame and accepted by the underlying engine.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6142
diff
changeset
|
214 | enable = globalJsEnabled |
94a4e8d1ac4f
WebBrowserPage: Made it emit a navigationRequestAccepted signal when the request was in the main frame and accepted by the underlying engine.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6142
diff
changeset
|
215 | else: |
94a4e8d1ac4f
WebBrowserPage: Made it emit a navigationRequestAccepted signal when the request was in the main frame and accepted by the underlying engine.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6142
diff
changeset
|
216 | enable = True |
94a4e8d1ac4f
WebBrowserPage: Made it emit a navigationRequestAccepted signal when the request was in the main frame and accepted by the underlying engine.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6142
diff
changeset
|
217 | self.settings().setAttribute( |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
218 | QWebEngineSettings.WebAttribute.JavascriptEnabled, enable) |
6146
94a4e8d1ac4f
WebBrowserPage: Made it emit a navigationRequestAccepted signal when the request was in the main frame and accepted by the underlying engine.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6142
diff
changeset
|
219 | |
94a4e8d1ac4f
WebBrowserPage: Made it emit a navigationRequestAccepted signal when the request was in the main frame and accepted by the underlying engine.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6142
diff
changeset
|
220 | self.__channelUrl = url |
94a4e8d1ac4f
WebBrowserPage: Made it emit a navigationRequestAccepted signal when the request was in the main frame and accepted by the underlying engine.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6142
diff
changeset
|
221 | self.__setupChannelTimer.start() |
94a4e8d1ac4f
WebBrowserPage: Made it emit a navigationRequestAccepted signal when the request was in the main frame and accepted by the underlying engine.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6142
diff
changeset
|
222 | self.navigationRequestAccepted.emit(url, type_, isMainFrame) |
6137
27962f3f457f
Some minor changes in the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6136
diff
changeset
|
223 | |
27962f3f457f
Some minor changes in the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6136
diff
changeset
|
224 | return result |
487
4d41d03d3d00
Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
383
diff
changeset
|
225 | |
4964
a894e8c92369
Implemented the JavaScript status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4925
diff
changeset
|
226 | @pyqtSlot(QUrl) |
a894e8c92369
Implemented the JavaScript status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4925
diff
changeset
|
227 | def __urlChanged(self, url): |
a894e8c92369
Implemented the JavaScript status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4925
diff
changeset
|
228 | """ |
a894e8c92369
Implemented the JavaScript status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4925
diff
changeset
|
229 | Private slot to handle changes of the URL. |
a894e8c92369
Implemented the JavaScript status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4925
diff
changeset
|
230 | |
a894e8c92369
Implemented the JavaScript status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4925
diff
changeset
|
231 | @param url new URL |
a894e8c92369
Implemented the JavaScript status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4925
diff
changeset
|
232 | @type QUrl |
a894e8c92369
Implemented the JavaScript status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4925
diff
changeset
|
233 | """ |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
234 | if ( |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
235 | not url.isEmpty() and |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
236 | url.scheme() == "eric" and |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
237 | not self.isJavaScriptEnabled() |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
238 | ): |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
239 | self.settings().setAttribute( |
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
240 | QWebEngineSettings.WebAttribute.JavascriptEnabled, True) |
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
241 | self.triggerAction(QWebEnginePage.WebAction.Reload) |
4964
a894e8c92369
Implemented the JavaScript status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4925
diff
changeset
|
242 | |
4906
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
243 | @classmethod |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
244 | def userAgent(cls, resolveEmpty=False): |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
245 | """ |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
246 | Class method to get the global user agent setting. |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
247 | |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
248 | @param resolveEmpty flag indicating to resolve an empty |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
249 | user agent (boolean) |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
250 | @return user agent string (string) |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
251 | """ |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
252 | agent = Preferences.getWebBrowser("UserAgent") |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
253 | if agent == "" and resolveEmpty: |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
254 | agent = cls.userAgentForUrl(QUrl()) |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
255 | return agent |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
256 | |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
257 | @classmethod |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
258 | def setUserAgent(cls, agent): |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
259 | """ |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
260 | Class method to set the global user agent string. |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
261 | |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
262 | @param agent new current user agent string (string) |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
263 | """ |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
264 | Preferences.setWebBrowser("UserAgent", agent) |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
265 | |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
266 | @classmethod |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
267 | def userAgentForUrl(cls, url): |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
268 | """ |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
269 | Class method to determine the user agent for the given URL. |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
270 | |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
271 | @param url URL to determine user agent for (QUrl) |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
272 | @return user agent string (string) |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
273 | """ |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
274 | agent = WebBrowserWindow.userAgentsManager().userAgentForUrl(url) |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
275 | if agent == "": |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
276 | # no agent string specified for the given host -> use global one |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
277 | agent = Preferences.getWebBrowser("UserAgent") |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
278 | if agent == "": |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
279 | # no global agent string specified -> use default one |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
280 | agent = WebBrowserWindow.webProfile().httpUserAgent() |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
281 | return agent |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
282 | |
4710
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
283 | def __featurePermissionRequested(self, url, feature): |
4316
493891cbacee
Added support for feature permissions to the eric web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4275
diff
changeset
|
284 | """ |
493891cbacee
Added support for feature permissions to the eric web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4275
diff
changeset
|
285 | Private slot handling a feature permission request. |
493891cbacee
Added support for feature permissions to the eric web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4275
diff
changeset
|
286 | |
4710
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
287 | @param url url requesting the feature |
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
288 | @type QUrl |
4316
493891cbacee
Added support for feature permissions to the eric web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4275
diff
changeset
|
289 | @param feature requested feature |
4710
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
290 | @type QWebEnginePage.Feature |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
291 | """ |
4788
7076adec8ddd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4787
diff
changeset
|
292 | manager = WebBrowserWindow.featurePermissionManager() |
4742
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
293 | manager.requestFeaturePermission(self, url, feature) |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
294 | |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
295 | def execJavaScript(self, script, |
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
296 | worldId=QWebEngineScript.ScriptWorldId.MainWorld, |
5001
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
297 | timeout=500): |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
298 | """ |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
299 | Public method to execute a JavaScript function synchroneously. |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
300 | |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
301 | @param script JavaScript script source to be executed |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
302 | @type str |
5001
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
303 | @param worldId ID to run the script under |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
304 | @type QWebEngineScript.ScriptWorldId |
5001
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
305 | @param timeout max. time the script is given to execute |
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
306 | @type int |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
307 | @return result of the script |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
308 | @rtype depending upon script result |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
309 | """ |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
310 | loop = QEventLoop() |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
311 | resultDict = {"res": None} |
5001
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
312 | QTimer.singleShot(timeout, loop.quit) |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
313 | |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
314 | def resultCallback(res, resDict=resultDict): |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
315 | if loop and loop.isRunning(): |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
316 | resDict["res"] = res |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
317 | loop.quit() |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
318 | |
5001
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
319 | self.runJavaScript(script, worldId, resultCallback) |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
320 | |
7759
51aa6c6b66f7
Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7540
diff
changeset
|
321 | loop.exec() |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
322 | return resultDict["res"] |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
323 | |
5001
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
324 | def runJavaScript(self, script, worldId=-1, callback=None): |
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
325 | """ |
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
326 | Public method to run a script in the context of the page. |
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
327 | |
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
328 | @param script JavaScript script source to be executed |
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
329 | @type str |
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
330 | @param worldId ID to run the script under |
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
331 | @type int |
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
332 | @param callback callback function to be executed when the script has |
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
333 | ended |
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
334 | @type function |
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
335 | """ |
7201
6b42677d7043
Modified sources to be in line with the minimum Qt/PyQt requirement (v 5.9.0).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7192
diff
changeset
|
336 | if worldId > -1: |
5001
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
337 | if callback is None: |
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
338 | QWebEnginePage.runJavaScript(self, script, worldId) |
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
339 | else: |
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
340 | QWebEnginePage.runJavaScript(self, script, worldId, callback) |
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
341 | else: |
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
342 | if callback is None: |
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
343 | QWebEnginePage.runJavaScript(self, script) |
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
344 | else: |
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
345 | QWebEnginePage.runJavaScript(self, script, callback) |
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
346 | |
4965
a9a4b632fe48
Some enhancements for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4964
diff
changeset
|
347 | def isJavaScriptEnabled(self): |
a9a4b632fe48
Some enhancements for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4964
diff
changeset
|
348 | """ |
a9a4b632fe48
Some enhancements for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4964
diff
changeset
|
349 | Public method to test, if JavaScript is enabled. |
a9a4b632fe48
Some enhancements for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4964
diff
changeset
|
350 | |
a9a4b632fe48
Some enhancements for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4964
diff
changeset
|
351 | @return flag indicating the state of the JavaScript support |
a9a4b632fe48
Some enhancements for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4964
diff
changeset
|
352 | @rtype bool |
a9a4b632fe48
Some enhancements for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4964
diff
changeset
|
353 | """ |
a9a4b632fe48
Some enhancements for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4964
diff
changeset
|
354 | return self.settings().testAttribute( |
8143
2c730d5fd177
Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
355 | QWebEngineSettings.WebAttribute.JavascriptEnabled) |
4965
a9a4b632fe48
Some enhancements for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4964
diff
changeset
|
356 | |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
357 | def scroll(self, x, y): |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
358 | """ |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
359 | Public method to scroll by the given amount of pixels. |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
360 | |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
361 | @param x horizontal scroll value |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
362 | @type int |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
363 | @param y vertical scroll value |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
364 | @type int |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
365 | """ |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
366 | self.runJavaScript( |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
367 | "window.scrollTo(window.scrollX + {0}, window.scrollY + {1})" |
5001
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
368 | .format(x, y), |
08eaee907686
Prepared the QWebEingine based web browser for the new runJavaScript() method as of Qt 5.7.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4978
diff
changeset
|
369 | WebBrowserPage.SafeJsWorld |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
370 | ) |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
371 | |
5774
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
372 | def scrollTo(self, pos): |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
373 | """ |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
374 | Public method to scroll to the given position. |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
375 | |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
376 | @param pos position to scroll to |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
377 | @type QPointF |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
378 | """ |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
379 | self.runJavaScript( |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
380 | "window.scrollTo({0}, {1});".format(pos.x(), pos.y()), |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
381 | WebBrowserPage.SafeJsWorld |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
382 | ) |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
383 | |
4925
6534062014dc
Mapped the webhit test position to the viewport.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4917
diff
changeset
|
384 | def mapToViewport(self, pos): |
6534062014dc
Mapped the webhit test position to the viewport.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4917
diff
changeset
|
385 | """ |
6534062014dc
Mapped the webhit test position to the viewport.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4917
diff
changeset
|
386 | Public method to map a position to the viewport. |
6534062014dc
Mapped the webhit test position to the viewport.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4917
diff
changeset
|
387 | |
6534062014dc
Mapped the webhit test position to the viewport.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4917
diff
changeset
|
388 | @param pos position to be mapped |
6534062014dc
Mapped the webhit test position to the viewport.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4917
diff
changeset
|
389 | @type QPoint |
6534062014dc
Mapped the webhit test position to the viewport.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4917
diff
changeset
|
390 | @return viewport position |
6534062014dc
Mapped the webhit test position to the viewport.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4917
diff
changeset
|
391 | @rtype QPoint |
6534062014dc
Mapped the webhit test position to the viewport.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4917
diff
changeset
|
392 | """ |
6534062014dc
Mapped the webhit test position to the viewport.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4917
diff
changeset
|
393 | return QPoint(pos.x() // self.zoomFactor(), |
6534062014dc
Mapped the webhit test position to the viewport.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4917
diff
changeset
|
394 | pos.y() // self.zoomFactor()) |
6534062014dc
Mapped the webhit test position to the viewport.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4917
diff
changeset
|
395 | |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
396 | def hitTestContent(self, pos): |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
397 | """ |
4728
0367675d783d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4726
diff
changeset
|
398 | Public method to test the content at a specified position. |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
399 | |
4728
0367675d783d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4726
diff
changeset
|
400 | @param pos position to execute the test at |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
401 | @type QPoint |
4728
0367675d783d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4726
diff
changeset
|
402 | @return test result object |
0367675d783d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4726
diff
changeset
|
403 | @rtype WebHitTestResult |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
404 | """ |
4728
0367675d783d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4726
diff
changeset
|
405 | return WebHitTestResult(self, pos) |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
406 | |
6140
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
407 | def __setupWebChannelForUrl(self, url): |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
408 | """ |
4745
285bfd224a1b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4744
diff
changeset
|
409 | Private method to setup a web channel to our external object. |
6140
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
410 | |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
411 | @param url URL for which to setup the web channel |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
412 | @type QUrl |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
413 | """ |
6140
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
414 | channel = self.webChannel() |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
415 | if channel is None: |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
416 | channel = QWebChannel(self) |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
417 | ExternalJsObject.setupWebChannel(channel, self) |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
418 | |
6140
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
419 | worldId = -1 |
8260
2161475d9639
Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8243
diff
changeset
|
420 | worldId = ( |
2161475d9639
Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8243
diff
changeset
|
421 | self.UnsafeJsWorld |
2161475d9639
Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8243
diff
changeset
|
422 | if url.scheme() in ("eric", "qthelp") else |
2161475d9639
Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8243
diff
changeset
|
423 | self.SafeJsWorld |
2161475d9639
Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8243
diff
changeset
|
424 | ) |
6140
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
425 | if worldId != self.__channelWorldId: |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
426 | self.__channelWorldId = worldId |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
427 | try: |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
428 | self.setWebChannel(channel, self.__channelWorldId) |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
429 | except TypeError: |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
430 | # pre Qt 5.7.0 |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
431 | self.setWebChannel(channel) |
4725
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4717
diff
changeset
|
432 | |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4717
diff
changeset
|
433 | def certificateError(self, error): |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4717
diff
changeset
|
434 | """ |
4726
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4725
diff
changeset
|
435 | Public method to handle SSL certificate errors. |
4725
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4717
diff
changeset
|
436 | |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4717
diff
changeset
|
437 | @param error object containing the certificate error information |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4717
diff
changeset
|
438 | @type QWebEngineCertificateError |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4717
diff
changeset
|
439 | @return flag indicating to ignore this error |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4717
diff
changeset
|
440 | @rtype bool |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4717
diff
changeset
|
441 | """ |
4788
7076adec8ddd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4787
diff
changeset
|
442 | return WebBrowserWindow.networkManager().certificateError( |
7076adec8ddd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4787
diff
changeset
|
443 | error, self.view()) |
4745
285bfd224a1b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4744
diff
changeset
|
444 | |
4884
6983af705a7f
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4864
diff
changeset
|
445 | def __fullScreenRequested(self, request): |
6983af705a7f
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4864
diff
changeset
|
446 | """ |
6983af705a7f
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4864
diff
changeset
|
447 | Private slot handling a full screen request. |
4917
682750cc7bd5
Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4913
diff
changeset
|
448 | |
682750cc7bd5
Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4913
diff
changeset
|
449 | @param request reference to the full screen request |
682750cc7bd5
Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4913
diff
changeset
|
450 | @type QWebEngineFullScreenRequest |
4884
6983af705a7f
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4864
diff
changeset
|
451 | """ |
6983af705a7f
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4864
diff
changeset
|
452 | self.view().requestFullScreen(request.toggleOn()) |
6983af705a7f
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4864
diff
changeset
|
453 | |
6983af705a7f
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4864
diff
changeset
|
454 | accepted = request.toggleOn() == self.view().isFullScreen() |
6983af705a7f
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4864
diff
changeset
|
455 | |
6983af705a7f
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4864
diff
changeset
|
456 | if accepted: |
6983af705a7f
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4864
diff
changeset
|
457 | request.accept() |
6983af705a7f
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4864
diff
changeset
|
458 | else: |
6983af705a7f
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4864
diff
changeset
|
459 | request.reject() |
6983af705a7f
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4864
diff
changeset
|
460 | |
5534
f9368ecf153a
Re-enabled the print preview function for all platforms and the print for Windows platforms for the new web browser and Qt >= 5.8.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5530
diff
changeset
|
461 | def execPrintPage(self, printer, timeout=1000): |
5530
93f95c4b3153
Started upgrading the new web browser to the Qt 5.8 offerings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
462 | """ |
5534
f9368ecf153a
Re-enabled the print preview function for all platforms and the print for Windows platforms for the new web browser and Qt >= 5.8.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5530
diff
changeset
|
463 | Public method to execute a synchronous print. |
5530
93f95c4b3153
Started upgrading the new web browser to the Qt 5.8 offerings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
464 | |
93f95c4b3153
Started upgrading the new web browser to the Qt 5.8 offerings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
465 | @param printer reference to the printer object |
93f95c4b3153
Started upgrading the new web browser to the Qt 5.8 offerings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
466 | @type QPrinter |
5534
f9368ecf153a
Re-enabled the print preview function for all platforms and the print for Windows platforms for the new web browser and Qt >= 5.8.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5530
diff
changeset
|
467 | @param timeout timeout value in milliseconds |
f9368ecf153a
Re-enabled the print preview function for all platforms and the print for Windows platforms for the new web browser and Qt >= 5.8.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5530
diff
changeset
|
468 | @type int |
f9368ecf153a
Re-enabled the print preview function for all platforms and the print for Windows platforms for the new web browser and Qt >= 5.8.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5530
diff
changeset
|
469 | @return flag indicating a successful print job |
f9368ecf153a
Re-enabled the print preview function for all platforms and the print for Windows platforms for the new web browser and Qt >= 5.8.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5530
diff
changeset
|
470 | @rtype bool |
5530
93f95c4b3153
Started upgrading the new web browser to the Qt 5.8 offerings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
471 | """ |
5534
f9368ecf153a
Re-enabled the print preview function for all platforms and the print for Windows platforms for the new web browser and Qt >= 5.8.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5530
diff
changeset
|
472 | loop = QEventLoop() |
f9368ecf153a
Re-enabled the print preview function for all platforms and the print for Windows platforms for the new web browser and Qt >= 5.8.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5530
diff
changeset
|
473 | resultDict = {"res": None} |
f9368ecf153a
Re-enabled the print preview function for all platforms and the print for Windows platforms for the new web browser and Qt >= 5.8.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5530
diff
changeset
|
474 | QTimer.singleShot(timeout, loop.quit) |
5530
93f95c4b3153
Started upgrading the new web browser to the Qt 5.8 offerings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
475 | |
5534
f9368ecf153a
Re-enabled the print preview function for all platforms and the print for Windows platforms for the new web browser and Qt >= 5.8.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5530
diff
changeset
|
476 | def printCallback(res, resDict=resultDict): |
f9368ecf153a
Re-enabled the print preview function for all platforms and the print for Windows platforms for the new web browser and Qt >= 5.8.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5530
diff
changeset
|
477 | if loop and loop.isRunning(): |
f9368ecf153a
Re-enabled the print preview function for all platforms and the print for Windows platforms for the new web browser and Qt >= 5.8.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5530
diff
changeset
|
478 | resDict["res"] = res |
f9368ecf153a
Re-enabled the print preview function for all platforms and the print for Windows platforms for the new web browser and Qt >= 5.8.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5530
diff
changeset
|
479 | loop.quit() |
f9368ecf153a
Re-enabled the print preview function for all platforms and the print for Windows platforms for the new web browser and Qt >= 5.8.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5530
diff
changeset
|
480 | |
f9368ecf153a
Re-enabled the print preview function for all platforms and the print for Windows platforms for the new web browser and Qt >= 5.8.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5530
diff
changeset
|
481 | self.print(printer, printCallback) |
f9368ecf153a
Re-enabled the print preview function for all platforms and the print for Windows platforms for the new web browser and Qt >= 5.8.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5530
diff
changeset
|
482 | |
7759
51aa6c6b66f7
Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7540
diff
changeset
|
483 | loop.exec() |
5534
f9368ecf153a
Re-enabled the print preview function for all platforms and the print for Windows platforms for the new web browser and Qt >= 5.8.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5530
diff
changeset
|
484 | return resultDict["res"] |
5530
93f95c4b3153
Started upgrading the new web browser to the Qt 5.8 offerings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
485 | |
6692
c104c120e043
Web Browser (NG): some compatibility changes for Qt 5.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6662
diff
changeset
|
486 | def __contentsSizeChanged(self, size): |
c104c120e043
Web Browser (NG): some compatibility changes for Qt 5.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6662
diff
changeset
|
487 | """ |
c104c120e043
Web Browser (NG): some compatibility changes for Qt 5.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6662
diff
changeset
|
488 | Private slot to work around QWebEnginePage not scrolling to anchors |
c104c120e043
Web Browser (NG): some compatibility changes for Qt 5.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6662
diff
changeset
|
489 | when opened in a background tab. |
c104c120e043
Web Browser (NG): some compatibility changes for Qt 5.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6662
diff
changeset
|
490 | |
c104c120e043
Web Browser (NG): some compatibility changes for Qt 5.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6662
diff
changeset
|
491 | @param size changed contents size (unused) |
c104c120e043
Web Browser (NG): some compatibility changes for Qt 5.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6662
diff
changeset
|
492 | @type QSize |
c104c120e043
Web Browser (NG): some compatibility changes for Qt 5.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6662
diff
changeset
|
493 | """ |
c104c120e043
Web Browser (NG): some compatibility changes for Qt 5.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6662
diff
changeset
|
494 | fragment = self.url().fragment() |
c104c120e043
Web Browser (NG): some compatibility changes for Qt 5.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6662
diff
changeset
|
495 | self.runJavaScript(Scripts.scrollToAnchor(fragment)) |
c104c120e043
Web Browser (NG): some compatibility changes for Qt 5.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6662
diff
changeset
|
496 | |
4745
285bfd224a1b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4744
diff
changeset
|
497 | ############################################## |
285bfd224a1b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4744
diff
changeset
|
498 | ## Methods below deal with JavaScript messages |
285bfd224a1b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4744
diff
changeset
|
499 | ############################################## |
285bfd224a1b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4744
diff
changeset
|
500 | |
4917
682750cc7bd5
Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4913
diff
changeset
|
501 | def javaScriptConsoleMessage(self, level, message, lineNumber, sourceId): |
4822
f1b9899847dc
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4801
diff
changeset
|
502 | """ |
f1b9899847dc
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4801
diff
changeset
|
503 | Public method to show a console message. |
f1b9899847dc
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4801
diff
changeset
|
504 | |
f1b9899847dc
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4801
diff
changeset
|
505 | @param level severity |
f1b9899847dc
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4801
diff
changeset
|
506 | @type QWebEnginePage.JavaScriptConsoleMessageLevel |
f1b9899847dc
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4801
diff
changeset
|
507 | @param message message to be shown |
f1b9899847dc
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4801
diff
changeset
|
508 | @type str |
f1b9899847dc
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4801
diff
changeset
|
509 | @param lineNumber line number of an error |
f1b9899847dc
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4801
diff
changeset
|
510 | @type int |
f1b9899847dc
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4801
diff
changeset
|
511 | @param sourceId source URL causing the error |
f1b9899847dc
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4801
diff
changeset
|
512 | @type str |
f1b9899847dc
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4801
diff
changeset
|
513 | """ |
f1b9899847dc
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4801
diff
changeset
|
514 | self.view().mainWindow().javascriptConsole().javaScriptConsoleMessage( |
4917
682750cc7bd5
Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4913
diff
changeset
|
515 | level, message, lineNumber, sourceId) |
5113
d394e20f7467
Added support for audio per tab to the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5009
diff
changeset
|
516 | |
5829
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
517 | ########################################################################### |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
518 | ## Methods below implement safe browsing related functions |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
519 | ########################################################################### |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
520 | |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
521 | def getSafeBrowsingStatus(self): |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
522 | """ |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
523 | Public method to get the safe browsing status of the current page. |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
524 | |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
525 | @return flag indicating a safe site |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
526 | @rtype bool |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
527 | """ |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
528 | return not self.__badSite |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
529 | |
5113
d394e20f7467
Added support for audio per tab to the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5009
diff
changeset
|
530 | ################################################## |
d394e20f7467
Added support for audio per tab to the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5009
diff
changeset
|
531 | ## Methods below implement compatibility functions |
d394e20f7467
Added support for audio per tab to the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5009
diff
changeset
|
532 | ################################################## |
d394e20f7467
Added support for audio per tab to the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5009
diff
changeset
|
533 | |
d394e20f7467
Added support for audio per tab to the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5009
diff
changeset
|
534 | if not hasattr(QWebEnginePage, "icon"): |
d394e20f7467
Added support for audio per tab to the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5009
diff
changeset
|
535 | def icon(self): |
d394e20f7467
Added support for audio per tab to the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5009
diff
changeset
|
536 | """ |
d394e20f7467
Added support for audio per tab to the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5009
diff
changeset
|
537 | Public method to get the web site icon. |
d394e20f7467
Added support for audio per tab to the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5009
diff
changeset
|
538 | |
d394e20f7467
Added support for audio per tab to the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5009
diff
changeset
|
539 | @return web site icon |
d394e20f7467
Added support for audio per tab to the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5009
diff
changeset
|
540 | @rtype QIcon |
d394e20f7467
Added support for audio per tab to the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5009
diff
changeset
|
541 | """ |
d394e20f7467
Added support for audio per tab to the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5009
diff
changeset
|
542 | return self.view().icon() |
5774
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
543 | |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
544 | if not hasattr(QWebEnginePage, "scrollPosition"): |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
545 | def scrollPosition(self): |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
546 | """ |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
547 | Public method to get the scroll position of the web page. |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
548 | |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
549 | @return scroll position |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
550 | @rtype QPointF |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
551 | """ |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
552 | pos = self.execJavaScript( |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
553 | "(function() {" |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
554 | "var res = {" |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
555 | " x: 0," |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
556 | " y: 0," |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
557 | "};" |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
558 | "res.x = window.scrollX;" |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
559 | "res.y = window.scrollY;" |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
560 | "return res;" |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
561 | "})()", |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
562 | WebBrowserPage.SafeJsWorld |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
563 | ) |
8221
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
564 | pos = ( |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
565 | QPointF(0.0, 0.0) if pos is None |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
566 | else QPointF(pos["x"], pos["y"]) |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
567 | ) |
5774
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
568 | |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
569 | return pos |
6695
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
570 | |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
571 | ############################################################# |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
572 | ## Methods below implement protocol handler related functions |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
573 | ############################################################# |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
574 | |
8243
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8221
diff
changeset
|
575 | @pyqtSlot("QWebEngineRegisterProtocolHandlerRequest") |
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8221
diff
changeset
|
576 | def __registerProtocolHandlerRequested(self, request): |
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8221
diff
changeset
|
577 | """ |
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8221
diff
changeset
|
578 | Private slot to handle the registration of a custom protocol |
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8221
diff
changeset
|
579 | handler. |
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8221
diff
changeset
|
580 | |
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8221
diff
changeset
|
581 | @param request reference to the registration request |
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8221
diff
changeset
|
582 | @type QWebEngineRegisterProtocolHandlerRequest |
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8221
diff
changeset
|
583 | """ |
8318
962bce857696
Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
584 | from PyQt6.QtWebEngineCore import ( |
8243
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8221
diff
changeset
|
585 | QWebEngineRegisterProtocolHandlerRequest |
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8221
diff
changeset
|
586 | ) |
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8221
diff
changeset
|
587 | |
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8221
diff
changeset
|
588 | if self.__registerProtocolHandlerRequest: |
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8221
diff
changeset
|
589 | del self.__registerProtocolHandlerRequest |
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8221
diff
changeset
|
590 | self.__registerProtocolHandlerRequest = None |
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8221
diff
changeset
|
591 | self.__registerProtocolHandlerRequest = ( |
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8221
diff
changeset
|
592 | QWebEngineRegisterProtocolHandlerRequest(request) |
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8221
diff
changeset
|
593 | ) |
6695
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
594 | |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
595 | def registerProtocolHandlerRequestUrl(self): |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
596 | """ |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
597 | Public method to get the registered protocol handler request URL. |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
598 | |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
599 | @return registered protocol handler request URL |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
600 | @rtype QUrl |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
601 | """ |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
602 | if ( |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
603 | self.__registerProtocolHandlerRequest and |
6695
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
604 | (self.url().host() == |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
605 | self.__registerProtocolHandlerRequest.origin().host()) |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
606 | ): |
6695
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
607 | return self.__registerProtocolHandlerRequest.origin() |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
608 | else: |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
609 | return QUrl() |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
610 | |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
611 | def registerProtocolHandlerRequestScheme(self): |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
612 | """ |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
613 | Public method to get the registered protocol handler request scheme. |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
614 | |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
615 | @return registered protocol handler request scheme |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
616 | @rtype str |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
617 | """ |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
618 | if ( |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
619 | self.__registerProtocolHandlerRequest and |
6695
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
620 | (self.url().host() == |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
621 | self.__registerProtocolHandlerRequest.origin().host()) |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
622 | ): |
6695
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
623 | return self.__registerProtocolHandlerRequest.scheme() |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
624 | else: |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
625 | return "" |
7766 | 626 | |
627 | ############################################################# | |
628 | ## SSL configuration handling below | |
629 | ############################################################# | |
630 | ||
631 | def setSslConfiguration(self, sslConfiguration): | |
632 | """ | |
633 | Public slot to set the SSL configuration data of the page. | |
634 | ||
635 | @param sslConfiguration SSL configuration to be set | |
636 | @type QSslConfiguration | |
637 | """ | |
638 | self.__sslConfiguration = QSslConfiguration(sslConfiguration) | |
639 | self.__sslConfiguration.url = self.url() | |
640 | self.sslConfigurationChanged.emit() | |
641 | ||
642 | def getSslConfiguration(self): | |
643 | """ | |
644 | Public method to return a reference to the current SSL configuration. | |
645 | ||
646 | @return reference to the SSL configuration in use | |
647 | @rtype QSslConfiguration | |
648 | """ | |
649 | return self.__sslConfiguration | |
650 | ||
651 | def clearSslConfiguration(self): | |
652 | """ | |
653 | Public slot to clear the stored SSL configuration data. | |
654 | """ | |
655 | self.__sslConfiguration = None | |
656 | self.sslConfigurationChanged.emit() | |
657 | ||
658 | def getSslCertificate(self): | |
659 | """ | |
660 | Public method to get a reference to the SSL certificate. | |
661 | ||
662 | @return amended SSL certificate | |
663 | @rtype QSslCertificate | |
664 | """ | |
665 | if self.__sslConfiguration is None: | |
666 | return None | |
667 | ||
668 | sslCertificate = self.__sslConfiguration.peerCertificate() | |
669 | sslCertificate.url = QUrl(self.__sslConfiguration.url) | |
670 | return sslCertificate | |
671 | ||
672 | def getSslCertificateChain(self): | |
673 | """ | |
674 | Public method to get a reference to the SSL certificate chain. | |
675 | ||
676 | @return SSL certificate chain | |
677 | @rtype list of QSslCertificate | |
678 | """ | |
679 | if self.__sslConfiguration is None: | |
680 | return [] | |
681 | ||
682 | chain = self.__sslConfiguration.peerCertificateChain() | |
683 | return chain | |
684 | ||
685 | def showSslInfo(self, pos): | |
686 | """ | |
687 | Public slot to show some SSL information for the loaded page. | |
688 | ||
689 | @param pos position to show the info at | |
690 | @type QPoint | |
691 | """ | |
692 | if SSL_AVAILABLE and self.__sslConfiguration is not None: | |
8354
12ebd3934fef
Renamed 'E5Utilities' to 'EricUtilities' and 'E5Network' to 'EricNetwork'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8322
diff
changeset
|
693 | from EricNetwork.EricSslInfoWidget import EricSslInfoWidget |
12ebd3934fef
Renamed 'E5Utilities' to 'EricUtilities' and 'E5Network' to 'EricNetwork'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8322
diff
changeset
|
694 | widget = EricSslInfoWidget(self.url(), self.__sslConfiguration, |
7766 | 695 | self.view()) |
696 | widget.showAt(pos) | |
697 | else: | |
8356
68ec9c3d4de5
Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8354
diff
changeset
|
698 | EricMessageBox.warning( |
7766 | 699 | self.view(), |
700 | self.tr("SSL Info"), | |
701 | self.tr("""This site does not contain SSL information.""")) | |
702 | ||
703 | def hasValidSslInfo(self): | |
704 | """ | |
705 | Public method to check, if the page has a valid SSL certificate. | |
706 | ||
707 | @return flag indicating a valid SSL certificate | |
708 | @rtype bool | |
709 | """ | |
710 | if self.__sslConfiguration is None: | |
711 | return False | |
712 | ||
713 | certList = self.__sslConfiguration.peerCertificateChain() | |
714 | if not certList: | |
715 | return False | |
716 | ||
717 | certificateDict = Globals.toDict( | |
718 | Preferences.Prefs.settings.value("Ssl/CaCertificatesDict")) | |
719 | for server in certificateDict: | |
720 | localCAList = QSslCertificate.fromData(certificateDict[server]) | |
8221
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
721 | if any(cert in localCAList for cert in certList): |
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
722 | return True |
7766 | 723 | |
8221
0572a215bd2f
Applied some more code simplifications suggested by the new Simplify checker (Y110, Y111: use any() or all()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8218
diff
changeset
|
724 | return all(not cert.isBlacklisted() for cert in certList) |