[orca/new-settings] Changed the copy of dictionaries from reference to copy (a few more left behind).



commit d82aa69a47c1bebc0aa3168c916c316834738981
Author: Juanje Ojeda <jojeda emergya es>
Date:   Mon Nov 1 18:05:01 2010 +0100

    Changed the copy of dictionaries from reference to copy (a few more left behind).

 src/orca/backends/yaml_backend.py |   19 +++++++++++++------
 1 files changed, 13 insertions(+), 6 deletions(-)
---
diff --git a/src/orca/backends/yaml_backend.py b/src/orca/backends/yaml_backend.py
index 9148b89..f2d8829 100644
--- a/src/orca/backends/yaml_backend.py
+++ b/src/orca/backends/yaml_backend.py
@@ -84,10 +84,10 @@ class Backend:
         """ Load from config file all settings """
         settingsFile = open(self.settingsFile)
         prefs = load(settingsFile)
-        self.general = prefs['general']
+        self.general = prefs['general'].copy()
         self.pronunciations = prefs['pronunciations']
         self.keybindings = prefs['keybindings']
-        self.profiles = prefs['profiles']
+        self.profiles = prefs['profiles'].copy()
 
     def getGeneral(self, profile='default'):
         """ Get general settings from default settings and
@@ -129,21 +129,28 @@ class Backend:
         generalSettings = self.getGeneral()
         return generalSettings.get('firstStart', True)
 
+    def _setProfileKey(self, key, value):
+        self.general[key] = value
+
+        with open(self.settingsFile, 'r+') as settingsFile:
+            prefs = load(settingsFile)
+            prefs['general'][key] = value
+            dump(prefs, settingsFile)
+
     def setFirstStart(self, value=False):
         """Set firstStart. This user-configurable settting is primarily
         intended to serve as an indication as to whether or not initial
         configuration is needed."""
-
-        self._getSettings()
         self.general['firstStart'] = value
+        self._setProfileKey('firstStart', value)
 
     def availableProfiles(self):
-        """ List available profiles. DEPRECATED? """
+        """ List available profiles. """
         self._getSettings()
         profiles = []
 
         for profileName in self.profiles.keys():
-            profileDict = self.profiles[profileName]
+            profileDict = self.profiles[profileName].copy()
             profiles.append(profileDict.get('profile'))
 
         return profiles



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]