* Moved public declarations in camera and lamp to a new file: bpy_types.h. * Fixed minor bugs in material, rgbTuple and Lamp + other minor changes. * Made part of the changes to conform to decided naming conventions.
138 lines
4.0 KiB
Python
138 lines
4.0 KiB
Python
# Blender.Camera module and Camera PyType test file
|
|
# This also works with Lamp and Material, simply uncomment the right
|
|
# line below
|
|
|
|
MODULE = "Camera"
|
|
#MODULE = "Lamp"
|
|
#MODULE = "Material"
|
|
BPY_OBJECT = MODULE
|
|
|
|
LONG_STRING = "Supercalifragilisticspialidous"
|
|
|
|
import types, sys
|
|
import Blender
|
|
exec ("from Blender import %s" % MODULE)
|
|
|
|
def PRINT_HEADER(header, sep):
|
|
print "\n", sep * 79
|
|
print header
|
|
print sep * 79
|
|
|
|
def PRINT_UNDERLINED(str):
|
|
print "\n", str
|
|
print "-" * len(str)
|
|
|
|
def PRINT_AND_RM(arg, branch, d):
|
|
for a in arg:
|
|
if a in d:
|
|
d.remove(a)
|
|
print "\n%s.%s:" % (branch, a),
|
|
exec("print %s.%s" % (branch, a))
|
|
|
|
PRINT_HEADER("Testing the Blender.%s module" % MODULE, '=')
|
|
|
|
exec ("Module_dir = dir (%s)" % MODULE)
|
|
print "\ndir (%s):" % MODULE
|
|
print Module_dir
|
|
|
|
PRINT_AND_RM (["__name__", "__doc__"], MODULE, Module_dir)
|
|
|
|
for item in Module_dir:
|
|
hooked = 0
|
|
branch = "%s.%s" % (MODULE, item)
|
|
PRINT_HEADER(branch, "-")
|
|
exec ("item_type = type (%s)" % branch)
|
|
print item_type
|
|
exec ("sub_dir = dir(%s)" % branch)
|
|
PRINT_AND_RM (["__name__", "__doc__"], branch, sub_dir)
|
|
if item_type == types.BuiltinFunctionType:
|
|
PRINT_UNDERLINED ("Executing %s:" % branch)
|
|
exec ("result = %s()" % branch)
|
|
print "Returned value is: ", result
|
|
if item in ["Get", "get"] and not hooked:
|
|
if len(result):
|
|
obj = result[0]
|
|
hooked = 1
|
|
|
|
if hooked:
|
|
PRINT_HEADER(obj, "=")
|
|
exec ("obj_dir = dir(obj)")
|
|
print "\ndir():"
|
|
print obj_dir
|
|
|
|
methods = []
|
|
member_vars = []
|
|
|
|
for item in obj_dir:
|
|
exec ("item_type = type (obj.%s)" % item)
|
|
if item_type == types.BuiltinMethodType:
|
|
methods.append(item)
|
|
else:
|
|
member_vars.append(item)
|
|
|
|
PRINT_HEADER("%s Methods" % BPY_OBJECT, '-')
|
|
if methods: print methods
|
|
else: print "XXX No methods found in %s" % BPY_OBJECT
|
|
|
|
PRINT_HEADER("%s Member Variables" % BPY_OBJECT, '-')
|
|
if member_vars:
|
|
for m in member_vars:
|
|
PRINT_UNDERLINED(m)
|
|
exec ("mvalue = obj.%s" % m)
|
|
exec ("mtype = type (obj.%s)" % m)
|
|
mtype = str(mtype).split("'")[1]
|
|
print "%s: %s" % (mtype, mvalue)
|
|
|
|
M = m[0].upper() + m[1:]
|
|
setM = "set%s" % M
|
|
getM = "get%s" % M
|
|
if setM in methods:
|
|
print "There is a .%s() method." % setM
|
|
methods.remove(setM)
|
|
if mtype == 'str':
|
|
try:
|
|
print "Trying to set string to %s" % LONG_STRING
|
|
exec("obj.%s('%s')" % (setM, LONG_STRING))
|
|
exec("get_str = obj.%s()" % getM)
|
|
print "It returned:", get_str
|
|
len_str = len(get_str)
|
|
if len_str < 100:
|
|
print "It correctly clamped the string to %s chars." % len_str
|
|
except:
|
|
PRINT_HEADER("FAILED in .%s()" % setM, "X")
|
|
print sys.exc_info()[0]
|
|
elif mtype == 'float':
|
|
try:
|
|
exec("obj.%s(%d)" % (setM, -999999))
|
|
exec("result = obj.%s()" % getM)
|
|
print "%s's minimum value is %f" % (m, result)
|
|
exec("obj.%s(%d)" % (setM, 999999))
|
|
exec("result = obj.%s()" % getM)
|
|
print "%s's maximum value is %f" % (m, result)
|
|
except:
|
|
PRINT_HEADER("FAILED in %s or %s" % (setM, getM), "X")
|
|
print sys.exc_info()[0]
|
|
elif mtype == 'int':
|
|
try:
|
|
dict = M+"s"
|
|
if dict in member_vars:
|
|
exec("key = obj.%s.keys()[1]" % dict)
|
|
exec("obj.%s('%s')" % (setM, key))
|
|
exec("result = obj.%s()" % getM)
|
|
except:
|
|
PRINT_HEADER("FAILED in %s or %s" % (setM, getM), "X")
|
|
print sys.exc_info()[0]
|
|
|
|
if getM in methods:
|
|
print "There is a .%s() method." % getM,
|
|
methods.remove(getM)
|
|
exec("result = obj.%s()" % getM)
|
|
print "It returned:", result
|
|
|
|
else: print "XXX No member variables found in %s" % BPY_OBJECT
|
|
|
|
else: # the module .Get() function found nothing
|
|
PRINT_HEADER("Failed trying to %s.Get() a %s object"
|
|
% (MODULE, BPY_OBJECT), 'X')
|
|
|