script_find には、次のような関数とコールバックがあります。
PostErrorDialog()
OkCallback()
LoadStickyValues()
EvalCmd()
RetrieveAndSaveCurrentValues()
この関数は、ユーザが無効なディレクトリを入力するなどのエラー検出時に呼び出されます。この関数は簡易関数 DtkshDisplayErrorDialog() を呼び出しますが、この簡易関数はタイトルが [検索エラー] で、呼び出し位置から渡される変数 $1 にメッセージが格納されるダイアログ・ボックスを表示します。
dialogPostErrorDialog() { DtDisplayErrorDialog "Find Error" "$1" ¥ DIALOG_PRIMARY_APPLICATION_MODAL }
最後のパラメータ DIALOG_PRIMARY_APPLICATION_MODAL は、他の対話が発生する前に応答しなければならないダイアログを作成するように dtksh に通知します。
OkCallback()は、script_find メイン・ウィンドウの [了解] か [適用] ボタンが押されたときに呼び出されます。[了解] ボタンが押されると、script_find ウィンドウは管理から除外されます。[適用] か [了解] のどちらかに対して、入力検索ディレクトリは妥当性検査をされます。無効な場合は、OkCallback() は PostErrorDialog() を呼び出します。有効な場合は、script_find ウィンドウのトグル・ボタンのステータスについて検査が行われ、そのステータスに対応した調整が変数 $CMD に対して行われます。この変数には、最後に実行されるコマンド全体が含まれています。
この関数は、ウィンドウが作成され管理されるようになった後でメイン・プログラムから呼び出されます。スクリプトの最新の実行結果からすべての値をロードします。これらの値は、関数 RetrieveAndSaveCurrentValues() によって Find.sticky と呼ばれるファイルに保存されます。
EvalCmd() は LoadStickyValues() によって使用され、dtksh コマンドとして Find.sticdky にある各行の評価をします。Find.sticky ファイルの内容を次に示します。
XmTextSetString $SD "/users/dlm" XmTextFieldSetInsertionPosition $SD 10 XmTextSetString $FNP "two_letter_calls" XmTextFieldSetInsertionPosition $FNP 16 XtSetValues $FSTYPE menuHistory:$NODIR XtSetValues $FILETYPE menuHistory:$NOTYPE XmToggleButtonSetState $T2 true false XmToggleButtonSetState $T4 true false
RetrieveAndSaveCurrentValues() は script_find ウィンドウにあるウィジェットの現在の設定と値を検索し、それらをファイル Find.sticky に保存します。Find.sticky は、スクリプトが実行された後に引き続き LoadStickyValues()によって使用されます。