dtksh ユーティリティには、簡易関数のファイルがあります。このファイルは、シェル・プログラマにとって有益なシェル関数を含むシェル・スクリプトです。シェル関数は、dtksh プログラマが頻繁に行わなければならないオペレーションを実行します。これらには、(ヘルプ、エラー、警告などの) ダイアログの作成を簡易化する関数や、いくつかのボタンを容易に作成する関数やフォーム・ウィジェットの子に対する制約リソースの構成を容易にする関数が含まれます。シェル・スクリプトを記述する際に、これらの簡易関数を必ず使用しなければならないわけではありません。開発者がより短いステップで、よりわかりやすいシェル・スクリプトをより簡単に作成できるようにするために提供されているものです。
シェル・スクリプトがこれらの関数にアクセスする前に、簡易関数が入っているファイルを取り込んでください。簡易関数は /usr/dt/scripts/DtFuncs.sh ファイルにあります。これをシェル・スクリプトに取り込むには、次のように記述してください。
. /usr/dt/lib/dtksh/DtFuncs.dtsh
DtkshAddButtons は、コンポジット・ウィジェットに同じ種類のボタンを 1 つ以上追加します。最もよく使用されるのは、いくつかのボタンをメニュー区画またはメニューバーに追加するときです。
次に使用方法を示します。
DtkshAddButtons parent widgetClass label1 callback1 [label2 callback2 ...] DtkshAddButtons [-w] parent widgetClas variable1 label1 callback1 ¥ [variable2 label2 callback2 ...]
-w オプションは、作成する各ボタンのウィジェット・ハンドルを簡易関数が返すことを指定します。ウィジェット・ハンドルは指定した環境変数に返されます。widgetClass パラメータは次のいずれかに設定できますが、特に指定しない場合のデフォルト値は XmPushButtonGadget です。
XmPushButton
XmPushButtonGadget
XmToggleButton
XmToggleButtonGadget
XmCascadeButton
XmCascadeButtonGadget
次に例を示します。
DtkshAddButtons $MENU XmPushButtonGadget Open do_Open Save do_Save Quit exit DtkshAddButtons -w $MENU XmPushButtonGadget B1 Open do_Open B2 Save do_Save
DtkshSetReturnKeyControls は、フォーム・ウィジェット内にテキスト・ウィジェットを構成し、そのフォーム内ではリターン・キーを押してもデフォルト・ボタンが動作せず、フォーム内の次のテキスト・ウィジェットにフォーカスが移動するようにします。一連のテキスト・ウィジェットを含むウィンドウがあり、フォーカスが最後のテキスト・ウィジェットにある間はユーザがリターン・キーを押すまでデフォルト・ボタンが動作しないようにする場合などに便利です。
次に使用方法を示します。
DtkshSetReturnKeyControls textWidget nextTextWidget formWidget defaultButton
textWidget パラメータは、リターン・キーが押されるとフォーカスが (nextTextWidget パラメータで指定したように) 次のテキスト・ウィジェットに移動するようにウィジェットの構成を設定します。formWidget パラメータは、デフォルト・ボタンを含み、2 つのテキスト・ウィジェットの親となるフォームを指定します。defaultButton パラメータは、フォーム・ウィジェット内でデフォルト・ボタンとして扱われるコンポーネントを指定します。
次に例を示します。
DtkshSetReturnKeyControls $TEXT1 $TEXT2 $FORM $OK DtkshSetReturnKeyControls $TEXT2 $TEXT3 $FORM $OK
これらの簡易関数は、フォーム制約条件のクラスの指定を簡易化します。コンポーネントを他のコンポーネントのエッジの 1 つに接続します。ウィジェットのリソース・リストを構築するときに使用します。これは ATTACH_WIDGET 制約条件を使用して実行されます。
次に使用方法を示します。
DtkshUnder widgetId [offset] DtkshOver widgetId [offset] DtkshRightOf widgetId [offset] DtkshLeftOf widgetId [offset]
widgetId パラメータは、現在のコンポーネントを接続するウィジェットを指定します。offset 値はオプションで、指定しない場合のデフォルト値は 0 です。
次に例を示します。
XtCreateManagedWidget BUTTON4 button4 XmPushButton $FORM ¥ labelString:"Exit" ¥ $(DtkshUnder $BUTTON2) ¥ $(DtkshRightOf $BUTTON3)
これらの簡易関数は、フォーム制約条件のクラスの指定を簡易化します。コンポーネントを、フォーム内の他のコンポーネントに依存せずに配置する方法を提供します。フォームが伸縮しても、コンポーネントはフォーム内の関連する場所を維持します。他のフォーム制約がコンポーネントに指定されると、コンポーネントも伸縮します。これは ATTACH_POSITION 制約条件を使用して実行されます。
次に使用方法を示します。
DtkshFloatRight [position] DtkshFloatLeft [position] DtkshFloatTop [position] DtkshFloatBottom [position]
オプションの position パラメータは、コンポーネントの指定されたエッジが配置される相対位置を指定します。position 値はオプションで、指定しない場合のデフォルト値は 0 です。
次に例を示します。
XtCreateManagedWidget BUTTON1 button1 XmPushButton $FORM ¥ labelString:"Ok" ¥ $(DtkshUnder $SEPARATOR) ¥ $(DtkshFloatLeft 10) ¥ $(DtkshFloatRight 40)
これらの簡易関数は、フォーム制約条件のクラスの指定を簡易化します。フォームが伸縮してもコンポーネントの位置が変わらないように、フォーム・ウィジェットのエッジの 1 つをコンポーネントに接続する方法を提供します。ただしこのコンポーネントに設定されている他のフォーム制約条件によっては、サイズの伸縮がまだ行われる場合があります。これは ATTACH_FORM 制約条件を使用して実行されます。
次に使用方法を示します。
DtkshAnchorRight [offset] DtkshAnchorLeft [offset] DtkshAnchorTop [offset] DtkshAnchorBottom [offset]
オプションの offset パラメータは、コンポーネントを配置するフォーム・ウィジェットのエッジからの距離を指定します。オフセットを指定しない場合は 0 が指定されます。
次に例を示します。
XtCreateManagedWidget BUTTON1 button1 XmPushButton $FORM ¥ labelString:"Ok" ¥ $(DtkshUnder $SEPARATOR) ¥ $(DtkshAnchorLeft 10) ¥ $(DtkshAnchorBottom 10)
これらの簡易関数は、フォーム制約条件のクラスの指定を簡易化します。コンポーネントをフォーム・ウィジェットの高さまたは幅を最大限に拡大できるように構成する方法を提供します。この動作は、コンポーネントの 2 つのエッジを (上下は DtSpanHeight で、左右は DtSpanWidth で) フォーム・ウィジェットに接続することによって実行します。コンポーネントは通常、フォーム・ウィジェットのサイズを変更すると必ずサイズが変更されます。すべての接続に ATTACH_FORM 制約が使用されます。
次に使用方法を示します。
DtkshSpanWidth [leftOffset rightOffset] DtkshSpanHeight [topOffset bottomOffset]
オプションの offset パラメータは、コンポーネントを配置するフォーム・ウィジェットのエッジからの距離を指定します。オフセットを指定しない場合は 0 が指定されます。
次に例を示します。
XtCreateManagedWidget SEP sep XmSeparator $FORM ¥ $(DtkshSpanWidth 1 1)
これらの簡易関数は、Motif フィードバック・ダイアログのそれぞれのシングル・インスタンスを作成します。要求した型のダイアログのインスタンスがすでに存在している場合は再利用されます。ダイアログの親は環境変数 $TOPLEVEL から獲得されます。これはシェル・スクリプトによって設定され、その後は変更されません。要求したダイアログのハンドルは、次のいずれかの環境変数に返されます。
_DTKSH_ERROR_DIALOG_HANDLE
_DTKSH_QUESTION_DIALOG_HANDLE
_DTKSH_WORKING_DIALOG_HANDLE
_DTKSH_WARNING_DIALOG_HANDLE
_DTKSH_INFORMATION_DIALOG_HANDLE
独自のコールバックをダイアログ・ボタンに接続する場合、終了するまでダイアログを破壊しないでください。ダイアログを管理しないと、後で再び使用されます。ダイアログを破壊する必要がある場合は、関連する環境変数を消去して、簡易関数がダイアログを再利用しないようにしてください。
次に使用方法を示します。
DtkshDisplay<name>Dialog title message [okCallback closeCallback helpCallback dialogStyle]
[了解] ボタンは常に管理され、デフォルト時にはダイアログを管理しません。[取消し] ボタンと [ヘルプ] ボタンは、コールバックが提供されたときだけ管理されます。dialogStyle パラメータは、関連するブリテン・ボード・リソースがサポートする標準リソース設定のいずれかを受け入れます。
次に例を示します。
DtkshDisplayErrorDialog "Read Error" "Unable to read the file" "OkCallback" ¥ "CancelCallback" "" DIALOG_PRIMARY_APPLICATION_MODAL
これらの簡易関数は、ヘルプ・ダイアログのそれぞれのシングル・インスタンスを作成します。ヘルプ・ダイアログの要求した型のインスタンスがすでに存在している場合は再利用されます。ダイアログの親は環境変数 $TOPLEVEL から獲得されます。これはシェル・スクリプトによって設定され、その後は変更されません。要求したダイアログのハンドルは、次のいずれかの環境変数に返されます。
_DTKSH_HELP_DIALOG_HANDLE
_DTKSH_QUICK_HELP_DIALOG_HANDLE
ダイアログを破壊する必要がある場合は、関連する環境変数を消去して、簡易関数がダイアログを再利用しないようにしてください。
次に使用方法を示します。
DtkshDisplay*HelpDialog title helpType helpInformation [locationId]
パラメータの意味は helpType パラメータに指定した値に依存します。意味は次のとおりです。
helpType = HELP_TYPE_TOPIC
helpInformation = ヘルプ・ボリューム名
locationId = ヘルプ・トピック位置 ID
helpType = HELP_TYPE_STRING
helpInformation = ヘルプ文字列
locationId = <未使用>
helpType = HELP_TYPE_DYNAMIC_STRING
helpInformation = ヘルプ文字列
locationId = <未使用>
helpType = HELP_TYPE_MAN_PAGE
helpInformation = マニュアル・ページ名
locationId = <未使用>
helpType = HELP_TYPE_FILE
helpInformation = ヘルプ・ファイル名
locationId = <未使用>
次に例を示します。
DtkshDisplayHelpDialog "Help On Dtksh" HELP_TYPE_FILE "helpFileName"