Preferences/ConfigurationPages/WebBrowserPage.py

branch
QtWebEngine
changeset 4805
8ef007140046
child 4806
5c0745cb26ea
equal deleted inserted replaced
4804:f794ff054d8f 4805:8ef007140046
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2016 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 Preferences
16 import UI.PixmapCache
17
18
19 class WebBrowserPage(ConfigurationPageBase, Ui_WebBrowserPage):
20 """
21 Class documentation goes here.
22 """
23 def __init__(self, configDialog):
24 """
25 Constructor
26
27 @param configDialog reference to the configuration dialog
28 (ConfigurationDialog)
29 """
30 super(WebBrowserPage, self).__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
46 defaultSchemes = ["file://", "http://", "https://"]
47 self.defaultSchemeCombo.addItems(defaultSchemes)
48
49 # TODO: Click2Flash
50 ## self.clickToFlashCheckBox.setIcon(
51 ## UI.PixmapCache.getIcon("flashBlock.png"))
52
53 # set initial values
54 self.singleHelpWindowCheckBox.setChecked(
55 Preferences.getWebBrowser("SingleWebBrowserWindow"))
56 self.saveGeometryCheckBox.setChecked(
57 Preferences.getWebBrowser("SaveGeometry"))
58 self.webSuggestionsCheckBox.setChecked(
59 Preferences.getWebBrowser("WebSearchSuggestions"))
60 self.showTabPreviews.setChecked(
61 Preferences.getWebBrowser("ShowPreview"))
62 self.errorPageCheckBox.setChecked(
63 Preferences.getWebBrowser("ErrorPageEnabled"))
64 self.scrollingCheckBox.setChecked(
65 Preferences.getWebBrowser("ScrollAnimatorEnabled"))
66
67 self.javaScriptGroup.setChecked(
68 Preferences.getWebBrowser("JavaScriptEnabled"))
69 self.jsOpenWindowsCheckBox.setChecked(
70 Preferences.getWebBrowser("JavaScriptCanOpenWindows"))
71 # TODO: Qt 5.6
72 ## self.jsCloseWindowsCheckBox.setChecked(
73 ## Preferences.getWebBrowser("JavaScriptCanCloseWindows"))
74 self.jsClipboardCheckBox.setChecked(
75 Preferences.getWebBrowser("JavaScriptCanAccessClipboard"))
76 ## self.pluginsGroup.setChecked(
77 ## Preferences.getWebBrowser("PluginsEnabled"))
78 # TODO: Click2Flash
79 ## self.clickToFlashCheckBox.setChecked(
80 ## Preferences.getWebBrowser("ClickToFlashEnabled"))
81 # TODO: Qt 5.6
82 ## self.doNotTrackCheckBox.setChecked(
83 ## Preferences.getWebBrowser("DoNotTrack"))
84 ## self.sendRefererCheckBox.setChecked(
85 ## Preferences.getWebBrowser("SendReferer"))
86
87 # TODO: Cache
88 ## self.diskCacheCheckBox.setChecked(
89 ## Preferences.getWebBrowser("DiskCacheEnabled"))
90 ## self.cacheSizeSpinBox.setValue(
91 ## Preferences.getWebBrowser("DiskCacheSize"))
92
93 self.startupCombo.setCurrentIndex(
94 Preferences.getWebBrowser("StartupBehavior"))
95 self.homePageEdit.setText(
96 Preferences.getWebBrowser("HomePage"))
97
98 self.defaultSchemeCombo.setCurrentIndex(
99 self.defaultSchemeCombo.findText(
100 Preferences.getWebBrowser("DefaultScheme")))
101
102 historyLimit = Preferences.getWebBrowser("HistoryLimit")
103 idx = 0
104 if historyLimit == 1:
105 idx = 0
106 elif historyLimit == 7:
107 idx = 1
108 elif historyLimit == 14:
109 idx = 2
110 elif historyLimit == 30:
111 idx = 3
112 elif historyLimit == 365:
113 idx = 4
114 elif historyLimit == -1:
115 idx = 5
116 elif historyLimit == -2:
117 idx = 6
118 else:
119 idx = 5
120 self.expireHistory.setCurrentIndex(idx)
121
122 for language in range(2, QLocale.LastLanguage + 1):
123 countries = [l.country() for l in QLocale.matchingLocales(
124 language, QLocale.AnyScript, QLocale.AnyCountry)]
125 if len(countries) > 0:
126 self.languageCombo.addItem(
127 QLocale.languageToString(language), language)
128 self.languageCombo.model().sort(0)
129 self.languageCombo.insertSeparator(0)
130 self.languageCombo.insertItem(0, QLocale.languageToString(0), 0)
131 index = self.languageCombo.findData(
132 Preferences.getWebBrowser("SearchLanguage"))
133 if index > -1:
134 self.languageCombo.setCurrentIndex(index)
135
136 self.spatialCheckBox.setChecked(
137 Preferences.getWebBrowser("SpatialNavigationEnabled"))
138 self.linksInFocusChainCheckBox.setChecked(
139 Preferences.getWebBrowser("LinksIncludedInFocusChain"))
140 self.xssAuditingCheckBox.setChecked(
141 Preferences.getWebBrowser("XSSAuditingEnabled"))
142
143 self.webInspectorGroup.setChecked(
144 Preferences.getWebBrowser("WebInspectorEnabled"))
145 self.webInspectorPortSpinBox.setValue(
146 Preferences.getWebBrowser("WebInspectorPort"))
147
148 # TODO: Configuration: finish these with Qt 5.6
149 # Hide entries not yet supported
150 self.accessKeysCheckBox.hide()
151 self.jsCloseWindowsCheckBox.hide()
152 self.pluginsGroup.hide()
153 self.doNotTrackCheckBox.hide()
154 self.sendRefererCheckBox.hide()
155 self.refererWhitelistButton.hide()
156 self.noCacheHostsButton.hide()
157
158 def save(self):
159 """
160 Public slot to save the Help Viewers configuration.
161 """
162 Preferences.setWebBrowser(
163 "SingleWebBrowserWindow",
164 self.singleHelpWindowCheckBox.isChecked())
165 Preferences.setWebBrowser(
166 "SaveGeometry",
167 self.saveGeometryCheckBox.isChecked())
168 Preferences.setWebBrowser(
169 "WebSearchSuggestions",
170 self.webSuggestionsCheckBox.isChecked())
171 Preferences.setWebBrowser(
172 "ShowPreview",
173 self.showTabPreviews.isChecked())
174 Preferences.setWebBrowser(
175 "ErrorPageEnabled",
176 self.errorPageCheckBox.isChecked())
177 Preferences.setWebBrowser(
178 "ScrollAnimatorEnabled",
179 self.scrollingCheckBox.isChecked())
180
181 Preferences.setWebBrowser(
182 "JavaScriptEnabled",
183 self.javaScriptGroup.isChecked())
184 Preferences.setWebBrowser(
185 "JavaScriptCanOpenWindows",
186 self.jsOpenWindowsCheckBox.isChecked())
187 # TODO: Qt 5.6
188 ## Preferences.setWebBrowser(
189 ## "JavaScriptCanCloseWindows",
190 ## self.jsCloseWindowsCheckBox.isChecked())
191 Preferences.setWebBrowser(
192 "JavaScriptCanAccessClipboard",
193 self.jsClipboardCheckBox.isChecked())
194 # TODO: Qt 5.6
195 ## Preferences.setWebBrowser(
196 ## "PluginsEnabled",
197 ## self.pluginsGroup.isChecked())
198 # TODO: Click2Flash
199 ## Preferences.setWebBrowser(
200 ## "ClickToFlashEnabled",
201 ## self.clickToFlashCheckBox.isChecked())
202 # TODO: Qt 5.6
203 ## Preferences.setWebBrowser(
204 ## "DoNotTrack",
205 ## self.doNotTrackCheckBox.isChecked())
206 ## Preferences.setWebBrowser(
207 ## "SendReferer",
208 ## self.sendRefererCheckBox.isChecked())
209
210 # TODO: Cache
211 ## Preferences.setWebBrowser(
212 ## "DiskCacheEnabled",
213 ## self.diskCacheCheckBox.isChecked())
214 ## Preferences.setWebBrowser(
215 ## "DiskCacheSize",
216 ## self.cacheSizeSpinBox.value())
217
218 Preferences.setWebBrowser(
219 "StartupBehavior",
220 self.startupCombo.currentIndex())
221 Preferences.setWebBrowser(
222 "HomePage",
223 self.homePageEdit.text())
224
225 Preferences.setWebBrowser(
226 "DefaultScheme",
227 self.defaultSchemeCombo.currentText())
228
229 idx = self.expireHistory.currentIndex()
230 if idx == 0:
231 historyLimit = 1
232 elif idx == 1:
233 historyLimit = 7
234 elif idx == 2:
235 historyLimit = 14
236 elif idx == 3:
237 historyLimit = 30
238 elif idx == 4:
239 historyLimit = 365
240 elif idx == 5:
241 historyLimit = -1
242 elif idx == 6:
243 historyLimit = -2
244 Preferences.setWebBrowser("HistoryLimit", historyLimit)
245
246 languageIndex = self.languageCombo.currentIndex()
247 if languageIndex > -1:
248 language = self.languageCombo.itemData(languageIndex)
249 else:
250 # fall back to system default
251 language = QLocale.system().language()
252 Preferences.setWebBrowser("SearchLanguage", language)
253
254 Preferences.setWebBrowser(
255 "SpatialNavigationEnabled",
256 self.spatialCheckBox.isChecked())
257 Preferences.setWebBrowser(
258 "LinksIncludedInFocusChain",
259 self.linksInFocusChainCheckBox.isChecked())
260 Preferences.setWebBrowser(
261 "XSSAuditingEnabled",
262 self.xssAuditingCheckBox.isChecked())
263
264 Preferences.setWebBrowser(
265 "WebInspectorEnabled",
266 self.webInspectorGroup.isChecked())
267 Preferences.setWebBrowser(
268 "WebInspectorPort",
269 self.webInspectorPortSpinBox.value())
270
271 @pyqtSlot()
272 def on_setCurrentPageButton_clicked(self):
273 """
274 Private slot to set the current page as the home page.
275 """
276 url = self.__browserWindow.currentBrowser().url()
277 self.homePageEdit.setText(bytes(url.toEncoded()).decode())
278
279 @pyqtSlot()
280 def on_defaultHomeButton_clicked(self):
281 """
282 Private slot to set the default home page.
283 """
284 self.homePageEdit.setText(Preferences.Prefs.helpDefaults["HomePage"])
285
286 @pyqtSlot(int)
287 def on_startupCombo_currentIndexChanged(self, index):
288 """
289 Private slot to enable elements depending on the selected startup
290 entry.
291
292 @param index index of the selected entry (integer)
293 """
294 enable = index == 0
295 self.homePageLabel.setEnabled(enable)
296 self.homePageEdit.setEnabled(enable)
297 self.defaultHomeButton.setEnabled(enable)
298 self.setCurrentPageButton.setEnabled(enable)
299
300 # TODO: Referer
301 ## @pyqtSlot()
302 ## def on_refererWhitelistButton_clicked(self):
303 ## """
304 ## Private slot to edit the referer whitelist.
305 ## """
306 ## from Helpviewer.Network.SendRefererWhitelistDialog import \
307 ## SendRefererWhitelistDialog
308 ## SendRefererWhitelistDialog(self).exec_()
309
310 # TODO: Cache
311 ## @pyqtSlot()
312 ## def on_noCacheHostsButton_clicked(self):
313 ## """
314 ## Private slot to edit the list of hosts exempted from caching.
315 ## """
316 ## from Helpviewer.Network.NoCacheHostsDialog import \
317 ## NoCacheHostsDialog
318 ## NoCacheHostsDialog(self).exec_()
319
320
321 def create(dlg):
322 """
323 Module function to create the configuration page.
324
325 @param dlg reference to the configuration dialog
326 @return reference to the instantiated page (ConfigurationPageBase)
327 """
328 page = WebBrowserPage(dlg)
329 return page

eric ide

mercurial