/* VRML Keyboard Input Example
*/

:-object rdline : [bcilib].

	main :-
		loadURL('rdline.wrl'),
		sleep(3000),
		new(text_event(text_event), _),
		setMFString(board, string, ['click area', 'enter data', '.... ']),
		eventObserverQueue(inputHandler, textSize, text_event),
		eventObserverQueue(inputHandler, textLine, text_event).

:-end_object rdline.


:-object text_event : [bcilib].

	var size = 0.

	text_event(Queue) :-
		repeat,
			get_queue(Queue, Event),
			next_event(Event),
		fail.

	next_event(Event) :-
		Event = textLine(mfint32(Codes), _Time, _Node),
		!,
		format('line event = ~w~n', [Event]),
		atom_codes(Line, Codes),
		setMFString(board, string, [Line]).
	next_event(Event) :-
		Event = textSize(sfint32(Size), _Time, _Node),
		!,
		format('size event = ~w~n', [Event]),
		size := Size.
	next_event(Event) :-
		format('unknown text event : ~w~n', [Event]).

:-end_object text_event.

/*
*/