def setValue(self, settingId, newValue, doNotify=True): """Set the value of the setting in this profile. @param settingId Identifier of the setting to set. @param newValue New value for the setting (as a string). @param doNotify If True, a notification event will be sent. """ value = None if st.isDefined(settingId): # System settings are not saved into profiles. return # Change the value of an existing Value. for v in self.values: if v.getId() == settingId: value = v if value: value.setValue(newValue) else: value = Value(settingId, newValue) self.values.append(value) # A kludge for detecting a change of the language. if self is profdb.defaults and settingId == 'language': language.change(newValue) # Send a notification of this. if doNotify: events.send(events.ValueNotify(settingId, newValue, self))
def removeValue(self, settingId): """Remove this value from the profile entirely. @param settingId Identifier of the setting. """ # Kludge for detecting the change of the language. if self is profdb.defaults and settingId == 'language': language.change(None) for v in self.values: if v.getId() == settingId: self.values.remove(v) events.send(events.ValueNotify(settingId, None, self))
def restore(): """Reads all the profiles from disk. Restores the currently active profile as well. This function has to be called after starting the program before any profiles are accessed. System profiles that aren't present in the user's profile directory are copied to the user's profile directory. """ global defaults global profiles global restoredActiveId # By default, restore selection to the Defaults profile. restoredActiveId = 'defaults' # Clear the current profile list. profiles = [] systemProfilePaths = [paths.getSystemPath(paths.PROFILES)] + \ paths.getBundlePaths(paths.PROFILES) userProfilePath = paths.getUserPath(paths.PROFILES) # List all the system and user profiles. availSystem = _listProfilesIn(systemProfilePaths) availUser = _listProfilesIn([userProfilePath]) # We are going to load only the profiles in the user's direcory, # but before that make sure that the user has an instance of each # system profile. for sysFile in availSystem: identifier = paths.getBase(sysFile) # Does this exist in the user's directory? gotIt = False for userFile in availUser: if paths.getBase(userFile) == identifier: gotIt = True break if not gotIt: # Since the system profile does not exist on the user, # copy it to the user profile directory. shutil.copyfile( sysFile, os.path.join(userProfilePath, os.path.basename(sysFile))) # Find every profile in system's and user's profile directories. # Files in the user's directory augment the files in the system # directory. for name in _listProfilesIn([userProfilePath]): load(os.path.join(userProfilePath, name), False) logger.show() defaults = get('defaults') if defaults is None: # Recreate the Defaults profile. load(os.path.join(systemProfilePath, "defaults.prof"), False) defaults = get('defaults') logger.show() # Set the default language. lang = defaults.getValue('language') if lang: language.change(lang.getValue()) # Send profile-loaded notifications. for p in profiles: if not p.isHidden(): events.send(events.ProfileNotify(p)) # Restore the previously active profile. prof = get(restoredActiveId) if prof: setActive(prof) else: setActive(defaults)
def restore(): """Reads all the profiles from disk. Restores the currently active profile as well. This function has to be called after starting the program before any profiles are accessed. System profiles that aren't present in the user's profile directory are copied to the user's profile directory. """ global defaults global profiles global restoredActiveId # By default, restore selection to the Defaults profile. restoredActiveId = 'defaults' # Clear the current profile list. profiles = [] systemProfilePaths = [paths.getSystemPath(paths.PROFILES)] + \ paths.getBundlePaths(paths.PROFILES) userProfilePath = paths.getUserPath(paths.PROFILES) # List all the system and user profiles. availSystem = _listProfilesIn(systemProfilePaths) availUser = _listProfilesIn([userProfilePath]) # We are going to load only the profiles in the user's direcory, # but before that make sure that the user has an instance of each # system profile. for sysFile in availSystem: identifier = paths.getBase(sysFile) # Does this exist in the user's directory? gotIt = False for userFile in availUser: if paths.getBase(userFile) == identifier: gotIt = True break if not gotIt: # Since the system profile does not exist on the user, # copy it to the user profile directory. shutil.copyfile(sysFile, os.path.join(userProfilePath, os.path.basename(sysFile))) # Find every profile in system's and user's profile directories. # Files in the user's directory augment the files in the system # directory. for name in _listProfilesIn([userProfilePath]): load(os.path.join(userProfilePath, name), False) logger.show() defaults = get('defaults') if defaults is None: # Recreate the Defaults profile. load(os.path.join(systemProfilePath, "defaults.prof"), False) defaults = get('defaults') logger.show() # Set the default language. lang = defaults.getValue('language') if lang: language.change(lang.getValue()) # Send profile-loaded notifications. for p in profiles: if not p.isHidden(): events.send(events.ProfileNotify(p)) # Restore the previously active profile. prof = get(restoredActiveId) if prof: setActive(prof) else: setActive(defaults)