eric7/Preferences/ConfigurationPages/WebBrowserPage.py

branch
eric7
changeset 8312
800c432b34c8
parent 8259
2bbec88047dd
child 8318
962bce857696
equal deleted inserted replaced
8311:4e8b98454baa 8312:800c432b34c8
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2016 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing the Web Browser configuration page.
8 """
9
10 from PyQt5.QtCore import pyqtSlot, QLocale
11
12 from .ConfigurationPageBase import ConfigurationPageBase
13 from .Ui_WebBrowserPage import Ui_WebBrowserPage
14
15 import UI.PixmapCache
16 import Preferences
17
18
19 class WebBrowserPage(ConfigurationPageBase, Ui_WebBrowserPage):
20 """
21 Class implementing the Web Browser configuration page.
22 """
23 def __init__(self, configDialog):
24 """
25 Constructor
26
27 @param configDialog reference to the configuration dialog
28 (ConfigurationDialog)
29 """
30 super().__init__()
31 self.setupUi(self)
32 self.setObjectName("WebBrowserPage")
33
34 self.__configDlg = configDialog
35 mw = configDialog.parent().parent()
36 if hasattr(mw, "helpWindow") and mw.helpWindow is not None:
37 # IDE
38 self.__browserWindow = mw.helpWindow
39 elif hasattr(mw, "currentBrowser"):
40 # Web Browser
41 self.__browserWindow = mw
42 else:
43 self.__browserWindow = None
44 self.setCurrentPageButton.setEnabled(self.__browserWindow is not None)
45 self.imageSearchGroup.setEnabled(self.__browserWindow is not None)
46
47 defaultSchemes = ["file://", "http://", "https://"]
48 self.defaultSchemeCombo.addItems(defaultSchemes)
49
50 # set initial values
51 self.singleHelpWindowCheckBox.setChecked(
52 Preferences.getWebBrowser("SingleWebBrowserWindow"))
53 self.saveGeometryCheckBox.setChecked(
54 Preferences.getWebBrowser("SaveGeometry"))
55 self.webSuggestionsCheckBox.setChecked(
56 Preferences.getWebBrowser("WebSearchSuggestions"))
57 self.showTabPreviews.setChecked(
58 Preferences.getWebBrowser("ShowPreview"))
59 self.errorPageCheckBox.setChecked(
60 Preferences.getWebBrowser("ErrorPageEnabled"))
61 self.scrollingCheckBox.setChecked(
62 Preferences.getWebBrowser("ScrollAnimatorEnabled"))
63 self.fullscreenCheckBox.setChecked(
64 Preferences.getWebBrowser("FullScreenSupportEnabled"))
65 self.screenCaptureCheckBox.setChecked(
66 Preferences.getWebBrowser("ScreenCaptureEnabled"))
67 self.webGLCheckBox.setChecked(
68 Preferences.getWebBrowser("WebGLEnabled"))
69 self.autoplayMediaCheckBox.setChecked(
70 Preferences.getWebBrowser("PlaybackRequiresUserGesture"))
71 self.webRtcPublicOnlyCheckBox.setChecked(
72 Preferences.getWebBrowser("WebRTCPublicInterfacesOnly"))
73 self.dnsPrefetchCheckBox.setChecked(
74 Preferences.getWebBrowser("DnsPrefetchEnabled"))
75
76 self.javaScriptGroup.setChecked(
77 Preferences.getWebBrowser("JavaScriptEnabled"))
78 self.jsOpenWindowsCheckBox.setChecked(
79 Preferences.getWebBrowser("JavaScriptCanOpenWindows"))
80 self.jsActivateWindowsCheckBox.setChecked(
81 Preferences.getWebBrowser("AllowWindowActivationFromJavaScript"))
82 self.jsClipboardCheckBox.setChecked(
83 Preferences.getWebBrowser("JavaScriptCanAccessClipboard"))
84 self.jsPasteCheckBox.setChecked(
85 Preferences.getWebBrowser("JavaScriptCanPaste"))
86 self.doNotTrackCheckBox.setChecked(
87 Preferences.getWebBrowser("DoNotTrack"))
88 self.refererSendComboBox.setCurrentIndex(
89 Preferences.getWebBrowser("RefererSendReferer"))
90 self.refererDefaultPolicyCcomboBox.setCurrentIndex(
91 Preferences.getWebBrowser("RefererDefaultPolicy"))
92 self.refererTrimmingPolicyComboBox.setCurrentIndex(
93 Preferences.getWebBrowser("RefererTrimmingPolicy"))
94
95 self.pluginsGroup.setChecked(
96 Preferences.getWebBrowser("PluginsEnabled"))
97 try:
98 # Qt 5.13
99 self.pdfViewerCheckBox.setChecked(
100 Preferences.getWebBrowser("PdfViewerEnabled"))
101 except KeyError:
102 self.pdfViewerCheckBox.setEnabled(False)
103
104 self.diskCacheCheckBox.setChecked(
105 Preferences.getWebBrowser("DiskCacheEnabled"))
106 self.cacheSizeSpinBox.setValue(
107 Preferences.getWebBrowser("DiskCacheSize"))
108
109 self.startupCombo.setCurrentIndex(
110 Preferences.getWebBrowser("StartupBehavior"))
111 self.newTabCombo.setCurrentIndex(
112 Preferences.getWebBrowser("NewTabBehavior"))
113 self.homePageEdit.setText(
114 Preferences.getWebBrowser("HomePage"))
115 self.loadTabOnActivationCheckBox.setChecked(
116 Preferences.getWebBrowser("LoadTabOnActivation"))
117
118 self.saveSessionCheckBox.setChecked(
119 Preferences.getWebBrowser("SessionAutoSave"))
120 self.sessionTimerSpinBox.setValue(
121 Preferences.getWebBrowser("SessionAutoSaveInterval"))
122
123 self.defaultSchemeCombo.setCurrentIndex(
124 self.defaultSchemeCombo.findText(
125 Preferences.getWebBrowser("DefaultScheme")))
126
127 historyLimit = Preferences.getWebBrowser("HistoryLimit")
128 idx = 0
129 if historyLimit == 1:
130 idx = 0
131 elif historyLimit == 7:
132 idx = 1
133 elif historyLimit == 14:
134 idx = 2
135 elif historyLimit == 30:
136 idx = 3
137 elif historyLimit == 365:
138 idx = 4
139 elif historyLimit == -1:
140 idx = 5
141 elif historyLimit == -2:
142 idx = 6
143 else:
144 idx = 5
145 self.expireHistory.setCurrentIndex(idx)
146
147 for language in range(2, QLocale.Language.LastLanguage + 1):
148 countries = [
149 loc.country()
150 for loc in QLocale.matchingLocales(
151 language, QLocale.Script.AnyScript,
152 QLocale.Country.AnyCountry
153 )
154 ]
155 if len(countries) > 0:
156 self.languageCombo.addItem(
157 QLocale.languageToString(language), language)
158 self.languageCombo.model().sort(0)
159 self.languageCombo.insertSeparator(0)
160 self.languageCombo.insertItem(0, QLocale.languageToString(0), 0)
161 index = self.languageCombo.findData(
162 Preferences.getWebBrowser("SearchLanguage"))
163 if index > -1:
164 self.languageCombo.setCurrentIndex(index)
165
166 if self.__browserWindow:
167 for engineName in (
168 self.__browserWindow.imageSearchEngine().searchEngineNames()
169 ):
170 self.imageSearchComboBox.addItem(
171 UI.PixmapCache.getIcon(
172 "{0}".format(engineName.lower())),
173 engineName)
174 index = self.imageSearchComboBox.findText(
175 Preferences.getWebBrowser("ImageSearchEngine"))
176 if index > -1:
177 self.imageSearchComboBox.setCurrentIndex(index)
178
179 self.spatialCheckBox.setChecked(
180 Preferences.getWebBrowser("SpatialNavigationEnabled"))
181 self.linksInFocusChainCheckBox.setChecked(
182 Preferences.getWebBrowser("LinksIncludedInFocusChain"))
183 self.focusOnNavigationCheckBox.setChecked(
184 Preferences.getWebBrowser("FocusOnNavigationEnabled"))
185
186 self.xssAuditingCheckBox.setChecked(
187 Preferences.getWebBrowser("XSSAuditingEnabled"))
188 self.insecureContentsCheckBox.setChecked(
189 Preferences.getWebBrowser("AllowRunningInsecureContent"))
190 self.insecureGeolocationCheckBox.setChecked(
191 Preferences.getWebBrowser("AllowGeolocationOnInsecureOrigins"))
192
193 self.printBackgroundCheckBox.setChecked(
194 Preferences.getWebBrowser("PrintElementBackgrounds"))
195
196 self.autoScrollGroupBox.setChecked(
197 Preferences.getWebBrowser("AutoScrollEnabled"))
198 self.autoScrollDividerSpinBox.setValue(
199 Preferences.getWebBrowser("AutoScrollDivider"))
200
201 self.protocolHandlerComboBox.setCurrentIndex(
202 Preferences.getWebBrowser("AcceptProtocolHandlerRequest"))
203 self.requestQuotaComboBox.setCurrentIndex(
204 Preferences.getWebBrowser("AcceptQuotaRequest"))
205
206 def save(self):
207 """
208 Public slot to save the Help Viewers configuration.
209 """
210 Preferences.setWebBrowser(
211 "SingleWebBrowserWindow",
212 self.singleHelpWindowCheckBox.isChecked())
213 Preferences.setWebBrowser(
214 "SaveGeometry",
215 self.saveGeometryCheckBox.isChecked())
216 Preferences.setWebBrowser(
217 "WebSearchSuggestions",
218 self.webSuggestionsCheckBox.isChecked())
219 Preferences.setWebBrowser(
220 "ShowPreview",
221 self.showTabPreviews.isChecked())
222 Preferences.setWebBrowser(
223 "ErrorPageEnabled",
224 self.errorPageCheckBox.isChecked())
225 Preferences.setWebBrowser(
226 "ScrollAnimatorEnabled",
227 self.scrollingCheckBox.isChecked())
228 Preferences.setWebBrowser(
229 "FullScreenSupportEnabled",
230 self.fullscreenCheckBox.isChecked())
231
232 Preferences.setWebBrowser(
233 "ScreenCaptureEnabled",
234 self.screenCaptureCheckBox.isChecked())
235 Preferences.setWebBrowser(
236 "WebGLEnabled",
237 self.webGLCheckBox.isChecked())
238
239 Preferences.setWebBrowser(
240 "PlaybackRequiresUserGesture",
241 self.autoplayMediaCheckBox.isChecked())
242 Preferences.setWebBrowser(
243 "WebRTCPublicInterfacesOnly",
244 self.webRtcPublicOnlyCheckBox.isChecked())
245
246 Preferences.setWebBrowser(
247 "DnsPrefetchEnabled",
248 self.dnsPrefetchCheckBox.isChecked())
249
250 Preferences.setWebBrowser(
251 "JavaScriptEnabled",
252 self.javaScriptGroup.isChecked())
253 Preferences.setWebBrowser(
254 "JavaScriptCanOpenWindows",
255 self.jsOpenWindowsCheckBox.isChecked())
256 Preferences.setWebBrowser(
257 "AllowWindowActivationFromJavaScript",
258 self.jsActivateWindowsCheckBox.isChecked())
259 Preferences.setWebBrowser(
260 "JavaScriptCanAccessClipboard",
261 self.jsClipboardCheckBox.isChecked())
262 Preferences.setWebBrowser(
263 "JavaScriptCanPaste",
264 self.jsPasteCheckBox.isChecked())
265
266 Preferences.setWebBrowser(
267 "PluginsEnabled",
268 self.pluginsGroup.isChecked())
269 if self.pdfViewerCheckBox.isEnabled():
270 Preferences.setWebBrowser(
271 "PdfViewerEnabled",
272 self.pdfViewerCheckBox.isChecked())
273
274 Preferences.setWebBrowser(
275 "DoNotTrack",
276 self.doNotTrackCheckBox.isChecked())
277 Preferences.setWebBrowser(
278 "RefererSendReferer",
279 self.refererSendComboBox.currentIndex())
280 Preferences.setWebBrowser(
281 "RefererDefaultPolicy",
282 self.refererDefaultPolicyCcomboBox.currentIndex())
283 Preferences.setWebBrowser(
284 "RefererTrimmingPolicy",
285 self.refererTrimmingPolicyComboBox.currentIndex())
286
287 Preferences.setWebBrowser(
288 "DiskCacheEnabled",
289 self.diskCacheCheckBox.isChecked())
290 Preferences.setWebBrowser(
291 "DiskCacheSize",
292 self.cacheSizeSpinBox.value())
293
294 Preferences.setWebBrowser(
295 "StartupBehavior",
296 self.startupCombo.currentIndex())
297 Preferences.setWebBrowser(
298 "NewTabBehavior",
299 self.newTabCombo.currentIndex())
300 Preferences.setWebBrowser(
301 "HomePage",
302 self.homePageEdit.text())
303 Preferences.setWebBrowser(
304 "LoadTabOnActivation",
305 self.loadTabOnActivationCheckBox.isChecked())
306
307 Preferences.setWebBrowser(
308 "SessionAutoSave",
309 self.saveSessionCheckBox.isChecked())
310 Preferences.setWebBrowser(
311 "SessionAutoSaveInterval",
312 self.sessionTimerSpinBox.value())
313
314 Preferences.setWebBrowser(
315 "DefaultScheme",
316 self.defaultSchemeCombo.currentText())
317
318 idx = self.expireHistory.currentIndex()
319 if idx == 0:
320 historyLimit = 1
321 elif idx == 1:
322 historyLimit = 7
323 elif idx == 2:
324 historyLimit = 14
325 elif idx == 3:
326 historyLimit = 30
327 elif idx == 4:
328 historyLimit = 365
329 elif idx == 5:
330 historyLimit = -1
331 elif idx == 6:
332 historyLimit = -2
333 Preferences.setWebBrowser("HistoryLimit", historyLimit)
334
335 languageIndex = self.languageCombo.currentIndex()
336 language = (
337 self.languageCombo.itemData(languageIndex)
338 if languageIndex > -1 else
339 # fall back to system default
340 QLocale.system().language()
341 )
342 Preferences.setWebBrowser("SearchLanguage", language)
343
344 Preferences.setWebBrowser(
345 "ImageSearchEngine",
346 self.imageSearchComboBox.currentText())
347
348 Preferences.setWebBrowser(
349 "SpatialNavigationEnabled",
350 self.spatialCheckBox.isChecked())
351 Preferences.setWebBrowser(
352 "LinksIncludedInFocusChain",
353 self.linksInFocusChainCheckBox.isChecked())
354 Preferences.setWebBrowser(
355 "FocusOnNavigationEnabled",
356 self.focusOnNavigationCheckBox.isChecked())
357
358 Preferences.setWebBrowser(
359 "XSSAuditingEnabled",
360 self.xssAuditingCheckBox.isChecked())
361 Preferences.setWebBrowser(
362 "AllowRunningInsecureContent",
363 self.insecureContentsCheckBox.isChecked())
364 Preferences.setWebBrowser(
365 "AllowGeolocationOnInsecureOrigins",
366 self.insecureGeolocationCheckBox.isChecked())
367
368 Preferences.setWebBrowser(
369 "PrintElementBackgrounds",
370 self.printBackgroundCheckBox.isChecked())
371
372 Preferences.setWebBrowser(
373 "AutoScrollEnabled",
374 self.autoScrollGroupBox.isChecked())
375 Preferences.setWebBrowser(
376 "AutoScrollDivider",
377 self.autoScrollDividerSpinBox.value())
378
379 Preferences.setWebBrowser(
380 "AcceptProtocolHandlerRequest",
381 self.protocolHandlerComboBox.currentIndex())
382 Preferences.setWebBrowser(
383 "AcceptQuotaRequest",
384 self.requestQuotaComboBox.currentIndex())
385
386 @pyqtSlot()
387 def on_setCurrentPageButton_clicked(self):
388 """
389 Private slot to set the current page as the home page.
390 """
391 url = self.__browserWindow.currentBrowser().url()
392 self.homePageEdit.setText(bytes(url.toEncoded()).decode())
393
394 @pyqtSlot()
395 def on_defaultHomeButton_clicked(self):
396 """
397 Private slot to set the default home page.
398 """
399 self.homePageEdit.setText(Preferences.Prefs.helpDefaults["HomePage"])
400
401 @pyqtSlot()
402 def on_setSpeedDialPageButton_clicked(self):
403 """
404 Private slot documentation goes here.
405 """
406 self.homePageEdit.setText("eric:speeddial")
407
408 @pyqtSlot(int)
409 def on_startupCombo_currentIndexChanged(self, index):
410 """
411 Private slot to enable elements depending on the selected startup
412 entry.
413
414 @param index index of the selected entry (integer)
415 """
416 # set state of the session related items
417 self.loadTabOnActivationCheckBox.setEnabled(
418 index in [3, 4])
419
420 @pyqtSlot()
421 def on_refererWhitelistButton_clicked(self):
422 """
423 Private slot to edit the referer whitelist.
424 """
425 from WebBrowser.Network.SendRefererWhitelistDialog import (
426 SendRefererWhitelistDialog
427 )
428 SendRefererWhitelistDialog(self).exec()
429
430
431 def create(dlg):
432 """
433 Module function to create the configuration page.
434
435 @param dlg reference to the configuration dialog
436 @return reference to the instantiated page (ConfigurationPageBase)
437 """
438 page = WebBrowserPage(dlg)
439 return page

eric ide

mercurial