diff -r bd6070462f4c -r e15087ddb41e Preferences/__init__.py --- a/Preferences/__init__.py Mon Mar 25 18:29:15 2013 +0100 +++ b/Preferences/__init__.py Thu Mar 28 16:09:20 2013 +0100 @@ -21,6 +21,8 @@ import os import fnmatch import shutil +import json +import sys from PyQt4.QtCore import QDir, QPoint, QLocale, QSettings, QFileInfo, QCoreApplication, \ QByteArray, QSize, QUrl, Qt, QLibraryInfo @@ -131,7 +133,7 @@ # Numbers "ViewProfiles": { "edit": [ - # visibility (0) + # visibility (0) OBSOLETE [True, False, False, True, True, True, True, True, True, True, True, True], # saved state main window with dock windows (1) OBSOLETE @@ -152,7 +154,7 @@ [b"", b"", b"", b"", b"", b""], ], "debug": [ - # visibility (0) + # visibility (0) OBSOLETE [False, False, True, True, True, True, False, False, True, False, False, False], # saved state main window with dock windows (1) OBSOLETE @@ -173,6 +175,34 @@ [b"", b"", b"", b"", b"", b""], ], }, + "ViewProfiles2": { + "edit": [ + # saved state main window with toolbox windows (0) + QByteArray(), + # visibility of the toolboxes/sidebars (1) + # left, bottom, right + [True, True, True], + # saved states of the splitters and sidebars of the + # sidebars layout (2) + # left splitter, vertical splitter, left sidebar, bottom sidebar, + # right splitter, right sidebar + [QByteArray(), QByteArray(), QByteArray(), + QByteArray(), QByteArray(), QByteArray()], + ], + "debug": [ + # saved state main window with toolbox windows (0) + QByteArray(), + # visibility of the toolboxes/sidebars (1) + # left, bottom, right + [False, True, True], + # saved states of the splitters and sidebars of the + # sidebars layout (2) + # left splitter, vertical splitter, left sidebar, bottom sidebar, + # right splitter, right sidebar + [QByteArray(), QByteArray(), QByteArray(), + QByteArray(), QByteArray(), QByteArray()], + ], + }, "ToolbarManagerState": QByteArray(), "PreviewSplitterState": QByteArray(), "ShowSplash": True, @@ -1435,6 +1465,42 @@ else: viewProfiles = prefClass.uiDefaults["ViewProfiles"] return viewProfiles + elif key in "ViewProfiles2": + profiles = prefClass.settings.value("UI/ViewProfiles2") + if profiles is not None: + viewProfiles = {} + profiles = json.loads(profiles) + for name in ["edit", "debug"]: + viewProfiles[name] = [ + QByteArray.fromBase64(profiles[name][0].encode()), + profiles[name][1][:], + [] + ] + for bs in profiles[name][2]: + viewProfiles[name][2].append(QByteArray.fromBase64(bs.encode())) + else: + # migrate from the old ViewProfiles settings + try: + profiles = prefClass.settings.value("UI/ViewProfiles") + except TypeError: + profiles = None + if profiles is not None: + 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)) + else: + # use the defaults + viewProfiles = prefClass.uiDefaults["ViewProfiles2"] + # Remove unused setting in Python 2. Otherwise Eric 5.3 would get problems + if sys.version_info[0] == 2: + prefClass.settings.remove("UI/ViewProfiles") + return viewProfiles elif key in ["ToolbarManagerState", "PreviewSplitterState"]: state = prefClass.settings.value("UI/" + key) if state is not None: @@ -1461,6 +1527,17 @@ """ if key == "ViewProfiles": prefClass.settings.setValue("UI/" + key, value) + elif key == "ViewProfiles2": + profiles = {} + for name in ["edit", "debug"]: + profiles[name] = [ + bytes(value[name][0].toBase64()).decode(), + value[name][1][:], + [] + ] + for ba in value[name][2]: + profiles[name][2].append(bytes(ba.toBase64()).decode()) + prefClass.settings.setValue("UI/" + key, json.dumps(profiles)) elif key == "LogStdErrColour": prefClass.settings.setValue("UI/" + key, value.name()) elif key in ["ProxyPassword/Http", "ProxyPassword/Https",