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-10-07 17:22:56 +0400
committerCampbell Barton <ideasman42@gmail.com>2009-10-07 17:22:56 +0400
commit568be173266d42321909b1b9e047d214775c237c (patch)
treeaeb7dbb5d52fca344f41a1ed9287e0983c9553b7 /source/blender/editors
parent9cf78144f1e6369bc640df783b4ec7b5f2a15235 (diff)
Option to copy the data path of an RNA button
Diffstat (limited to 'source/blender/editors')
-rw-r--r--source/blender/editors/animation/anim_intern.h2
-rw-r--r--source/blender/editors/animation/anim_ops.c2
-rw-r--r--source/blender/editors/animation/drivers.c44
-rw-r--r--source/blender/editors/interface/interface_anim.c3
4 files changed, 51 insertions, 0 deletions
diff --git a/source/blender/editors/animation/anim_intern.h b/source/blender/editors/animation/anim_intern.h
index 853aeb6c8f3..0101e3d0ef7 100644
--- a/source/blender/editors/animation/anim_intern.h
+++ b/source/blender/editors/animation/anim_intern.h
@@ -79,4 +79,6 @@ void ANIM_OT_remove_driver_button(struct wmOperatorType *ot);
void ANIM_OT_copy_driver_button(struct wmOperatorType *ot);
void ANIM_OT_paste_driver_button(struct wmOperatorType *ot);
+void ANIM_OT_copy_clipboard_button(struct wmOperatorType *ot);
+
#endif // ANIM_INTERN_H
diff --git a/source/blender/editors/animation/anim_ops.c b/source/blender/editors/animation/anim_ops.c
index 4317204f347..83b2e2688c9 100644
--- a/source/blender/editors/animation/anim_ops.c
+++ b/source/blender/editors/animation/anim_ops.c
@@ -404,6 +404,8 @@ void ED_operatortypes_anim(void)
WM_operatortype_append(ANIM_OT_copy_driver_button);
WM_operatortype_append(ANIM_OT_paste_driver_button);
+ WM_operatortype_append(ANIM_OT_copy_clipboard_button);
+
WM_operatortype_append(ANIM_OT_add_keyingset_button);
WM_operatortype_append(ANIM_OT_remove_keyingset_button);
diff --git a/source/blender/editors/animation/drivers.c b/source/blender/editors/animation/drivers.c
index 363a5a80f00..7a457548623 100644
--- a/source/blender/editors/animation/drivers.c
+++ b/source/blender/editors/animation/drivers.c
@@ -564,4 +564,48 @@ void ANIM_OT_paste_driver_button (wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
+
+/* Paste Driver Button Operator ------------------------ */
+
+static int copy_clipboard_button_exec(bContext *C, wmOperator *op)
+{
+ PointerRNA ptr;
+ PropertyRNA *prop= NULL;
+ char *path;
+ short success= 0;
+ int index;
+
+ /* try to create driver using property retrieved from UI */
+ memset(&ptr, 0, sizeof(PointerRNA));
+ uiAnimContextProperty(C, &ptr, &prop, &index);
+
+ if (ptr.data && prop) { // && RNA_property_animateable(ptr.data, prop)
+ path= RNA_path_from_ID_to_property(&ptr, prop);
+
+ if (path) {
+ WM_clipboard_text_set(path, FALSE);
+ MEM_freeN(path);
+ }
+ }
+
+ /* since we're just copying, we don't really need to do anything else...*/
+ return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED;
+}
+
+void ANIM_OT_copy_clipboard_button(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Copy Data Path";
+ ot->idname= "ANIM_OT_copy_clipboard_button";
+ ot->description= "Copy the rna data path to the clipboard.";
+
+ /* callbacks */
+ ot->exec= copy_clipboard_button_exec;
+ //op->poll= ??? // TODO: need to have some driver to be able to do this...
+
+ /* flags */
+ ot->flag= 0;
+}
+
+
/* ************************************************** */
diff --git a/source/blender/editors/interface/interface_anim.c b/source/blender/editors/interface/interface_anim.c
index 8037a609a2f..facda32a41e 100644
--- a/source/blender/editors/interface/interface_anim.c
+++ b/source/blender/editors/interface/interface_anim.c
@@ -310,6 +310,9 @@ void ui_but_anim_menu(bContext *C, uiBut *but)
}
}
+ uiItemS(layout);
+ uiItemBooleanO(layout, "Copy Data Path", 0, "ANIM_OT_copy_clipboard_button", "all", 1);
+
uiPupMenuEnd(C, pup);
}
}