src/eric7/Preferences/ConfigurationPages/WebBrowserPage.py

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

eric ide

mercurial