def _getVoiceSettings(self, profile, app=None): voiceSettings = {} if app is not None and app != '': appSpecific = True else: appSpecific = False for voice in ['default', 'uppercase', 'hyperlink', 'system']: if appSpecific == True: voiceGSettings = Settings( schema_id='org.gnome.orca.voice', path='/org/gnome/orca/profile/%s/app/%s/voice/%s/' % (profile, app, voice)) voiceGSettingsFamily = Settings( schema_id='org.gnome.orca.voice.family', path='/org/gnome/orca/profile/%s/app/%s/voice/%s/' % (profile, app, voice)) else: voiceGSettings = Settings( schema_id='org.gnome.orca.voice', path='/org/gnome/orca/profile/%s/voice/%s/' % (profile, voice)) voiceGSettingsFamily = Settings( schema_id='org.gnome.orca.voice.family', path='/org/gnome/orca/profile/%s/voice/%s/' % (profile, voice)) # Used to quickly determine whether a voice's settings have been # set and are different from the defaults voiceEstablished = voiceGSettings.get_boolean('established') voiceSetting = {} voiceSettingFamily = {} if appSpecific == False and self.voiceDefaults.__contains__(voice): voiceSetting = self.voiceDefaults[voice].copy() if voiceEstablished == True: if appSpecific == False and voiceSetting.__contains__( 'established'): voiceSetting.pop('established') for setting in ['average-pitch', 'gain', 'rate']: if voiceGSettings.get_user_value(setting) is not None: gSettingsVal = voiceGSettings.get_double(setting) debug.println( debug.LEVEL_FINEST, 'INFO: GSettings backend: Getting voice setting for voice %s with name %s = %s' % (voice, setting, gSettingsVal)) voiceSetting[setting] = gSettingsVal if voiceGSettingsFamily.get_boolean('family-set') == True: for setting in ['name', 'locale', 'dialect']: gSettingsVal = voiceGSettingsFamily.get_string(setting) debug.println( debug.LEVEL_FINEST, 'INFO: GSettings backend: Getting voice family setting for voice %s with name %s = %s' % (voice, setting, gSettingsVal)) voiceSettingFamily[setting] = gSettingsVal voiceSetting['family'] = voiceSettingFamily # The JSON backend uses acss the same way, not sure why, so will # just duplicate here to be compatible. if voiceSetting != {}: if appSpecific == True: voiceSettings[voice] = voiceSetting else: voiceSettings[voice] = acss.ACSS(voiceSetting) return voiceSettings
def _getGeneralSettings(self, profile, app=None): generalSettings = {} if app is not None and app != '': generalGSettings = Settings( schema_id='org.gnome.orca.general', path='/org/gnome/orca/profile/%s/app/%s/' % (profile, app)) appSpecificGSettings = Settings( schema_id='org.gnome.orca.general.app', path='/org/gnome/orca/profile/%s/app/%s/' % (profile, app)) speechGeneralGSettings = Settings( schema_id='org.gnome.orca.general.speech', path='/org/gnome/orca/profile/%s/app/%s/' % (profile, app)) brailleGeneralGSettings = Settings( schema_id='org.gnome.orca.general.braille', path='/org/gnome/orca/profile/%s/app/%s/' % (profile, app)) soundGeneralGSettings = Settings( schema_id='org.gnome.orca.general.sound', path='/org/gnome/orca/profile/%s/app/%s/' % (profile, app)) appSpecific = True else: generalGSettings = Settings(schema_id='org.gnome.orca.general', path='/org/gnome/orca/profile/%s/' % profile) speechGeneralGSettings = Settings( schema_id='org.gnome.orca.general.speech', path='/org/gnome/orca/profile/%s/' % profile) brailleGeneralGSettings = Settings( schema_id='org.gnome.orca.general.braille', path='/org/gnome/orca/profile/%s/' % profile) soundGeneralGSettings = Settings( schema_id='org.gnome.orca.general.sound', path='/org/gnome/orca/profile/%s/' % profile) appSpecific = False for setting in orcaToGSettingsMapGeneral.keys(): gSetting = orcaToGSettingsMapGeneral.get(setting) gSettingName = gSetting[0] gSettingType = gSetting[1] # GSettings will always return a value, even if the user has not # Set one, but if a setting is not set for an app, we don't want # to set anything, so the global setting is used, which may be # different from the default. if appSpecific == True: if generalGSettings.get_user_value(gSettingName) is not None: gSettingsVal = self._getGSetting(generalGSettings, gSettingName, gSettingType) debug.println( debug.LEVEL_FINEST, 'INFO: GSettings backend: Getting %s of type %s = %s' % (gSettingName, gSettingType, gSettingsVal)) generalSettings[setting] = gSettingsVal else: gSettingsVal = self._getGSetting(generalGSettings, gSettingName, gSettingType) debug.println( debug.LEVEL_FINEST, 'INFO: GSettings backend: Getting %s of type %s = %s' % (gSettingName, gSettingType, gSettingsVal)) generalSettings[setting] = gSettingsVal for setting in orcaToGSettingsMapGeneralSpeech.keys(): gSetting = orcaToGSettingsMapGeneralSpeech.get(setting) gSettingName = gSetting[0] gSettingType = gSetting[1] # GSettings will always return a value, even if the user has not # Set one, but if a setting is not set for an app, we don't want # to set anything, so the global setting is used, which may be # different from the default. if appSpecific == True: if speechGeneralGSettings.get_user_value( gSettingName) is not None: gSettingsVal = self._getGSetting(speechGeneralGSettings, gSettingName, gSettingType) debug.println( debug.LEVEL_FINEST, 'INFO: GSettings backend: Getting %s of type %s = %s' % (gSettingName, gSettingType, gSettingsVal)) generalSettings[setting] = gSettingsVal else: gSettingsVal = self._getGSetting(speechGeneralGSettings, gSettingName, gSettingType) debug.println( debug.LEVEL_FINEST, 'INFO: GSettings backend: Getting %s of type %s = %s' % (gSettingName, gSettingType, gSettingsVal)) generalSettings[setting] = gSettingsVal for setting in orcaToGSettingsMapGeneralSound.keys(): gSetting = orcaToGSettingsMapGeneralSound.get(setting) gSettingName = gSetting[0] gSettingType = gSetting[1] # GSettings will always return a value, even if the user has not # Set one, but if a setting is not set for an app, we don't want # to set anything, so the global setting is used, which may be # different from the default. if appSpecific == True: if soundGeneralGSettings.get_user_value( gSettingName) is not None: gSettingsVal = self._getGSetting(soundGeneralGSettings, gSettingName, gSettingType) debug.println( debug.LEVEL_FINEST, 'INFO: GSettings backend: Getting %s of type %s = %s' % (gSettingName, gSettingType, gSettingsVal)) generalSettings[setting] = gSettingsVal else: gSettingsVal = self._getGSetting(soundGeneralGSettings, gSettingName, gSettingType) debug.println( debug.LEVEL_FINEST, 'INFO: GSettings backend: Getting %s of type %s = %s' % (gSettingName, gSettingType, gSettingsVal)) generalSettings[setting] = gSettingsVal for setting in orcaToGSettingsMapGeneralBraille.keys(): gSetting = orcaToGSettingsMapGeneralBraille.get(setting) gSettingName = gSetting[0] gSettingType = gSetting[1] # GSettings will always return a value, even if the user has not # Set one, but if a setting is not set for an app, we don't want # to set anything, so the global setting is used, which may be # different from the default. if appSpecific == True: if brailleGeneralGSettings.get_user_value( gSettingName) is not None: gSettingsVal = self._getGSetting(brailleGeneralGSettings, gSettingName, gSettingType) debug.println( debug.LEVEL_FINEST, 'INFO: GSettings backend: Getting %s of type %s = %s' % (gSettingName, gSettingType, gSettingsVal)) generalSettings[setting] = gSettingsVal else: gSettingsVal = self._getGSetting(brailleGeneralGSettings, gSettingName, gSettingType) debug.println( debug.LEVEL_FINEST, 'INFO: GSettings backend: Getting %s of type %s = %s' % (gSettingName, gSettingType, gSettingsVal)) generalSettings[setting] = gSettingsVal if appSpecific == True: for setting in orcaToGSettingsMapGeneralApp.keys(): gSetting = orcaToGSettingsMapGeneralApp.get(setting) gSettingName = gSetting[0] gSettingType = gSetting[1] if appSpecificGSettings.get_user_value( gSettingName) is not None: gSettingsVal = self._getGSetting(appSpecificGSettings, gSettingName, gSettingType) debug.println( debug.LEVEL_FINEST, 'INFO: GSettings backend: Getting %s of type %s = %s' % (gSettingName, gSettingType, gSettingsVal)) generalSettings[setting] = gSettingsVal return generalSettings