Qtopia Shell Bridge Dialog その3 「リプライダイアログ」

 今度は リプライダイアログ。

#!/bin/sh

# リプライダイアログのボタン設定
qshdlg -t ReplyDialog -n -v "Value1,Value2,Value3,Value4,Value5" -l "項目1,項目2,項目3,項目4,項目5" -h250 reply &

while [ ! -p /var/spool/qshdlg/control ]
do
done

# Cancelボタンを殺しとく
echo 'cancel(QString)' cancel > /var/spool/qshdlg/control

# 入力パイプから押されたボタン内容を読込
read btn < /var/spool/qshdlg/input

# 読み込んだ内容をファイルに出力
echo $btn > /home/zaurus/btn_result.txt

# ダイアログを閉じる
echo 'reject()' > /var/spool/qshdlg/control

実行結果


 よーするに、固定のボタンを用意してやるダイアログ。
 ボタンの数、戻り値、ラベル(表示名)が任意に設定出来ます。
 所謂、メニューボタンの表示用ってことで、良いのかな?

 しかし、Replyだと OKボタンの扱いがまた変わるんですなぁ。
 しばらく、それがわかんなくて???状態でした。なんで、ボタンの値が渡らないの???と。フォーカス当てた後、必死に OKボタン押してた(苦笑)。

 ・・・あ、そっかこのスクリプトでは -n で非表示にしてるけど、本来的にはデフォルトで OKと Cancelのボタンに追加でこれらのボタンは表示されるんだった。
 ってことは、当然それらは独立したボタンなワケだから、別のボタンにフォーカス合わせても、 OKボタン押したら、OKボタンになるんか。

 確かに、ドキュメントにも

OK,Cancelボタンは非表示となりますが、キーボードのOK,Cancelボタンは 有効なままです。(それぞれ1,0を返します) 

 って書いてありますね(^^;)。