forked from bartvdbraak/blender
Option to copy the data path of an RNA button
This commit is contained in:
parent
9cf78144f1
commit
568be17326
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
/* ************************************************** */
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user