Preferences/__init__.py

branch
Py2 comp.
changeset 2550
e15087ddb41e
parent 2538
b2642e7a4c18
child 2552
1e893ea4e366
--- 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",

eric ide

mercurial