py/rna api:

- bpy.context wasnt being created from the python bpy.types.Context type defined in bpy_types.py (bpy.context.copy() failed for eg.)
- bpy.context.copy() was returning C defined methods like FloatProperty(), which are not useful in this case, removed.
This commit is contained in:
Campbell Barton 2010-06-09 19:31:10 +00:00
parent 6b21085ed5
commit dd72ffe3ff
2 changed files with 11 additions and 4 deletions

@ -29,10 +29,13 @@ class Context(StructRNA):
__slots__ = ()
def copy(self):
import types
new_context = {}
generic_keys = StructRNA.__dict__.keys()
for item in dir(self):
if item not in generic_keys:
value = getattr(self, item)
if type(value) != types.BuiltinMethodType:
new_context[item] = getattr(self, item)
return new_context

@ -141,6 +141,7 @@ static void bpy_import_test(char *modname)
void BPy_init_modules( void )
{
extern BPy_StructRNA *bpy_context_module;
PointerRNA ctx_ptr;
PyObject *mod;
/* Needs to be first since this dir is needed for future modules */
@ -181,9 +182,12 @@ void BPy_init_modules( void )
PyModule_AddObject( mod, "app", BPY_app_struct() );
/* bpy context */
bpy_context_module= ( BPy_StructRNA * ) PyObject_NEW( BPy_StructRNA, &pyrna_struct_Type );
RNA_pointer_create(NULL, &RNA_Context, BPy_GetContext(), &bpy_context_module->ptr);
bpy_context_module->freeptr= 0;
RNA_pointer_create(NULL, &RNA_Context, BPy_GetContext(), &ctx_ptr);
bpy_context_module= (BPy_StructRNA *)pyrna_struct_CreatePyObject(&ctx_ptr);
/* odd that this is needed, 1 ref on creation and another for the module
* but without we get a crash on exit */
Py_INCREF(bpy_context_module);
PyModule_AddObject(mod, "context", (PyObject *)bpy_context_module);
/* utility func's that have nowhere else to go */