12 try: |
12 try: |
13 str = unicode # __IGNORE_EXCEPTION__ |
13 str = unicode # __IGNORE_EXCEPTION__ |
14 except NameError: |
14 except NameError: |
15 pass |
15 pass |
16 |
16 |
17 from PyQt5.QtCore import pyqtSlot, pyqtSignal, QObject, QT_TRANSLATE_NOOP, \ |
17 from PyQt5.QtCore import QUrl, QTimer, QEventLoop |
18 QUrl, QBuffer, QIODevice, QFileInfo, Qt, QTimer, QEvent, \ |
18 from PyQt5.QtGui import QDesktopServices |
19 QRect, QFile, QPoint, QByteArray, QEventLoop, qVersion |
|
20 from PyQt5.QtGui import QDesktopServices, QClipboard, QMouseEvent, QColor, \ |
|
21 QPalette |
|
22 from PyQt5.QtWidgets import qApp, QStyle, QMenu, QApplication, QInputDialog, \ |
|
23 QLineEdit, QLabel, QToolTip, QFrame, QDialog |
|
24 from PyQt5.QtPrintSupport import QPrinter, QPrintDialog |
|
25 from PyQt5.QtWebEngineWidgets import QWebEnginePage |
19 from PyQt5.QtWebEngineWidgets import QWebEnginePage |
26 from PyQt5.QtWebChannel import QWebChannel |
20 from PyQt5.QtWebChannel import QWebChannel |
27 from PyQt5.QtNetwork import QNetworkReply, QNetworkRequest |
21 |
28 import sip |
|
29 |
|
30 from E5Gui import E5MessageBox, E5FileDialog |
|
31 |
|
32 import WebBrowser |
|
33 from WebBrowser.WebBrowserWindow import WebBrowserWindow |
22 from WebBrowser.WebBrowserWindow import WebBrowserWindow |
34 |
23 |
35 from .JavaScript.ExternalJsObject import ExternalJsObject |
24 from .JavaScript.ExternalJsObject import ExternalJsObject |
36 |
25 |
37 from .Tools.WebHitTestResult import WebHitTestResult |
26 from .Tools.WebHitTestResult import WebHitTestResult |
38 from .Tools import Scripts |
|
39 |
27 |
40 import Preferences |
28 import Preferences |
41 import UI.PixmapCache |
|
42 import Globals |
|
43 ## |
|
44 ##try: |
|
45 ## from PyQt5.QtNetwork import QSslCertificate |
|
46 ## SSL_AVAILABLE = True |
|
47 ##except ImportError: |
|
48 ## SSL_AVAILABLE = False |
|
49 |
29 |
50 |
30 |
51 class WebBrowserPage(QWebEnginePage): |
31 class WebBrowserPage(QWebEnginePage): |
52 """ |
32 """ |
53 Class implementing an enhanced web page. |
33 Class implementing an enhanced web page. |
54 """ |
34 """ |
55 ## _webPluginFactory = None |
|
56 ## |
|
57 def __init__(self, parent=None): |
35 def __init__(self, parent=None): |
58 """ |
36 """ |
59 Constructor |
37 Constructor |
60 |
38 |
61 @param parent parent widget of this window (QWidget) |
39 @param parent parent widget of this window (QWidget) |
63 super(WebBrowserPage, self).__init__( |
41 super(WebBrowserPage, self).__init__( |
64 WebBrowserWindow.webProfile(), parent) |
42 WebBrowserWindow.webProfile(), parent) |
65 |
43 |
66 self.__setupWebChannel() |
44 self.__setupWebChannel() |
67 |
45 |
68 ## self.setPluginFactory(self.webPluginFactory()) |
|
69 ## |
|
70 ## self.__lastRequest = None |
|
71 ## self.__lastRequestType = QWebPage.NavigationTypeOther |
|
72 ## |
|
73 ## from .Network.NetworkAccessManagerProxy import \ |
|
74 ## NetworkAccessManagerProxy |
|
75 ## self.__proxy = NetworkAccessManagerProxy(self) |
|
76 ## self.__proxy.setWebPage(self) |
|
77 ## self.__proxy.setPrimaryNetworkAccessManager( |
|
78 ## WebBrowserWindow.networkManager()) |
|
79 ## self.setNetworkAccessManager(self.__proxy) |
|
80 ## |
|
81 ## self.__sslConfiguration = None |
|
82 ## self.__proxy.finished.connect(self.__managerFinished) |
|
83 ## |
|
84 ## self.__adBlockedEntries = [] |
|
85 ## self.loadStarted.connect(self.__loadStarted) |
|
86 self.featurePermissionRequested.connect( |
46 self.featurePermissionRequested.connect( |
87 self.__featurePermissionRequested) |
47 self.__featurePermissionRequested) |
88 |
48 |
89 self.authenticationRequired.connect( |
49 self.authenticationRequired.connect( |
90 WebBrowserWindow.networkManager().authentication) |
50 WebBrowserWindow.networkManager().authentication) |
159 if agent == "": |
119 if agent == "": |
160 # no global agent string specified -> use default one |
120 # no global agent string specified -> use default one |
161 agent = WebBrowserWindow.webProfile().httpUserAgent() |
121 agent = WebBrowserWindow.webProfile().httpUserAgent() |
162 return agent |
122 return agent |
163 |
123 |
164 ## @classmethod |
|
165 ## def webPluginFactory(cls): |
|
166 ## """ |
|
167 ## Class method to get a reference to the web plug-in factory |
|
168 ## instance. |
|
169 ## |
|
170 ## @return reference to the web plug-in factory instance (WebPluginFactory |
|
171 ## """ |
|
172 ## if cls._webPluginFactory is None: |
|
173 ## from .WebPlugins.WebPluginFactory import WebPluginFactory |
|
174 ## cls._webPluginFactory = WebPluginFactory() |
|
175 ## |
|
176 ## return cls._webPluginFactory |
|
177 ## |
|
178 ## def event(self, evt): |
|
179 ## """ |
|
180 ## Public method implementing the event handler. |
|
181 ## |
|
182 ## @param evt reference to the event (QEvent) |
|
183 ## @return flag indicating that the event was handled (boolean) |
|
184 ## """ |
|
185 ## if evt.type() == QEvent.Leave: |
|
186 ## # Fake a mouse move event just outside of the widget to trigger |
|
187 ## # the WebKit event handler's mouseMoved function. This implements |
|
188 ## # the interesting mouse-out behavior like invalidating scrollbars. |
|
189 ## fakeEvent = QMouseEvent(QEvent.MouseMove, QPoint(0, -1), |
|
190 ## Qt.NoButton, Qt.NoButton, Qt.NoModifier) |
|
191 ## return super(HelpWebPage, self).event(fakeEvent) |
|
192 ## |
|
193 ## return super(HelpWebPage, self).event(evt) |
|
194 |
|
195 def __featurePermissionRequested(self, url, feature): |
124 def __featurePermissionRequested(self, url, feature): |
196 """ |
125 """ |
197 Private slot handling a feature permission request. |
126 Private slot handling a feature permission request. |
198 |
127 |
199 @param url url requesting the feature |
128 @param url url requesting the feature |