Home | Trees | Index | Help |
|
---|
Module Registry |
|
The Blender.Registry submodule.
New:GetKey
and SetKey
have been updated to save and load scripts *configuration data* to
files.
This module provides a way to create, retrieve and edit persistent data in Blender.
When a script is executed it has its own private global dictionary, which is deleted when the script exits. This is done to avoid problems with name clashes and garbage collecting. But because of this, the data created by a script isn't kept after it leaves: the data is not persistent. The Registry module was created to give programmers a way around this limitation.
Possible uses:import Blender from Blender import Registry # this function updates the Registry when we need to: def update_Registry(): d = {} d['myvar1'] = myvar1 d['myvar2'] = myvar2 d['mystr'] = mystr # cache = True: data is also saved to a file Blender.Registry.SetKey('MyScript', d, True) # first declare global variables that should go to the Registry: myvar1 = 0 myvar2 = 3.2 mystr = "hello" # then check if they are already there (saved on a # previous execution of this script): rdict = Registry.GetKey('MyScript', True) # True to check on disk also if rdict: # if found, get the values saved there try: myvar1 = rdict['myvar1'] myvar2 = rdict['myvar2'] mystr = rdict['mystr'] except: update_Registry() # if data isn't valid rewrite it # ... # here goes the main part of the script ... # ... # if at some point the data is changed, we update the Registry: update_Registry()
Notes:
We have a few recommendations:
Data saved to the Registry is kept in memory, so if you decide to store large amounts your script users should be clearly informed about it -- always keep in mind that you have no idea about their resources and the applications they are running at a given time (unless you are the only user), so let them decide.
There are restrictions to the data that gets automatically saved to
disk by SetKey
(keyname, dict, True): this feature
is only meant for simple data (bools, ints, floats, strings and
dictionaries or sequences of these types). Strings are clamped if longer
than 300 characters and at most 60 elements are allowed. Since this is
only meant for scripts configuration variables, these are sensible
restrictions, generous enough for the task.
Blender Text
.
Function Summary | |
---|---|
Get key 'key' from the Registry. | |
Get all keys currently in the Registry's dictionary. | |
Remove the dictionary with key 'key' from the Registry. | |
Store a new entry in the Registry. |
Function Details |
---|
GetKey(key, cached=False)Get key 'key' from the Registry.
|
Keys()Get all keys currently in the Registry's dictionary. |
RemoveKey(key)Remove the dictionary with key 'key' from the Registry.
|
SetKey(key, dict, cache=False)Store a new entry in the Registry.
|
Home | Trees | Index | Help |
|
---|
Generated by Epydoc 2.1 on Sun Feb 11 13:30:19 2007 | http://epydoc.sf.net |