eric6/Preferences/ConfigurationPages/HelpWebBrowserPage.py

changeset 6942
2602857055c5
parent 6645
ad476851d7e0
equal deleted inserted replaced
6941:f99d60d6b59b 6942:2602857055c5
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing the Help web browser configuration page.
8 """
9
10 from __future__ import unicode_literals
11
12 from PyQt5.QtCore import pyqtSlot, QLocale
13 from PyQt5.QtNetwork import QNetworkRequest
14 from PyQt5.QtWebKit import QWebSettings
15
16 from .ConfigurationPageBase import ConfigurationPageBase
17 from .Ui_HelpWebBrowserPage import Ui_HelpWebBrowserPage
18
19 import Preferences
20 import UI.PixmapCache
21
22
23 class HelpWebBrowserPage(ConfigurationPageBase, Ui_HelpWebBrowserPage):
24 """
25 Class implementing the Help web browser configuration page.
26 """
27 def __init__(self, configDialog):
28 """
29 Constructor
30
31 @param configDialog reference to the configuration dialog
32 (ConfigurationDialog)
33 """
34 super(HelpWebBrowserPage, self).__init__()
35 self.setupUi(self)
36 self.setObjectName("HelpWebBrowserPage")
37
38 self.__configDlg = configDialog
39 mw = configDialog.parent().parent()
40 if hasattr(mw, "helpWindow") and mw.helpWindow is not None:
41 self.__helpWindow = mw.helpWindow
42 elif hasattr(mw, "currentBrowser"):
43 self.__helpWindow = mw
44 else:
45 self.__helpWindow = None
46 self.setCurrentPageButton.setEnabled(self.__helpWindow is not None)
47
48 defaultSchemes = ["file://", "http://", "https://"]
49 self.defaultSchemeCombo.addItems(defaultSchemes)
50
51 self.clickToFlashCheckBox.setIcon(
52 UI.PixmapCache.getIcon("flashBlock.png"))
53
54 # set initial values
55 self.singleHelpWindowCheckBox.setChecked(
56 Preferences.getHelp("SingleHelpWindow"))
57 self.saveGeometryCheckBox.setChecked(
58 Preferences.getHelp("SaveGeometry"))
59 self.webSuggestionsCheckBox.setChecked(
60 Preferences.getHelp("WebSearchSuggestions"))
61 self.showTabPreviews.setChecked(
62 Preferences.getHelp("ShowPreview"))
63 self.accessKeysCheckBox.setChecked(
64 Preferences.getHelp("AccessKeysEnabled"))
65
66 self.javaCheckBox.setChecked(
67 Preferences.getHelp("JavaEnabled"))
68 self.javaScriptGroup.setChecked(
69 Preferences.getHelp("JavaScriptEnabled"))
70 self.jsOpenWindowsCheckBox.setChecked(
71 Preferences.getHelp("JavaScriptCanOpenWindows"))
72 self.jsCloseWindowsCheckBox.setChecked(
73 Preferences.getHelp("JavaScriptCanCloseWindows"))
74 self.jsClipboardCheckBox.setChecked(
75 Preferences.getHelp("JavaScriptCanAccessClipboard"))
76 self.pluginsGroup.setChecked(
77 Preferences.getHelp("PluginsEnabled"))
78 self.clickToFlashCheckBox.setChecked(
79 Preferences.getHelp("ClickToFlashEnabled"))
80 self.doNotTrackCheckBox.setChecked(
81 Preferences.getHelp("DoNotTrack"))
82 self.sendRefererCheckBox.setChecked(
83 Preferences.getHelp("SendReferer"))
84
85 self.diskCacheCheckBox.setChecked(
86 Preferences.getHelp("DiskCacheEnabled"))
87 self.cacheSizeSpinBox.setValue(
88 Preferences.getHelp("DiskCacheSize"))
89 cachePolicy = Preferences.getHelp("CachePolicy")
90 if cachePolicy == QNetworkRequest.PreferNetwork:
91 self.cacheKeepButton.setChecked(True)
92 elif cachePolicy == QNetworkRequest.PreferCache:
93 self.cachePreferButton.setChecked(True)
94 elif cachePolicy == QNetworkRequest.AlwaysCache:
95 self.cacheOfflineButton.setChecked(True)
96
97 self.printBackgroundsCheckBox.setChecked(
98 Preferences.getHelp("PrintBackgrounds"))
99
100 self.startupCombo.setCurrentIndex(
101 Preferences.getHelp("StartupBehavior"))
102 self.homePageEdit.setText(
103 Preferences.getHelp("HomePage"))
104
105 self.defaultSchemeCombo.setCurrentIndex(
106 self.defaultSchemeCombo.findText(
107 Preferences.getHelp("DefaultScheme")))
108
109 historyLimit = Preferences.getHelp("HistoryLimit")
110 idx = 0
111 if historyLimit == 1:
112 idx = 0
113 elif historyLimit == 7:
114 idx = 1
115 elif historyLimit == 14:
116 idx = 2
117 elif historyLimit == 30:
118 idx = 3
119 elif historyLimit == 365:
120 idx = 4
121 elif historyLimit == -1:
122 idx = 5
123 elif historyLimit == -2:
124 idx = 6
125 else:
126 idx = 5
127 self.expireHistory.setCurrentIndex(idx)
128
129 for language in range(2, QLocale.LastLanguage + 1):
130 countries = [l.country() for l in QLocale.matchingLocales(
131 language, QLocale.AnyScript, QLocale.AnyCountry)]
132 if len(countries) > 0:
133 self.languageCombo.addItem(
134 QLocale.languageToString(language), language)
135 self.languageCombo.model().sort(0)
136 self.languageCombo.insertSeparator(0)
137 self.languageCombo.insertItem(0, QLocale.languageToString(0), 0)
138 index = self.languageCombo.findData(
139 Preferences.getHelp("SearchLanguage"))
140 if index > -1:
141 self.languageCombo.setCurrentIndex(index)
142
143 if hasattr(QWebSettings, "SpatialNavigationEnabled"):
144 self.spatialCheckBox.setChecked(
145 Preferences.getHelp("SpatialNavigationEnabled"))
146 else:
147 self.spatialCheckBox.setEnabled(False)
148 if hasattr(QWebSettings, "LinksIncludedInFocusChain"):
149 self.linksInFocusChainCheckBox.setChecked(
150 Preferences.getHelp("LinksIncludedInFocusChain"))
151 else:
152 self.linksInFocusChainCheckBox.setEnabled(False)
153 if hasattr(QWebSettings, "XSSAuditingEnabled"):
154 self.xssAuditingCheckBox.setChecked(
155 Preferences.getHelp("XSSAuditingEnabled"))
156 else:
157 self.xssAuditingCheckBox.setEnabled(False)
158 if hasattr(QWebSettings, "SiteSpecificQuirksEnabled"):
159 self.quirksCheckBox.setChecked(
160 Preferences.getHelp("SiteSpecificQuirksEnabled"))
161 else:
162 self.quirksCheckBox.setEnabled(False)
163
164 def save(self):
165 """
166 Public slot to save the Help Viewers configuration.
167 """
168 Preferences.setHelp(
169 "SingleHelpWindow",
170 self.singleHelpWindowCheckBox.isChecked())
171 Preferences.setHelp(
172 "SaveGeometry",
173 self.saveGeometryCheckBox.isChecked())
174 Preferences.setHelp(
175 "WebSearchSuggestions",
176 self.webSuggestionsCheckBox.isChecked())
177 Preferences.setHelp(
178 "ShowPreview",
179 self.showTabPreviews.isChecked())
180 Preferences.setHelp(
181 "AccessKeysEnabled",
182 self.accessKeysCheckBox.isChecked())
183
184 Preferences.setHelp(
185 "JavaEnabled",
186 self.javaCheckBox.isChecked())
187 Preferences.setHelp(
188 "JavaScriptEnabled",
189 self.javaScriptGroup.isChecked())
190 Preferences.setHelp(
191 "JavaScriptCanOpenWindows",
192 self.jsOpenWindowsCheckBox.isChecked())
193 Preferences.setHelp(
194 "JavaScriptCanCloseWindows",
195 self.jsCloseWindowsCheckBox.isChecked())
196 Preferences.setHelp(
197 "JavaScriptCanAccessClipboard",
198 self.jsClipboardCheckBox.isChecked())
199 Preferences.setHelp(
200 "PluginsEnabled",
201 self.pluginsGroup.isChecked())
202 Preferences.setHelp(
203 "ClickToFlashEnabled",
204 self.clickToFlashCheckBox.isChecked())
205 Preferences.setHelp(
206 "DoNotTrack",
207 self.doNotTrackCheckBox.isChecked())
208 Preferences.setHelp(
209 "SendReferer",
210 self.sendRefererCheckBox.isChecked())
211
212 Preferences.setHelp(
213 "DiskCacheEnabled",
214 self.diskCacheCheckBox.isChecked())
215 Preferences.setHelp(
216 "DiskCacheSize",
217 self.cacheSizeSpinBox.value())
218 if self.cacheKeepButton.isChecked():
219 Preferences.setHelp(
220 "CachePolicy",
221 QNetworkRequest.PreferNetwork)
222 elif self.cachePreferButton.isChecked():
223 Preferences.setHelp(
224 "CachePolicy",
225 QNetworkRequest.PreferCache)
226 elif self.cacheOfflineButton.isChecked():
227 Preferences.setHelp(
228 "CachePolicy",
229 QNetworkRequest.AlwaysCache)
230
231 Preferences.setHelp(
232 "PrintBackgrounds",
233 self.printBackgroundsCheckBox.isChecked())
234
235 Preferences.setHelp(
236 "StartupBehavior",
237 self.startupCombo.currentIndex())
238 Preferences.setHelp(
239 "HomePage",
240 self.homePageEdit.text())
241
242 Preferences.setHelp(
243 "DefaultScheme",
244 self.defaultSchemeCombo.currentText())
245
246 idx = self.expireHistory.currentIndex()
247 if idx == 0:
248 historyLimit = 1
249 elif idx == 1:
250 historyLimit = 7
251 elif idx == 2:
252 historyLimit = 14
253 elif idx == 3:
254 historyLimit = 30
255 elif idx == 4:
256 historyLimit = 365
257 elif idx == 5:
258 historyLimit = -1
259 elif idx == 6:
260 historyLimit = -2
261 Preferences.setHelp("HistoryLimit", historyLimit)
262
263 languageIndex = self.languageCombo.currentIndex()
264 if languageIndex > -1:
265 language = self.languageCombo.itemData(languageIndex)
266 else:
267 # fall back to system default
268 language = QLocale.system().language()
269 Preferences.setHelp("SearchLanguage", language)
270
271 if hasattr(QWebSettings, "SpatialNavigationEnabled"):
272 Preferences.setHelp(
273 "SpatialNavigationEnabled",
274 self.spatialCheckBox.isChecked())
275 if hasattr(QWebSettings, "LinksIncludedInFocusChain"):
276 Preferences.setHelp(
277 "LinksIncludedInFocusChain",
278 self.linksInFocusChainCheckBox.isChecked())
279 if hasattr(QWebSettings, "XSSAuditingEnabled"):
280 Preferences.setHelp(
281 "XSSAuditingEnabled",
282 self.xssAuditingCheckBox.isChecked())
283 if hasattr(QWebSettings, "SiteSpecificQuirksEnabled"):
284 Preferences.setHelp(
285 "SiteSpecificQuirksEnabled",
286 self.quirksCheckBox.isChecked())
287
288 @pyqtSlot()
289 def on_setCurrentPageButton_clicked(self):
290 """
291 Private slot to set the current page as the home page.
292 """
293 url = self.__helpWindow.currentBrowser().url()
294 self.homePageEdit.setText(bytes(url.toEncoded()).decode())
295
296 @pyqtSlot()
297 def on_defaultHomeButton_clicked(self):
298 """
299 Private slot to set the default home page.
300 """
301 self.homePageEdit.setText(Preferences.Prefs.helpDefaults["HomePage"])
302
303 @pyqtSlot(int)
304 def on_startupCombo_currentIndexChanged(self, index):
305 """
306 Private slot to enable elements depending on the selected startup
307 entry.
308
309 @param index index of the selected entry (integer)
310 """
311 enable = index == 0
312 self.homePageLabel.setEnabled(enable)
313 self.homePageEdit.setEnabled(enable)
314 self.defaultHomeButton.setEnabled(enable)
315 self.setCurrentPageButton.setEnabled(enable)
316
317 @pyqtSlot()
318 def on_refererWhitelistButton_clicked(self):
319 """
320 Private slot to edit the referer whitelist.
321 """
322 from Helpviewer.Network.SendRefererWhitelistDialog import \
323 SendRefererWhitelistDialog
324 SendRefererWhitelistDialog(self).exec_()
325
326 @pyqtSlot()
327 def on_noCacheHostsButton_clicked(self):
328 """
329 Private slot to edit the list of hosts exempted from caching.
330 """
331 from Helpviewer.Network.NoCacheHostsDialog import \
332 NoCacheHostsDialog
333 NoCacheHostsDialog(self).exec_()
334
335
336 def create(dlg):
337 """
338 Module function to create the configuration page.
339
340 @param dlg reference to the configuration dialog
341 @return reference to the instantiated page (ConfigurationPageBase)
342 """
343 page = HelpWebBrowserPage(dlg)
344 return page

eric ide

mercurial