Revision: 17789 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17789 Author: ton Date: 2008-12-11 16:38:16 +0100 (Thu, 11 Dec 2008)
Log Message: ----------- 2.5 TimeLine window pulldowns work sorta (for the options that were coded :) Still trying to bring back code without recoding uiDefButs. In future these will get directly operator stuff linked. For time being made a simple operator call function, like: WM_operator_call(C, "ED_MARKER_OT_add"); and for forcing operator to run in the main region-window: WM_operator_call_rwin(C, "ED_MARKER_OT_add"); These calls also work for modal operators, like marker grab in this case. Modified Paths: -------------- branches/blender2.5/blender/source/blender/editors/include/ED_util.h branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h branches/blender2.5/blender/source/blender/editors/interface/view2d.c branches/blender2.5/blender/source/blender/editors/space_time/time_header.c branches/blender2.5/blender/source/blender/editors/util/ed_util.c branches/blender2.5/blender/source/blender/windowmanager/WM_api.h branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c Modified: branches/blender2.5/blender/source/blender/editors/include/ED_util.h =================================================================== --- branches/blender2.5/blender/source/blender/editors/include/ED_util.h 2008-12-11 14:59:57 UTC (rev 17788) +++ branches/blender2.5/blender/source/blender/editors/include/ED_util.h 2008-12-11 15:38:16 UTC (rev 17789) @@ -34,8 +34,8 @@ #define YIC 20 void apply_keyb_grid(float *val, float fac1, float fac2, float fac3, int invert); - int GetButStringLength(char *str); +char *windowtype_pup(void); #endif /* ED_UTIL_H */ Modified: branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h =================================================================== --- branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h 2008-12-11 14:59:57 UTC (rev 17788) +++ branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h 2008-12-11 15:38:16 UTC (rev 17789) @@ -115,6 +115,7 @@ /* utilities */ struct View2D *UI_view2d_fromcontext(const struct bContext *C); +struct View2D *UI_view2d_fromcontext_rwin(const struct bContext *C); void UI_view2d_getscale(struct View2D *v2d, float *x, float *y); Modified: branches/blender2.5/blender/source/blender/editors/interface/view2d.c =================================================================== --- branches/blender2.5/blender/source/blender/editors/interface/view2d.c 2008-12-11 14:59:57 UTC (rev 17788) +++ branches/blender2.5/blender/source/blender/editors/interface/view2d.c 2008-12-11 15:38:16 UTC (rev 17789) @@ -1226,6 +1226,22 @@ return &(C->region->v2d); } +/* same as above, but it returns regionwindow. Utility for pulldowns or buttons */ +View2D *UI_view2d_fromcontext_rwin(const bContext *C) +{ + if (C->area == NULL) return NULL; + if (C->region == NULL) return NULL; + if (C->region->regiontype!=RGN_TYPE_WINDOW) { + ARegion *ar= C->area->regionbase.first; + for(; ar; ar= ar->next) + if(ar->regiontype==RGN_TYPE_WINDOW) + return &(ar->v2d); + return NULL; + } + return &(C->region->v2d); +} + + /* Calculate the scale per-axis of the drawing-area * - Is used to inverse correct drawing of icons, etc. that need to follow view * but not be affected by scale Modified: branches/blender2.5/blender/source/blender/editors/space_time/time_header.c =================================================================== --- branches/blender2.5/blender/source/blender/editors/space_time/time_header.c 2008-12-11 14:59:57 UTC (rev 17788) +++ branches/blender2.5/blender/source/blender/editors/space_time/time_header.c 2008-12-11 15:38:16 UTC (rev 17789) @@ -62,93 +62,7 @@ /* ************************ header time area region *********************** */ -static void start_animated_screen(SpaceTime *stime) -{ -// XXX add_screenhandler(G.curscreen, SCREEN_HANDLER_ANIM, stime->redraws); - -// if(stime->redraws & TIME_WITH_SEQ_AUDIO) -// audiostream_start( CFRA ); - -// BKE_ptcache_set_continue_physics((stime->redraws & TIME_CONTINUE_PHYSICS)); -} -static void end_animated_screen(SpaceTime *stime) -{ -// rem_screenhandler(G.curscreen, SCREEN_HANDLER_ANIM); - -// audiostream_stop(); -// BKE_ptcache_set_continue_physics(0); -} - -#define B_TL_REW 751 -#define B_TL_PLAY 752 -#define B_TL_FF 753 -#define B_TL_PREVKEY 754 -#define B_TL_NEXTKEY 755 -#define B_TL_STOP 756 -#define B_TL_PREVIEWON 757 -#define B_TL_INSERTKEY 758 -#define B_TL_DELETEKEY 759 - -void do_time_buttons(bContext *C, void *arg, int event) -{ - SpaceTime *stime= C->area->spacedata.first; - - switch(event) { - - case B_TL_REW: - CFRA= PSFRA; - //update_for_newframe(); - break; - case B_TL_PLAY: - start_animated_screen(stime); - break; - case B_TL_STOP: - end_animated_screen(stime); - //allqueue(REDRAWALL, 0); - break; - case B_TL_FF: - /* end frame */ - CFRA= PEFRA; - //update_for_newframe(); - break; - case B_TL_PREVKEY: - /* previous keyframe */ - //nextprev_timeline_key(-1); - break; - case B_TL_NEXTKEY: - /* next keyframe */ - //nextprev_timeline_key(1); - break; - - case B_TL_PREVIEWON: - if (G.scene->r.psfra) { - /* turn on preview range */ - G.scene->r.psfra= G.scene->r.sfra; - G.scene->r.pefra= G.scene->r.efra; - } - else { - /* turn off preview range */ - G.scene->r.psfra= 0; - G.scene->r.pefra= 0; - } - //BIF_undo_push("Set anim-preview range"); - //allqueue(REDRAWALL, 0); - break; - - case B_TL_INSERTKEY: - /* insert keyframe */ - //common_insertkey(); - //allqueue(REDRAWTIME, 1); - break; - case B_TL_DELETEKEY: - /* delete keyframe */ - //common_deletekey(); - //allqueue(REDRAWTIME, 1); - break; - } -} - static void do_time_redrawmenu(bContext *C, void *arg, int event) { SpaceTime *stime= C->area->spacedata.first; @@ -162,7 +76,7 @@ } else { if(event==1001) { -// button(&G.scene->r.frs_sec,1,120,"FPS:"); +// button(&C->scene->r.frs_sec,1,120,"FPS:"); } } } @@ -206,7 +120,7 @@ uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - sprintf(str, "Set Frames/Sec (%d/%f)", G.scene->r.frs_sec, G.scene->r.frs_sec_base); + sprintf(str, "Set Frames/Sec (%d/%f)", C->scene->r.frs_sec, C->scene->r.frs_sec_base); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, str, 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1001, ""); uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); @@ -234,6 +148,7 @@ { ScrArea *curarea= C->area; SpaceTime *stime= curarea->spacedata.first; + View2D *v2d= UI_view2d_fromcontext_rwin(C); int first; switch(event) { @@ -242,19 +157,21 @@ // start_animated_screen(stime); break; case 3: /* View All */ - first= G.scene->r.sfra; - if(first >= G.scene->r.efra) first= G.scene->r.efra; - G.v2d->cur.xmin=G.v2d->tot.xmin= (float)first-2; - G.v2d->cur.xmax=G.v2d->tot.xmax= (float)G.scene->r.efra+2; + if(v2d) { + first= C->scene->r.sfra; + if(first >= C->scene->r.efra) first= C->scene->r.efra; + v2d->cur.xmin=v2d->tot.xmin= (float)first-2; + v2d->cur.xmax=v2d->tot.xmax= (float)C->scene->r.efra+2; - //test_view2d(G.v2d, curarea->winx, curarea->winy); - //scrarea_queue_winredraw(curarea); + WM_event_add_notifier(C, WM_NOTE_AREA_REDRAW, 0, NULL); + } break; case 4: /* Maximize Window */ /* using event B_FULL */ break; case 5: /* show time or frames */ stime->flag ^= TIME_DRAWFRAMES; + WM_event_add_notifier(C, WM_NOTE_AREA_REDRAW, 0, NULL); break; case 6: //nextprev_marker(1); @@ -272,21 +189,24 @@ //timeline_frame_to_center(); break; case 11: - //G.v2d->flag ^= V2D_VIEWSYNC_X; - //if(G.v2d->flag & V2D_VIEWSYNC_X) + if(v2d) { + //v2d->flag ^= V2D_VIEWSYNC_X; + //if(v2d->flag & V2D_VIEWSYNC_X) // view2d_do_locks(curarea, 0); + } break; case 12: /* only show keyframes from selected data */ stime->flag ^= TIME_ONLYACTSEL; + WM_event_add_notifier(C, WM_NOTE_AREA_REDRAW, 0, NULL); break; } - //allqueue(REDRAWVIEW3D, 0); } static uiBlock *time_viewmenu(bContext *C, uiMenuBlockHandle *handle, void *arg_unused) { ScrArea *curarea= C->area; SpaceTime *stime= curarea->spacedata.first; + View2D *v2d= UI_view2d_fromcontext_rwin(C); uiBlock *block; short yco= 0, menuwidth=120; @@ -317,7 +237,7 @@ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Center View|C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, ""); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "View All|Home", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, ""); - uiDefIconTextBut(block, BUTM, 1, (handle->region->v2d.flag & V2D_VIEWSYNC_X)?ICON_CHECKBOX_HLT:ICON_CHECKBOX_DEHLT, + uiDefIconTextBut(block, BUTM, 1, (v2d->flag & V2D_VIEWSYNC_X)?ICON_CHECKBOX_HLT:ICON_CHECKBOX_DEHLT, "Lock Time to Other Windows|", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 11, ""); // if (!curarea->full) @@ -343,46 +263,41 @@ { switch(event) { case 1: /*Set as Start */ - if (G.scene->r.psfra) { - if (G.scene->r.pefra < CFRA) - G.scene->r.pefra= CFRA; - G.scene->r.psfra= CFRA; + if (C->scene->r.psfra) { + if (C->scene->r.pefra < CFRA) + C->scene->r.pefra= CFRA; + C->scene->r.psfra= CFRA; } else - G.scene->r.sfra = CFRA; - //allqueue(REDRAWALL, 1); + C->scene->r.sfra = CFRA; + WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL); break; case 2: /* Set as End */ - if (G.scene->r.psfra) { - if (CFRA < G.scene->r.psfra) - G.scene->r.psfra= CFRA; - G.scene->r.pefra= CFRA; + if (C->scene->r.psfra) { + if (CFRA < C->scene->r.psfra) + C->scene->r.psfra= CFRA; + C->scene->r.pefra= CFRA; } else - G.scene->r.efra = CFRA; - //allqueue(REDRAWALL, 1); + C->scene->r.efra = CFRA; + WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL); break; case 3: /* Add Marker */ - //add_marker(CFRA); + WM_operator_call_rwin(C, "ED_MARKER_OT_add"); break; case 4: /* Remove Marker */ - //remove_marker(); + WM_operator_call_rwin(C, "ED_MARKER_OT_delete"); break; case 5: /* Rename Marker */ //rename_marker(); break; case 6: /* Grab Marker */ - //transform_markers('g', 0); + WM_operator_call_rwin(C, "ED_MARKER_OT_move"); break; case 7: /* duplicate marker */ - //duplicate_marker(); + WM_operator_call_rwin(C, "ED_MARKER_OT_duplicate"); break; } - //allqueue(REDRAWTIME, 0); - //allqueue(REDRAWIPO, 0); - //allqueue(REDRAWACTION, 0); - //allqueue(REDRAWNLA, 0); - //allqueue(REDRAWSOUND, 0); } static uiBlock *time_framemenu(bContext *C, uiMenuBlockHandle *handle, void *arg_unused) @@ -429,12 +344,104 @@ return block; } +static void start_animated_screen(SpaceTime *stime) +{ + // XXX add_screenhandler(G.curscreen, SCREEN_HANDLER_ANIM, stime->redraws); + + // if(stime->redraws & TIME_WITH_SEQ_AUDIO) + // audiostream_start( CFRA ); + + // BKE_ptcache_set_continue_physics((stime->redraws & TIME_CONTINUE_PHYSICS)); +} + +static void end_animated_screen(SpaceTime *stime) +{ + // rem_screenhandler(G.curscreen, SCREEN_HANDLER_ANIM); + + // audiostream_stop(); + // BKE_ptcache_set_continue_physics(0); +} + +#define B_REDRAWALL 750 +#define B_TL_REW 751 +#define B_TL_PLAY 752 +#define B_TL_FF 753 +#define B_TL_PREVKEY 754 +#define B_TL_NEXTKEY 755 +#define B_TL_STOP 756 +#define B_TL_PREVIEWON 757 +#define B_TL_INSERTKEY 758 +#define B_TL_DELETEKEY 759 + #define B_NEWSPACE 0 #define B_FLIPINFOMENU 0 @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs