diff options
author | Campbell Barton <ideasman42@gmail.com> | 2009-07-30 03:48:06 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2009-07-30 03:48:06 +0400 |
commit | 86cfc1966e3b148f2ee8ba97fab26f212e8c9060 (patch) | |
tree | 61353daac698ef761457bde263971c8933eef4da /source/blender/windowmanager/intern | |
parent | 589623356441a988107614b4d922d481797612d5 (diff) |
better blender doesnt look idiot for siggraph with tips wider then the screen.
only show operator args in the tooltip that are different from the defaults.
Diffstat (limited to 'source/blender/windowmanager/intern')
-rw-r--r-- | source/blender/windowmanager/intern/wm.c | 2 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_event_system.c | 2 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_operators.c | 41 |
3 files changed, 39 insertions, 6 deletions
diff --git a/source/blender/windowmanager/intern/wm.c b/source/blender/windowmanager/intern/wm.c index 46cf13f7d75..13157378057 100644 --- a/source/blender/windowmanager/intern/wm.c +++ b/source/blender/windowmanager/intern/wm.c @@ -103,7 +103,7 @@ void wm_operator_register(bContext *C, wmOperator *op) /* Report the string representation of the operator */ - buf = WM_operator_pystring(op->type, op->ptr); + buf = WM_operator_pystring(op->type, op->ptr, 1); BKE_report(CTX_wm_reports(C), RPT_OPERATOR, buf); MEM_freeN(buf); diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 86de5498ce9..d40e6c60bfd 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -362,7 +362,7 @@ static wmOperator *wm_operator_create(wmWindowManager *wm, wmOperatorType *ot, P static void wm_operator_print(wmOperator *op) { - char *buf = WM_operator_pystring(op->type, op->ptr); + char *buf = WM_operator_pystring(op->type, op->ptr, 1); printf("%s\n", buf); MEM_freeN(buf); } diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index d0d50810fdc..41613d0ab78 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -345,7 +345,7 @@ void WM_operator_bl_idname(char *to, const char *from) * When calling from an existing wmOperator do. * WM_operator_pystring(op->type, op->ptr); */ -char *WM_operator_pystring(wmOperatorType *ot, PointerRNA *opptr) +char *WM_operator_pystring(wmOperatorType *ot, PointerRNA *opptr, int all_args) { const char *arg_name= NULL; char idname_py[OP_MAX_TYPENAME]; @@ -355,7 +355,17 @@ char *WM_operator_pystring(wmOperatorType *ot, PointerRNA *opptr) /* for building the string */ DynStr *dynstr= BLI_dynstr_new(); char *cstring, *buf; - int first_iter=1; + int first_iter=1, ok= 1; + + + /* only to get the orginal props for comparisons */ + PointerRNA opptr_default; + PropertyRNA *prop_default; + char *buf_default; + if(!all_args) { + WM_operator_properties_create(&opptr_default, ot->idname); + } + WM_operator_py_idname(idname_py, ot->idname); BLI_dynstr_appendf(dynstr, "bpy.ops.%s(", idname_py); @@ -370,13 +380,36 @@ char *WM_operator_pystring(wmOperatorType *ot, PointerRNA *opptr) buf= RNA_property_as_string(opptr, prop); - BLI_dynstr_appendf(dynstr, first_iter?"%s=%s":", %s=%s", arg_name, buf); + ok= 1; + + if(!all_args) { + /* not verbose, so only add in attributes that use non-default values + * slow but good for tooltips */ + prop_default= RNA_struct_find_property(&opptr_default, arg_name); + + if(prop_default) { + buf_default= RNA_property_as_string(&opptr_default, prop_default); + + if(strcmp(buf, buf_default)==0) + ok= 0; /* values match, dont bother printing */ + + MEM_freeN(buf_default); + } + + } + if(ok) { + BLI_dynstr_appendf(dynstr, first_iter?"%s=%s":", %s=%s", arg_name, buf); + first_iter = 0; + } MEM_freeN(buf); - first_iter = 0; + } RNA_PROP_END; + if(all_args==0) + WM_operator_properties_free(&opptr_default); + BLI_dynstr_append(dynstr, ")"); cstring = BLI_dynstr_get_cstring(dynstr); |