let goButton = (Button.create ~text:"Next step >" ~width:10
~state:`Disabled
~command:(fun () ->
let action = if((!next_story)<>[]) then car !next_story else "" in
let other_action = if(!intruder_mode && (not(containStr "->" action))) then decompose action else [] in
if(other_action<>[] && ((!next_story)<>[])) then(
if((car other_action)="add_in_set") then add_in_set (cadr other_action) (caddr other_action) (caddr (cdr other_action)) (caddr (cddr other_action));
next_story := (cdr !next_story);
trace_story := action::(!trace_story);
if(!intruder_mode && containStr "(Intruder_, 0)" action)
then (update_intruder_knowledge() ; display_intruder_knowledge();)
)
else if ((!next_story)<>[]) then(
next_story := (cdr !next_story);
trace_story := action::(!trace_story);
let (sender, reciever, message_arg) = actionTreatment action in
let message = decompose message_arg in
add_in_automate_story ();
add_in_variable_story ();
next_message_stack ();
next_id_refresh_story ();
state_refresh sender (cadr message) reciever (caddr message);
add_tag_number ();
clear_message_story ();
if(!intruder_mode) then display_intruder_knowledge();
let message_sender = replace "_new" "" (transcript_sender (cadr message)) in
let message_receiver = replace "_new" "" (transcript_receiver (caddr message)) in
let message_real = transcript_to_real sender (cadr message) in
Listbox.insert story ~index:`End ~texts:[sender^" -> "^reciever^" : "^message_sender];
draw_action sender reciever red message_sender message_real message_receiver black (emission lst sender message_sender) green;
insert_lst sender reciever;
)
) buttonFrame : Widget.button Widget.widget)