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自体の仕様と基本的には一緒なんでしょう。
ってことは、 Qtopiaの GUIって、エラいダイナミックなんですな。もっとスタティックなもんやと思ってた(笑)。
本筋戻って、
item(QString,Qstring)で、リストの表示項目とそれに対する戻り値が設定されてるんで、項目を選択すると対応した戻り値が入力パイプに入る。
で、今回は特に条件判定を設けてないんで、引き続き処理行った後、そのまま最終行の reject()まで行って、問答無用でダイアログを閉じると。
あ、昨日、cancelボタンの内容を指定してたのは、Cancelボタンの判定も去ることながら、戻り値が不定だと何返ってくるか分かんなくなるからかぁ。
うむむホントに勉強になる(^^)。
とりあえず、はてな設置に時間食い過ぎたんで、今日はここまで〜。
しかし、昨日に比べると今日は早かった・・・20分くらいで、すんなり動いたですよ。いっぺん、構造分かると後はラクやなぁ。