Sun, 29 Aug 2021 17:48:44 +0200
Next batch of changes for QtWebEngine as of Qt 6.2.0.
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 ( |
8553
10d31e5ce9e5
First batch of changes for QtWebEngine as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8366
diff
changeset
|
12 | pyqtSlot, pyqtSignal, QUrl, QUrlQuery, QTimer, QEventLoop, QPoint, QPointF |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
13 | ) |
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
|
14 | from PyQt6.QtGui import QDesktopServices |
8553
10d31e5ce9e5
First batch of changes for QtWebEngine as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8366
diff
changeset
|
15 | from PyQt6.QtWebEngineCore import ( |
8556
766e1566cb74
Next batch of changes for QtWebEngine as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
16 | QWebEnginePage, QWebEngineSettings, QWebEngineScript |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
17 | ) |
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
|
18 | from PyQt6.QtWebChannel import QWebChannel |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | |
7766 | 20 | 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
|
21 | from PyQt6.QtNetwork import QSslConfiguration, QSslCertificate |
7766 | 22 | SSL_AVAILABLE = True |
23 | except ImportError: | |
24 | SSL_AVAILABLE = False | |
25 | ||
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
|
26 | 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
|
27 | |
4788
7076adec8ddd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4787
diff
changeset
|
28 | 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
|
29 | |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
30 | from .JavaScript.ExternalJsObject import ExternalJsObject |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
31 | |
4728
0367675d783d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4726
diff
changeset
|
32 | 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
|
33 | from .Tools import Scripts |
4728
0367675d783d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4726
diff
changeset
|
34 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | import Preferences |
7766 | 36 | 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
|
37 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
923
diff
changeset
|
38 | |
4710
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
39 | class WebBrowserPage(QWebEnginePage): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | 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
|
42 | |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
43 | @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
|
44 | browsing event |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
45 | @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
|
46 | 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
|
47 | @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
|
48 | shown web page |
6149
e611e45a17d6
Fixed a few code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6146
diff
changeset
|
49 | @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
|
50 | to signal an accepted navigation request |
7766 | 51 | @signal sslConfigurationChanged() emitted to indicate a change of the |
52 | stored SSL configuration data | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | """ |
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
|
54 | 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
|
55 | 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
|
56 | |
5829
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
57 | safeBrowsingAbort = pyqtSignal() |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
58 | 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
|
59 | |
6656
273a2130adbe
WebBrowserPage: added support for the printRequested signal as of Qt 5.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6645
diff
changeset
|
60 | 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
|
61 | 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
|
62 | bool) |
6142
304a469455c8
Added support for printing from within a web page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6140
diff
changeset
|
63 | |
7766 | 64 | sslConfigurationChanged = pyqtSignal() |
65 | ||
8556
766e1566cb74
Next batch of changes for QtWebEngine as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
66 | def __init__(self, view, parent=None): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | Constructor |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | |
8556
766e1566cb74
Next batch of changes for QtWebEngine as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
70 | @param view reference to the WebBrowserView associated with the page |
766e1566cb74
Next batch of changes for QtWebEngine as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
71 | @type WebBrowserView |
766e1566cb74
Next batch of changes for QtWebEngine as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
72 | @param parent reference to the parent widget (defaults to None) |
766e1566cb74
Next batch of changes for QtWebEngine as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
73 | @type QWidget (optional) |
766e1566cb74
Next batch of changes for QtWebEngine as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
74 | """ |
766e1566cb74
Next batch of changes for QtWebEngine as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
75 | """ |
766e1566cb74
Next batch of changes for QtWebEngine as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
76 | Constructor |
766e1566cb74
Next batch of changes for QtWebEngine as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
77 | |
766e1566cb74
Next batch of changes for QtWebEngine as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
78 | @param parent parent widget of this window (optional) |
766e1566cb74
Next batch of changes for QtWebEngine as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
79 | @type QWidget |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | """ |
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
|
81 | super().__init__( |
4788
7076adec8ddd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4787
diff
changeset
|
82 | WebBrowserWindow.webProfile(), parent) |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | |
6695
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
84 | self.__printer = None |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
85 | self.__badSite = False |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
86 | self.__registerProtocolHandlerRequest = None |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
87 | |
8556
766e1566cb74
Next batch of changes for QtWebEngine as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
88 | self.__view = view |
766e1566cb74
Next batch of changes for QtWebEngine as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
89 | |
4710
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
90 | self.featurePermissionRequested.connect( |
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
91 | self.__featurePermissionRequested) |
4743
f9e2e536d130
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4742
diff
changeset
|
92 | self.authenticationRequired.connect( |
6120
4c60a21ce6dd
Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6093
diff
changeset
|
93 | lambda url, auth: WebBrowserWindow.networkManager().authentication( |
4c60a21ce6dd
Continued removing the use of QObject.sender().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6093
diff
changeset
|
94 | url, auth, self)) |
4787
2a19edf4db14
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4768
diff
changeset
|
95 | self.proxyAuthenticationRequired.connect( |
4788
7076adec8ddd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4787
diff
changeset
|
96 | WebBrowserWindow.networkManager().proxyAuthentication) |
4884
6983af705a7f
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4864
diff
changeset
|
97 | self.fullScreenRequested.connect(self.__fullScreenRequested) |
4964
a894e8c92369
Implemented the JavaScript status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4925
diff
changeset
|
98 | 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
|
99 | 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
|
100 | 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
|
101 | 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
|
102 | |
7766 | 103 | self.__sslConfiguration = None |
104 | ||
6140
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
105 | # Workaround for changing webchannel world inside |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
106 | # acceptNavigationRequest not working |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
107 | self.__channelUrl = QUrl() |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
108 | self.__channelWorldId = -1 |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
109 | self.__setupChannelTimer = QTimer(self) |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
110 | self.__setupChannelTimer.setSingleShot(True) |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
111 | self.__setupChannelTimer.setInterval(100) |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
112 | self.__setupChannelTimer.timeout.connect(self.__setupChannelTimeout) |
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 | @pyqtSlot() |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
115 | def __setupChannelTimeout(self): |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
116 | """ |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
117 | 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
|
118 | """ |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
119 | 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
|
120 | |
4710
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
121 | def acceptNavigationRequest(self, url, type_, isMainFrame): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | """ |
4726
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4725
diff
changeset
|
123 | 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
|
124 | |
4710
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
125 | @param url URL to navigate to |
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
126 | @type QUrl |
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
127 | @param type_ type of the navigation request |
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
128 | @type QWebEnginePage.NavigationType |
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
129 | @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
|
130 | the main frame |
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
131 | @type bool |
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
132 | @return flag indicating acceptance |
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
133 | @rtype bool |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | """ |
4710
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
135 | 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
|
136 | if scheme == "mailto": |
4710
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
137 | 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
|
138 | 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
|
139 | |
4710
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
140 | # 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
|
141 | 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
|
142 | 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
|
143 | 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
|
144 | ): |
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
|
145 | return False |
4886
b56735d36159
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4884
diff
changeset
|
146 | |
5716
27a7c7064686
Improved installion of GreaseMonkey user scripts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
147 | # 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
|
148 | 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
|
149 | # PyQtWebEngine >= 5.14.0 |
7366
bd743eacfbca
Changed code to avoid some obsoleted Qt functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
150 | 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
|
151 | 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
|
152 | QWebEnginePage.NavigationType.NavigationTypeRedirect |
7366
bd743eacfbca
Changed code to avoid some obsoleted Qt functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
153 | ] |
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
|
154 | 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
|
155 | 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
|
156 | 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
|
157 | 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
|
158 | ) |
7366
bd743eacfbca
Changed code to avoid some obsoleted Qt functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
159 | 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
|
160 | WebBrowserWindow.greaseMonkeyManager().downloadScript(url) |
27a7c7064686
Improved installion of GreaseMonkey user scripts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
161 | return False |
27a7c7064686
Improved installion of GreaseMonkey user scripts.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
162 | |
6142
304a469455c8
Added support for printing from within a web page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6140
diff
changeset
|
163 | if url.scheme() == "eric": |
6174
bb2989d750ce
WebBrowser: Fixed some sender() related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6149
diff
changeset
|
164 | if url.path() == "AddSearchProvider": |
bb2989d750ce
WebBrowser: Fixed some sender() related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6149
diff
changeset
|
165 | query = QUrlQuery(url) |
8556
766e1566cb74
Next batch of changes for QtWebEngine as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
166 | self.__view.mainWindow().openSearchManager().addEngine( |
6174
bb2989d750ce
WebBrowser: Fixed some sender() related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6149
diff
changeset
|
167 | QUrl(query.queryItemValue("url"))) |
bb2989d750ce
WebBrowser: Fixed some sender() related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6149
diff
changeset
|
168 | return False |
bb2989d750ce
WebBrowser: Fixed some sender() related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6149
diff
changeset
|
169 | 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
|
170 | self.printPageRequested.emit() |
6142
304a469455c8
Added support for printing from within a web page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6140
diff
changeset
|
171 | return False |
304a469455c8
Added support for printing from within a web page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6140
diff
changeset
|
172 | |
5829
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
173 | # Safe Browsing |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
174 | self.__badSite = False |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
175 | 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
|
176 | SafeBrowsingManager |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
177 | ) |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
178 | if ( |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
179 | SafeBrowsingManager.isEnabled() and |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
180 | url.scheme() not in SafeBrowsingManager.getIgnoreSchemes() |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
181 | ): |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
182 | threatLists = ( |
6234
fb1f9e681848
Web Browser NG, Safe Browsing: improved error handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6233
diff
changeset
|
183 | WebBrowserWindow.safeBrowsingManager().lookupUrl(url)[0] |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
184 | ) |
5829
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
185 | if threatLists: |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
186 | threatMessages = ( |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
187 | 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
|
188 | .getThreatMessages(threatLists) |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
189 | ) |
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
|
190 | 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
|
191 | WebBrowserWindow.getWindow(), |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
192 | 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
|
193 | 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
|
194 | " 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
|
195 | 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
|
196 | 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
|
197 | 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
|
198 | 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
|
199 | 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
|
200 | return False |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
201 | |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
202 | self.__badSite = True |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
203 | threatType = ( |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
204 | 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
|
205 | .getThreatType(threatLists[0]) |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
206 | ) |
5829
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
207 | 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
|
208 | |
7366
bd743eacfbca
Changed code to avoid some obsoleted Qt functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
209 | result = QWebEnginePage.acceptNavigationRequest( |
bd743eacfbca
Changed code to avoid some obsoleted Qt functions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
210 | self, url, type_, isMainFrame) |
6137
27962f3f457f
Some minor changes in the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6136
diff
changeset
|
211 | |
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
|
212 | 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
|
213 | 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
|
214 | 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
|
215 | "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
|
216 | 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
|
217 | 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
|
218 | 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
|
219 | 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
|
220 | 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
|
221 | 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
|
222 | 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
|
223 | 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
|
224 | |
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
|
225 | 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
|
226 | 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
|
227 | 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
|
228 | |
27962f3f457f
Some minor changes in the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6136
diff
changeset
|
229 | return result |
487
4d41d03d3d00
Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
383
diff
changeset
|
230 | |
4964
a894e8c92369
Implemented the JavaScript status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4925
diff
changeset
|
231 | @pyqtSlot(QUrl) |
a894e8c92369
Implemented the JavaScript status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4925
diff
changeset
|
232 | def __urlChanged(self, url): |
a894e8c92369
Implemented the JavaScript status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4925
diff
changeset
|
233 | """ |
a894e8c92369
Implemented the JavaScript status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4925
diff
changeset
|
234 | 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
|
235 | |
a894e8c92369
Implemented the JavaScript status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4925
diff
changeset
|
236 | @param url new URL |
a894e8c92369
Implemented the JavaScript status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4925
diff
changeset
|
237 | @type QUrl |
a894e8c92369
Implemented the JavaScript status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4925
diff
changeset
|
238 | """ |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
239 | if ( |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
240 | not url.isEmpty() and |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
241 | url.scheme() == "eric" and |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
242 | not self.isJavaScriptEnabled() |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
243 | ): |
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
|
244 | 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
|
245 | 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
|
246 | self.triggerAction(QWebEnginePage.WebAction.Reload) |
4964
a894e8c92369
Implemented the JavaScript status bar icon.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4925
diff
changeset
|
247 | |
4906
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
248 | @classmethod |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
249 | def userAgent(cls, resolveEmpty=False): |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
250 | """ |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
251 | 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
|
252 | |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
253 | @param resolveEmpty flag indicating to resolve an empty |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
254 | user agent (boolean) |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
255 | @return user agent string (string) |
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 | agent = Preferences.getWebBrowser("UserAgent") |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
258 | if agent == "" and resolveEmpty: |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
259 | agent = cls.userAgentForUrl(QUrl()) |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
260 | return agent |
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 | @classmethod |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
263 | def setUserAgent(cls, agent): |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
264 | """ |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
265 | 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
|
266 | |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
267 | @param agent new current user agent string (string) |
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 | Preferences.setWebBrowser("UserAgent", agent) |
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 | @classmethod |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
272 | def userAgentForUrl(cls, url): |
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 | 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
|
275 | |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
276 | @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
|
277 | @return user agent string (string) |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
278 | """ |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
279 | agent = WebBrowserWindow.userAgentsManager().userAgentForUrl(url) |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
280 | if agent == "": |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
281 | # 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
|
282 | agent = Preferences.getWebBrowser("UserAgent") |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
283 | if agent == "": |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
284 | # no global agent string specified -> use default one |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
285 | agent = WebBrowserWindow.webProfile().httpUserAgent() |
939ff20f712d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4905
diff
changeset
|
286 | return agent |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
287 | |
4710
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
288 | 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
|
289 | """ |
493891cbacee
Added support for feature permissions to the eric web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4275
diff
changeset
|
290 | 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
|
291 | |
4710
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
292 | @param url url requesting the feature |
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
293 | @type QUrl |
4316
493891cbacee
Added support for feature permissions to the eric web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4275
diff
changeset
|
294 | @param feature requested feature |
4710
370a38e03efe
Started with the web browser page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4631
diff
changeset
|
295 | @type QWebEnginePage.Feature |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
296 | """ |
4788
7076adec8ddd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4787
diff
changeset
|
297 | manager = WebBrowserWindow.featurePermissionManager() |
4742
f9d1090f6ab9
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4741
diff
changeset
|
298 | manager.requestFeaturePermission(self, url, feature) |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
299 | |
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
|
300 | 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
|
301 | 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
|
302 | timeout=500): |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
303 | """ |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
304 | Public method to execute a JavaScript function synchroneously. |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
305 | |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
306 | @param script JavaScript script source to be executed |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
307 | @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
|
308 | @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
|
309 | @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
|
310 | @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
|
311 | @type int |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
312 | @return result of the script |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
313 | @rtype depending upon script result |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
314 | """ |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
315 | loop = QEventLoop() |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
316 | 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
|
317 | QTimer.singleShot(timeout, loop.quit) |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
318 | |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
319 | def resultCallback(res, resDict=resultDict): |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
320 | if loop and loop.isRunning(): |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
321 | resDict["res"] = res |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
322 | loop.quit() |
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 | self.runJavaScript(script, worldId, resultCallback) |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
325 | |
7759
51aa6c6b66f7
Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7540
diff
changeset
|
326 | loop.exec() |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
327 | return resultDict["res"] |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
328 | |
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
|
329 | 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
|
330 | """ |
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 | 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
|
332 | |
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 | @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
|
334 | @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
|
335 | @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
|
336 | @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
|
337 | @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
|
338 | 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
|
339 | @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
|
340 | """ |
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
|
341 | 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
|
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, 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
|
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, 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
|
346 | 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
|
347 | 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
|
348 | 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
|
349 | 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
|
350 | 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
|
351 | |
4965
a9a4b632fe48
Some enhancements for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4964
diff
changeset
|
352 | def isJavaScriptEnabled(self): |
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 | 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
|
355 | |
a9a4b632fe48
Some enhancements for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4964
diff
changeset
|
356 | @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
|
357 | @rtype bool |
a9a4b632fe48
Some enhancements for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4964
diff
changeset
|
358 | """ |
a9a4b632fe48
Some enhancements for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4964
diff
changeset
|
359 | 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
|
360 | QWebEngineSettings.WebAttribute.JavascriptEnabled) |
4965
a9a4b632fe48
Some enhancements for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4964
diff
changeset
|
361 | |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
362 | def scroll(self, x, y): |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
363 | """ |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
364 | 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
|
365 | |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
366 | @param x horizontal scroll value |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
367 | @type int |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
368 | @param y vertical scroll value |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
369 | @type int |
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 | self.runJavaScript( |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
372 | "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
|
373 | .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
|
374 | WebBrowserPage.SafeJsWorld |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
375 | ) |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
376 | |
5774
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
377 | 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
|
378 | """ |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
379 | 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
|
380 | |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
381 | @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
|
382 | @type QPointF |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
383 | """ |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
384 | self.runJavaScript( |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
385 | "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
|
386 | WebBrowserPage.SafeJsWorld |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
387 | ) |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
388 | |
4925
6534062014dc
Mapped the webhit test position to the viewport.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4917
diff
changeset
|
389 | def mapToViewport(self, pos): |
6534062014dc
Mapped the webhit test position to the viewport.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4917
diff
changeset
|
390 | """ |
6534062014dc
Mapped the webhit test position to the viewport.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4917
diff
changeset
|
391 | 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
|
392 | |
6534062014dc
Mapped the webhit test position to the viewport.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4917
diff
changeset
|
393 | @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
|
394 | @type QPoint |
6534062014dc
Mapped the webhit test position to the viewport.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4917
diff
changeset
|
395 | @return viewport position |
6534062014dc
Mapped the webhit test position to the viewport.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4917
diff
changeset
|
396 | @rtype QPoint |
6534062014dc
Mapped the webhit test position to the viewport.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4917
diff
changeset
|
397 | """ |
6534062014dc
Mapped the webhit test position to the viewport.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4917
diff
changeset
|
398 | 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
|
399 | pos.y() // self.zoomFactor()) |
6534062014dc
Mapped the webhit test position to the viewport.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4917
diff
changeset
|
400 | |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
401 | def hitTestContent(self, pos): |
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
402 | """ |
4728
0367675d783d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4726
diff
changeset
|
403 | 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
|
404 | |
4728
0367675d783d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4726
diff
changeset
|
405 | @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
|
406 | @type QPoint |
4728
0367675d783d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4726
diff
changeset
|
407 | @return test result object |
0367675d783d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4726
diff
changeset
|
408 | @rtype WebHitTestResult |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
409 | """ |
4728
0367675d783d
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4726
diff
changeset
|
410 | return WebHitTestResult(self, pos) |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
411 | |
6140
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
412 | def __setupWebChannelForUrl(self, url): |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
413 | """ |
4745
285bfd224a1b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4744
diff
changeset
|
414 | 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
|
415 | |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
416 | @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
|
417 | @type QUrl |
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 | channel = self.webChannel() |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
420 | if channel is None: |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
421 | channel = QWebChannel(self) |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
422 | ExternalJsObject.setupWebChannel(channel, self) |
4717
5841f229baf7
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4715
diff
changeset
|
423 | |
6140
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
424 | 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
|
425 | 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
|
426 | 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
|
427 | 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
|
428 | 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
|
429 | ) |
6140
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
430 | if worldId != self.__channelWorldId: |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
431 | self.__channelWorldId = worldId |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
432 | try: |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
433 | self.setWebChannel(channel, self.__channelWorldId) |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
434 | except TypeError: |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
435 | # pre Qt 5.7.0 |
c20e2d414d0d
Register QWebChannel on isolated ApplicationWorld
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6139
diff
changeset
|
436 | self.setWebChannel(channel) |
4725
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4717
diff
changeset
|
437 | |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4717
diff
changeset
|
438 | def certificateError(self, error): |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4717
diff
changeset
|
439 | """ |
4726
c26e2a2dc0cb
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4725
diff
changeset
|
440 | Public method to handle SSL certificate errors. |
4725
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4717
diff
changeset
|
441 | |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4717
diff
changeset
|
442 | @param error object containing the certificate error information |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4717
diff
changeset
|
443 | @type QWebEngineCertificateError |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4717
diff
changeset
|
444 | @return flag indicating to ignore this error |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4717
diff
changeset
|
445 | @rtype bool |
b19ff70ba509
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4717
diff
changeset
|
446 | """ |
4788
7076adec8ddd
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4787
diff
changeset
|
447 | return WebBrowserWindow.networkManager().certificateError( |
8556
766e1566cb74
Next batch of changes for QtWebEngine as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
448 | error, self.__view) |
4745
285bfd224a1b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4744
diff
changeset
|
449 | |
4884
6983af705a7f
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4864
diff
changeset
|
450 | def __fullScreenRequested(self, request): |
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 | Private slot handling a full screen request. |
4917
682750cc7bd5
Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4913
diff
changeset
|
453 | |
682750cc7bd5
Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4913
diff
changeset
|
454 | @param request reference to the full screen request |
682750cc7bd5
Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4913
diff
changeset
|
455 | @type QWebEngineFullScreenRequest |
4884
6983af705a7f
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4864
diff
changeset
|
456 | """ |
8556
766e1566cb74
Next batch of changes for QtWebEngine as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
457 | self.__view.requestFullScreen(request.toggleOn()) |
4884
6983af705a7f
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4864
diff
changeset
|
458 | |
8556
766e1566cb74
Next batch of changes for QtWebEngine as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
459 | accepted = request.toggleOn() == self.__view.isFullScreen() |
4884
6983af705a7f
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4864
diff
changeset
|
460 | |
6983af705a7f
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4864
diff
changeset
|
461 | if accepted: |
6983af705a7f
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4864
diff
changeset
|
462 | request.accept() |
6983af705a7f
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4864
diff
changeset
|
463 | else: |
6983af705a7f
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4864
diff
changeset
|
464 | request.reject() |
6983af705a7f
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4864
diff
changeset
|
465 | |
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
|
466 | 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
|
467 | """ |
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
|
468 | 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
|
469 | |
93f95c4b3153
Started upgrading the new web browser to the Qt 5.8 offerings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
470 | @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
|
471 | @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
|
472 | @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
|
473 | @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
|
474 | @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
|
475 | @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
|
476 | """ |
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
|
477 | 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
|
478 | 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
|
479 | 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
|
480 | |
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
|
481 | 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
|
482 | 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
|
483 | 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
|
484 | 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
|
485 | |
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
|
486 | 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
|
487 | |
7759
51aa6c6b66f7
Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7540
diff
changeset
|
488 | 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
|
489 | 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
|
490 | |
6692
c104c120e043
Web Browser (NG): some compatibility changes for Qt 5.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6662
diff
changeset
|
491 | 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
|
492 | """ |
c104c120e043
Web Browser (NG): some compatibility changes for Qt 5.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6662
diff
changeset
|
493 | 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
|
494 | 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
|
495 | |
c104c120e043
Web Browser (NG): some compatibility changes for Qt 5.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6662
diff
changeset
|
496 | @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
|
497 | @type QSize |
c104c120e043
Web Browser (NG): some compatibility changes for Qt 5.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6662
diff
changeset
|
498 | """ |
c104c120e043
Web Browser (NG): some compatibility changes for Qt 5.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6662
diff
changeset
|
499 | 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
|
500 | 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
|
501 | |
4745
285bfd224a1b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4744
diff
changeset
|
502 | ############################################## |
285bfd224a1b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4744
diff
changeset
|
503 | ## Methods below deal with JavaScript messages |
285bfd224a1b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4744
diff
changeset
|
504 | ############################################## |
285bfd224a1b
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4744
diff
changeset
|
505 | |
4917
682750cc7bd5
Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4913
diff
changeset
|
506 | def javaScriptConsoleMessage(self, level, message, lineNumber, sourceId): |
4822
f1b9899847dc
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4801
diff
changeset
|
507 | """ |
f1b9899847dc
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4801
diff
changeset
|
508 | Public method to show a console message. |
f1b9899847dc
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4801
diff
changeset
|
509 | |
f1b9899847dc
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4801
diff
changeset
|
510 | @param level severity |
f1b9899847dc
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4801
diff
changeset
|
511 | @type QWebEnginePage.JavaScriptConsoleMessageLevel |
f1b9899847dc
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4801
diff
changeset
|
512 | @param message message to be shown |
f1b9899847dc
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4801
diff
changeset
|
513 | @type str |
f1b9899847dc
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4801
diff
changeset
|
514 | @param lineNumber line number of an error |
f1b9899847dc
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4801
diff
changeset
|
515 | @type int |
f1b9899847dc
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4801
diff
changeset
|
516 | @param sourceId source URL causing the error |
f1b9899847dc
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4801
diff
changeset
|
517 | @type str |
f1b9899847dc
Continued porting the web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4801
diff
changeset
|
518 | """ |
8556
766e1566cb74
Next batch of changes for QtWebEngine as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
519 | self.__view.mainWindow().javascriptConsole().javaScriptConsoleMessage( |
4917
682750cc7bd5
Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4913
diff
changeset
|
520 | 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
|
521 | |
5829
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 | ## 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
|
524 | ########################################################################### |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
525 | |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
526 | 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
|
527 | """ |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
528 | 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
|
529 | |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
530 | @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
|
531 | @rtype bool |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
532 | """ |
d3448873ced3
Finished coding the safe browsing module of the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5785
diff
changeset
|
533 | 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
|
534 | |
5113
d394e20f7467
Added support for audio per tab to the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5009
diff
changeset
|
535 | ################################################## |
d394e20f7467
Added support for audio per tab to the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5009
diff
changeset
|
536 | ## 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
|
537 | ################################################## |
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 | 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
|
540 | 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
|
541 | """ |
d394e20f7467
Added support for audio per tab to the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5009
diff
changeset
|
542 | 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
|
543 | |
d394e20f7467
Added support for audio per tab to the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5009
diff
changeset
|
544 | @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
|
545 | @rtype QIcon |
d394e20f7467
Added support for audio per tab to the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5009
diff
changeset
|
546 | """ |
8556
766e1566cb74
Next batch of changes for QtWebEngine as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
547 | 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
|
548 | |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
549 | 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
|
550 | def scrollPosition(self): |
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 | 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
|
553 | |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
554 | @return scroll position |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
555 | @rtype QPointF |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
556 | """ |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
557 | pos = self.execJavaScript( |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
558 | "(function() {" |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
559 | "var res = {" |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
560 | " x: 0," |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
561 | " y: 0," |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
562 | "};" |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
563 | "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
|
564 | "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
|
565 | "return res;" |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
566 | "})()", |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
567 | WebBrowserPage.SafeJsWorld |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
568 | ) |
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
|
569 | 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
|
570 | 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
|
571 | 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
|
572 | ) |
5774
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
573 | |
a559df54a729
Started to implement session support for the new web browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5736
diff
changeset
|
574 | return pos |
6695
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
575 | |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
576 | ############################################################# |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
577 | ## Methods below implement protocol handler related functions |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
578 | ############################################################# |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
579 | |
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
|
580 | @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
|
581 | 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
|
582 | """ |
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 | 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
|
584 | 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
|
585 | |
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 | @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
|
587 | @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
|
588 | """ |
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
|
589 | 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
|
590 | 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
|
591 | ) |
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 | |
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 | 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
|
594 | 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
|
595 | 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
|
596 | 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
|
597 | 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
|
598 | ) |
6695
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
599 | |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
600 | def registerProtocolHandlerRequestUrl(self): |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
601 | """ |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
602 | Public method to get the registered protocol handler request URL. |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
603 | |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
604 | @return registered protocol handler request URL |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
605 | @rtype QUrl |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
606 | """ |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
607 | if ( |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
608 | self.__registerProtocolHandlerRequest and |
6695
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
609 | (self.url().host() == |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
610 | self.__registerProtocolHandlerRequest.origin().host()) |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
611 | ): |
6695
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
612 | return self.__registerProtocolHandlerRequest.origin() |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
613 | else: |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
614 | return QUrl() |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
615 | |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
616 | def registerProtocolHandlerRequestScheme(self): |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
617 | """ |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
618 | Public method to get the registered protocol handler request scheme. |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
619 | |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
620 | @return registered protocol handler request scheme |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
621 | @rtype str |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
622 | """ |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
623 | if ( |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
624 | self.__registerProtocolHandlerRequest and |
6695
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
625 | (self.url().host() == |
7271
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
626 | self.__registerProtocolHandlerRequest.origin().host()) |
2cac5b7abcce
Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7249
diff
changeset
|
627 | ): |
6695
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
628 | return self.__registerProtocolHandlerRequest.scheme() |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
629 | else: |
0a51887c13cd
Web Browser (NG):
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6692
diff
changeset
|
630 | return "" |
7766 | 631 | |
632 | ############################################################# | |
633 | ## SSL configuration handling below | |
634 | ############################################################# | |
635 | ||
636 | def setSslConfiguration(self, sslConfiguration): | |
637 | """ | |
638 | Public slot to set the SSL configuration data of the page. | |
639 | ||
640 | @param sslConfiguration SSL configuration to be set | |
641 | @type QSslConfiguration | |
642 | """ | |
643 | self.__sslConfiguration = QSslConfiguration(sslConfiguration) | |
644 | self.__sslConfiguration.url = self.url() | |
645 | self.sslConfigurationChanged.emit() | |
646 | ||
647 | def getSslConfiguration(self): | |
648 | """ | |
649 | Public method to return a reference to the current SSL configuration. | |
650 | ||
651 | @return reference to the SSL configuration in use | |
652 | @rtype QSslConfiguration | |
653 | """ | |
654 | return self.__sslConfiguration | |
655 | ||
656 | def clearSslConfiguration(self): | |
657 | """ | |
658 | Public slot to clear the stored SSL configuration data. | |
659 | """ | |
660 | self.__sslConfiguration = None | |
661 | self.sslConfigurationChanged.emit() | |
662 | ||
663 | def getSslCertificate(self): | |
664 | """ | |
665 | Public method to get a reference to the SSL certificate. | |
666 | ||
667 | @return amended SSL certificate | |
668 | @rtype QSslCertificate | |
669 | """ | |
670 | if self.__sslConfiguration is None: | |
671 | return None | |
672 | ||
673 | sslCertificate = self.__sslConfiguration.peerCertificate() | |
674 | sslCertificate.url = QUrl(self.__sslConfiguration.url) | |
675 | return sslCertificate | |
676 | ||
677 | def getSslCertificateChain(self): | |
678 | """ | |
679 | Public method to get a reference to the SSL certificate chain. | |
680 | ||
681 | @return SSL certificate chain | |
682 | @rtype list of QSslCertificate | |
683 | """ | |
684 | if self.__sslConfiguration is None: | |
685 | return [] | |
686 | ||
687 | chain = self.__sslConfiguration.peerCertificateChain() | |
688 | return chain | |
689 | ||
690 | def showSslInfo(self, pos): | |
691 | """ | |
692 | Public slot to show some SSL information for the loaded page. | |
693 | ||
694 | @param pos position to show the info at | |
695 | @type QPoint | |
696 | """ | |
697 | 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
|
698 | from EricNetwork.EricSslInfoWidget import EricSslInfoWidget |
12ebd3934fef
Renamed 'E5Utilities' to 'EricUtilities' and 'E5Network' to 'EricNetwork'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8322
diff
changeset
|
699 | widget = EricSslInfoWidget(self.url(), self.__sslConfiguration, |
8556
766e1566cb74
Next batch of changes for QtWebEngine as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
700 | self.__view) |
7766 | 701 | widget.showAt(pos) |
702 | 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
|
703 | EricMessageBox.warning( |
8556
766e1566cb74
Next batch of changes for QtWebEngine as of Qt 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8553
diff
changeset
|
704 | self.__view, |
7766 | 705 | self.tr("SSL Info"), |
706 | self.tr("""This site does not contain SSL information.""")) | |
707 | ||
708 | def hasValidSslInfo(self): | |
709 | """ | |
710 | Public method to check, if the page has a valid SSL certificate. | |
711 | ||
712 | @return flag indicating a valid SSL certificate | |
713 | @rtype bool | |
714 | """ | |
715 | if self.__sslConfiguration is None: | |
716 | return False | |
717 | ||
718 | certList = self.__sslConfiguration.peerCertificateChain() | |
719 | if not certList: | |
720 | return False | |
721 | ||
722 | certificateDict = Globals.toDict( | |
723 | Preferences.Prefs.settings.value("Ssl/CaCertificatesDict")) | |
724 | for server in certificateDict: | |
725 | 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
|
726 | 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
|
727 | return True |
7766 | 728 | |
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
|
729 | return all(not cert.isBlacklisted() for cert in certList) |