--- a/Preferences/__init__.py Sun Feb 26 15:54:49 2017 +0100 +++ b/Preferences/__init__.py Fri Mar 03 18:34:21 2017 +0100 @@ -746,6 +746,8 @@ "DeterminePyFromProject": True, "TasksProjectAutoSave": True, "TasksProjectRescanOnOpen": True, + "DebugClientsHistory": [], + "DebuggerInterpreterHistory": [], } # defaults for the multi project settings @@ -1064,6 +1066,9 @@ "DownloadManagerSize": QSize(400, 300), "DownloadManagerPosition": QPoint(), "DownloadManagerDownloads": [], + # Spell Checking + "SpellCheckEnabled": False, + "SpellCheckLanguages": [], # Sync "SyncEnabled": False, "SyncBookmarks": True, @@ -1133,9 +1138,6 @@ QWebEngineSettings.AutoLoadImages), "JavaScriptCanOpenWindows": webEngineSettings.testAttribute( QWebEngineSettings.JavascriptCanOpenWindows), - # TODO: Qt 5.8? -## "JavaScriptCanCloseWindows": webEngineSettings.testAttribute( -## QWebEngineSettings.JavascriptCanCloseWindows), "JavaScriptCanAccessClipboard": webEngineSettings.testAttribute( QWebEngineSettings.JavascriptCanAccessClipboard), "PluginsEnabled": webEngineSettings.testAttribute( @@ -1173,6 +1175,18 @@ }) except AttributeError: pass + try: + # Qt 5.8+ + cls.webBrowserDefaults.update({ + "FocusOnNavigationEnabled": webEngineSettings.testAttribute( + QWebEngineSettings.FocusOnNavigationEnabled), + "PrintElementBackgrounds": webEngineSettings.testAttribute( + QWebEngineSettings.PrintElementBackgrounds), + "AllowRunningInsecureContent": webEngineSettings.testAttribute( + QWebEngineSettings.AllowRunningInsecureContent), + }) + except AttributeError: + pass cls.webEngineSettingsIntitialized = True @@ -1855,7 +1869,10 @@ return prefClass.uiDefaults[key] elif key in "ViewProfiles2": profiles = prefClass.settings.value("UI/ViewProfiles2") - if profiles is not None: + if profiles is None: + # use the defaults + viewProfiles = prefClass.uiDefaults["ViewProfiles2"] + else: viewProfiles = {} profiles = json.loads(profiles) for name in ["edit", "debug"]: @@ -1867,36 +1884,6 @@ for bs in profiles[name][2]: viewProfiles[name][2].append( QByteArray.fromBase64(bs.encode("utf-8"))) - else: - # migrate from the old ViewProfiles settings - try: - profiles = prefClass.settings.value("UI/ViewProfiles") - except TypeError: - profiles = None - if profiles is not None: - if isinstance(profiles, basestring): - profiles = eval(profiles) - viewProfiles = {} - for name in ["edit", "debug"]: - viewProfiles[name] = [ - QByteArray(profiles[name][4]), - profiles[name][5][:], - [] - ] - for b in profiles[name][6]: - viewProfiles[name][2].append(QByteArray(b)) - # correct some entries - while (len(viewProfiles[name][1]) < len( - prefClass.uiDefaults["ViewProfiles2"][name][1])): - viewProfiles[name][1].append(True) - while len(viewProfiles[name][2]) < len( - prefClass.uiDefaults["ViewProfiles2"][name][2]): - viewProfiles[name][2].append(QByteArray()) - else: - # use the defaults - viewProfiles = prefClass.uiDefaults["ViewProfiles2"] - # Remove unused setting - prefClass.settings.remove("UI/ViewProfiles") return viewProfiles elif key in ["ToolbarManagerState", "PreviewSplitterState"]: state = prefClass.settings.value("UI/" + key) @@ -2430,6 +2417,9 @@ if key in ["RecentNumber"]: return int(prefClass.settings.value( "Project/" + key, prefClass.projectDefaults[key])) + elif key in ["DebugClientsHistory", "DebuggerInterpreterHistory"]: + return toList(prefClass.settings.value( + "Project/" + key, prefClass.projectDefaults[key])) else: return toBool(prefClass.settings.value( "Project/" + key, prefClass.projectDefaults[key])) @@ -2443,7 +2433,14 @@ @param value the value to be set @param prefClass preferences class used as the storage area """ - prefClass.settings.setValue("Project/" + key, value) + if key in ["DebugClientsHistory", "DebuggerInterpreterHistory"]: + # max. list sizes is hard coded to 20 entries + newList = [v for v in value if v] + if len(newList) > 20: + newList = newList[:20] + prefClass.settings.setValue("Project/" + key, newList) + else: + prefClass.settings.setValue("Project/" + key, value) def getProjectBrowserFlags(key, prefClass=Prefs): @@ -2871,12 +2868,15 @@ "AdBlockEnabled", "AdBlockUseLimitedEasyList", "PluginsEnabled", "FullScreenSupportEnabled", "AutoScrollEnabled", "ScreenCaptureEnabled", - "WebGLEnabled", + "WebGLEnabled", "FocusOnNavigationEnabled", + "PrintElementBackgrounds", "AllowRunningInsecureContent", + "SpellCheckEnabled", ]: return toBool(prefClass.settings.value( "WebBrowser/" + key, prefClass.webBrowserDefaults[key])) elif key in ["GreaseMonkeyDisabledScripts", "SendRefererWhitelist", "AdBlockSubscriptions", "AdBlockExceptions", + "SpellCheckLanguages", ]: return toList(prefClass.settings.value( "WebBrowser/" + key, prefClass.webBrowserDefaults[key]))