diff options
Diffstat (limited to 'source/blender/editors/space_time')
-rw-r--r-- | source/blender/editors/space_time/space_time.c | 4 | ||||
-rw-r--r-- | source/blender/editors/space_time/time_ops.c | 161 |
2 files changed, 4 insertions, 161 deletions
diff --git a/source/blender/editors/space_time/space_time.c b/source/blender/editors/space_time/space_time.c index 5cadd521b66..54ab83e6de8 100644 --- a/source/blender/editors/space_time/space_time.c +++ b/source/blender/editors/space_time/space_time.c @@ -296,12 +296,12 @@ void ED_spacetype_time(void) /* regions: main window */ art= MEM_callocN(sizeof(ARegionType), "spacetype time region"); art->regionid = RGN_TYPE_WINDOW; - art->keymapflag= ED_KEYMAP_VIEW2D|ED_KEYMAP_MARKERS; + art->keymapflag= ED_KEYMAP_VIEW2D|ED_KEYMAP_MARKERS|ED_KEYMAP_ANIMATION; art->init= time_main_area_init; art->draw= time_main_area_draw; art->listener= time_main_area_listener; - art->keymap= time_keymap; + //art->keymap= time_keymap; BLI_addhead(&st->regiontypes, art); /* regions: header */ diff --git a/source/blender/editors/space_time/time_ops.c b/source/blender/editors/space_time/time_ops.c index e8704457c00..51808fbf623 100644 --- a/source/blender/editors/space_time/time_ops.c +++ b/source/blender/editors/space_time/time_ops.c @@ -50,175 +50,18 @@ #include "WM_api.h" #include "WM_types.h" -#include "ED_markers.h" -/* ********************** frame change operator ***************************/ - -static int change_frame_init(bContext *C, wmOperator *op) -{ - SpaceTime *stime= (SpaceTime*)CTX_wm_space_data(C); - - stime->flag |= TIME_CFRA_NUM; - - return 1; -} - -static void change_frame_apply(bContext *C, wmOperator *op) -{ - Scene *scene= CTX_data_scene(C); - int cfra; - - cfra= RNA_int_get(op->ptr, "frame"); - - if(cfra < MINFRAME) - cfra= MINFRAME; - -#if 0 - if( cfra!=CFRA || first ) - { - first= 0; - CFRA= cfra; - update_for_newframe_nodraw(0); // 1= nosound - timeline_force_draw(stime->redraws); - } - else PIL_sleep_ms(30); -#endif - - if(cfra!=scene->r.cfra) - scene->r.cfra= cfra; - - WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL); - /* XXX: add WM_NOTE_TIME_CHANGED? */ -} - -static void change_frame_exit(bContext *C, wmOperator *op) -{ - SpaceTime *stime= (SpaceTime*)CTX_wm_space_data(C); - - stime->flag &= ~TIME_CFRA_NUM; -} - -static int change_frame_exec(bContext *C, wmOperator *op) -{ - if(!change_frame_init(C, op)) - return OPERATOR_CANCELLED; - - change_frame_apply(C, op); - change_frame_exit(C, op); - return OPERATOR_FINISHED; -} - -static int frame_from_event(bContext *C, wmEvent *event) -{ - ARegion *region= CTX_wm_region(C); - int x, y; - float viewx; - - x= event->x - region->winrct.xmin; - y= event->y - region->winrct.ymin; - UI_view2d_region_to_view(®ion->v2d, x, y, &viewx, NULL); - - return (int)floor(viewx+0.5f); -} - -static int change_frame_invoke(bContext *C, wmOperator *op, wmEvent *event) -{ - RNA_int_set(op->ptr, "frame", frame_from_event(C, event)); - change_frame_init(C, op); - change_frame_apply(C, op); - - /* add temp handler */ - WM_event_add_modal_handler(C, &CTX_wm_window(C)->handlers, op); - - return OPERATOR_RUNNING_MODAL; -} - -static int change_frame_cancel(bContext *C, wmOperator *op) -{ - change_frame_exit(C, op); - return OPERATOR_CANCELLED; -} - -static int change_frame_modal(bContext *C, wmOperator *op, wmEvent *event) -{ - /* execute the events */ - switch(event->type) { - case MOUSEMOVE: - RNA_int_set(op->ptr, "frame", frame_from_event(C, event)); - change_frame_apply(C, op); - break; - - case LEFTMOUSE: - if(event->val==0) { - change_frame_exit(C, op); - return OPERATOR_FINISHED; - } - break; - } - - return OPERATOR_RUNNING_MODAL; -} - -void ED_TIME_OT_change_frame(wmOperatorType *ot) -{ - PropertyRNA *prop; - - /* identifiers */ - ot->name= "Change frame"; - ot->idname= "ED_TIME_OT_change_frame"; - - /* api callbacks */ - ot->exec= change_frame_exec; - ot->invoke= change_frame_invoke; - ot->cancel= change_frame_cancel; - ot->modal= change_frame_modal; - - /* rna */ - prop= RNA_def_property(ot->srna, "frame", PROP_INT, PROP_NONE); -} - -/* ****************** time display toggle operator ****************************/ - -static int toggle_time_exec(bContext *C, wmOperator *op) -{ - SpaceTime *stime= (SpaceTime *)CTX_wm_space_data(C); - ScrArea *curarea= CTX_wm_area(C); - - if (ELEM(NULL, curarea, stime)) - return OPERATOR_CANCELLED; - - /* simply toggle draw frames flag for now */ - // in past, this asked user to choose in a menu beforehand, but that is clumsy - stime->flag ^= TIME_DRAWFRAMES; - - ED_area_tag_redraw(curarea); - - return OPERATOR_FINISHED; -} - -void ED_TIME_OT_toggle_time(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Toggle Frames/Seconds"; - ot->idname= "ED_TIME_OT_toggle_time"; - - /* api callbacks */ - ot->exec= toggle_time_exec; -} +/* *************************************************/ /* ************************** registration **********************************/ void time_operatortypes(void) { - WM_operatortype_append(ED_TIME_OT_change_frame); - WM_operatortype_append(ED_TIME_OT_toggle_time); + } void time_keymap(wmWindowManager *wm) { - ListBase *keymap= WM_keymap_listbase(wm, "TimeLine", SPACE_TIME, 0); - WM_keymap_verify_item(keymap, "ED_TIME_OT_change_frame", LEFTMOUSE, KM_PRESS, 0, 0); - WM_keymap_verify_item(keymap, "ED_TIME_OT_toggle_time", TKEY, KM_PRESS, 0, 0); } |