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

付録 B dtksh 簡易関数

dtksh ユーティリティには、簡易関数のファイルがあります。このファイルは、シェル・プログラマにとって有益なシェル関数を含むシェル・スクリプトです。シェル関数は、dtksh プログラマが頻繁に行わなければならないオペレーションを実行します。これらには、(ヘルプ、エラー、警告などの) ダイアログの作成を簡易化する関数や、いくつかのボタンを容易に作成する関数やフォーム・ウィジェットの子に対する制約リソースの構成を容易にする関数が含まれます。シェル・スクリプトを記述する際に、これらの簡易関数を必ず使用しなければならないわけではありません。開発者がより短いステップで、よりわかりやすいシェル・スクリプトをより簡単に作成できるようにするために提供されているものです。

シェル・スクリプトがこれらの関数にアクセスする前に、簡易関数が入っているファイルを取り込んでください。簡易関数は /usr/dt/scripts/DtFuncs.sh ファイルにあります。これをシェル・スクリプトに取り込むには、次のように記述してください。

. /usr/dt/lib/dtksh/DtFuncs.dtsh

DtkshAddButtons

DtkshAddButtons は、コンポジット・ウィジェットに同じ種類のボタンを 1 つ以上追加します。最もよく使用されるのは、いくつかのボタンをメニュー区画またはメニューバーに追加するときです。

次に使用方法を示します。

DtkshAddButtons parent widgetClass label1 callback1           
                [label2 callback2 ...]  
DtkshAddButtons [-w] parent widgetClas variable1 label1 callback1 ¥
                [variable2 label2 callback2  ...]

-w オプションは、作成する各ボタンのウィジェット・ハンドルを簡易関数が返すことを指定します。ウィジェット・ハンドルは指定した環境変数に返されます。widgetClass パラメータは次のいずれかに設定できますが、特に指定しない場合のデフォルト値は XmPushButtonGadget です。

次に例を示します。

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 は、フォーム・ウィジェット内にテキスト・ウィジェットを構成し、そのフォーム内ではリターン・キーを押してもデフォルト・ボタンが動作せず、フォーム内の次のテキスト・ウィジェットにフォーカスが移動するようにします。一連のテキスト・ウィジェットを含むウィンドウがあり、フォーカスが最後のテキスト・ウィジェットにある間はユーザがリターン・キーを押すまでデフォルト・ボタンが動作しないようにする場合などに便利です。

次に使用方法を示します。

DtkshSetReturnKeyControls textWidget nextTextWidget formWidget
                          defaultButton

textWidget パラメータは、リターン・キーが押されるとフォーカスが (nextTextWidget パラメータで指定したように) 次のテキスト・ウィジェットに移動するようにウィジェットの構成を設定します。formWidget パラメータは、デフォルト・ボタンを含み、2 つのテキスト・ウィジェットの親となるフォームを指定します。defaultButton パラメータは、フォーム・ウィジェット内でデフォルト・ボタンとして扱われるコンポーネントを指定します。

次に例を示します。

DtkshSetReturnKeyControls $TEXT1 $TEXT2 $FORM $OK 
DtkshSetReturnKeyControls $TEXT2 $TEXT3 $FORM $OK

DtkshUnder、DtkshOver、DtkshRightOf、DtkshLeftOf

これらの簡易関数は、フォーム制約条件のクラスの指定を簡易化します。コンポーネントを他のコンポーネントのエッジの 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)

DtkshFloatRight、DtkshFloatLeft、DtkshFloatTop、DtkshFloatBottom

これらの簡易関数は、フォーム制約条件のクラスの指定を簡易化します。コンポーネントを、フォーム内の他のコンポーネントに依存せずに配置する方法を提供します。フォームが伸縮しても、コンポーネントはフォーム内の関連する場所を維持します。他のフォーム制約がコンポーネントに指定されると、コンポーネントも伸縮します。これは 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)

DtkshAnchorRight、DtkshAnchorLeft、DtkshAnchorTop、DtkshAnchorBottom

これらの簡易関数は、フォーム制約条件のクラスの指定を簡易化します。フォームが伸縮してもコンポーネントの位置が変わらないように、フォーム・ウィジェットのエッジの 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)

DtkshSpanWidth および DtkshSpanHeight

これらの簡易関数は、フォーム制約条件のクラスの指定を簡易化します。コンポーネントをフォーム・ウィジェットの高さまたは幅を最大限に拡大できるように構成する方法を提供します。この動作は、コンポーネントの 2 つのエッジを (上下は DtSpanHeight で、左右は DtSpanWidth で) フォーム・ウィジェットに接続することによって実行します。コンポーネントは通常、フォーム・ウィジェットのサイズを変更すると必ずサイズが変更されます。すべての接続に ATTACH_FORM 制約が使用されます。

次に使用方法を示します。

DtkshSpanWidth [leftOffset rightOffset]  
DtkshSpanHeight [topOffset bottomOffset]

オプションの offset パラメータは、コンポーネントを配置するフォーム・ウィジェットのエッジからの距離を指定します。オフセットを指定しない場合は 0 が指定されます。

次に例を示します。

XtCreateManagedWidget SEP sep XmSeparator $FORM ¥             
                      $(DtkshSpanWidth 1 1)

DtkshDisplayInformationDialog、DtkshDisplayQuestionDialog、DtkshDisplayWarningDialog、DtkshDisplayWorkingDialog、DtkshDisplayErrorDialog

これらの簡易関数は、Motif フィードバック・ダイアログのそれぞれのシングル・インスタンスを作成します。要求した型のダイアログのインスタンスがすでに存在している場合は再利用されます。ダイアログの親は環境変数 $TOPLEVEL から獲得されます。これはシェル・スクリプトによって設定され、その後は変更されません。要求したダイアログのハンドルは、次のいずれかの環境変数に返されます。


注 -

独自のコールバックをダイアログ・ボタンに接続する場合、終了するまでダイアログを破壊しないでください。ダイアログを管理しないと、後で再び使用されます。ダイアログを破壊する必要がある場合は、関連する環境変数を消去して、簡易関数がダイアログを再利用しないようにしてください。


次に使用方法を示します。

DtkshDisplay<name>Dialog title message [okCallback closeCallback
                         helpCallback dialogStyle]

[了解] ボタンは常に管理され、デフォルト時にはダイアログを管理しません。[取消し] ボタンと [ヘルプ] ボタンは、コールバックが提供されたときだけ管理されます。dialogStyle パラメータは、関連するブリテン・ボード・リソースがサポートする標準リソース設定のいずれかを受け入れます。

次に例を示します。

DtkshDisplayErrorDialog "Read Error" "Unable to read the file"
                  "OkCallback" ¥
                  "CancelCallback" "" DIALOG_PRIMARY_APPLICATION_MODAL

DtkshDisplayQuickHelpDialog および DtkshDisplayHelpDialog

これらの簡易関数は、ヘルプ・ダイアログのそれぞれのシングル・インスタンスを作成します。ヘルプ・ダイアログの要求した型のインスタンスがすでに存在している場合は再利用されます。ダイアログの親は環境変数 $TOPLEVEL から獲得されます。これはシェル・スクリプトによって設定され、その後は変更されません。要求したダイアログのハンドルは、次のいずれかの環境変数に返されます。


注 -

ダイアログを破壊する必要がある場合は、関連する環境変数を消去して、簡易関数がダイアログを再利用しないようにしてください。


次に使用方法を示します。

DtkshDisplay*HelpDialog title helpType helpInformation [locationId]

パラメータの意味は helpType パラメータに指定した値に依存します。意味は次のとおりです。

次に例を示します。

DtkshDisplayHelpDialog "Help On Dtksh" HELP_TYPE_FILE       
                       "helpFileName"