共通デスクトップ環境 Dtksh ユーザーズ・ガイド

リソース

リソースはウィジェットの変数のことで、サイズ、位置、またはカラーといった属性の定義に使用します。各ウィジェットが持つリソースは通常、自身のリソースと、より高いレベルのウィジェットから引き継ぐリソースとが組み合わさったものです。Xt イントリンシクスおよび Motif のリソース名は接頭辞 (XtN または XmN) を持ち、その後にベース名が続きます。ベース名の最初の文字は常に小文字で、その後のベース名内の単語の最初の文字は常に大文字です。dtksh スクリプトでは、接頭辞を削除して、残ったベース名がリソース名になります。したがって、リソース XmNtopShadowColortopShadowColor になります。

Xt および Motif のコマンドの中には、シェル・スクリプトがリソースと、リソース値のペアを表すパラメータの変数を渡せるものがあります。これは、引き数が関連する Xt または Motif の C 関数に渡されるのと似ています。この例としては、ウィジェットの作成に使用するコマンドと XtSetValues コマンドがあります。dtksh において、リソースは、次の構文で指定されます。

resource:value

この resource はリソース名で、value はリソースに割り当てられる値です。dtksh は、自動的に value 文字列を適切な内部表現に変換します。たとえば、次のとおりです。

XtSetValues $WIDGET height:100 width:200 resizePolicy:RESIZE_ANY
XmCreateLabel LABEL $PARENT myLabel labelString:"Close Dialog"

XtGetValues を使用してウィジェット・リソース値を読み取る場合、戻り値は環境変数に設定されます。したがって、Xt イントリンシクスとは異なり、dtksh 版の XtGetValues は、名前:値ペアの形式ではなく、名前:(環境)変数ペアの形式を使用します。たとえば、次のとおりです。

XtGetValues $WIDGET height:HEIGHT resizePolicy:POLICY             
            sensitive:SENSITIVE
echo $HEIGHT
echo $POLICY
echo $SENSITIVE

上記の dtksh セグメントは、次の出力を行います。

100  
RESIZE ANY 
TRUE

ある種のリソース値 (文字列テーブルやビット・マスクなどを含む) は、特殊な表現になります。たとえば、リスト・ウィジェットでは、文字列テーブルに itemsselectedItems の両方のリソースの指定が可能です。dtksh では、文字列テーブルは、カンマで区切られた文字列リストで表現され、これは Motif の場合と似ています。文字列テーブルを返すリソースが XtGetValues による問い合わせを受けた場合、その結果としての値は、カンマで区切られた文字列セットになります。

ビット・マスク値が渡されるリソースは、そのマスクが、| (バー) で区切られたさまざまなマスク値から成る文字列として指定されていることを要求します。ビット・マスクを返すリソースが問い合わせを受けた場合、戻り値は、ビットを表す文字列 (カンマで区切られている) になります。たとえば、次のコマンドを使用して、VendorShell ウィジェット・クラスの mwmFunctions リソースを設定できます。

XtSetValues mwmFunctions: MWM_FUNC_ALL|MWM_FUNC_RESIZE