MINERVA superseeded IF/Prolog.
Please see
http://www.ifcomputer.co.jp/MINERVA
for details.
We discontinued to sell IF/Prolog Dec 31. 2003.
For current customers, we continue to provide
professional support for IF/Prolog until Dec 31, 2008.
OSF/Motifではすべてのコールバックは、アプリケーションが最終的に受け付けるデータを含むデータ構造によって呼び出されます。データは、コールバックを引き起こす理由に依存する変数です。共通のコンポーネントは、定数名で指定されている理由とイベント構造体です。理由定数とwidgetクラスとの組み合わせが引き渡されるデータを決定し、イベント構造体はコールバックを引き起こす低レベル(Xlib)のイベントを含んでいます。
IF/PrologのOSF/Motifインタフェースでは、理由だけがアトムとして、また最後の引数としてCallbackに引き渡されます。理由は、標準的な理由を変換するコンバータによって文字列表現に変換されます。
コールバック構造体の別のコンポーネントは、特別な述語によって問い合わせを行わなければならず、要求された場合にのみProlog表現に変換されます。多くの場合、アプリケーションはコールバック構造体を問い合わせる必要はありません。それは、widgetから直接同一の情報を得ることができるからです。
xmGetCallbackComponents(?CallbackComponentList)
xmGetCallbackComponent(?CallbackComponent)
現在コールバックのコールバック構造体から、指定されたコンポーネントを取り出します。
CallbackComponentListは、要素component(?Value)のリストです。
'component'は問い合わせるコンポーネントを指定し、Valueはコンポーネントの値に単一化されます。C構造体の要素名に対応するアトムは、コンポーネントの指定子として使用することができます。コンポーネント名があいまいに使用されている場合には、指定子はコンポーネント名と同一ではなくなります。たとえば名前'value'が整数とXmStringの両方に使われている場合、指定子は'value'と'valueString'になります。
この述語がコールバックから呼び出されない場合には、例外処理が引き起こされます。また現在のコールバックの構造体が、要求されたコンポーネントを含んでいない場合にも例外処理が生じます。このためアプリケーションは最初に理由をチェックし、それから正しいコンポーネントを決定しなければなりません。
特別なコンポーネントの指定子 'widget'は、コールバックのwidgetを問い合わせます。
コンポーネントの指定子がcallbackstructの場合には、Valueは単純変数ではありません。それは、CallbackComponentListのようなリストになります。
イベントコンポーネントも調べることができます。この場合には、アプリケーションは最初にeventTypeをチェックしなければなりません。正しいイベント構造体のコンポーネントは、それに依存します。Prologイベントコンポーネントの指定子は、'event'の後にCイベント構造体のコンポーネント名を続け、アンダースコアの代わりに大文字によって単語を区切ったものです。
(x --> eventX, in_out_detail --> eventInOutDetail)
正しいコールバック構造体のコンポーネント、および正しいイベント構造体のコンポーネント名については、索引の一覧表を参照して下さい。
?- [user].
| breakCallback(_,_,Reason) :-
write(Reason), nl, break.
| EOF
yes
?- xtAddCallback(pushButton, activateCallback,
breakCallback, _).
yes
?- xtMainLoop.
< click to push button >
activate
[2] ?- xtGetCallbackComponents([
widget(Widget),
reason(Reason),
eventType(Type),
eventButton(Button)
]).
Widget = pushButton
Reason = activate
Type = KeyPress
Button = buttonX
yes
?-
list_expected CallbackComponentListは、リストでなければならない
illegal_component_list_elememt CallbackComponentListの要素は、アリティ1の項でなければならない。
no_callback_struct_to_analyze コールバックから呼び出されなかったか、あるいはコールバックがコールバックの構造体をもっていなかった
illegal_class_component 要求されたコンポーネントがこのコールバックの構造体に存在せず、呼び出し中のwidgetのコールバックの構造体のメンバでない
illegal_reason_component 要求されたコンポーネントがこのコールバックの構造体に存在せず、この理由に対して有効でない
illegal_callback_component 要求されたコールバックのコンポーネントがインタフェースに登録されていない
|