[orca] Rework getting settings for non-active scripts



commit a515df74bd61489148d4e15cfcb0d35dbe142a55
Author: Joanmarie Diggs <jdiggs igalia com>
Date:   Wed Aug 26 12:55:10 2015 -0400

    Rework getting settings for non-active scripts

 src/orca/chat.py             |    2 +-
 src/orca/script.py           |   20 --------------------
 src/orca/settings_manager.py |   15 +++++++++++++++
 3 files changed, 16 insertions(+), 21 deletions(-)
---
diff --git a/src/orca/chat.py b/src/orca/chat.py
index e5ee478..95922be 100644
--- a/src/orca/chat.py
+++ b/src/orca/chat.py
@@ -583,7 +583,7 @@ class Chat:
         # Only speak/braille the new message if it matches how the user
         # wants chat messages spoken.
         #
-        verbosity = self._script.getSettings().chatMessageVerbosity
+        verbosity = _settingsManager.getAppSetting(self._script.app, 'chatMessageVerbosity')
         if orca_state.activeScript.name != self._script.name \
            and verbosity == settings.CHAT_SPEAK_ALL_IF_FOCUSED:
             return
diff --git a/src/orca/script.py b/src/orca/script.py
index 05ba265..546655b 100644
--- a/src/orca/script.py
+++ b/src/orca/script.py
@@ -310,26 +310,6 @@ class Script:
 
         _eventManager.deregisterScriptListeners(self)
 
-    def getSettings(self):
-        """Returns the settings associated with this script, regardless of
-        whether or not the script is active.
-        """
-
-        scriptSettings = settings
-        if orca_state.activeScript != self:
-            name = _scriptManager.getModuleName(self.app)
-            if name:
-                for package in _settingsManager.settingsPackages:
-                    name = package + "." + name
-                    try:
-                        module = importlib.import_module(name)
-                        imp.reload(module)
-                        scriptSettings = module.orca.settings
-                    except:
-                        pass
-
-        return scriptSettings
-
     # [[[WDW - There is a circular reference going on somewhere (see
     # bug 333168).  In the presence of this reference, the existence
     # of a __del__ method prevents the garbage collector from
diff --git a/src/orca/settings_manager.py b/src/orca/settings_manager.py
index b9ba804..f1e3762 100644
--- a/src/orca/settings_manager.py
+++ b/src/orca/settings_manager.py
@@ -518,6 +518,21 @@ class SettingsManager(object):
 
         return self._backend.availableProfiles()
 
+    def getAppSetting(self, app, settingName, fallbackOnDefault=True):
+        if not app:
+            return None
+
+        appPrefs = self._backend.getAppSettings(app.name)
+        profiles = appPrefs.get('profiles', {})
+        profilePrefs = profiles.get(self.profile, {})
+        general = profilePrefs.get('general', {})
+        appSetting = general.get(settingName)
+        if appSetting is None and fallbackOnDefault:
+            general = self._backend.getGeneral(self.profile)
+            appSetting = general.get(settingName)
+
+        return appSetting
+
     def loadAppSettings(self, script):
         """Load the users application specific settings for an app.
 


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