diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2008-11-24 18:51:55 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2008-11-24 18:51:55 +0300 |
commit | 2a8484bc24f0ac31bcc48c96d2ea12c03c257dab (patch) | |
tree | d4f39e9f940cb9f9ef49191794998463a1185a53 /source/blender/windowmanager | |
parent | 0c625e20ad070560ce4ea8fb78096a3119a8357e (diff) |
RNA
* Disable editable pointers for now, difficult to support well.
* Swap parameters in RNA_access.h functions to make it more
consistent.
* Rename rna members for operators to wmOperatorType.srna, and
wmOperator.ptr, to make the distincton a bit clearer.
• Removed the RNA_int_default and similar functions, they're too
confusing. RNA_property_is_set can still be used to achieve
the same goal.
* Add functions to create RNA pointers.
Some example code for RNA data access and operator properties:
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/RNAExampleCode
Diffstat (limited to 'source/blender/windowmanager')
-rw-r--r-- | source/blender/windowmanager/intern/wm.c | 10 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_event_system.c | 5 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_operators.c | 14 |
3 files changed, 14 insertions, 15 deletions
diff --git a/source/blender/windowmanager/intern/wm.c b/source/blender/windowmanager/intern/wm.c index 8a18cb71893..bc7f70d08ef 100644 --- a/source/blender/windowmanager/intern/wm.c +++ b/source/blender/windowmanager/intern/wm.c @@ -62,8 +62,8 @@ void wm_operator_free(wmOperator *op) op->properties= NULL; } - if(op->rna) - MEM_freeN(op->rna); + if(op->ptr) + MEM_freeN(op->ptr); MEM_freeN(op); } @@ -74,9 +74,9 @@ void wm_operator_register(wmWindowManager *wm, wmOperator *op) { int tot; - if(op->rna) { - MEM_freeN(op->rna); - op->rna= NULL; + if(op->ptr) { + MEM_freeN(op->ptr); + op->ptr= NULL; } BLI_addtail(&wm->operators, op); diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index c10faa6cadf..061a784ea91 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -299,9 +299,8 @@ int WM_operator_invoke(bContext *C, wmOperatorType *ot, wmEvent *event) op->type= ot; - op->rna= MEM_callocN(sizeof(PointerRNA), "wmOperatorPtrRNA"); - op->rna->type= op->type->rna; - op->rna->data= op; + op->ptr= MEM_callocN(sizeof(PointerRNA), "wmOperatorPtrRNA"); + RNA_pointer_create(&RNA_WindowManager, &C->wm->id, ot->srna, op, op->ptr); if(op->type->invoke) retval= (*op->type->invoke)(C, op, event); diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 32800ff31dc..953965fd144 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -74,9 +74,9 @@ void WM_operatortype_append(void (*opfunc)(wmOperatorType*)) wmOperatorType *ot; ot= MEM_callocN(sizeof(wmOperatorType), "operatortype"); - ot->rna= RNA_def_struct(&BLENDER_RNA, "", "Operator", ""); + ot->srna= RNA_def_struct(&BLENDER_RNA, "", "Operator", ""); opfunc(ot); - RNA_def_struct_identifier(ot->rna, ot->idname, ot->name); + RNA_def_struct_identifier(ot->srna, ot->idname, ot->name); BLI_addtail(&global_ops, ot); } @@ -159,12 +159,12 @@ static void border_select_apply(bContext *C, wmOperator *op, int event_type) rcti *rect= gesture->customdata; /* operator arguments and storage. */ - RNA_int_default(op->rna, "xmin", rect->xmin); - RNA_int_default(op->rna, "ymin", rect->ymin); - RNA_int_default(op->rna, "xmax", rect->xmax); - RNA_int_default(op->rna, "ymax", rect->ymax); + RNA_int_set(op->ptr, "xmin", rect->xmin); + RNA_int_set(op->ptr, "ymin", rect->ymin); + RNA_int_set(op->ptr, "xmax", rect->xmax); + RNA_int_set(op->ptr, "ymax", rect->ymax); - RNA_int_default(op->rna, "event_type", event_type); + RNA_int_set(op->ptr, "event_type", event_type); op->type->exec(C, op); } |