- G.f's G_DEBUG flag was being erased in blenkernel/intern/blender.c's setup_app_data: G.f= bfd->globalf // added a line above it to fix this: if (G.f & G_DEBUG) bfd->globalf |=G_DEBUG; G.f= bfd->globalf; BPython: - debug info now only shown if Blender is started with '-d' option - added ~/.blender/scripts to modules sys.path - added two new functions to Blender.sys: basename and splitext - added doc for Blender.sys, updated other docs
		
			
				
	
	
		
			98 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# Blender.Registry module
 | 
						|
 | 
						|
"""
 | 
						|
The Blender.Registry submodule.
 | 
						|
 | 
						|
Registry
 | 
						|
========
 | 
						|
 | 
						|
This module provides a way to create, retrieve and edit B{persistent data} in
 | 
						|
Blender. When a script runs in Blender, it has its own private global
 | 
						|
dictionary, which is deleted when the script finishes. This is done to avoid
 | 
						|
problems with name clashes and garbage collecting.  But the result is that
 | 
						|
data created by a script isn't kept after it leaves, for itself or others to
 | 
						|
access later: the data isn't persistent. The Registry module was created to
 | 
						|
give script authors a way around this limitation.
 | 
						|
 | 
						|
In Python terms, the Registry holds a dictionary of dictionaries.
 | 
						|
You should use it to save Python objects only, not BPython (Blender Python)
 | 
						|
objects -- but you can save BPython object names, since those are strings.
 | 
						|
Also, if you need to save a considerable amount of data, please save to a
 | 
						|
file instead. There's no need to keep huge blocks of memory around when they
 | 
						|
can simply be read from a file.
 | 
						|
 | 
						|
Two uses for this module:
 | 
						|
 | 
						|
a) To save data from a script that another script will need to access later.
 | 
						|
 | 
						|
b) To save configuration data from your script's gui (button values) so that the
 | 
						|
next time the user runs your script, the changes will still be there. Later we
 | 
						|
can make Blender save the Registry so that its data won't be lost after users
 | 
						|
quit the program. And also add an option to save as a Text that can be kept in
 | 
						|
a .blend file, letting users keep script data there.
 | 
						|
 | 
						|
Example::
 | 
						|
 | 
						|
  import Blender
 | 
						|
  from Blender import Registry
 | 
						|
 | 
						|
  # first declare your global variables:
 | 
						|
  myvar1 = 0
 | 
						|
  myvar2 = 3.2
 | 
						|
  mystr = "hello"
 | 
						|
 | 
						|
  # then check if they are already at the Registry (saved on a
 | 
						|
  # previous execution of this script):
 | 
						|
  dict = Registry.GetKey('MyScript')
 | 
						|
  if dict: # if found, get the values saved there
 | 
						|
    myvar1 = dict['myvar1']
 | 
						|
    myvar2 = dict['myvar2']
 | 
						|
    mystr = dict['mystr']
 | 
						|
 | 
						|
  # let's create a function to update the Registry when we need to:
 | 
						|
  def update_Registry():
 | 
						|
    d = {}
 | 
						|
    d['myvar1'] = myvar1
 | 
						|
    d['myvar2'] = myvar2
 | 
						|
    d['mystr'] = mystr
 | 
						|
    Blender.Registry.SetKey('MyScript', d)
 | 
						|
 | 
						|
  # ...
 | 
						|
  # here goes the main part of the script ...
 | 
						|
  # ...
 | 
						|
 | 
						|
  # at the end, before exiting, we use our helper function:
 | 
						|
  update_Registry()
 | 
						|
  # note1: better not update the Registry when the user cancels the script
 | 
						|
  # note2: most scripts shouldn't need to register more than one key.
 | 
						|
"""
 | 
						|
 | 
						|
def Keys ():
 | 
						|
  """
 | 
						|
  Get all keys currently in the Registry's dictionary.
 | 
						|
  """
 | 
						|
 | 
						|
def GetKey (key):
 | 
						|
  """
 | 
						|
  Get key 'key' from the Registry.
 | 
						|
  @type key: string
 | 
						|
  @param key: a key from the Registry dictionary.
 | 
						|
  @return: the dictionary called 'key'.
 | 
						|
  """
 | 
						|
 | 
						|
def SetKey (key, dict):
 | 
						|
  """
 | 
						|
  Store a new entry in the Registry.
 | 
						|
  @type key: string
 | 
						|
  @param key: the name of the new entry, tipically your script's name.
 | 
						|
  @type dict: dictionary
 | 
						|
  @param dict: a dict with all data you want to save in the Registry.
 | 
						|
  """
 | 
						|
 | 
						|
def RemoveKey (key):
 | 
						|
  """
 | 
						|
  Remove the dictionary with key 'key' from the Registry.
 | 
						|
  @type key: string
 | 
						|
  @param key: the name of an existing Registry key.
 | 
						|
  """
 |