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>2009-07-30 03:48:06 +0400
committerCampbell Barton <ideasman42@gmail.com>2009-07-30 03:48:06 +0400
commit86cfc1966e3b148f2ee8ba97fab26f212e8c9060 (patch)
tree61353daac698ef761457bde263971c8933eef4da /source/blender/windowmanager/intern
parent589623356441a988107614b4d922d481797612d5 (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.c2
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c2
-rw-r--r--source/blender/windowmanager/intern/wm_operators.c41
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);