2.5 - Action Editor

New Actions can now be added again from the Action Editor. 

There are no guarantees that this works totally safely yet (reference counting may be quite off), so you've been warned.
This commit is contained in:
Joshua Leung 2009-08-25 04:32:40 +00:00
parent e80ac54a22
commit 33343fced5
2 changed files with 24 additions and 1 deletions

@ -444,6 +444,20 @@ int uiDefIDPoinButs(uiBlock *block, Main *bmain, ID *parid, ID *id, int id_code,
uiBlockClearButLock(block); uiBlockClearButLock(block);
} }
/* add button */
if(events & UI_ID_ADD_NEW) {
uiBlockSetButLock(block, (events & UI_ID_PIN) && *pin_p, "Can't unlink pinned data");
if(parid && parid->lib);
else {
dup_params= MEM_dupallocN(params);
but= uiDefIconBut(block, BUT, 0, ICON_ZOOMIN, x,y,DEF_ICON_BUT_WIDTH,DEF_BUT_HEIGHT, &dup_params->browsenr, params->browsenr, 32767.0, 0, 0, "Add new data block");
uiButSetNFunc(but, idpoin_cb, MEM_dupallocN(params), SET_INT_IN_POINTER(UI_ID_ADD_NEW));
x+= DEF_ICON_BUT_WIDTH;
}
uiBlockClearButLock(block);
}
/* delete button */ /* delete button */
if(events & UI_ID_DELETE) { if(events & UI_ID_DELETE) {
uiBlockSetButLock(block, (events & UI_ID_PIN) && *pin_p, "Can't unlink pinned data"); uiBlockSetButLock(block, (events & UI_ID_PIN) && *pin_p, "Can't unlink pinned data");

@ -43,6 +43,7 @@
#include "BLI_blenlib.h" #include "BLI_blenlib.h"
#include "BKE_animsys.h" #include "BKE_animsys.h"
#include "BKE_action.h"
#include "BKE_context.h" #include "BKE_context.h"
#include "BKE_screen.h" #include "BKE_screen.h"
@ -272,6 +273,7 @@ static void saction_idpoin_handle(bContext *C, ID *id, int event)
/* set action */ /* set action */
printf("\tset action \n"); printf("\tset action \n");
adt->action= saction->action; adt->action= saction->action;
adt->action->id.us++;
} }
ED_area_tag_redraw(CTX_wm_area(C)); ED_area_tag_redraw(CTX_wm_area(C));
@ -282,7 +284,14 @@ static void saction_idpoin_handle(bContext *C, ID *id, int event)
break; break;
case UI_ID_ADD_NEW: case UI_ID_ADD_NEW:
printf("actedit addnew \n"); printf("actedit addnew \n");
/* XXX not implemented */ if (saction->pin == 0) {
AnimData *adt= BKE_id_add_animdata(&obact->id); /* this only adds if non-existant */
/* set new action */
// XXX need to restore behaviour to copy old actions...
printf("\tset new action \n");
adt->action= saction->action= add_empty_action("Action");
}
break; break;
case UI_ID_OPEN: case UI_ID_OPEN:
printf("actedit open \n"); printf("actedit open \n");