Qtopia Shell Bridge Dialog その4 「ボタン配置を触ってみる」

 続けてレイアウトの変更を試してみます。

 昨日、今日と触って /var/spool/qshdlg/control に qcopメッセージ送ることで、色々と制御出来そうだってことがわかってきたんで、自分なりの確認の意味も含めて、実験的に。

#!/bin/sh

# カスタムダイアログ&ボタンの設定
qshdlg -t ユーザー辞書ツール -n -v "select,create,rename,delete,original,backup" -l "使用辞書選択,新規辞書作成,辞書名変更,辞書削除,標準辞書変更,辞書データバックアップ" -h250 -w 300 custom -s &

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

# ボタンを縦方向(上から下)に並べるよう指示
echo 'direction(QString,QString)' Button TopToBottom > /var/spool/qshdlg/control

# リプライダイアログの表示を指示
echo 'showReply()' > /var/spool/qshdlg/control

# ダイアログの表示を指示
echo 'show()' > /var/spool/qshdlg/control

# 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

実行結果


 ん、大体想像通り(^^)。
 基本的には、逐次コントロールパイプに指示を送ることで、ウインドウの中身を設定するワケですな。
 ちなみに、showReply()だけ送っても、show()を送らないとウィンドウそのものが表示されまへん。逆に、指定する順序は逆になってもOK。と言うか、状況によってはマズいんだろうけど、とりあえず今のスクリプト内容では問題なし(^^;)。

 あ〜、でもこれ qshdlg触ってると、自然と Qtopiaの構造って言うか、仕組みが理解出来てきますね。

 結局、このコントロールパイプ通して送ってる各種の qcopメッセージをシグナルやスロット、それこそクラスの概念で書いてくと普通の Qtopiaのプログラミングになってくワケなんでしょうな。