Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2018-06-30 19:05:01 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-06-30 19:05:01 +0300
commitbea62c5c1a5c98eacbe29e3d5b0b803f42c41f4b (patch)
treee95a12bd59f821611b4bc1df9f070faaf743226b
parentbdc1108e8cd8bf51e95de72d10862b4466dac8ca (diff)
Cleanup: split out context member query
-rw-r--r--source/blender/windowmanager/intern/wm_operators.c60
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;