diff -r f99d60d6b59b -r 2602857055c5 eric6/Preferences/ConfigurationPages/HelpWebBrowserPage.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eric6/Preferences/ConfigurationPages/HelpWebBrowserPage.py Sun Apr 14 15:09:21 2019 +0200 @@ -0,0 +1,344 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing the Help web browser configuration page. +""" + +from __future__ import unicode_literals + +from PyQt5.QtCore import pyqtSlot, QLocale +from PyQt5.QtNetwork import QNetworkRequest +from PyQt5.QtWebKit import QWebSettings + +from .ConfigurationPageBase import ConfigurationPageBase +from .Ui_HelpWebBrowserPage import Ui_HelpWebBrowserPage + +import Preferences +import UI.PixmapCache + + +class HelpWebBrowserPage(ConfigurationPageBase, Ui_HelpWebBrowserPage): + """ + Class implementing the Help web browser configuration page. + """ + def __init__(self, configDialog): + """ + Constructor + + @param configDialog reference to the configuration dialog + (ConfigurationDialog) + """ + super(HelpWebBrowserPage, self).__init__() + self.setupUi(self) + self.setObjectName("HelpWebBrowserPage") + + self.__configDlg = configDialog + mw = configDialog.parent().parent() + if hasattr(mw, "helpWindow") and mw.helpWindow is not None: + self.__helpWindow = mw.helpWindow + elif hasattr(mw, "currentBrowser"): + self.__helpWindow = mw + else: + self.__helpWindow = None + self.setCurrentPageButton.setEnabled(self.__helpWindow is not None) + + defaultSchemes = ["file://", "http://", "https://"] + self.defaultSchemeCombo.addItems(defaultSchemes) + + self.clickToFlashCheckBox.setIcon( + UI.PixmapCache.getIcon("flashBlock.png")) + + # set initial values + self.singleHelpWindowCheckBox.setChecked( + Preferences.getHelp("SingleHelpWindow")) + self.saveGeometryCheckBox.setChecked( + Preferences.getHelp("SaveGeometry")) + self.webSuggestionsCheckBox.setChecked( + Preferences.getHelp("WebSearchSuggestions")) + self.showTabPreviews.setChecked( + Preferences.getHelp("ShowPreview")) + self.accessKeysCheckBox.setChecked( + Preferences.getHelp("AccessKeysEnabled")) + + self.javaCheckBox.setChecked( + Preferences.getHelp("JavaEnabled")) + self.javaScriptGroup.setChecked( + Preferences.getHelp("JavaScriptEnabled")) + self.jsOpenWindowsCheckBox.setChecked( + Preferences.getHelp("JavaScriptCanOpenWindows")) + self.jsCloseWindowsCheckBox.setChecked( + Preferences.getHelp("JavaScriptCanCloseWindows")) + self.jsClipboardCheckBox.setChecked( + Preferences.getHelp("JavaScriptCanAccessClipboard")) + self.pluginsGroup.setChecked( + Preferences.getHelp("PluginsEnabled")) + self.clickToFlashCheckBox.setChecked( + Preferences.getHelp("ClickToFlashEnabled")) + self.doNotTrackCheckBox.setChecked( + Preferences.getHelp("DoNotTrack")) + self.sendRefererCheckBox.setChecked( + Preferences.getHelp("SendReferer")) + + self.diskCacheCheckBox.setChecked( + Preferences.getHelp("DiskCacheEnabled")) + self.cacheSizeSpinBox.setValue( + Preferences.getHelp("DiskCacheSize")) + cachePolicy = Preferences.getHelp("CachePolicy") + if cachePolicy == QNetworkRequest.PreferNetwork: + self.cacheKeepButton.setChecked(True) + elif cachePolicy == QNetworkRequest.PreferCache: + self.cachePreferButton.setChecked(True) + elif cachePolicy == QNetworkRequest.AlwaysCache: + self.cacheOfflineButton.setChecked(True) + + self.printBackgroundsCheckBox.setChecked( + Preferences.getHelp("PrintBackgrounds")) + + self.startupCombo.setCurrentIndex( + Preferences.getHelp("StartupBehavior")) + self.homePageEdit.setText( + Preferences.getHelp("HomePage")) + + self.defaultSchemeCombo.setCurrentIndex( + self.defaultSchemeCombo.findText( + Preferences.getHelp("DefaultScheme"))) + + historyLimit = Preferences.getHelp("HistoryLimit") + idx = 0 + if historyLimit == 1: + idx = 0 + elif historyLimit == 7: + idx = 1 + elif historyLimit == 14: + idx = 2 + elif historyLimit == 30: + idx = 3 + elif historyLimit == 365: + idx = 4 + elif historyLimit == -1: + idx = 5 + elif historyLimit == -2: + idx = 6 + else: + idx = 5 + self.expireHistory.setCurrentIndex(idx) + + for language in range(2, QLocale.LastLanguage + 1): + countries = [l.country() for l in QLocale.matchingLocales( + language, QLocale.AnyScript, QLocale.AnyCountry)] + if len(countries) > 0: + self.languageCombo.addItem( + QLocale.languageToString(language), language) + self.languageCombo.model().sort(0) + self.languageCombo.insertSeparator(0) + self.languageCombo.insertItem(0, QLocale.languageToString(0), 0) + index = self.languageCombo.findData( + Preferences.getHelp("SearchLanguage")) + if index > -1: + self.languageCombo.setCurrentIndex(index) + + if hasattr(QWebSettings, "SpatialNavigationEnabled"): + self.spatialCheckBox.setChecked( + Preferences.getHelp("SpatialNavigationEnabled")) + else: + self.spatialCheckBox.setEnabled(False) + if hasattr(QWebSettings, "LinksIncludedInFocusChain"): + self.linksInFocusChainCheckBox.setChecked( + Preferences.getHelp("LinksIncludedInFocusChain")) + else: + self.linksInFocusChainCheckBox.setEnabled(False) + if hasattr(QWebSettings, "XSSAuditingEnabled"): + self.xssAuditingCheckBox.setChecked( + Preferences.getHelp("XSSAuditingEnabled")) + else: + self.xssAuditingCheckBox.setEnabled(False) + if hasattr(QWebSettings, "SiteSpecificQuirksEnabled"): + self.quirksCheckBox.setChecked( + Preferences.getHelp("SiteSpecificQuirksEnabled")) + else: + self.quirksCheckBox.setEnabled(False) + + def save(self): + """ + Public slot to save the Help Viewers configuration. + """ + Preferences.setHelp( + "SingleHelpWindow", + self.singleHelpWindowCheckBox.isChecked()) + Preferences.setHelp( + "SaveGeometry", + self.saveGeometryCheckBox.isChecked()) + Preferences.setHelp( + "WebSearchSuggestions", + self.webSuggestionsCheckBox.isChecked()) + Preferences.setHelp( + "ShowPreview", + self.showTabPreviews.isChecked()) + Preferences.setHelp( + "AccessKeysEnabled", + self.accessKeysCheckBox.isChecked()) + + Preferences.setHelp( + "JavaEnabled", + self.javaCheckBox.isChecked()) + Preferences.setHelp( + "JavaScriptEnabled", + self.javaScriptGroup.isChecked()) + Preferences.setHelp( + "JavaScriptCanOpenWindows", + self.jsOpenWindowsCheckBox.isChecked()) + Preferences.setHelp( + "JavaScriptCanCloseWindows", + self.jsCloseWindowsCheckBox.isChecked()) + Preferences.setHelp( + "JavaScriptCanAccessClipboard", + self.jsClipboardCheckBox.isChecked()) + Preferences.setHelp( + "PluginsEnabled", + self.pluginsGroup.isChecked()) + Preferences.setHelp( + "ClickToFlashEnabled", + self.clickToFlashCheckBox.isChecked()) + Preferences.setHelp( + "DoNotTrack", + self.doNotTrackCheckBox.isChecked()) + Preferences.setHelp( + "SendReferer", + self.sendRefererCheckBox.isChecked()) + + Preferences.setHelp( + "DiskCacheEnabled", + self.diskCacheCheckBox.isChecked()) + Preferences.setHelp( + "DiskCacheSize", + self.cacheSizeSpinBox.value()) + if self.cacheKeepButton.isChecked(): + Preferences.setHelp( + "CachePolicy", + QNetworkRequest.PreferNetwork) + elif self.cachePreferButton.isChecked(): + Preferences.setHelp( + "CachePolicy", + QNetworkRequest.PreferCache) + elif self.cacheOfflineButton.isChecked(): + Preferences.setHelp( + "CachePolicy", + QNetworkRequest.AlwaysCache) + + Preferences.setHelp( + "PrintBackgrounds", + self.printBackgroundsCheckBox.isChecked()) + + Preferences.setHelp( + "StartupBehavior", + self.startupCombo.currentIndex()) + Preferences.setHelp( + "HomePage", + self.homePageEdit.text()) + + Preferences.setHelp( + "DefaultScheme", + self.defaultSchemeCombo.currentText()) + + idx = self.expireHistory.currentIndex() + if idx == 0: + historyLimit = 1 + elif idx == 1: + historyLimit = 7 + elif idx == 2: + historyLimit = 14 + elif idx == 3: + historyLimit = 30 + elif idx == 4: + historyLimit = 365 + elif idx == 5: + historyLimit = -1 + elif idx == 6: + historyLimit = -2 + Preferences.setHelp("HistoryLimit", historyLimit) + + languageIndex = self.languageCombo.currentIndex() + if languageIndex > -1: + language = self.languageCombo.itemData(languageIndex) + else: + # fall back to system default + language = QLocale.system().language() + Preferences.setHelp("SearchLanguage", language) + + if hasattr(QWebSettings, "SpatialNavigationEnabled"): + Preferences.setHelp( + "SpatialNavigationEnabled", + self.spatialCheckBox.isChecked()) + if hasattr(QWebSettings, "LinksIncludedInFocusChain"): + Preferences.setHelp( + "LinksIncludedInFocusChain", + self.linksInFocusChainCheckBox.isChecked()) + if hasattr(QWebSettings, "XSSAuditingEnabled"): + Preferences.setHelp( + "XSSAuditingEnabled", + self.xssAuditingCheckBox.isChecked()) + if hasattr(QWebSettings, "SiteSpecificQuirksEnabled"): + Preferences.setHelp( + "SiteSpecificQuirksEnabled", + self.quirksCheckBox.isChecked()) + + @pyqtSlot() + def on_setCurrentPageButton_clicked(self): + """ + Private slot to set the current page as the home page. + """ + url = self.__helpWindow.currentBrowser().url() + self.homePageEdit.setText(bytes(url.toEncoded()).decode()) + + @pyqtSlot() + def on_defaultHomeButton_clicked(self): + """ + Private slot to set the default home page. + """ + self.homePageEdit.setText(Preferences.Prefs.helpDefaults["HomePage"]) + + @pyqtSlot(int) + def on_startupCombo_currentIndexChanged(self, index): + """ + Private slot to enable elements depending on the selected startup + entry. + + @param index index of the selected entry (integer) + """ + enable = index == 0 + self.homePageLabel.setEnabled(enable) + self.homePageEdit.setEnabled(enable) + self.defaultHomeButton.setEnabled(enable) + self.setCurrentPageButton.setEnabled(enable) + + @pyqtSlot() + def on_refererWhitelistButton_clicked(self): + """ + Private slot to edit the referer whitelist. + """ + from Helpviewer.Network.SendRefererWhitelistDialog import \ + SendRefererWhitelistDialog + SendRefererWhitelistDialog(self).exec_() + + @pyqtSlot() + def on_noCacheHostsButton_clicked(self): + """ + Private slot to edit the list of hosts exempted from caching. + """ + from Helpviewer.Network.NoCacheHostsDialog import \ + NoCacheHostsDialog + NoCacheHostsDialog(self).exec_() + + +def create(dlg): + """ + Module function to create the configuration page. + + @param dlg reference to the configuration dialog + @return reference to the instantiated page (ConfigurationPageBase) + """ + page = HelpWebBrowserPage(dlg) + return page