dtksh スクリプトは、Xlib、Xt、Motif、または libDt コマンドのいずれかを呼び出す前に、まず Xt イントリンシクスを初期化しなければなりません。これは、XtInitialize コマンドを呼び出して行います。このコマンドは、アプリケーション・シェル・ウィジェットを返します。ウィジェット ID を返すすべての dtksh コマンドが真であるように、XtInitialize は、最初の引き数である環境変数にそのウィジェット ID を返します。
XtInitialize TOPLEVEL myShellName Dtksh $0 "$@"
とすると、ウィジェット ID は環境変数 TOPLEVEL に返されます。
dtksh はデフォルトの app-defaults ファイルを提供し、このファイルは、XtInitialize の呼び出しで Dtksh のアプリケーション・クラス名を指定した場合に使用されます。また、この app-defaults ファイルには、デスクトップ・アプリケーションのデフォルト値の標準セットが格納されているので、dtksh アプリケーションと他のデスクトップ・アプリケーションとの外見的な一貫性を保つことができます。
ウィジェット作成に使用できるいくつかのコマンドは、次のとおりです。
管理されないウィジェットを作成します。
これらのコマンドにはそれぞれ、従わなければならない特定の形式があります。たとえば、管理されないプッシュ・ボタン・ウィジェットをトップレベル・ウィジェットの子として作成したいと仮定します。XtCreateWidget か XmCreatePushButton のどちらかを使用できます。これらのコマンドの形式は、次のとおりです。
XtCreateWidget variable name widgetclass $parent [resource:value ...]
XmCreatePushButton variable $parent name [resource:value ...]
プッシュ・ボタン・ウィジェットを作成する実際のコマンドは、次のとおりです。
XtCreateWidget BUTTON button XmPushButton $TOPLEVEL XmCreatePushButton BUTTON $TOPLEVEL button
上記のそれぞれのコマンドは、全く同じ動作 (管理されないプッシュ・ボタンの作成) をします。リソース値は設定されていないことに注意してください。プッシュ・ボタンのバックグラウンドの色を赤、フォアグラウンドの色を黒にしたいと仮定します。これらのリソース値を次のように設定できます。
XtCreateWidget BUTTON button XmPushButton $TOPLEVEL ¥ background:Red ¥ foreground:Black XmCreatePushButton BUTTON $TOPLEVEL button¥ background:Red ¥ foreground:Black
ウィジェットを作成する C 関数のすべてが、ウィジェット ID または ID を返します。対応する dtksh コマンドは、ウィジェット ID と同じ環境変数を設定します。これらはカテゴリ 3 コマンドで、その最初の引き数は、ウィジェット ID が戻る環境変数の名前です。ウィジェット ID は、dtksh が実際のウィジェット・ポインタにアクセスするために使用する ASCII 文字です。次のどちらかのコマンドで、新規フォーム・ウィジェットを作成できます。ただし、どちらの場合も、新規フォーム・ウィジェットのウィジェット ID が環境変数 FORM に返されます。
どちらかのコマンドを実行した後、$FORM を使用して新規フォーム・ウィジェットを参照できます。たとえば、次のコマンドを使用して、新規フォーム・ウィジェット内でラベル・ウィジェットを作成できます。
XmCreateLabel LABEL $FORM name¥ labelString:"Hi Mom" ¥ CH_FORM ¥ leftAttachment:ATTACH_FORM
NULL と呼ばれる特別なウィジェット ID があります。これは、シェル・スクリプトに NULL のウィジェットの指定が必要である場合に使用します。たとえば、フォーム・ウィジェットの defaultButton リソースを無効にする場合には、コマンド XtSetValues $FORM defaultButton:NULL を使用してください。