diff -r a22eee00b052 -r ab0a91b82b37 eric6/Preferences/__init__.py --- a/eric6/Preferences/__init__.py Sat Aug 31 12:58:11 2019 +0200 +++ b/eric6/Preferences/__init__.py Sun Sep 01 17:43:03 2019 +0200 @@ -28,11 +28,6 @@ QCoreApplication, QByteArray, QSize, QUrl, Qt, QLibraryInfo, QDateTime from PyQt5.QtGui import QColor, QFont, QPalette from PyQt5.QtWidgets import QApplication -from PyQt5.QtNetwork import QNetworkRequest -try: - from PyQt5.QtWebKit import QWebSettings -except ImportError: - QWebSettings = None try: from PyQt5.QtWebEngineWidgets import QWebEngineSettings except ImportError: @@ -49,12 +44,8 @@ ResourcesBrowserFlag, TranslationsBrowserFlag, InterfacesBrowserFlag, \ OthersBrowserFlag, ProtocolsBrowserFlag, AllBrowsersFlag -try: - from Helpviewer.FlashCookieManager.FlashCookieUtilities import \ - flashDataPathForOS -except ImportError: - from WebBrowser.FlashCookieManager.FlashCookieUtilities import \ - flashDataPathForOS +from WebBrowser.FlashCookieManager.FlashCookieUtilities import \ + flashDataPathForOS from QScintilla.Shell import ShellHistoryStyle @@ -881,7 +872,6 @@ "CustomViewer": "", "PythonDocDir": "", "Python2DocDir": "", - "QtDocDir": "", "Qt4DocDir": "", "Qt5DocDir": "", "PyQt4DocDir": "", @@ -889,186 +879,91 @@ "PySideDocDir": "", "PySide2DocDir": "", "EricDocDir": "", - "SingleHelpWindow": True, - "SaveGeometry": True, - "HelpViewerState": QByteArray(), - "WebSearchSuggestions": True, - "WebSearchEngine": "Google", - "WebSearchKeywords": [], # array of two tuples (keyword, - # search engine name) - "DiskCacheEnabled": True, - "DiskCacheSize": 50, # 50 MB - "CachePolicy": QNetworkRequest.PreferNetwork, - "AcceptCookies": 2, # CookieJar.AcceptOnlyFromSitesNavigatedTo - "KeepCookiesUntil": 0, # CookieJar.KeepUntilExpire - "FilterTrackingCookies": True, - "PrintBackgrounds": False, - "StartupBehavior": 1, # show speed dial - "HomePage": "eric:home", - "HistoryLimit": 30, - "DefaultScheme": "https://", - "OfflineStorageDatabaseQuota": 50, # 50 MB - "UserAgent": "", - "ShowPreview": True, - "DownloadManagerRemovePolicy": 0, # never delete downloads - "DownloadManagerSize": QSize(400, 300), - "DownloadManagerPosition": QPoint(), - "DownloadManagerDownloads": [], - "AccessKeysEnabled": True, - "SearchLanguage": QLocale().language(), - "DoNotTrack": False, - "SendReferer": True, - "SendRefererWhitelist": ["qt-apps.org", "kde-apps.org"], - "NoCacheHosts": ["qt-project.org"], - "RssFeeds": [], - "WarnOnMultipleClose": True, - "ZoomValuesDB": "{}", # empty JSON dictionary - # VirusTotal - "VirusTotalEnabled": False, - "VirusTotalServiceKey": "", - "VirusTotalSecure": True, - # AdBlock - "AdBlockEnabled": False, - "AdBlockSubscriptions": [], - "AdBlockUpdatePeriod": 1, - "AdBlockExceptions": [], - # Sync - "SyncEnabled": False, - "SyncBookmarks": True, - "SyncHistory": True, - "SyncPasswords": False, - "SyncUserAgents": True, - "SyncSpeedDial": True, - "SyncEncryptData": False, - "SyncEncryptionKey": "", - "SyncEncryptionKeyLength": 32, # 16, 24 or 32 - "SyncEncryptPasswordsOnly": False, - "SyncType": 0, - "SyncFtpServer": "", - "SyncFtpUser": "", - "SyncFtpPassword": "", - "SyncFtpPath": "", - "SyncFtpPort": 21, - "SyncFtpIdleTimeout": 30, - "SyncDirectoryPath": "", - # Click-to-Flash - "ClickToFlashEnabled": False, - "ClickToFlashWhitelist": [], - # PIM - "PimFullName": "", - "PimFirstName": "", - "PimLastName": "", - "PimEmail": "", - "PimPhone": "", - "PimMobile": "", - "PimAddress": "", - "PimCity": "", - "PimZip": "", - "PimState": "", - "PimCountry": "", - "PimHomePage": "", - "PimSpecial1": "", - "PimSpecial2": "", - "PimSpecial3": "", - "PimSpecial4": "", - # Grease Monkey - "GreaseMonkeyDisabledScripts": [], - # Flash Cookie Manager - "FlashCookiesDeleteOnStartExit": False, - "FlashCookieAutoRefresh": False, - "FlashCookieNotify": False, - "FlashCookiesWhitelist": [], - "FlashCookiesBlacklist": [], - "FlashCookiesDataPath": flashDataPathForOS(), } - if QWebSettings: - helpDefaults["HelpViewerType"] = 1 # eric browser - else: - helpDefaults["HelpViewerType"] = 2 # Qt Assistant - - @classmethod - def initWebSettingsDefaults(cls): - """ - Class method to initialize the web settings related defaults. - """ - if QWebSettings is None: - return - - websettings = QWebSettings.globalSettings() - fontFamily = websettings.fontFamily(QWebSettings.StandardFont) - fontSize = websettings.fontSize(QWebSettings.DefaultFontSize) - cls.helpDefaults["StandardFont"] = \ - QFont(fontFamily, fontSize).toString() - fontFamily = websettings.fontFamily(QWebSettings.FixedFont) - fontSize = websettings.fontSize(QWebSettings.DefaultFixedFontSize) - cls.helpDefaults["FixedFont"] = QFont(fontFamily, fontSize).toString() - cls.helpDefaults.update({ - "AutoLoadImages": - websettings.testAttribute(QWebSettings.AutoLoadImages), - "UserStyleSheet": "", - "SaveUrlColor": QColor(248, 248, 210), - "JavaEnabled": - websettings.testAttribute(QWebSettings.JavaEnabled), - "JavaScriptEnabled": - websettings.testAttribute(QWebSettings.JavascriptEnabled), - "JavaScriptCanOpenWindows": - websettings.testAttribute( - QWebSettings.JavascriptCanOpenWindows), - "JavaScriptCanCloseWindows": - websettings.testAttribute( - QWebSettings.JavascriptCanCloseWindows), - "JavaScriptCanAccessClipboard": - websettings.testAttribute( - QWebSettings.JavascriptCanAccessClipboard), - "PluginsEnabled": - websettings.testAttribute(QWebSettings.PluginsEnabled), - "OfflineStorageDatabaseEnabled": - websettings.testAttribute( - QWebSettings.OfflineStorageDatabaseEnabled), - }) - if hasattr(QWebSettings, "OfflineWebApplicationCacheEnabled"): - cls.helpDefaults.update({ - "OfflineWebApplicationCacheEnabled": - websettings.testAttribute( - QWebSettings.OfflineWebApplicationCacheEnabled), - "OfflineWebApplicationCacheQuota": 50, # 50 MB - }) - if hasattr(QWebSettings, "LocalStorageEnabled"): - cls.helpDefaults["LocalStorageEnabled"] = \ - websettings.testAttribute(QWebSettings.LocalStorageEnabled) - if hasattr(QWebSettings, "DnsPrefetchEnabled"): - cls.helpDefaults["DnsPrefetchEnabled"] = \ - websettings.testAttribute(QWebSettings.DnsPrefetchEnabled) - if hasattr(QWebSettings, "defaultTextEncoding"): - cls.helpDefaults["DefaultTextEncoding"] = \ - websettings.defaultTextEncoding() - if hasattr(QWebSettings, "SpatialNavigationEnabled"): - cls.helpDefaults["SpatialNavigationEnabled"] = \ - websettings.testAttribute( - QWebSettings.SpatialNavigationEnabled) - if hasattr(QWebSettings, "LinksIncludedInFocusChain"): - cls.helpDefaults["LinksIncludedInFocusChain"] = \ - websettings.testAttribute( - QWebSettings.LinksIncludedInFocusChain) - if hasattr(QWebSettings, "LocalContentCanAccessRemoteUrls"): - cls.helpDefaults["LocalContentCanAccessRemoteUrls"] = \ - websettings.testAttribute( - QWebSettings.LocalContentCanAccessRemoteUrls) - if hasattr(QWebSettings, "LocalContentCanAccessFileUrls"): - cls.helpDefaults["LocalContentCanAccessFileUrls"] = \ - websettings.testAttribute( - QWebSettings.LocalContentCanAccessFileUrls) - if hasattr(QWebSettings, "XSSAuditingEnabled"): - cls.helpDefaults["XSSAuditingEnabled"] = \ - websettings.testAttribute(QWebSettings.XSSAuditingEnabled) - if hasattr(QWebSettings, "SiteSpecificQuirksEnabled"): - cls.helpDefaults["SiteSpecificQuirksEnabled"] = \ - websettings.testAttribute( - QWebSettings.SiteSpecificQuirksEnabled) - - cls.webSettingsIntitialized = True - - webSettingsIntitialized = False +## +## @classmethod +## def initWebSettingsDefaults(cls): +## """ +## Class method to initialize the web settings related defaults. +## """ +## if QWebSettings is None: +## return +## +## websettings = QWebSettings.globalSettings() +## fontFamily = websettings.fontFamily(QWebSettings.StandardFont) +## fontSize = websettings.fontSize(QWebSettings.DefaultFontSize) +## cls.helpDefaults["StandardFont"] = \ +## QFont(fontFamily, fontSize).toString() +## fontFamily = websettings.fontFamily(QWebSettings.FixedFont) +## fontSize = websettings.fontSize(QWebSettings.DefaultFixedFontSize) +## cls.helpDefaults["FixedFont"] = QFont(fontFamily, fontSize).toString() +## cls.helpDefaults.update({ +## "AutoLoadImages": +## websettings.testAttribute(QWebSettings.AutoLoadImages), +## "UserStyleSheet": "", +## "SaveUrlColor": QColor(248, 248, 210), +## "JavaEnabled": +## websettings.testAttribute(QWebSettings.JavaEnabled), +## "JavaScriptEnabled": +## websettings.testAttribute(QWebSettings.JavascriptEnabled), +## "JavaScriptCanOpenWindows": +## websettings.testAttribute( +## QWebSettings.JavascriptCanOpenWindows), +## "JavaScriptCanCloseWindows": +## websettings.testAttribute( +## QWebSettings.JavascriptCanCloseWindows), +## "JavaScriptCanAccessClipboard": +## websettings.testAttribute( +## QWebSettings.JavascriptCanAccessClipboard), +## "PluginsEnabled": +## websettings.testAttribute(QWebSettings.PluginsEnabled), +## "OfflineStorageDatabaseEnabled": +## websettings.testAttribute( +## QWebSettings.OfflineStorageDatabaseEnabled), +## }) +## if hasattr(QWebSettings, "OfflineWebApplicationCacheEnabled"): +## cls.helpDefaults.update({ +## "OfflineWebApplicationCacheEnabled": +## websettings.testAttribute( +## QWebSettings.OfflineWebApplicationCacheEnabled), +## "OfflineWebApplicationCacheQuota": 50, # 50 MB +## }) +## if hasattr(QWebSettings, "LocalStorageEnabled"): +## cls.helpDefaults["LocalStorageEnabled"] = \ +## websettings.testAttribute(QWebSettings.LocalStorageEnabled) +## if hasattr(QWebSettings, "DnsPrefetchEnabled"): +## cls.helpDefaults["DnsPrefetchEnabled"] = \ +## websettings.testAttribute(QWebSettings.DnsPrefetchEnabled) +## if hasattr(QWebSettings, "defaultTextEncoding"): +## cls.helpDefaults["DefaultTextEncoding"] = \ +## websettings.defaultTextEncoding() +## if hasattr(QWebSettings, "SpatialNavigationEnabled"): +## cls.helpDefaults["SpatialNavigationEnabled"] = \ +## websettings.testAttribute( +## QWebSettings.SpatialNavigationEnabled) +## if hasattr(QWebSettings, "LinksIncludedInFocusChain"): +## cls.helpDefaults["LinksIncludedInFocusChain"] = \ +## websettings.testAttribute( +## QWebSettings.LinksIncludedInFocusChain) +## if hasattr(QWebSettings, "LocalContentCanAccessRemoteUrls"): +## cls.helpDefaults["LocalContentCanAccessRemoteUrls"] = \ +## websettings.testAttribute( +## QWebSettings.LocalContentCanAccessRemoteUrls) +## if hasattr(QWebSettings, "LocalContentCanAccessFileUrls"): +## cls.helpDefaults["LocalContentCanAccessFileUrls"] = \ +## websettings.testAttribute( +## QWebSettings.LocalContentCanAccessFileUrls) +## if hasattr(QWebSettings, "XSSAuditingEnabled"): +## cls.helpDefaults["XSSAuditingEnabled"] = \ +## websettings.testAttribute(QWebSettings.XSSAuditingEnabled) +## if hasattr(QWebSettings, "SiteSpecificQuirksEnabled"): +## cls.helpDefaults["SiteSpecificQuirksEnabled"] = \ +## websettings.testAttribute( +## QWebSettings.SiteSpecificQuirksEnabled) +## +## cls.webSettingsIntitialized = True +## +## webSettingsIntitialized = False # defaults for the web browser settings webBrowserDefaults = { @@ -1166,9 +1061,34 @@ "AdBlockUpdatePeriod": 1, "AdBlockExceptions": [], "AdBlockUseLimitedEasyList": True, - # Flash Cookie Manager: identical to helpDefaults + # Flash Cookie Manager + "FlashCookiesDeleteOnStartExit": False, + "FlashCookieAutoRefresh": False, + "FlashCookieNotify": False, + "FlashCookiesWhitelist": [], + "FlashCookiesBlacklist": [], + "FlashCookiesDataPath": flashDataPathForOS(), # PIM: identical to helpDefaults - # VirusTotal: identical to helpDefaults + "PimFullName": "", + "PimFirstName": "", + "PimLastName": "", + "PimEmail": "", + "PimPhone": "", + "PimMobile": "", + "PimAddress": "", + "PimCity": "", + "PimZip": "", + "PimState": "", + "PimCountry": "", + "PimHomePage": "", + "PimSpecial1": "", + "PimSpecial2": "", + "PimSpecial3": "", + "PimSpecial4": "", + # VirusTotal: + "VirusTotalEnabled": False, + "VirusTotalServiceKey": "", + "VirusTotalSecure": True, # Sessions "SessionAutoSave": True, "SessionAutoSaveInterval": 15, # interval in seconds @@ -2764,124 +2684,9 @@ @param prefClass preferences class used as the storage area @return the requested help setting """ - if not prefClass.webSettingsIntitialized: - prefClass.initWebSettingsDefaults() - - if key in ["StandardFont", "FixedFont"]: - f = QFont() - f.fromString(prefClass.settings.value( - "Help/" + key, prefClass.helpDefaults[key])) - return f - elif key in ["SaveUrlColor"]: - col = prefClass.settings.value("Help/" + key) - if col is not None: - return QColor(col) - else: - return prefClass.helpDefaults[key] - elif key in ["WebSearchKeywords"]: - # return a list of tuples of (keyword, engine name) - keywords = [] - size = prefClass.settings.beginReadArray("Help/" + key) - for index in range(size): - prefClass.settings.setArrayIndex(index) - keyword = prefClass.settings.value("Keyword") - engineName = prefClass.settings.value("Engine") - keywords.append((keyword, engineName)) - prefClass.settings.endArray() - return keywords - elif key == "DownloadManagerDownloads": - # return a list of tuples of (URL, save location, done flag, page url, - # date/time downloaded) - downloads = [] - length = prefClass.settings.beginReadArray("Help/" + key) - for index in range(length): - prefClass.settings.setArrayIndex(index) - url = prefClass.settings.value("URL") - if url is None: - url = QUrl() - location = prefClass.settings.value("Location") - done = toBool(prefClass.settings.value("Done")) - pageUrl = prefClass.settings.value("PageURL") - if pageUrl is None: - pageUrl = QUrl() - downloaded = prefClass.settings.value("Downloaded") - if downloaded is None: - downloaded = QDateTime() - else: - downloaded = QDateTime.fromString( - downloaded, "yyyy-MM-dd hh:mm:ss") - downloads.append((url, location, done, pageUrl, downloaded)) - prefClass.settings.endArray() - return downloads - elif key == "RssFeeds": - # return a list of tuples of (URL, title, icon) - feeds = [] - length = prefClass.settings.beginReadArray("Help/" + key) - for index in range(length): - prefClass.settings.setArrayIndex(index) - url = prefClass.settings.value("URL") - title = prefClass.settings.value("Title") - icon = prefClass.settings.value("Icon") - feeds.append((url, title, icon)) - prefClass.settings.endArray() - return feeds - elif key in ["SyncFtpPassword", "SyncEncryptionKey"]: - from Utilities.crypto import pwConvert - return pwConvert(prefClass.settings.value( - "Help/" + key, prefClass.helpDefaults[key]), encode=False) - elif key == "HelpViewerType": - # special treatment to adjust for missing QtWebKit if eric web browser - # was selected - value = int(prefClass.settings.value( - "Help/" + key, prefClass.helpDefaults[key])) - if value == 1 and QWebSettings is None: - value = prefClass.helpDefaults[key] - return value - elif key in ["DiskCacheSize", "AcceptCookies", - "KeepCookiesUntil", "StartupBehavior", "HistoryLimit", - "OfflineStorageDatabaseQuota", - "OfflineWebApplicationCacheQuota", "CachePolicy", - "DownloadManagerRemovePolicy", "AdBlockUpdatePeriod", - "SearchLanguage", "SyncType", "SyncFtpPort", - "SyncFtpIdleTimeout", "SyncEncryptionKeyLength", - ]: - return int(prefClass.settings.value( - "Help/" + key, prefClass.helpDefaults[key])) - elif key in ["SingleHelpWindow", "SaveGeometry", "WebSearchSuggestions", - "DiskCacheEnabled", "FilterTrackingCookies", - "PrintBackgrounds", "AdBlockEnabled", "AutoLoadImages", - "JavaEnabled", "JavaScriptEnabled", - "JavaScriptCanOpenWindows", "JavaScriptCanCloseWindows", - "JavaScriptCanAccessClipboard", - "PluginsEnabled", "DnsPrefetchEnabled", - "OfflineStorageDatabaseEnabled", - "OfflineWebApplicationCacheEnabled", "LocalStorageEnabled", - "ShowPreview", "AccessKeysEnabled", "VirusTotalEnabled", - "VirusTotalSecure", "DoNotTrack", "SendReferer", - "SpatialNavigationEnabled", "LinksIncludedInFocusChain", - "LocalContentCanAccessRemoteUrls", - "LocalContentCanAccessFileUrls", "XSSAuditingEnabled", - "SiteSpecificQuirksEnabled", "SyncEnabled", "SyncBookmarks", - "SyncHistory", "SyncPasswords", "SyncUserAgents", - "SyncSpeedDial", "SyncEncryptData", - "SyncEncryptPasswordsOnly", - "WarnOnMultipleClose", "ClickToFlashEnabled", - "FlashCookiesDeleteOnStartExit", "FlashCookieAutoRefresh", - "FlashCookieNotify", - ]: - return toBool(prefClass.settings.value( - "Help/" + key, prefClass.helpDefaults[key])) - elif key in ["AdBlockSubscriptions", "AdBlockExceptions", - "ClickToFlashWhitelist", "SendRefererWhitelist", - "GreaseMonkeyDisabledScripts", "NoCacheHosts", - "FlashCookiesWhitelist", "FlashCookiesBlacklist", - ]: - return toList(prefClass.settings.value( - "Help/" + key, prefClass.helpDefaults[key])) - else: - return prefClass.settings.value("Help/" + key, - prefClass.helpDefaults[key]) - + return prefClass.settings.value("Help/" + key, + prefClass.helpDefaults[key]) + def setHelp(key, value, prefClass=Prefs): """ @@ -2891,56 +2696,7 @@ @param value the value to be set @param prefClass preferences class used as the storage area """ - if key in ["StandardFont", "FixedFont"]: - prefClass.settings.setValue("Help/" + key, value.toString()) - elif key == "SaveUrlColor": - prefClass.settings.setValue("Help/" + key, value.name()) - elif key == "WebSearchKeywords": - # value is list of tuples of (keyword, engine name) - prefClass.settings.remove("Help/" + key) - prefClass.settings.beginWriteArray("Help/" + key, len(value)) - index = 0 - for v in value: - prefClass.settings.setArrayIndex(index) - prefClass.settings.setValue("Keyword", v[0]) - prefClass.settings.setValue("Engine", v[1]) - index += 1 - prefClass.settings.endArray() - elif key == "DownloadManagerDownloads": - # value is list of tuples of (URL, save location, done flag, page url, - # date/time downloaded) - prefClass.settings.remove("Help/" + key) - prefClass.settings.beginWriteArray("Help/" + key, len(value)) - index = 0 - for v in value: - prefClass.settings.setArrayIndex(index) - prefClass.settings.setValue("URL", v[0]) - prefClass.settings.setValue("Location", v[1]) - prefClass.settings.setValue("Done", v[2]) - prefClass.settings.setValue("PageURL", v[3]) - prefClass.settings.setValue( - "Downloaded", v[4].toString("yyyy-MM-dd hh:mm:ss")) - index += 1 - prefClass.settings.endArray() - elif key == "RssFeeds": - # value is list of tuples of (URL, title, icon) - prefClass.settings.remove("Help/" + key) - prefClass.settings.beginWriteArray("Help/" + key, len(value)) - index = 0 - for v in value: - prefClass.settings.setArrayIndex(index) - prefClass.settings.setValue("URL", v[0]) - prefClass.settings.setValue("Title", v[1]) - prefClass.settings.setValue("Icon", v[2]) - prefClass.settings.setValue("Downloaded", v[4]) - index += 1 - prefClass.settings.endArray() - elif key in ["SyncFtpPassword", "SyncEncryptionKey"]: - from Utilities.crypto import pwConvert - prefClass.settings.setValue( - "Help/" + key, pwConvert(value, encode=True)) - else: - prefClass.settings.setValue("Help/" + key, value) + prefClass.settings.setValue("Help/" + key, value) def getWebBrowser(key, prefClass=Prefs): @@ -2951,11 +2707,6 @@ @param prefClass preferences class used as the storage area @return the requested help setting """ - # the following entries are identical to the ones of the QtWebKit based - # help viewer and are being redirected there - if key.startswith(("FlashCookie", "Pim", "VirusTotal")): - return getHelp(key, prefClass) - # Web inspector stuff must come before initializing web engine settings # because that starts the chromium web process if key == "WebInspectorPort": @@ -3083,11 +2834,14 @@ "DownloadManagerAutoOpen", "DownloadManagerAutoClose", "PlaybackRequiresUserGesture", "JavaScriptCanPaste", "WebRTCPublicInterfacesOnly", "DnsPrefetchEnabled", + "FlashCookiesDeleteOnStartExit", "FlashCookieAutoRefresh", + "FlashCookieNotify", "VirusTotalEnabled", "VirusTotalSecure", ]: return toBool(prefClass.settings.value( "WebBrowser/" + key, prefClass.webBrowserDefaults[key])) elif key in ["GreaseMonkeyDisabledScripts", "SendRefererWhitelist", "AdBlockSubscriptions", "AdBlockExceptions", + "FlashCookiesWhitelist", "FlashCookiesBlacklist", "SpellCheckLanguages", ]: return toList(prefClass.settings.value( @@ -3114,11 +2868,6 @@ @param value the value to be set @param prefClass preferences class used as the storage area """ - # the following entries are identical to the ones of the QtWebKit based - # help viewer and are being redirected there - if key.startswith(("FlashCookie", "Pim", "VirusTotal")): - setHelp(key, value, prefClass) - if key in ["StandardFont", "FixedFont"]: prefClass.settings.setValue("WebBrowser/" + key, value.toString()) elif key == "SaveUrlColor":