以下のプログラムは、Athena widgetsを用いたX11 toolkitの概念のいくつかを示しています。これは、ディレクトリ $PROROOT/x11r4/demos 中のファイル dialogd.pro にあります。また、別の例題もここに含まれています。
プログラムの概要:
・xtInitialize/5 によるtoolkitの初期化
・xtCreateManagedWidget/5 によるmanaged widgetの生成
・xtSetValues/2 によるリソ−スの変更
・xtAddCallback/4 によるコ−ルバックの追加
・アクションのトランスレ−ションや使用法の変更
・ユ−ザとの対話処理において生じるイベントによる、手続きの呼び出し
まず、タイトル 'Hello, Please type input:'、テキスト用入力ウインドウ、ユ−ザによるテキストの入力が終了した時に押す2つのボタンからなる、ダイアログwidgetが作られます。テキストの入力は、リタ−ンキ−、あるいは'^C'を入力することによっても終えることができます。この振る舞いはユ−ザ定義のアクションによって起こるもので、テキストwidgetのトランスレ−ションテ−ブルに含まれています。
program :-
program_parameters(Pars),
xtInitialize(Toplevel, Toplevel, demo, [], Pars),
xtSetValues(Toplevel, [ allowShellResize(true),
input(true)
]),
xtAddAction(action),
xtCreateManagedWidget(dialog, dialog,
dialogWidgetClass, Toplevel,
[ label('Hello, please type input:'),
value('')
]),
xtCreateManagedWidget(Confirm, Confirm,
commandWidgetClass, dialog,
[ label('Confirm')
]),
xtAddCallback(Confirm, callback, confirm, dialog),
xtCreateManagedWidget(Cancel, Cancel,
commandWidgetClass, dialog,
[ label('Cancel')
]),
xtAddCallback(Cancel, callback, cancel, _),
xtNameToWidget(dialog, value, TextWidget),
xtSetValues(TextWidget, [ translations(
'#override\n
confirm(Widget, Dialog, _) :- xawDialogGetValueString(Dialog, String), write('String "'), write(String), write('" entered\n').
cancel(Widget, CallData, AppDate) :- exit(0).
action(Widget, params(confirm)) :- xawDialogGetValueString(dialog, String), write('String "'), write(String), write('" entered\n'). action(Widget, params(cancel)) :- exit(0).
| 冒頭へ |
|