XtVaGetValues(3) ウィジェットのリソースを取得・設定する

Other Alias

XtSetValues, XtVaSetValues, XtSetSubvalues, XtVaSetSubvalues, XtGetValues, XtGetSubvalues, XtVaGetSubvalues

書式

void XtSetValues(w, args, num_args)

      Widget w;

      ArgList args;

      Cardinal num_args;

void XtVaSetValues(w, ...)

      Widget w;

void XtSetSubvalues(base, resources, num_resources, args, num_args)

      XtPointer base;

      XtResourceList resources;

      Cardinal num_resources;

      ArgList args;

      Cardinal num_args;

void XtVaSetSubvalues(base, resources, num_resources, ...)

      XtPointer base;

      XtResourceList resources;

      Cardinal num_resources;

void XtGetValues(w, args, num_args)

      Widget w;

      ArgList args;

      Cardinal num_args;

void XtVaGetValues(w, ...)

      Widget w;

void XtGetSubvalues(base, resources, num_resources, args, num_args)

      XtPointer base;

      XtResourceList resources;

      Cardinal num_resources;

      ArgList args;

      Cardinal num_args;

void XtVaGetSubvalues(base, resources, num_resources, ...)

      XtPointer base;

      XtResourceList resources;

      Cardinal num_resources;

引き数

args
名前/アドレスの組である引き数リストを指定する。名前はリソース名であり、 アドレスはリソース値が格納されるアドレスまたはその新しい値である。
base
サブパートデータ構造体のベースアドレスを指定する。 この構造体はリソースの取得、書き込みが行われるものである。
num_args
引き数リスト内の引き数の数を指定する。
resources
ウィジェットでないリソースのリストまたは値を指定する。
num_resources
リソースのリスト内のリソースの数を指定する。
w
ウィジェットを指定する。
...
名前/アドレスの組である可変長引き数リストを指定する。名前はリソース名であり、 アドレスはリソース値が格納されるアドレスまたはその新しい値である。

説明

関数 XtSetValues は、 Core ウィジェットのフィールドに対して指定されたリソースから処理を始め、その ウィジェットまでサブクラスの関係をたどってゆく。 各クラスにおいて、新しいウィジェットのデータレコードには新しい値(引き数 で指定されている場合)または既存の値(新しい値が指定されていない場合)が 書き込まれる。 次に XtSetValues は、スーパークラス-サブクラスの順でウィジェットの set_values 手続きを 呼び出す。 このウィジェットが NULL でない set_value_hook フィールドを持っている場 合には、対応する set_values 手続きの直後にこのフックが呼び出される。 この手続きを使って、サブクラスは XtSetValues に対してウィジェットでないデータをセットすることができる。

ウィジェットの親が constraintWidgetClass のサブクラスである場合、このウィジェットの constraint 情報も更新される。 この関数は constraintWidgetClass に対して指定された constraint リソースから処理を始め、その親のクラスま でサブクラスの関係をたどってゆく。 各クラスのにおいて、新しい constraint レコードには新しい値と既存の値が 書き込まれる。 次に、この関数は constraintWidgetClass から親ウィジェットのクラスという順序で、constraint 情報についての set_values 手続きを呼び出す。 constraint 情報に関する set_value 手続きがウィジェットの引き数を使って呼 び出される。この引き数は、constraint レコードの引き数だけでなく、レコード 全ての set_values 手続きについてのものである。これにより、ウィジェット に関する全ての情報に基づいて、望ましい値への調整を行うことができる。

XtSetValues は、現在のウィジェットと新しいウィジェットを比較し、geometry リクエス トが必要かどうか決める。 ジオメトリの変更が必要ならば、この関数はリクエストを発行する。これに対 して、ジオメトリマネージャは XtGeometryYes, XtGeometryAlmost, XtGeometryNo のいずれかを返す。 XtGeometryYes の場合は、 XtSetValues はウィジェットの resize 手続きを呼び出す。 XtGeometryNo の場合は、 XtSetValues は geometory フィールドを元の値にリセットする。 XtGeometryAlmost の場合は、 XtSetValues は set_values_almost 手続きを呼び出す。 この手続きは行うべき処理を決定し、geometry フィールドに対する新しい値 を新しいウィジェットに書き込む。 それから XtSetValues は、ジオメトリマネージャを再び呼び出すべきか判定しながらこの処 理を繰り返す。

最後に、set_values 手続きのうちに1つでも True を返すものがあった場合、 XtSetValues はウィジェットのウィンドウに対して Xlib の XClearArea 関数を呼び出し、ウィジェットの露出手続きを起こさせる。

関数 XtSetSubvalues は、引き数 base で識別される構造体にリソースを格納する。

関数 XtGetValues は、コアウィジェットのフィールドに対して指定されたリソースから処理を始 め、そのウィジェットまでサブクラスの関係をたどってゆく。 渡された引き数リストの value フィールドは、対応するリソース値を格納する 領域のアドレスでなければならない。 関数の呼び出し側はウィジェット内で使われているリソース表現型に基づき、 この領域の割り当てと解放を行わなければならない。

このウィジェットの親が constraintWidgetClass のサブクラスである場合、これに続いて XtGetValues は要求された constraint リソースに対する値を取得する。 この関数は、 constraintWidgetClass に対して指定された constraint リソースから処理を始め、このウィジェット の親の constraint リソースまでサブクラスの関係をたどってゆく。 検索されたリソースリスト内に無いリソース名が引き数リストに含まれている場 合、これに対応するアドレスに格納されている値が変更されることはない。 最後に、get_values_hook 手続きが NULL でない場合、 XtGetValues を使って全てのリソース値を取得した後にスーパークラス-サブクラスの順で これらの手続きが呼び出される。 これを使って、サブクラスはウィジェットでないリソースデータを XtGetValues に対して提供することができる。

関数 XtGetSubvalues は、引き数 base で識別される構造体からリソース値を取得する。