Preferences/__init__.py

changeset 2548
03c3840f887d
parent 2537
0ff250733d45
child 2549
9ba512aa7c67
--- a/Preferences/__init__.py	Mon Mar 25 18:27:06 2013 +0100
+++ b/Preferences/__init__.py	Wed Mar 27 13:23:59 2013 +0100
@@ -19,6 +19,7 @@
 import os
 import fnmatch
 import shutil
+import json
 
 from PyQt4.QtCore import QDir, QPoint, QLocale, QSettings, QFileInfo, QCoreApplication, \
     QByteArray, QSize, QUrl, Qt, QLibraryInfo
@@ -129,7 +130,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
@@ -150,7 +151,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
@@ -171,6 +172,32 @@
                     [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
+                ],
+        },
         "ToolbarManagerState": QByteArray(),
         "PreviewSplitterState": QByteArray(),
         "ShowSplash": True,
@@ -1433,6 +1460,39 @@
         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"]
+        return viewProfiles
     elif key in ["ToolbarManagerState", "PreviewSplitterState"]:
         state = prefClass.settings.value("UI/" + key)
         if state is not None:
@@ -1459,6 +1519,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",

eric ide

mercurial