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のプログラミングになってくワケなんでしょうな。