diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp index 86900bbbd49576cea066a178fb01bb76b70727df..8dba2c09b83b1b307c80553fe8b61692488617af 100644 --- a/Fltk/Callbacks.cpp +++ b/Fltk/Callbacks.cpp @@ -1,4 +1,4 @@ -// $Id: Callbacks.cpp,v 1.106 2002-02-16 00:19:22 geuzaine Exp $ +// $Id: Callbacks.cpp,v 1.107 2002-02-20 16:41:20 geuzaine Exp $ #include <sys/types.h> #include <signal.h> @@ -146,10 +146,38 @@ void status_xyz1p_cb(CALLBACK_ARGS){ } } -static int stop_anim, view_in_cycle=0 ; +static int stop_anim, view_in_cycle=-1 ; +void ManualPlay(int time, int step){ + int i; + if(time){ + for(i=0 ; i<List_Nbr(CTX.post.list) ; i++) + if(opt_view_visible(i, GMSH_GET, 0)) + opt_view_timestep(i, GMSH_SET|GMSH_GUI, opt_view_timestep(i, GMSH_GET, 0)+step); + } + else{//hide all views except view_in_cycle + if(step>0){ + if((view_in_cycle+=step)>=List_Nbr(CTX.post.list)) view_in_cycle=0; + for(i=0 ; i<List_Nbr(CTX.post.list) ; i+=step){ + if(i == view_in_cycle) + opt_view_visible(i, GMSH_SET|GMSH_GUI, 1); + else + opt_view_visible(i, GMSH_SET|GMSH_GUI, 0); + } + } + else{ + if((view_in_cycle+=step)<0) view_in_cycle=List_Nbr(CTX.post.list)-1; + for(i=List_Nbr(CTX.post.list)-1 ; i>=0 ; i+=step){ + if(i == view_in_cycle) + opt_view_visible(i, GMSH_SET|GMSH_GUI, 1); + else + opt_view_visible(i, GMSH_SET|GMSH_GUI, 0); + } + } + } + Draw(); +} void status_play_cb(CALLBACK_ARGS){ static long anim_time ; - int i; WID->set_anim_buttons(0); stop_anim = 0 ; anim_time = GetTime(); @@ -157,20 +185,7 @@ void status_play_cb(CALLBACK_ARGS){ if(stop_anim) break ; if(GetTime() - anim_time > 1.e6*CTX.post.anim_delay){ anim_time = GetTime(); - if(!CTX.post.anim_cycle){ - for(i=0 ; i<List_Nbr(CTX.post.list) ; i++) - opt_view_timestep(i, GMSH_SET|GMSH_GUI, opt_view_timestep(i, GMSH_GET, 0)+1); - } - else{//hide all views except view_in_cycle - for(i=0 ; i<List_Nbr(CTX.post.list) ; i++){ - if(i == view_in_cycle) - opt_view_visible(i, GMSH_SET|GMSH_GUI, 1); - else - opt_view_visible(i, GMSH_SET|GMSH_GUI, 0); - } - if(++view_in_cycle>=List_Nbr(CTX.post.list)) view_in_cycle=0; - } - Draw(); + ManualPlay(!CTX.post.anim_cycle,1); } WID->check(); } @@ -768,6 +783,10 @@ void help_short_cb(CALLBACK_ARGS){ Msg(DIRECT, " Alt+x set X view"); Msg(DIRECT, " Alt+y set Y view"); Msg(DIRECT, " Alt+z set Z view"); + Msg(DIRECT, " Left arrow previous time step"); + Msg(DIRECT, " Right arrow next time step"); + Msg(DIRECT, " Up arrow previous view"); + Msg(DIRECT, " Down arrow next view"); Msg(DIRECT, ""); WID->create_message_window(); }