Before diving into the complexities we will illustrate normal usage through an example. The following Prolog predicate creates a dialog for entering information on an employee. The result, running on Windows-NT, is shown in figure 8.
ask_employee :- new(Dialog, dialog('Define employee')), send_list(Dialog, append, [ new(N1, text_item(first_name)), new(N2, text_item(family_name)), new(S, new(S, menu(sex))), new(A, int_item(age, low := 18, high := 65)), new(D, menu(department, cycle)), button(cancel, message(Dialog, destroy)), button(enter, and(message(@prolog, assert_employee, N1?selection, N2?selection, S?selection, A?selection, D?selection), message(Dialog, destroy))) ]), send_list(S, append, [male, female]), send_list(D, append, [research, development, marketing]), send(Dialog, default_button, enter), send(Dialog, open). assert_employee(FirstName, FamilyName, Sex, Age, Depth) :- format('Adding ~w ~w ~w, age ~w, working at ~w~n', [ Sex, FirstName, FamilyName, Age, Depth]).
This example shows the layout capabilities of dialog and its dialog_item objects. Simply appending items will place items vertically and group buttons in rows. Labels are properly aligned. The enter button defines a call-back on the predicate assert_employee/5 using the values from the various controllers. Section 10.2 explains the use of message objects in detail.
Figure 8 : Enter employee |