QtopiaShell Bridge Dialog その2 「セレクトダイアログ」

 本日はセレクトダイアログ〜。

#!/bin/sh

# ダイアログ作成 文字コードを UTF8に設定
qshdlg -c utf8 -M select &
while [ ! -p /var/spool/qshdlg/control ]
do
done

# リスト項目を作成する作業をシェル関数化
make_list()
{
#
# 'item(QString,QString)',表示項目,戻り値(文字列)
#
echo 'item(QString,QString)' "項目1" 1 > /var/spool/qshdlg/control
echo 'item(QString,QString)' "項目2" 2 > /var/spool/qshdlg/control
echo 'item(QString,QString)' "項目3" 3 > /var/spool/qshdlg/control
echo 'item(QString,QString)' "項目4" 4 > /var/spool/qshdlg/control
echo 'item(QString,QString)' "項目5" 5 > /var/spool/qshdlg/control
echo 'showSelect()' > /var/spool/qshdlg/control
}

# 選択リスト作成
make_list

# 入力内容を入力パイプから読み出して、内容をファイルに出力
read SEL < /var/spool/qshdlg/input
echo $SEL > /home/zaurus/sel_result.txt

# ウィンドウを閉じる
echo 'reject()' > /var/spool/qshdlg/control

 以下解説。自分のために(^^;)。


 んと、まず qshdlgでセレクトダイアログを表示するのは、まぁそのまんま。

 で、その後、リストされる項目をコントロールパイプ(/var/spool/qshdlg/control)に echo で流し込む、と。

 よーするに、選択ウィンドウに表示されてるモンって、全部オブジェクトになるわけか。

 表示するオブジェクトを順番に

echo 'item(QString,QString)' "項目1" 1 > /var/spool/qshdlg/control

で、コントロールパイプに流し込んでやって、最後に showSelect() を送った時点で、初めて選択リストが表示されると。はぁ〜。

 にゃののんとも話してたんですが、多分 qshdlg は Qtopiaの構造をそのままシェルから触れるようにしたもんだと思うんで、このへんは Qtopia自体の仕様と基本的には一緒なんでしょう。

 ってことは、 QtopiaGUIって、エラいダイナミックなんですな。もっとスタティックなもんやと思ってた(笑)。

 本筋戻って、

 item(QString,Qstring)で、リストの表示項目とそれに対する戻り値が設定されてるんで、項目を選択すると対応した戻り値が入力パイプに入る。

 で、今回は特に条件判定を設けてないんで、引き続き処理行った後、そのまま最終行の reject()まで行って、問答無用でダイアログを閉じると。

 あ、昨日、cancelボタンの内容を指定してたのは、Cancelボタンの判定も去ることながら、戻り値が不定だと何返ってくるか分かんなくなるからかぁ。

 うむむホントに勉強になる(^^)。


 とりあえず、はてな設置に時間食い過ぎたんで、今日はここまで〜。
 しかし、昨日に比べると今日は早かった・・・20分くらいで、すんなり動いたですよ。いっぺん、構造分かると後はラクやなぁ。