let receive (ie: input_event) (w: waiting)
: state * output_event list =
begin match ie with
| User_load_in_new_win_event(u) ->
handle_load_in_new_win_event No_opener No_name u w.waiting_state
| User_load_in_win_event(uw, u) ->
begin match win_from_user_window uw w.waiting_state with
| None -> (Waiting(w), [])
| Some(wr) -> handle_load_in_win_event wr u w.waiting_state
end
| User_link_to_new_win_event(uw, u) ->
let wo =
begin match win_from_user_window uw w.waiting_state with
| None -> No_opener
| Some(wr) -> Win_opener(wr)
end
in
handle_load_in_new_win_event wo No_name u w.waiting_state
| User_link_to_named_win_event(uw, str, u) ->
let wo =
begin match win_from_user_window uw w.waiting_state with
| None -> No_opener
| Some(wr) -> Win_opener(wr)
end
in
begin match win_from_win_name str w.waiting_state with
| None ->
handle_load_in_new_win_event wo (Str_name(str)) u w.waiting_state
| Some(wr) ->
handle_load_in_win_event wr u w.waiting_state
end
| User_close_win_event(uw) ->
begin match win_from_user_window uw w.waiting_state with
| None -> (Waiting(w), [])
| Some(wr) -> handle_close_win_event wr w.waiting_state
end
| User_input_text_event(User_textbox(uw, box_pos), str, _) ->
begin match win_from_user_window uw w.waiting_state with
| None -> (Waiting(w), [])
| Some(wr) -> handle_input_text_event wr box_pos str w.waiting_state
end
| User_click_button_event(User_button(uw, but_pos)) ->
begin match win_from_user_window uw w.waiting_state with
| None -> (Waiting(w), [])
| Some(wr) -> handle_click_button_event wr but_pos w.waiting_state
end
| Network_response_event(nr, resp) ->
handle_network_response_event nr resp w.waiting_state
end