Python can now run operators with their own context (data context).
[blender-staging.git] / source / blender / blenkernel / intern / context.c
index d5cc31d918ace6c0a9ad9698b366f48d0331705e..7f2872c0797fc5b8294893687c897f0fdc2d0db6 100644 (file)
@@ -71,6 +71,7 @@ struct bContext {
 
                int recursion;
                int py_init; /* true if python is initialized */
+               void *py_context;
        } data;
        
        /* data evaluation */
@@ -175,6 +176,15 @@ void CTX_py_init_set(bContext *C, int value)
        C->data.py_init= value;
 }
 
+void *CTX_py_dict_get(bContext *C)
+{
+       return C->data.py_context;
+}
+void CTX_py_dict_set(bContext *C, void *value)
+{
+       C->data.py_context= value;
+}
+
 /* window manager context */
 
 wmWindowManager *CTX_wm_manager(const bContext *C)
@@ -401,6 +411,10 @@ static int ctx_data_get(bContext *C, const char *member, bContextDataResult *res
 
        memset(result, 0, sizeof(bContextDataResult));
 
+       if(CTX_py_dict_get(C)) {
+               return bpy_context_get(C, member, result);
+       }
+
        /* we check recursion to ensure that we do not get infinite
         * loops requesting data from ourselfs in a context callback */
        if(!done && recursion < 1 && C->wm.store) {