diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-06-30 19:05:01 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-06-30 19:05:01 +0300 |
commit | bea62c5c1a5c98eacbe29e3d5b0b803f42c41f4b (patch) | |
tree | e95a12bd59f821611b4bc1df9f070faaf743226b | |
parent | bdc1108e8cd8bf51e95de72d10862b4466dac8ca (diff) |
Cleanup: split out context member query
-rw-r--r-- | source/blender/windowmanager/intern/wm_operators.c | 60 |
1 files changed, 26 insertions, 34 deletions
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 7eeb2ce762e..ed2cb1134d8 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -742,9 +742,8 @@ bool WM_operator_pystring_abbreviate(char *str, int str_len_max) /* return NULL if no match is found */ #if 0 -static char *wm_prop_pystring_from_context(bContext *C, PointerRNA *ptr, PropertyRNA *prop, int index) +static const char *wm_context_member_from_ptr(bContext *C, PointerRNA *ptr) { - /* loop over all context items and do 2 checks * * - see if the pointer is in the context. @@ -758,13 +757,9 @@ static char *wm_prop_pystring_from_context(bContext *C, PointerRNA *ptr, Propert const char *member_found = NULL; const char *member_id = NULL; - char *prop_str = NULL; - char *ret = NULL; - - for (link = lb.first; link; link = link->next) { const char *identifier = link->data; - PointerRNA ctx_item_ptr = {{0}} // CTX_data_pointer_get(C, identifier); // XXX, this isnt working + PointerRNA ctx_item_ptr = {{0}}; // CTX_data_pointer_get(C, identifier); // XXX, this isnt working if (ctx_item_ptr.type == NULL) { continue; @@ -785,36 +780,27 @@ static char *wm_prop_pystring_from_context(bContext *C, PointerRNA *ptr, Propert } } } + BLI_freelistN(&lb); if (member_found) { - prop_str = RNA_path_property_py(ptr, prop, index); - if (prop_str) { - ret = BLI_sprintfN("bpy.context.%s.%s", member_found, prop_str); - MEM_freeN(prop_str); - } + return member_found; } else if (member_id) { - prop_str = RNA_path_struct_property_py(ptr, prop, index); - if (prop_str) { - ret = BLI_sprintfN("bpy.context.%s.%s", member_id, prop_str); - MEM_freeN(prop_str); - } + return member_id; + } + else { + return NULL; } - - BLI_freelistN(&lb); - - return ret; } + #else /* use hard coded checks for now */ -static char *wm_prop_pystring_from_context(bContext *C, PointerRNA *ptr, PropertyRNA *prop, int index) + +static const char *wm_context_member_from_ptr(bContext *C, PointerRNA *ptr) { const char *member_id = NULL; - char *prop_str = NULL; - char *ret = NULL; - if (ptr->id.data) { #define CTX_TEST_PTR_ID(C, member, idptr) \ @@ -911,23 +897,29 @@ static char *wm_prop_pystring_from_context(bContext *C, PointerRNA *ptr, Propert default: break; } - - if (member_id) { - prop_str = RNA_path_struct_property_py(ptr, prop, index); - if (prop_str) { - ret = BLI_sprintfN("bpy.context.%s.%s", member_id, prop_str); - MEM_freeN(prop_str); - } - } #undef CTX_TEST_PTR_ID #undef CTX_TEST_PTR_ID_CAST #undef CTX_TEST_SPACE_TYPE } - return ret; + return member_id; } #endif +static char *wm_prop_pystring_from_context(bContext *C, PointerRNA *ptr, PropertyRNA *prop, int index) +{ + const char *member_id = wm_context_member_from_ptr(C, ptr); + char *ret = NULL; + if (member_id != NULL) { + char *prop_str = RNA_path_struct_property_py(ptr, prop, index); + if (prop_str) { + ret = BLI_sprintfN("bpy.context.%s.%s", member_id, prop_str); + MEM_freeN(prop_str); + } + } + return ret; +} + char *WM_prop_pystring_assign(bContext *C, PointerRNA *ptr, PropertyRNA *prop, int index) { char *lhs, *rhs, *ret; |