let previousButton = (Button.create ~text:"< Previous step" ~width:10
~command:(fun() ->
let rec trace_story_adjust () =
match (!trace_story) with [] -> ()
|(x::ls) -> if(not(containStr "->" x))
then (next_story:=(car (!trace_story))::(!next_story) ; trace_story := ls ; trace_story_adjust ());
in
if((!tag_number)>0) then(
Button.configure goButton ~state:`Normal;
remove_graphics_obj ();
previous_id_refresh_story ();
previous_tag_number ();
previous_yAction ();
clear_message_story ();
previous_state();
previous_variable_state ();
previous_message_stack ();
if(!intruder_mode) then (trace_story_adjust (); update_intruder_knowledge () ; display_intruder_knowledge());
let (sender, receiver, _) = actionTreatment (car (!trace_story)) in
next_story:=(car (!trace_story))::(!next_story);
trace_story := (cdr (!trace_story));
insert_lst sender receiver ;
Listbox.delete story ~first:`End ~last:`End;
click := (-1))
else if(!intruder_mode && (!tag_number)=0 && (!trace_story)<>[]) then(
Button.configure goButton ~state:`Normal;
next_story:=(car (!trace_story))::(!next_story);
trace_story := (cdr (!trace_story));
previous_state();
previous_message_stack ();
previous_variable_state ();
trace_story_adjust ();
update_intruder_knowledge () ;
display_intruder_knowledge();
);
)
buttonFrame : Widget.button Widget.widget)