Qtopia Shell Bridge Dialog
CUIとGUIの間を繋ぐ為の汎用ダイアログです。
シェルスクリプト等に組み込んで対話的に処理を行う事が出来るようになります。
更新履歴
- Version 0.6.2 2004/07/21
- qshdlg.confでサイズ指定をしていると、-w,-hでのサイズ指定が効かなくなっていたのを修正。
- 入力用PIPEの読み手がいない状態でもコントロールを無効化しないように変更。(これでフォーカスの問題は解消されたと思います)
- Version 0.6.1 2004/07/20
- リッチテキストビューを追加(これに伴う機能色々追加)
- ダイアログを最大化するQCopメッセージ(showMax())追加
- インプットボックスの値を使用した場合のみ、インプットボックスの内容をクリアするように変更。
- フォーカス処理でQTimerを使用して、フォーカス処理を次のメッセージループに回すように変更(これでもまだ描画のタイミングでフォーカスが当たらない場合があります)
- Version 0.6.0 2004/07/17
- インプットボックスにフォーカスがある状態にすれば空文字を出力出来るようになったので、空文字の出力を抑制。
- 任意のコントロールにフォーカスをあてるQCopメッセージ(focus(QString))を追加。
- ダイアログの表示位置を制御するコマンドラインオプション(-x -y)および、QCopメッセージ(move(int,int))を追加。
- ダイアログのサイズを制御するQCopメッセージ(size(int,int))を追加。
- Version 0.5.9 2004/07/15
- インプットボックス、セレクトビューのどちらかにフォーカスが当たっている場合にはフォーカスが当たっているコントロールの入力を優先するように変更。
- ビューとインプットボックスの配置を制御出来るように変更。(レイアウト識別子:ViewInput)
- Version 0.5.8 2004/07/10
- セレクトビューにフォーカスが無い状態でもOKボタンで選択を決定出来るように変更。
- Version 0.5.7 2004/07/10
- ボタンにフォーカスがある状態だとテキストボックスの値をOKボタンで入力出来なかったのを修正。
- テキストボックスが空の状態に空文字列を返すように変更。
- Version 0.5.6 2004/04/13
- リプライダイアログでエンターを押した時に落ちる事があったのを修正。
- 他のアプリに切り替えてから戻って来た時に最大化しないように修正。
- 最後に表示させたコントロール(ボタン以外)に自動的にフォーカスが当たるように変更。
- インプットダイアログのデフォルト値を設定できる機能を追加。
- Version 0.5.5 2004/02/26
- Version 0.5.4 2004/02/25
- 入力用PIPEをオープンしている最中にボタンを再構築すると、ボタンが無効状態になってしまっていたのを修正。
- Version 0.5.3 2004/02/24
- ダイアログのデフォルトサイズがVGA画面からはみ出ていたので修正。
- Version 0.5.2 2004/02/24
- Version 0.5.1 2004/02/23
- コントロールPIPEへの書き込みで空白を含んだパラメータをうまく渡せなかったのを修正。
- レイアウト変更機能を実装。
- Version 0.5.0 2004/02/20
- qshdlgをフロントエンドとしたアプリケーションを開発できる仕組みを追加。
- QCopメッセージを色々追加。(showXXX系は全て仕様変更)
- QTextViewは折り返しが出来ないのでQMultiLineEditに変更。(そのためリッチテキストは廃止)
- コマンドラインオプションもいくつか追加。(-bと-mは仕様変更)
- テキスト色を変更できるように設定を追加。
- メッセージダイアログ以外でのOKボタン(qcopメッセージaccept())の仕様を変更。メッセージダイアログ以外ではOKボタンはエンターキーを押した時の操作と同一になります。(ダイアログは閉じません)
- Version 0.3.1 2004/02/15
- メッセージダイアログのデフォルトボタンがyes,noになってしまっていたので修正。
- -m(最大化),-s(サイレントモード)を追加
- テキストビューの背景色を指定可能に(.confで指定)
- Qcopメッセージにclear(),description(QString)を追加。
- Version 0.3.0 2004/02/14
- QCopメッセージ受付機能を追加
- メッセージダイアログのボタンを変更可能に
- ボタンのラベルを任意のものに変更可能に
- QVGA機種対策として、デスクトップのサイズに収まるようにダイアログの高さと幅を自動調整するように変更。
- Version 0.2.0 2004/02/12
- 大体形になったので、正式公開
- Version 0.1.1 2004/02/11
- 機能デモ第2版 コマンドラインオプションをいくつか追加
- Version 0.1.0 2004/02/11
- 機能デモ版として公開
ダウンロード
※注
初期化後に標準のバックアップをリストアした場合に、/var/spool/qshdlg/以下のpipeが作成されないようです。
手動で作成するか、もしくはqshdlgの再インストールを行って下さい。
(どのバージョンからか忘れましたが自動的に生成するようにしたので再インストールは不要になったかもしれません)
- 最新バージョン
- Version 0.6.2 qshdlg_0.6.2-1_arm.ipk
- 旧バージョン
- Version 0.6.1 qshdlg_0.6.1-1_arm.ipk
- Version 0.6.0 qshdlg_0.6.0-1_arm.ipk
- Version 0.5.9 qshdlg_0.5.9-1_arm.ipk
- Version 0.5.8 qshdlg_0.5.8-1_arm.ipk
- Version 0.5.7 qshdlg_0.5.7-1_arm.ipk
- Version 0.5.6 qshdlg_0.5.6-2_arm.ipk
- Version 0.5.5 qshdlg_0.5.5-1_arm.ipk
- Version 0.5.4 qshdlg_0.5.4-1_arm.ipk
- Version 0.5.3 qshdlg_0.5.3-1_arm.ipk
- Version 0.5.2 qshdlg_0.5.2-1_arm.ipk
- Version 0.5.1 qshdlg_0.5.1-1_arm.ipk
- Version 0.5.0 qshdlg_0.5.0-1_arm.ipk
- Version 0.3.1 qshdlg_0.3.1-1_arm.ipk
- Version 0.3.0 qshdlg_0.3.0-1_arm.ipk
- Version 0.2.0 qshdlg_0.2.0-1_arm.ipk
- Version 0.1.1 qshdlg_0.1.1-1_arm.ipk
- Version 0.1.0 qshdlg_0.1.0-1_arm.ipk
Ver0.5.0でセレクトダイアログを実装した関係で、OKボタンを押した時の処理が変わっています。
その為、FileLaunchのスクリプトでqcop QPE/Application/qshdlg 'accept()'
としている部分が期待通りに動きません。
Ver0.5.0を使用する場合には該当部分をqcop QPE/Application/qshdlg 'reject()'
と書き換えてご使用下さい。(fl_sudoXXX.sh系のスクリプトでしょうか?)
上記の修正が出来ない方は、inueさんからの正式対応版が出るまでは旧バージョンを使用する事をおすすめします。
qshdlg0.5.0対応版を出して頂いたのでVer0.5.0以降を使用する場合にはfl-sudotool0.5.0を導入して下さい。
ソース
Qtopiaアプリケーションとしては、あまりお行儀の良い作りではありません…。
- 最新バージョン
- Version 0.6.2 qshdlg_0.6.2_src.tar.gz
- 旧バージョン
- Version 0.6.1 qshdlg_0.6.1_src.tar.gz
- Version 0.6.0 qshdlg_0.6.0_src.tar.gz
- Version 0.5.9 qshdlg_0.5.9_src.tar.gz
- Version 0.5.8 qshdlg_0.5.8_src.tar.gz
- Version 0.5.7 qshdlg_0.5.7_src.tar.gz
- Version 0.5.6 qshdlg_0.5.6_src.tar.gz
- Version 0.5.5 qshdlg_0.5.5_src.tar.gz
- Version 0.5.4 qshdlg_0.5.4_src.tar.gz
- Version 0.5.3 qshdlg_0.5.3_src.tar.gz
- Version 0.5.2 qshdlg_0.5.2_src.tar.gz
- Version 0.5.1 qshdlg_0.5.1_src.tar.gz
- Version 0.5.0 qshdlg_0.5.0_src.tar.gz
- Version 0.3.1 qshdlg_0.3.1_src.tar.gz
- Version 0.3.0 qshdlg_0.3.0_src.tar.gz
- Version 0.2.0 qshdlg_0.2.0_src.tar.gz
- Version 0.1.1 qshdlg_0.1.1_src.tar.gz
機能
シェルスクリプト等からダイアログを表示し、対話的な処理を可能とします。
メッセージダイアログでは押されたボタンによって異なる値を返すので
コマンドの戻り値でその後の処理を分岐させる事が出来ます。
また、インプット/リプライ/セレクト/リッチダイアログは
バックグラウンドで起動しておくと、
出力用PIPE
/var/spool/qshdlg/output
に出力をリダイレクトすることで、ダイアログにコマンドの出力を表示。
入力用PIPE
/var/spool/qshdlg/inout
から入力をリダイレクトすることで、ダイアログからコマンドへの入力が行えます。
またコントロール用PIPE
/var/spool/qshdlg/control
にqcopメッセージを書き込む事で、各種コントロールを行う事が出来ます。
qcop コマンドは遅いのでシェル等から使用する場合にはこちらを使用した方が断然速いです。
例)
qcop QPE/Application/qshdlg 'reject()'
↓
echo 'reject()' > /var/spool/qshdlg/control
また、コントロール用PIPEへの書き込み時には半角スペースがパラメータの区切りとして扱われるので、パラメータに半角スペースを含めたい場合にはダブルクォートまたはシングルクォートで括った文字列を書き込むようにします。
※シェルが解釈した後の文字列がダブルクォートまたはシングルクォートで括られるようにする必要があります。
例)
echo 'description(QString)' '"AAA BBB CCC"' > /var/spool/qshdlg/control echo 'description(QString)' "'AAA BBB CCC"' > /var/spool/qshdlg/control
アプリケーション開発
qshdlgをフロントエンドとしたアプリケーションをスクリプトで組む事が可能になりました。
環境変数QSHDLG_APPにアプリケーション名をセットしてからqshdlgを実行すると
セットしたアプリケーション名となって実行されます。
使用するPIPEは
/var/spool/qshdlg/input_アプリケーション名 /var/spool/qshdlg/output_アプリケーション名 /var/spool/qshdlg/control_アプリケーション名
qcopチャンネルは
QPE/Application/アプリケーション名
となり、独立した操作が可能になります。
また、メッセージダイアログ(message)ではOKボタンを押すとダイアログが終了してしまうので、
対話的に処理を行うようなダイアログはmessage以外での起動を推奨します。
.desktopファイルを用意し、適切にアプリケーション名等をセットする事で
タスクバーにも登録され、KeyHelperでの切り替えも可能となります。
アプリケーション開発手順
qshdlg_testというファイル名のスクリプトを作成した場合。
スクリプト内では環境変数QSHDLG_APPをセットした後にqshdlgを実行します。
QSHDLG_APP=qshdlg_testとセットするのでこのアプリケーションで使用するPIPEは
/var/spool/qshdlg/input_qshdlg_test /var/spool/qshdlg/output_qshdlg_test /var/spool/qshdlg/control_qshdlg_test
となります。
また、PIPEが動的に作成されるので作成を待つ必要があります。
(コントロール用PIPEが最後に作成されるのでそれを待つのが良いでしょう)
例)
#/bin/sh export QSHDLG_APP=qshdlg_test qshdlg -t test -d test message & while [ ! -p /var/spool/qshdlg/control_qshdlg_test ] do done
シェルスクリプトを/opt/QtPalmtop/binの直下に配置します。
/opt/QtPalmtop/bin/qshdlg_test
デスクトップファイルを
/opt/QtPalmtop/apps/Applications/qshdlg_test.desktop
として配置します。
例)
[Desktop Entry] Comment=qshdlg test Exec=qshdlg_test Icon=qshdlg_test_icon Type=Application Name=qshdlg_test CanFastLoad=0 HidePrivilege=1 Display=640x480/144dpi,480x640/144dpi
アプリケーション開発TIPS
デモアプリケーション
qshdlgをフロントエンドにしたシェルアプリケーションのデモを公開します。
アプリケーション開発の際に参考にしてみて下さい。
2004-02-20 (Fri) 22:21:05 アップデート
- バイナリ(パッケージ)
- ソース(パッケージングスクリプト等含む)
Yahooニュース巡回
qshdlgのデモを兼ねて、塚本さん作のYahooニュース巡回スクリプトをqshdlgベースに移植してみました。
0.2.0-pre6ベースです。
動作にはqshdlg Version 0.5.5以降が必要になります。
- バイナリ(パッケージ)
- ソース(パッケージングスクリプト等含む)
詳細は本家をご覧下さい。
コンソール&iselectベースで書かれていたものをqshdlgを使用するように書き換えただけで
内部的な処理は全くいじっていません。
上記スクリプトには組み込まれていますが、qshdlgを使用する部分をパッケージにしてみたので
Perlからqshdlgを使用したいという方はご参考にどうぞ。もちろんそのまま使用して頂いても構いません。
コマンドラインオプション
コマンドラインオプションはこちらのページを参照して下さい。
QCopメッセージ
設定
設定ファイルパス
~/Settings/qshdlg.conf
[Default]
設定例
[Default] width = 400 height = 200 bgcolor = #999999
width
ダイアログのデフォルトの幅を指定します。
height
ダイアログのデフォルトの高さを指定します。
bgcolor
ダイアログのテキストビューの背景色を指定します。
#RRGGBB
の様な形式で指定します。
txtcolor
ダイアログのテキスト色を指定します。
#RRGGBB
の様な形式で指定します。
使用例
inueさん作のFileLaunchのコピー機能は通常ではファイルの上書き確認が出来ませんが、
コピーのスクリプト(fl_copy.sh)を下記のようにqshdlgを使用する形に書き換えると上書き確認が可能になります。
さらにVer0.3.1で実装したサイレントモードを使用すると、上書き確認が必要な場合のみダイアログを表示する事が出来ます。
#!/bin/bash echo "コピー" if [ $1 = "sudo" ];then shift if [ "$(isfat "$1")" = "FAT" ];then suf="sudo " else suf="" fi else suf="" fi dest="$1" shift if [ -f "$dest" ];then dest=$(dirname "$dest") fi # qshdlgをバックグラウンドで起動しておく qshdlg -n -s -t "copy" -c utf8 reply 2> /dev/null & for i in "$@";do # /var/spool/qshdlg/inputから読み取り、/var/spool/qshdlg/outputに出力する。 $suf cp -ia "$i" "$dest" < /var/spool/qshdlg/input > /var/spool/qshdlg/output 2>&1 if [ $? = 0 ];then echo "$i を $dest にコピーしました" else echo "$i の $dest へのコピーは失敗しました" fi done # qshdlgを閉じる qcop QPE/Application/qshdlg 'reject()' 2> /dev/null echo "コピーを終了しました"
既知の問題
- .desktopを持っていないので、KeyHelperでqshdlgにタスク切り替えを行うとおかしくなる。
- .desktopファイルを持つようにしたので解決。
アンケート
コントロールの配置について
シェルスクリプト側からコントロールする事で、アウトプットビューとセレクトビュー
を両方同時に表示する事が出来ますが、この配置をどうしようか迷っています。
アンケートにご協力下さい。
現状ではアウトプットビューが上に来ます。
アウトプットビューが上 | 10 |
セレクトビューが上 | 3 |
- 2004-02-23 (Mon) 22:12:19 yakty : アンケートにご協力ありがとうございました。配置変更は大幅な変更と伴うと思っていたのでやらないつもりだったので、このようなアンケートを取らせて頂いたのですが、良い方法を見つけたのでVersion 0.5.1でレイアウトの変更を実装してしまいました。
追加するコントロールについて
コントロールの追加を考えていますが、どのコントロールを優先的に追加するか迷っています。
アンケートにご協力下さい。優先的に追加して欲しいコントロールのvoteボタンを押して下さい。
リッチテキスト | |
スライダー | |
テーブル | |
コンボボックス | |
プログレスバー | |
スピンボックス |
また、どのコントロールをどのような用途に使用したいですか?
[[#rcomment]]
- 2004-10-19 (Tue) 14:45:33 あるしおうね? : プログレスバー:UI面が弱いと言われるPerlのGUI化に使用したいと考えています。単純に作る予定のアプリで、進捗状況を教えてくれるプログレスバーがあったら良いな、と思った次第です
- 2004-03-04 (Thu) 23:49:03 ヴィネ? : 下に書いたようにリッチテキストをHTML、PNG等のビューアみたいなものとして使いたいと考えています。QTのリッチテキスト機能はなかなか高機能なようなので他にもいろいろ出来ると思います。
- 2004-03-03 (Wed) 12:15:04 HK : テーブル:これは色々出来そうです。表示だけでなくタップ位置での戻り値があれば、例えば、将棋盤の表示・操作(敵味方の駒を区別した表示が難しい?)。MIDI関係では、各キーでのスケールやコード構成音から入力させたりとか・・・
- 2004-03-03 (Wed) 12:09:02 HK : スピンボックス:MIDIシーケンスのパラメータ入力用に使います。始めの入力はスライダーが大雑把に入力できて良いですが、より多く行うであろう微調整がこちらの方がやりやすそうです。数値指定も出来そうだし。
コメント
ご意見、ご要望等はこちらにどうぞ。
- 2004-02-13 (Fri) 20:59:59 inue : えー、早速要望なのですが、出力パイプに特定の文字列を受けたら自動終了、というような機能はできないでしょうか。要は、バックグラウンド起動した時に、スクリプト側からダイアログを消したい、と。
- 2004-02-13 (Fri) 21:23:31 yakty : qcopメッセージ受けて終了させましょうか?特定の文字列を受けるよりも確実そうなんで。OKとキャンセルと任意文字列を受けられれば必要十分かな?
- 2004-02-13 (Fri) 22:50:01 inue : あ、そうですね。qcopでお願いします。OK,キャンセルに加えて、QMessageBoxと同様な第三の選択肢も使えるとありがたいですが(^^;
- 2004-02-13 (Fri) 23:00:35 yakty : ほぉ、QMessageBoxだとOK,Cancel以外にもYes,No,Abort,Retry,Ignoreって用意されてるんですねぇ。こっちは戻り値で分岐用って事で実装した方がいいですね。うー…起動オプションどうしよう…
- 2004-02-13 (Fri) 23:04:12 yakty : qcopメッセージでは done(int) を実装したんで何でも返せるんですけど(笑)
- 2004-02-13 (Fri) 23:24:02 yakty : よく考えると、PIPE使った入力も受け取ってさらに戻り値も必要ってあり得ないから、messageダイアログの時だけ戻り値を返すボタンとして機能させて、それ以外の場合にはPIPEに書き込むボタンとしようかな。思いつきだからうまく実装できるかわからないけど…(^_^;
- 2004-02-13 (Fri) 23:24:39 HK : iSelect のような使い方は出来ないでしょうか?
- 2004-02-13 (Fri) 23:31:10 HK : qshdlg -w50 -h50 "a,b,c,d,e" select とかすると a b c d e のボタンは出るのですが押せない状態です。また、-w -h の数字を変えても表示される位置が変わるだけのような気がしますが。(B500 でデフォルトはうまく表示できないようで真っ白になります。)
- 2004-02-13 (Fri) 23:35:20 HK : 上に -b を書き忘れました。qshdlg -w50 -h50 -b "a,b,c,d,e" select です。
- 2004-02-13 (Fri) 23:51:50 yakty : selectダイアログはボタンにしていた値を出力用PIPEに書き込むというダイアログなので、/var/spool/qshdlg/outputの読み手がいないと押せる状態になりません。次のバージョンでmessageダイアログで任意のボタンを表示し、任意の値を返せるようにします。(これがiselectの様な使い方になるのかな?)
- 2004-02-13 (Fri) 23:53:55 yakty : ある一定のサイズ以上は小さくできないようなので-wと-hをもう少し大きくして試してみてもらえますか?限界を超えると位置だけが変わるようです。
- 2004-02-14 (Sat) 00:02:54 yakty : selectはiselectと混同して、混乱を招きそうなので次バージョンでreplyに名前を変えます。
v0.3.0
- 2004-02-14 (Sat) 00:56:52 yakty : 思いつく限りのQCopメッセージを実装してみました(笑)これでどうでしょうか?
- 2004-02-14 (Sat) 23:03:16 inue : おお、ここまでできれば、ipkでホームメニューに登録するシェルスクリプトで、ユーザーにはGUIアプリにしか見えないようなものも作れますね。
- 2004-02-14 (Sat) 23:19:37 yakty : おお、そう言われてみればそうかも(笑) これは単体では何の役にも立たないんで、色々応用して使ってもらえると嬉しいです。>みなさま。
- 2004-02-15 (Sun) 00:47:24 HK : 画面サイズ処理追加有り難うございます。初歩的な質問かと思いますが分からないのでお願いします。message の戻り値はどこを参照すればよいのでしょうか?reply はinput にボタンの名前が入ることを確認しました。
- 2004-02-15 (Sun) 00:52:00 HK : $ cat /spool/qshdlg/input >a & $ qshdlg -b "aa,bb,cc" reply でボタンを押した後に cat a で確認。message の方はinput output 共に空でした。ターミナル画面にも 2 〜の戻り値はありません。
- 2004-02-15 (Sun) 00:54:13 HK : GUI アプリにしか見えない・・・そう思って食いついていたりします。
- 2004-02-15 (Sun) 00:57:47 HK : もう一つ質問です。qcop メッセージのshowMessage(QString,QString) とかのQString は具体的にどう指定すれば良いのでしょうか?ボタンの名前など入れて見たのですがsyntax error です。accept() などは動作確認しました。
- 2004-02-15 (Sun) 01:12:29 yakty : messageダイアログはPIPEに戻り値を書き込むのではなく、押されたボタンによってコマンドの戻り値を変えます。戻り値が無いというのはどういう事でしょうか?コマンドの戻り値というのは画面に表示されるわけでは無いのですが、その辺は理解されてますか?(基本的なシェルの知識は必要になると思いますので…)
- 2004-02-15 (Sun) 01:13:25 yakty : また、qcopメッセージでダイアログを表示した場合にはqcopコマンドの戻り値しか取得できない事になってしまうので、当然messageダイアログの戻り値は使用できません。
- 2004-02-15 (Sun) 01:13:41 HK : & を付けてqshdlg を実行したらExit 2 とかで返って来ました。失礼しました。
- 2004-02-15 (Sun) 01:16:14 yakty : showXXX系のqcopメッセージは、コマンドを直接実行できない場合(あんまり無いかもしれませんが)の為にとりあえず実装しただけなので、通常はコマンド実行でダイアログを表示した方が良いと思います。(全てのオプションが使えるので) ちなみに qcop QPE/Application/qshdlg 'shoeMessage(QString,QString)' 'title' 'description' の様に使用します。
- 2004-02-15 (Sun) 01:17:42 HK : シェルの知識・・・戻り値の使い方について、ちょっと勉強して見ます。有り難うございます。
- 2004-02-15 (Sun) 01:20:22 HK : showMessage について。説明有り難うございます。QString はそのままなんですね。チャットみたいになってしまいました。
- 2004-02-15 (Sun) 01:21:50 yakty : bash/shであればコマンド実行後にecho $?としてみると最後に実行したコマンドのリターンコードが表示されます。このリターンコードを使って処理を分岐させたりというのはシェルプログラミングになるので、やり方は勉強してみて下さい。
- 2004-02-15 (Sun) 23:01:01 HK : ご親切に有り難うございます。iSelect の置き換えのようなことは方向性が少し異なるかもしれませんが、文字数が多い場合、ボタン数が多い場合の画面表示がうまくできると良いんですが。例えばボタン縦並び指定できれば(見た目はともかく)そこそこiSelect GUI版として使えそうなんですが。(欲を言わせてもらえば選択BOXにスクロールバーを付けて表示エリア制限をなくす。)画面タップによる選択はiSelect の操作性を上回ります。ファイル選択してプレーヤー起動とかのシェルスクリプトを想定しています。
- 2004-02-16 (Mon) 12:58:31 yakty : リストボックス使ってiselect互換っぽい使い方が出来たら便利なのかな?ちょっと考えてみますね。
- 2004-02-16 (Mon) 13:52:26 yakty : ところでHKさんってもしかしてここの方ですか?
- 2004-02-17 (Tue) 00:17:38 HK : リストボックスで・・・そうです。その用語が出てきませんでした。検討お願いします。
- 2004-02-17 (Tue) 00:20:38 HK : そうです。私がそこのページを作りました。何か有用な意見とかがあるかと思って恥かしながら公開しています。
- 2004-02-17 (Tue) 00:26:24 yakty : iselectと完全互換にはなりませんが、似たような使い方ができるようにするつもりなのでお待ち下さい。
- 2004-02-17 (Tue) 20:21:10 yakty : ちょっと予告。次のバージョンでshowXXX()系のqcopメッセージの仕様を大幅に変えるつもりです。それとgenericダイアログは廃止する予定です。
- 2004-02-17 (Tue) 23:07:04 inue : KeyHelperに登録して実行することを前提に、いつでも呼べるタスク一覧情報表示ダイアログとして、
- 2004-02-17 (Tue) 23:08:38 inue : というシェルスクリプトを作って実行してみたら、なぜかyes/noボタンが表示されました。-mを取るとyes/noは消えて、ボタンがないダイアログが表示されるのですが。
- 2004-02-17 (Tue) 23:33:24 yakty : 今私の手元でやってみたら最大化してもyes/noボタンは表示されませんでした。なんでだろう…?。(自動スクロールのせいでかなり恐ろしい表示のされ方でしたが…(^_^;)スクロールはqcopで制御の方がいいかも。)最新バージョンを使ってますか?
- 2004-02-17 (Tue) 23:37:46 yakty : あ、よく見ると手元のはバージョン表示が0.3.2だ…_| ̄|○。次バージョンで治るはずです(^_^;)
- 2004-02-17 (Tue) 23:41:26 yakty : あとそれと最大化オプションですが次のバージョンで-Mに変えさせてください。セレクトダイアログのマルチライン可のオプションに-mを使いたいので。大幅なコードの整理も行っているのですが、次バージョンは今週中にはリリース出来ると思いますのでよろしくお願いします。
- 2004-02-18 (Wed) 00:43:47 inue : 了解です(^^;。
- 2004-02-18 (Wed) 01:16:33 HK : iSelect 互換もどき・・・よろしくお願いします。qshdlg テストスクリプトを作成したので近いうちにアップします。柄にもなく大昔のアドベンチャーもどきです。(初めてのシナリオを作るのは割りと楽しかったのですがプレーはつまらないかも。)
- 2004-02-18 (Wed) 01:19:15 HK : 上記、gawk が必要になります。
- 2004-02-18 (Wed) 08:27:21 HK : http://www.geocities.jp/uirozaurus/qshdlg/qshdlg.html
- 2004-02-18 (Wed) 22:35:27 も : FileLaunchを使っていての要望なんで、こちらに書くべきかどうか解らないですが、メッセージを桁おりできないでしょうか? 長いメッセージだと最後の?を見るのにスクロールしないと解らないので。ご検討お願いしますm(__)m。
- 2004-02-18 (Wed) 23:27:38 yakty : 基本的(?)な機能の実装が終わったら考えてみたいと思います。QTextViewを使ってるんだけどどう実装するのが良いんだろう?どなたか良い方法知りませんか?(笑)
- 2004-02-18 (Wed) 23:45:57 HK : 横スクロールですか?message で-w -h 指定した使い方で長い日本語の文章は、勝手に折れ曲がってくれますが。違うことでしたらスルーして下さい。
- 2004-02-19 (Thu) 06:08:07 も : 英文です。ファイルを削除しようとしたときに、mv /home/............./file? とでるのですが、ディレクトリが深いため、最後まで一覧できず、?が解らなかったため、しばらく動くのを待っていたという(^^; 折返してくれれば今ここで○×選択するんだと解ったと思いますので。
- 2004-02-19 (Thu) 07:06:10 HK : portabase で半角文字列(http:など)が折り返されない現象と同じですね。なんか根が深そう・・・
- 2004-02-19 (Thu) 08:27:15 inue : QTextViewは、英字は折り返さないんですよね。(逆に日本語は無条件で折り返し)TTextReaderでも苦労させられました(^^;。QStyleSheetのconvertFromPlainText()で空白を0x00a0Uに置き換えているのを、空白のままにしてやると、空白で折り返すようになるのですが、今度は空白自体は表示されなくなるし(^^;。ここでいい方法が見つかると、私もうれしいです(^^;
- 2004-02-19 (Thu) 09:17:12 yakty : ぐはっ…こっそりinueさんに期待してたのに…(笑) 仕方ないのでハックしてみます。
- 2004-02-19 (Thu) 19:53:24 yakty : うーん、とりあえずワードラップを有効にする事までは出来たけど、多分それだと不十分なんですよね。長いパス名はきっと表示しきれないし。おとなしくQMultiLineEdit使おうかな?(笑) リッチテキストがどうしても必要な方っています?
- 2004-02-19 (Thu) 21:51:50 yakty : っていうかQtopiaのだまし方(笑)が解ったのでなかなか面白いものが出来そうです。qshdlgを使用した単なるスクリプトなのに、タスクトレイにアイコンが登録されてKeyHelperでの切り替えも可能(QtopiaGUIアプリとほぼ同じ扱い)ってな事が出来そうです(^-^)v
- 2004-02-19 (Thu) 22:22:04 HK : ターミナルでなくてデスクトップに登録したスクリプトのアイコンが出るんですか?スクリプトでGUI・・・って、QTextViewをハックされていたのでは!?
- 2004-02-19 (Thu) 22:33:14 yakty : Qtopiaのだまし方が解ったのはQTextViewのハック前です(笑) QTextViewのハック結果は、QTextView,QRichTextあたりを再実装しなければ空白部分以外での折り返しは無理!でした(^_^; 今はデスクトップに登録されたアイコンからqshdlgが立ち上がらなくなってしまって悩んでいます…かなり不作法な作りだからなぁ…(苦笑)
- 2004-02-19 (Thu) 23:07:06 yakty : QPEApplicationの初期化前にgetopt使っちゃダメなんだろうか…。ちなみにこういうことです。これは例なんで同じアイコンを使ってますが、デスクトップに登録したアイコンが表示されます。
- 2004-02-19 (Thu) 23:39:58 HK : お、半角文字列の折り返しもできてますね。スクリプトでGUI、期待と妄想が膨らみます。
- 2004-02-19 (Thu) 23:44:56 yakty : さくっとQTextViewをあきらめてQMultiLineEditに移行してしまいました(笑) もうちょっとでリリースできそうです。(^o^)
- 2004-02-20 (Fri) 00:35:07 inue : う、期待していたのに(^^;。いや、私もそんなわけでFileLaunchではあっさりQMultiLineEditにしてしまったんですが(^^;
- 2004-02-20 (Fri) 00:45:53 yakty : だって無理じゃないですか(笑) ほとんど実装し直ししか手がないですよねぇ?
v0.5.0
- 2004-02-20 (Fri) 01:19:04 yakty : ちょっとqcopメッセージのコマンド名をtypoしていたので差し替えました。多分お一人しかダウンロードされていないと思うのですが、心当たりのある方は再ダウンロードしてください。m(_ _)m ちなみにscrollBottom()のつもりがscrollButtom()になっていただけなのでこのメッセージを使用しない場合には問題ないです(^_^;
- 2004-02-20 (Fri) 08:09:42 HK : まずはお疲れさま・有り難うございました。(これから試します。)
- 2004-02-22 (Sun) 12:26:14 HK : message,select,reply の同時表示(使用)をしてもいいんですよね?(動かしてみて問題無さそうですが)
- 2004-02-22 (Sun) 12:29:50 HK : また、この時にmessage とselect の画面サイズは何で決まっているのでしょうか?それからreply ボタンの(横が一杯の時や見た目の分かりやすさの都合などで)縦方向への表示の対応は可能でしょうか?
- 2004-02-22 (Sun) 13:34:00 yakty : 同時表示は可能です。またmessageとselectのサイズはレイアウトマネージャ任せです(確か現状ではselectの方を大きくする設定だったかな?)。コントロールの配置はレイアウトマネージャに任せている関係で、変更するという機能は加えないつもりでいます。
- 2004-02-22 (Sun) 13:43:47 yakty : 伸長因子を変更する事は可能なので比率(正確には率ではないですけど)を変更するという機能なら追加可能です。
- 2004-02-22 (Sun) 14:19:26 yakty : と思ってたんですけど、今マニュアル見てたら抜け道らしきものを発見しました。もしかしたら配置変更に対応出来るかも?
- 2004-02-22 (Sun) 18:46:20 修行僧? : 初めまして。qcopメッセージでアウトプットビュー等に半角のスペースが入ったメッセージを追加させたいのですが、「echo "message(QString)" hoge hoge > /var/spool/qshdlg/control」だと何もおこりません(引数の数が違うからでしょうけど)、「echo "message(QString)" "hoge hoge" >(略)」だと最後に「"」が1つ余計に付いてしまいます。何かいい方法は無いでしょうか?
- 2004-02-22 (Sun) 19:01:11 yakty : ↑上記はバグとして認識しています。本来は後者で大丈夫になるはずです。
- 2004-02-23 (Mon) 00:14:20 HK : eucJP 、全角スペースで逃げるというのはどうでしょう?
- 2004-02-23 (Mon) 01:01:35 修行僧? : はい、とりあえず全角スペースでお茶をにごしてますが…今作っているのがプログラムの設定エディタなものですから、設定値に半角スペースが入る可能性があるのです。あと、後者の例は正しくは「echo "message(QString)" "\"hoge hoge\"" >(略)」でした。
- 2004-02-23 (Mon) 01:06:22 修行僧? : うわ、バックスラッシュが飛んだ…要は引数として「"hoge hoge"」を渡したいって事で…
v0.5.1
- 2004-02-23 (Mon) 22:13:17 yakty : Ver0.5.1でスペースが含まれた場合でも正常に引数を扱えるようになりました。
- 2004-02-24 (Tue) 00:16:14 修行僧? : 確認しました。すばやい御対応ありがとうございました。
- 2004-02-24 (Tue) 01:35:46 HK : レイアウト変更機能・・・素早い対応有り難うございます。見ないうちにアンケートは既に終わってしまって。素晴らしい。今からレイアウトで試行錯誤してきます。(MIDIシーケンサーのデータ構造で考え中だったりもしますが)インプット方法で(スライダーとか)要望をまた書かせて戴くかも知れません。いや〜凄い!
- 2004-02-24 (Tue) 02:55:50 ヴィネ? : どうもはじめまして。少し使わせていただきましたがかなり良いですね。すべてRubyで組むと速度が・・・って場合もあったので。ただ、私はリッチテキストあった方が良いなと思いました。絵なども入れられますし。
- 2004-02-24 (Tue) 12:06:05 HK : シェルスクリプト内にあらかじめ定義した複数の(qshdlg)画面を切替える時にqshdlgを再起動してやってみたのですが、qcopの初期化コマンドのようなもので速く処理することは出来ないでしょうか?(あるいは他の方法がありますか?)
- 2004-02-24 (Tue) 12:54:35 yakty : 一回表示した後の画面再構成はshowXXX(),hideXXX(),item(),label()等を駆使すれば出来ると思いますけど、そういう事ではないんですか?(画面の再構成が見えるのが嫌って事ですか?)
- 2004-02-24 (Tue) 15:00:31 HK : シェルスクリプトの関数で各画面定義して呼び出しました。画面定義は、レイアウト定義、(メッセージ、リスト、ボタン毎に)hideXXX()〜item(),message()〜showXXX()というやり方をしました。この時、前画面のボタンが少し残って(前画面ボタンが1,2,3,4,5、新画面ボタンがa,b,cとすると4,5が残る)、新画面のボタンが押せない状態でした。
- 2004-02-24 (Tue) 22:10:36 yakty : 想定通りに動いてませんでした…(^_^; 修正版を出したのでVer0.5.2を使ってみて下さい。
- 2004-02-24 (Tue) 23:07:57 HK : 対応有り難うございます。試して見たところ次画面のボタン内容はOKでしたが、全てラベル状態になってしまいます。
- 2004-02-24 (Tue) 23:10:31 HK : ここの話題とは違うのですがよろしければ教えて下さい。zaurusのbashで配列変数は、どうすれば使えるでしょうか?(調べたarray=(a b c)とか文法エラーになります。)
- 2004-02-24 (Tue) 23:18:19 yakty : ラベル状態というのはどういう状態でしょうか?PIPEの読み手がいないとボタンが押せない状態になるのですがこの状態ですか?
- 2004-02-24 (Tue) 23:18:59 yakty : set -A とかじゃなかったでしたっけ…?違ったかな…
- 2004-02-24 (Tue) 23:23:03 yakty : 違ったかも…それはkshかな?今手元で試してみたらaaa=(a b c)で平気でしたよ?
- 2004-02-24 (Tue) 23:33:58 yakty : もしかして #!/bin/sh でスクリプト書いてます? bashの構文を使いたければ #!/bin/bash でスクリプトを書く必要がありますよ。
- 2004-02-24 (Tue) 23:37:14 inue : 配列はそれでいいはずです。空白が違っていたりするのでは? でもって、コマンドの出力をダブルクォート付で配列に代入する方法を誰か教えてください(^^;。array=( "$(find / -name "$2")" )とやって(出力結果には空白入りファイル名を含む)も、"${array[@]}"とすると、出力が一つになってしまいます。しかたないので、IFS=$'\n'として${array[*]}としてるんですが。ああ、bashは難しい(^^;。
- 2004-02-24 (Tue) 23:41:09 yakty : 私はスクリプトでちょっと凝った事をやろうとしたらすぐにperl使っちゃうからなぁ…(^_^; だれかー(笑)
- 2004-02-24 (Tue) 23:49:08 inue : いやもう、スクリプトで書くより、必要な部分だけフィルタリングする専用のc++コンソールアプリを作ってパッケージに同梱しちゃったほうが楽かも、という気が(^^;。というか、すでに一つそういうのが入ってるんですが(^^;。
- 2004-02-25 (Wed) 00:04:33 HK : PIPEの読み手がいないと・・・あっ、スクリプト見直しします。
- 2004-02-25 (Wed) 00:05:50 HK : #!/bin/sh でスクリプト・・・はっ!お恥ずかしい限りで。有り難うございます。
- 2004-02-25 (Wed) 00:13:10 yakty : 手元のbashリファレンスを見るとコマンド置換は"出力が2行以上ある場合は、改行が無視され1行に出力される"って書いてありますねぇ…
i=0 find . -name '*.sh' -print | while read LINE do array[$i]=\"$LINE\" i=$((i+1)) done
- 2004-02-25 (Wed) 00:14:13 yakty : ↑こんな感じで出来るかと思ったらループを抜けると配列が空だし…
- 2004-02-25 (Wed) 00:30:12 yakty : あっもしかして読み手がずっとPIPEを開きっぱなしとかですか?だとすると今のだと読み手がいるって判断してくれない…。ちょっと処理を変えます。
- 2004-02-25 (Wed) 00:34:59 HK : gawk 使って array=$(ls | gawk '{printf "\"%s\" ",$0}') はダメですか?
- 2004-02-25 (Wed) 00:38:21 inue : うわ、もう0.5.3が(^^;。ところで、message+inputを出したとき、inputにキーボードでフォーカスを移動できず、タップしてやらないと入力できません。
- 2004-02-25 (Wed) 00:43:42 yakty : 0.5.4も出しちゃいました…(^_^; すいません…。
- 2004-02-25 (Wed) 00:45:43 yakty : あー!QMultiLineEditはTabでフォーカスが飛ばないの忘れてました…今日はもう眠いので明日にでも対応します。
- 2004-02-25 (Wed) 12:19:30 HK : ボタンが押せない状態・・・スクリプトはそのままで直りました。(0.5.4)有り難うございます。スクリプトをbashに変えたのですが空のループや関数は許されないようでとりあえずechoとか入れて逃げました。
- 2004-02-25 (Wed) 21:21:37 inue : 入力(Input,Reply,Selectとも)をmessageにエコーバックしないオプション、という要望は可でしょうか?(^^;
- 2004-02-25 (Wed) 21:23:17 yakty : 了解しました。多分簡単なので実装します。
- 2004-02-25 (Wed) 22:10:07 yakty : コマンドラインオプション何にしよう…(^_^; 良い感じのが余ってないかも…
- 2004-02-25 (Wed) 23:24:25 HK : 単純に-e echo では?(デフォルトでオフ)qcopもお願いします。
- 2004-02-25 (Wed) 23:55:20 yakty : デフォルトは変えたくないので-Nにしました。qcopはecho(int)です。
- 2004-02-26 (Thu) 08:18:03 inue : おお、すばらしい。ありがとうございます。cancel()も、いずれ欲しいと思っていた機能でした。
- 2004-02-26 (Thu) 08:19:17 inue : アプリ化の仕様を見て、FileLaunch専用にアプリ化し、一度起動したら終了させずに常駐して使い続けるようにすれば、起動のタイムラグがなくなる、と思っていたところなのです。その場合、cancelキーで終わってしまうと困りますしね。
- 2004-02-26 (Thu) 09:06:25 yakty : YahooNEWS巡回スクリプトの移植中に欲しくなって実装してみました(cancel)。(やっぱり実際に使ってみると欲しい機能がわかりますね(笑)
- 2004-02-26 (Thu) 12:06:45 HK : そろそろ実際の使い方を見て頂こうかと思っていたところですが、完成度が低いためなかなか・・・ですが、ここに置いておきます。まだ何も出来ませんので画面のイメージだけです。よろしければ参考に見て下さい。
- 2004-02-26 (Thu) 12:08:17 HK : ああ、見るのはスクリプトの中身ではなくて動かしてみた感じです。
- 2004-02-26 (Thu) 12:14:07 HK : ここで要望を一つさせて頂きます。input の他にスライダー式(GUI)の数値入力が出来ると嬉しいのですが・・・難しいでしょうか。例えば初期値、min値、max値指定のスライダーで動かすと位置による値を表示し、OKボタンを押して入力するようなものです。
- 2004-02-26 (Thu) 12:25:31 HK : 2つ上:動かし方はボタンを押した後にセレクトビューを選択します。ボタンだけの操作、まだ利かないものもあります。
- 2004-02-26 (Thu) 13:16:20 yakty : うーん…コントロールの追加はレイアウトの問題もあるからあんまりやりたくないんですよね…。ちょっと考えさせて下さい。
- 2004-02-26 (Thu) 15:33:38 ヴィネ? : やはりリッチテキストが欲しいです。簡易なHTML、PNG等のビューアみたいなものが作れますので。0.3を使い続ければいいだけの話かもしれませんが・・・
- 2004-02-26 (Thu) 16:25:07 yakty : リッチテキストもコントロールの追加になってしまうので悩み所なんですよね…。スライダ同様考えさせて下さい。
- 2004-02-26 (Thu) 23:45:48 HK : 了解しました。入力方法は現状できるやり方でもう一度考えてみます。
- 2004-02-28 (Sat) 16:02:08 ヴィネ? : 了解です。とりあえず0.3.1と最新版を併用していくことにします。
- 2004-03-17 (Wed) 02:57:20 HK : スクロール制御qcopは何かコツがあるのでしょうか?scrollTopはOKでscrollbottomがうまくいかないのですが。scrollAutoは機能(キー入力で最下部へ移動)しています。
- 2004-03-17 (Wed) 02:58:41 HK : stretchは画面を切り替えて使う場合、message,selectの両方を指定した方が良いようですね。
- 2004-03-17 (Wed) 16:53:33 HK : スクロール制御(追加情報):ちゃんと機能する画面と機能しない画面があることが分かりました。
- 2004-03-17 (Wed) 18:05:04 yakty : うーん、何でしょうね?QMultiLineEdit::setCursorPosition()を呼んでるだけでそれ以上の事はしてないんですけど…
- 2004-03-18 (Thu) 16:38:57 HK : スクリプトの他の部分で問題があってqcopコマンドがうまく伝わらないのかな?リストビューの作成に処理時間のかかる画面で起きているような気がします。
echo 'clear()' > $CONTROL echo 'hideMessage()' > $CONTROL msg=`nkf -euc $manual` echo 'message(QString)' > $CONTROL; ←echo 'message(QString)' $msg > $CONTROL;がうまくいかなくて echo "$msg" > $OUTPUT; ← このようにしたことがあります。 echo 'hideSelect()' > $CONTROL echo 'showMessage()' > $CONTROL
- 2004-03-18 (Thu) 17:17:37 yakty : それぞれのパイプへの書き込み(というかqshdlg的にはパイプからの読み込み)は非同期に行われるので、呼び側でoutputに書いて、その後controlに書いても、実際の処理としてはどちらが先に処理されるかは保証されません(同じPIPEへの書き込みは順次処理されます)。その為、scrollBottom()がうまくいかなかったんでしょうね。確実に同期を取らせたい場合には全てcontrolに書くことで同期が取れると思います。ただし、この場合には1行1命令になるので、改行の入っているメッセージを流し込む場合には1行ごとにばらして、message(QString)でセットする必要があります。
- 2004-03-18 (Thu) 17:22:47 yakty : ちなみにYahooニュース巡回のスクリプトは、この問題があったため、メッセージ表示も全てcontrolで行っています。
- 2004-03-26 (Fri) 02:15:06 HK : 結局、まだ解決してませんが・・・(汗)そこそこ操作できるようになったので小さく公開してみました。
- 2004-03-26 (Fri) 21:50:33 0.5.5がインストールされた環境を、標準のバックアップでバックアップした後、完全初期化→リストアをすると、qshdlgの入力ダイアログから、何も入力できなくなります。qshdlgを再インストールすれば、正常になるので大きな問題ではないですけど。
- 2004-03-26 (Fri) 22:31:25 yakty : インストールスクリプトで/var/spool/qshdlg/以下にpipeを作成して使用しているのですが、リストアでこれが戻ってくれないみたいですね。注意事項として書いておこうと思います。
- 2004-03-31 (Wed) 12:07:27 HK : input ダイアログの入力欄に初期値を入れることはできないでしょうか?
- 2004-03-31 (Wed) 13:05:06 yakty : 現状ではそういう機能は実装してないですね。しばらくqshdlgに手を回せてないんですが余裕が出来たら考えてみます。
- 2004-03-31 (Wed) 23:11:39 HK : 余裕ができたらリストビュー初期選択位置の指定も検討して頂けないでしょうか?
- 2004-04-06 (Tue) 22:57:02 HK : scrollBottomが機能しないことがある件、scrollBottomをしてからscrollAuto(int)で解決しました。(多分)
- 2004-04-06 (Tue) 23:19:10 HK : とんでもないバグもありそうなんですが・・・MIDIのソフト公開してみました。簡単なメロディを作るくらいには使えそうです。
- 2004-04-13 (Tue) 18:40:17 TAKETYON : どもです〜。直接お伺いするのは初めてでしたっけ。と言うことで、ぼちぼちと qshdlgの方触らせて頂いてます。ってことで、ちょっと手詰まり気味になってきたんで、教えを請いに伺わせて頂きました(^^;)作業記録(http://d.hatena.ne.jp/taketyon/20040413)の方で、詳しく書かせて頂きましたが、要はリプライダイアログでのOKボタンとEnterキーの挙動がよくわからないんですが・・・あうう、Wiki使うの初めてなんで、なんか変(汗)
- 2004-04-13 (Tue) 19:19:03 yakty : どうも、こんにちは。今手元で試してみましたが、TABでフォーカスを移動していくと、フォーカスが一つ余分に当たっていて(その時はスペースで選択できない)そこでエンターを押すと、落ちているっぽいです。OKキーの挙動が違うのはリプライダイアログ用の処理を入れてませんでした(^_^; 両方合わせて修正します。
v0.5.6
- 2004-04-14 (Wed) 00:07:22 yakty : Ver0.5.6で修正できたと思います。なお、メッセージビューにフォーカスがある状態でエンター/OKを押すと""が返るので、上記のスクリプトだと
OKボタンを押した?
になると思います。 - 2004-04-14 (Wed) 00:09:35 yakty : HKさんご要望のinput ダイアログの入力欄への初期値入力も追加しておきました。リストビューの方は単純に追加できないんで暇な時にでも…(^_^;
- 2004-04-14 (Wed) 00:35:58 HK : 対応有り難うございます。早速やって見た所input初期値入力はうまくいきましたが、inputを終了した次のselectの先頭に何故か-1が入ってしまいスクリプトを調査中です。
- 2004-04-14 (Wed) 00:43:35 yakty : あ、原因わかりました。すぐ直します。
- 2004-04-14 (Wed) 01:04:57 yakty : ちょっとした修正だったので0.5.6-2として再リリースしました。0.5.6-1をダウンロードされた方は0.5.6-2をダウンロードし直して下さい。
- 2004-04-14 (Wed) 10:41:27 TAKETYON : 有難うございます。早速持ち帰って試してみることに致します。もっと早くお伺いするべきだったかな。にしても、yaktyさん、対応早すぎです(笑)。
- 2004-04-14 (Wed) 23:51:43 HK : リストビューがずれる件、修正されました。有り難うございます。input初期値、とても便利です。
- 2004-07-08 (Thu) 13:11:51 TAKETYON : どもです。ということでちまちまと開発進めさせて頂いております・・・牛の歩みですが。で、-> http://d.hatena.ne.jp/taketyon/20040708 と言う状態なんですが、何とかならんモンでしょうか?。この状態で日本語メッセージ組むのはさすがにツラいもんが・・・(^^;)。いや、qshdlgと言うよりも、UTF8側の問題のような気もするんで、yaktyさんにお願いするのも筋違いかもしれないとは思うのですが。
- 2004-07-09 (Fri) 13:45:00 TAKETYON : すいません、自己レスですが、とりあえず一旦は何とかなりました。なんか、色々と不可思議な状態ではありますが(苦笑) 詳細は昨日の続き->http://d.hatena.ne.jp/taketyon/20040709 の方にまとめときました〜。
- 2004-07-09 (Fri) 23:21:07 yakty : どんな処理してたっけー?調べなきゃな…と思っていたら解決していたようで…(笑) ちなみに半角スペースを含めたい場合には文字列をダブルクォートか、シングルクォートで括るとOKだった気がします。(シェルが解釈した後の文字列になので、"'AA AA'"みたいな感じだったかな?記憶があやふやですが…) っていうかもしかして私その事ドキュメント化してない…?(^_^;
- 2004-07-09 (Fri) 23:27:16 yakty : あ、↑はCONTROLパイプを使用する時の話です。
- 2004-07-10 (Sat) 13:24:59 TAKETYON : クオーティングに関しては、意識してたつもりだったんですが、sedで置換かける時に忘れてたみたいです(^^:)。まぁ、と言うことで半分がたシェル(sh)側の問題だったようで。そういう意味ではやっぱ濡れ衣。ホント申し訳ないです(苦笑)。なまじ、eucJPだと通っちゃったりしたもんで、すっかり疑ってました。ただ、それはそれとしても sedの出力だと通って、echo で渡すと通らないってのが不可解なんですよね。まぁ、実行シェルを bashにするとそれも問題なくなることが解りましたんで、あんまり拘泥することでも無いとは思いますが・・・。
- 2004-07-10 (Sat) 13:29:19 TAKETYON : で、文字コードの問題は置いといて、検証作業中、またちょっと気づいたことがあるんですが・・・。やっぱ仕様ですか?(^^;) ->http://d.hatena.ne.jp/taketyon/20040710
- 2004-07-10 (Sat) 14:28:08 yakty : おっと、処理がちょっと足りないかもしれませんね。空文字列の送信も可能にしてみようかなぁ?キャンセルとの兼ね合いでアプリケーションの作りによってはまずいかもしれないけど…。
- 2004-07-10 (Sat) 16:29:36 TAKETYON : こうなると、 cancel() と同じような感じで、OKボタンに対しても戻り値を指定出来るか、いっそのこと、Defaultボタンを用いずに全部Replyボタンで処理するのが良いのかな?とも思ったんですけどね。ただ、その場合は結局、ボタンの値が渡っちゃうんで、インプットボックス、或いはセレクトダイアログの内容を渡しようがないんですんわ(笑)。このへん、Reply、Input、Selectが全部おんなじパイプに渡っちゃう今の仕様のままだと、どうしようも無いんだとは思います(苦笑)。
- 2004-07-10 (Sat) 16:43:31 TAKETYON : って、うわ!、コメント返してる間にバージョン上がってるしっっっ!!!(^^;;;;;;)
- 2004-07-10 (Sat) 17:18:07 TAKETYON : で、早速持ち帰って、今試してみました。インプットダイアログに関しては綺麗に動作するようになりました。が、もしかしてセレクトダイアログの方の実装はそのままですか?。いや、ま、インプットダイアログと同時に表示した場合の問題があるんで、仕様かもしれませんが・・・。セレクトダイアログ単体で表示してる時でも、OKボタン押すとヌル文字返ってくるんで、ちょっと気になりまして(^^;)
- 2004-07-10 (Sat) 18:38:08 yakty : リリースした後でセレクトダイアログもフォーカス関係なくの方が良かったかなーなんて思ってたところです(^_^; 帰ったらもう一つバージョン上げるかも(笑)
- 2004-07-10 (Sat) 18:41:04 TAKETYON : 早いです早いです(^^;)
- 2004-07-10 (Sat) 21:01:21 yakty : というわけでバージョン上げちゃいました(笑)
- 2004-07-10 (Sat) 23:06:49 HK : bashの場合ですが、半角スペースは\" \"で調子良いです。(KKDですが・・・)
- 2004-07-11 (Sun) 00:05:33 TAKETYON : だああああ〜〜〜〜(^^;)。ってことで、ええ加減眠なってきてるんですが、試させて頂きましたよ、ええ(笑)。なるほど、こういう実装になりましたか。一応、インプットボックスが優先と言う型になるのかな?。要はこーゆーコトですね。 ->http://d.hatena.ne.jp/taketyon/20040711 なんにしても、これでまた随分と活用の幅が広がったっす。有難うございました〜。HKさまもアドバイス有難うございます。m(_ _)m
- 2004-07-11 (Sun) 00:48:22 yakty : はい。そーゆー事ですね。実は元々処理的にはそーゆー処理になってたんで、「セレクトビューにフォーカスがある時」って条件を取っ払っちゃっただけなんです。
- 2004-07-11 (Sun) 00:53:42 HK : テキストボックスで空入力するとセレクトが返ってしまうのですが、このように変わったのでしょうか?(0.5.8)リストビューの文字列を選ぶとテキストボックスが開いてそれを編集するようなことをしていたので。(返り値に行番号を指定していたのですが、空入力でそれが返ってきます。)
- 2004-07-11 (Sun) 01:04:22 HK : テキストボックスで空文字が返ってくるようにできないでしょうか?(敢えてそうならないようにしている?)
- 2004-07-11 (Sun) 01:15:38 yakty : フォーカス状態に関係なく、テキストボックスに文字列があればテキストボックス、無ければセレクトビューって処理にしちゃったんでそのせいですね。どういう実装にすれば良いかは思ついたんですが明日は多分時間が取れないので月曜以降で時間の取れた日に改良します。
- 2004-07-11 (Sun) 11:06:42 HK : いつも有り難うございます。対応よろしくお願いします。
- 2004-07-11 (Sun) 19:49:36 TAKETYON : 同じく、期待させて頂きます(^^)。で、ついでと言っては何々ですが、一つ要望が・・・。direction(QString,QString)で行えるレイアウト制御なんですが、インプットボックスの位置も制御出来ないもんですかね?。インプットボックスって一行しか無いんで、メッセージビューなんかと一緒に表示してる時、最下段になると意外と見難いんですわ。特に、QVGAの縦画面なんかにしてると・・・(^^;)。さらにボタンをその下に表示させてたりする時はまだ良いんですけどね。まぁ、純粋に見様だけの問題なんで、要望として出すのも恐縮なのですが。
- 2004-07-12 (Mon) 01:34:44 yakty : 一応今の実装に加え、フォーカスが当たって入ればそっちを優先という処理を追加するつもりです。インプットの位置制御はレイアウトをどう配置していたかによっては簡単かもしれないので、一緒に見てみます。
- 2004-07-12 (Mon) 09:54:34 TAKETYON : 勝手ばかり言うようで、申し訳ないです。どうぞよろしくお願い致します。m(_ _)m
- 2004-07-16 (Fri) 11:01:38 TAKETYON : あ、上がってる(^^)。ちと、今から外回り仕事なんで、帰ってきてから試させて頂きます〜。テクノウの更新もその時かな(苦笑)。
- 2004-07-16 (Fri) 19:07:03 TAKETYON : と言うことで、今さっき帰宅して早速試させて頂きました。基本的に問題なく動いてます〜。なんですが、またちょっと・・・ ->http://d.hatena.ne.jp/taketyon/20040716 。すんません、毎度(^^;)。どこにもフォーカスが当たってない場合は、基本的にインプットボックスの内容が送られる・・・のは、0.5.8の時と同じだと思うのですが、なんか空文字が送られてるみたいなんですわ。ただ、症状を特定しようと同じアルゴリズム(のはず)なスクリプト書いてみたら、何故かフォーカスが飛んでってくれないで困ってます(爆)。大元のスクリプトの方で、何かマズいことしてるんだろうとは思うんですけどね。とりあえず、どういう条件の時にフォーカス飛んじゃうのかは引き続き調査してみます。
- 2004-07-16 (Fri) 20:17:18 yakty : ふむ。今回の変更で、インプットにフォーカスがあれば空文字を送れるようにはなったんで、フォーカス無いときの空文字は無しに戻せばOKかなぁ。今夜もバージョンが上がる予感(笑) 色々問題が出て来るのは私の方での検証不足が問題なんですよね〜(^_^; という訳で、色々検証して頂いていて非常にありがたく思っています。
- 2004-07-16 (Fri) 20:47:21 HK : バージョンアップご苦労様です。TAKETYONさんの論理的な検証も有り難く参考にさせて頂いています。
- 2004-07-16 (Fri) 20:49:55 HK : いくつかのqshdlgウインドウを立ち上げての操作を考えているのですが、表示位置の変更は可能でしょうか?(ボタン数、リスト・メッセージボックス数を増やすための方法として検討中です。)
- 2004-07-16 (Fri) 21:57:34 TAKETYON : いや・・・、私が検証しきれない変なコトばっかやってるからと言う話も・・・(^^;)。逆に、qshdlg本体触らせちゃってるせいで、HKさまとかの既に組み上がってるスクリプトにまで、とばっちり食らわせちゃって、申し訳ないです・・・m(_ _)m。と言うことで、フォーカス飛んじゃう原因の方ですが、多分特定出来たと思います。詳細は、先程の作業記録の下に追記しときました〜。おそらくは、コントロールの配置と初期化のタイミングも絡んでるんじゃないかと思いますが・・・。今夜のバージョンアップ(爆)で致命的な問題は無くなりそうですが、こうなると特定のビューに明示的にフォーカス当てる qcopメッセージとかあったら便利なのかなぁ、とかも思ったり(^^;)。
- 2004-07-16 (Fri) 22:20:56 yakty : あ、それ前に実装しようと思ってたんですけどすっかり忘れてました…>
特定のビューに明示的にフォーカス当てる qcopメッセージ
さくっと出来たらやっちゃおうかなぁ。 - 2004-07-17 (Sat) 00:49:00 HK : 表示位置・・・ドキュメントにありました。(-x -y)失礼しました。フォーカス当てる・・・必要になりそうです。さっくっとお願いします。(m_m)
- 2004-07-17 (Sat) 01:08:10 HK : ああ、マルチウインドウできました。今まで気がつかなかったなんて・・・ちょっと行き詰まっていたのですが、一気に多くの道が見えてきました。
- 2004-07-17 (Sat) 01:14:19 yakty : いや、それも0.6.0での新機能ですよ。>表示位置。フォーカス制御もさくっとやっちゃいました(笑)
- 2004-07-17 (Sat) 03:21:06 HK : いつもながら素早い対応有り難うございます。showMultiで最後の文字が一文字余分(選択数も)に返ってくるようなんですが、ついでの時にでも見てもらえませんか?(今のところ使うアイデアは固まってないのですが)
- 2004-07-17 (Sat) 03:23:32 HK : また-F(widget flags)の使い方を簡単に教えてもらえないでしょうか?
- 2004-07-17 (Sat) 07:50:30 yakty : 複数選択モードの場合は選択分+空行を出力しているのですがそれとは違いますか?またWidgetFlagsはQtのマニュアルを見て頂く形になりますが、その為の情報をマニュアルに追記しておきました。
- 2004-07-17 (Sat) 13:45:08 TAKETYON : すいません、寝坊しました(笑)。と、言うことで試してみましたが・・・うーむ、微妙微妙(^^;)。このへんのウィンドウの描画処理なんかは、指令だけ送ったら後は Qt任せってのが実情なんだろうとは思いますが、何とかならんモンなんですかねぇ。いや、ソース見てお話してるワケじゃないんで、もしかしたら凄い的外れなコト言ってるのかもしれませんが・・・(^^;)。 ->http://d.hatena.ne.jp/taketyon/20040717
- 2004-07-17 (Sat) 14:18:10 yakty : うむー…、フォーカス処理に関してはQTimer使って、次のメッセージループに処理を回してやれば改善するかなぁ?インプットボックスのクリアは実際にインプットボックスの値を使った時に限定すれば良いのかなぁ?今はどんな処理だったっけ…?っていうか今日もバージョン上げるのか…?(笑)>私
- 2004-07-17 (Sat) 15:05:07 TAKETYON : まぁ、あんまり無理せんとボチボチやって下さいまし。テクノウの更新も大変だし(爆)
- 2004-07-17 (Sat) 22:27:32 HK : 複数選択は、(showSelectを単純にshowMultiに変えた場合ですが、)単一選択でも返り値が変わります。例えば、o4c8だったのがo4c8 8 になります。どうも最後の文字が入ってしまうようなんですが。
- 2004-07-18 (Sun) 00:21:12 TAKETYON : で、とりあえず遊んでみました(笑)。 ->http://d.hatena.ne.jp/taketyon/20040718
- 2004-07-18 (Sun) 09:37:10 yakty : いつもありがとうございます>TAKETYONさん。やっぱり最大化欲しいです?(笑) 複数選択は今手元で軽く試してみたところ問題なく動いてそうな感じです。>HKさん。問題が再現出来るテストスクリプトを書いてみてもらえませんか?
- 2004-07-18 (Sun) 11:44:48 HK : 今あるスクリプトから要らないところを省いてテストスクリプトを作り、ちょっと試してみたところ原因らしきものが分かりました。
while read ret < $INPUT do case $ret in ・・・ *) a=$ret$b ←$bが無ければshowMultiでも問題なし(showSelectでは問題なし) echo 'message(QString)' $a > $CONTROL;; esac done
- 2004-07-18 (Sun) 11:54:42 HK : テストスクリプト。こんな感じで分かるでしょうか?
- 2004-07-18 (Sun) 12:05:32 HK : あ、最後の空行に$bが入っているだけのことですね。お騒がせしました。スイマセン
- 2004-07-19 (Mon) 23:29:54 HK : 毎度お騒がせしております。。。qshdlgウインドの×、OKボタンを消す、あるいはシェルスクリプト内から判別する方法はないでしょうか?また、タイトルバーごと非表示にしてしまうなんてことは無理でしょうか?
- 2004-07-20 (Tue) 18:18:16 TAKETYON : >最大化 ま、とりあえず、今すぐ私も使うアテがあるわけじゃないんで(笑)。サブウィンドウ的な使い方する場合、メインウィンドウは立ち上げ時にバックで最大化して置いとくことになると思うんで、実際問題、途中で可変させることはそうそう無いでしょうしね。ただ、最大化の話に限らず、基本的にコマンドラインオプションで指定出来るモノに関しては、qcopメッセージでも指定出来る方が使い勝手としては自然かな?、とも思います。
- 2004-07-20 (Tue) 18:23:59 HK : qshdlgを使ったマルチウインドウ化について、近いうちに少しまとめるつもりなので興味を持てる内容であれば検討よろしくお願いします。
- 2004-07-20 (Tue) 18:24:30 TAKETYON : どうでも良いですが、しばらく yaktyさんの動きが無いのは、もしかしてフォーカス処理で煮詰まってたりとか・・・?。要らんコト言うてもたかなぁ(苦笑)。
v0.6.1
- 2004-07-21 (Wed) 00:30:44 yakty : うーん…一度に色々やりすぎた…。変更点全部マニュアルに反映出来ているだろうか…(^_^;;;
- 2004-07-21 (Wed) 00:43:49 yakty : フォーカス処理は早々と諦めてた(笑)んですが、リッチテキストビューの実装に手間取ってました。
- 2004-07-21 (Wed) 00:46:22 yakty : ×、OKボタンを消す、タイトルバーを消すは出来るとしたらWidgetFlagsの指定だと思います。マニュアル見て色々試してみて下さい。
- 2004-07-21 (Wed) 03:35:37 TAKETYON : さくっと出来ないことは、とっとと諦めるが吉ですね(笑)。その内、何となく出来ちゃったりすることもあるかもしれませんし(^^;)。で、ふと思ったんですが、QTimerで次のループに処理を回して・・・って、アルゴリズム的には要は時間待ち、或いは時間稼ぎってことですかね?。だとすると、タイマーで時間待ちをさせるのでは無く、
現在のフォーカスが取得出来るまで
待たせるってのではあきまへんかね?。いや、字面だけで判断・・・いちお、オライリーの紫色な本は斜め読みしたけど(^^;)・・・してのお話ですし、もしかしたら、もう試された後なのかもしれませんが(汗)。 - 2004-07-21 (Wed) 04:14:55 yakty : QTimerを使ったのは時間的には全く待たせてるわけじゃなくて、待ち時間0のsingleShotでシグナル飛ばして、次のメッセージループに処理を持っていってるだけなんです。それにシングルスレッドなんで、フォーカスが取得できるまで待たすってのも無理なんですよね(あ、無理やりメッセージループ回してやれば出来るかもしれないか)。でもPIPEの読み手がいない場合にはdisableにしたりしてるんで、結局待たせられないんですよね。disableにしてる処理自体をやめちゃえばどうにかなるのかなぁ?読み手がいなくてもenableのまんま(この時にボタン押しても何もおきない)でもいいかなぁ?
- 2004-07-21 (Wed) 08:13:26 HK : WidgetFlagsの指定・・・やはりそこを開拓しないといけないんですね・・・
- 2004-07-21 (Wed) 12:31:14 HK : 0.6.1で-wと-hの指定が反映させないようなんですが(設定ファイルのサイズになってしまう?)・・・どうでしょうか?
- 2004-07-21 (Wed) 21:25:20 HK : サイズ指定>きっと、そこは触わってないんだろうなあと思いつつもシェルスクリプトは同じなので何でだろうと思い、試しにリセットしてみたのですが状況は変わらずです・・・
- 2004-07-22 (Thu) 07:59:47 HK : サイズ指定>0.6.2で設定可を確認しました。対応有り難うございます。
- 2004-07-22 (Thu) 08:01:04 HK : リッチテキスト>0.6.1で確認しました。ノーマルメッセージに比べて処理にかなりかかりますね。
- 2004-07-28 (Wed) 16:19:46 TAKETYON : ふい〜、ようやっと時間が取れたんで検証再開しましたあ。フォーカスは上手いこと機能してるみたいです。あと、リッチテキストについても色々調べてみました(^^)。 ->http://d.hatena.ne.jp/taketyon/
- 2004-07-28 (Wed) 19:16:16 HK : 検証ご苦労様です。
- 2004-07-28 (Wed) 19:22:45 HK : マルチウインドウ化を進めていますが、(複数のウインドウに対して)qshdlgを reject()→bashをexit で終了してもまた(bash,qshdlgが)再び立ち上がってきてしまいます。経験的には、作成した終了確認ボタンを押す時に時間をおいてから押すと立ち上がってこないようですが・・・毎度の怪情報で申し訳ないのですが、何かヒントになるようなことがあればアドバイスをお願いします。(m_m)
- 2004-07-30 (Fri) 23:24:23 HK : マルチウインドウ>起動時に複数のスクリプトを&で実行していて、それぞれに環境変数QSHDLG_APPのセットとqshdlgの起動があるためにタイミングにより違うアプリケーション名がセットされてしまうことが原因の一つでした。
- 2004-07-30 (Fri) 23:25:57 HK : 終了時も同期を取った方が良いみたいなんですが何故かは今のところ分かりません。
- 2004-07-30 (Fri) 23:28:56 HK : いくつかのqshdlgアプリガあって次々に起動すると同様のことが起こるのでは?(まあ、そんな使い方はいけないんでしょうけど。)
- 2004-07-31 (Sat) 17:24:14 TAKETYON : 基本的にLINUXのマルチタスクって、必ずしも処理が同期してるワケでもないですからね〜。このへん、BSDとか同じUNIX系列でもシステムによって結構動作変わったりしますね。うちもそのへんのコトがあるんで、最低限、前処理終わらせてからじゃないとヤバげな処理の時は、 wait入れたり、そのものズバリ sleepで待たせたりしてます(苦笑)。複数のqshdlgのタスク管理に関しては、起動時に -t でタイトル指定しとくと、psでタスク一覧表示する際に反映されます(スクリプト内でtitle(QString)しても起動時の内容が維持されます)んで、それを元に grepでひっかけてやれば、ある程度タスクを特定させることは出来るんじゃないかと。実際、うちではそうやってスクリプトの重複起動をチェックさせてます。
- 2004-08-01 (Sun) 02:34:12 HK : 貴重なアドバイス有り難うございます。今のところ呼び出し元スクリプト用のqshdlg を始めにrejectすることでゾンビのように起ち上がってくる現象は起きなくなっていますが・・・自信は無いです。(苦笑)
- 2004-09-04 (Sat) 16:56:04 HK : こんなもの作ってみました。→複数ウインドウのスクリプト
- 2004-09-04 (Sat) 16:56:48 HK : 簡単ですが、説明です。
- 2004-09-04 (Sat) 17:09:38 HK : qshdlg.confを書き換えますので注意してください。(戻すようにしてはいますが)
- 2004-09-09 (Thu) 08:30:56 HK : 質問です。セレクトカーソル位置の指定は難しいでしょうか?
- 2004-10-06 (Wed) 22:43:50 HK : ListBoxの制御用qcopを追加したいのですが・・・アドバイス頂けないでしょうか?
セレクトビューアイテム制御(現状) 'item(QString)' SelectView->insertItem(m_values[i]); 'item(QString,QString)' SelectView->insertItem(m_labels[i]); (m_values[i])
追加制御 'currentSelect(int)' 指定番号をカレントにする int アイテム番号(0〜) SelectView->setCurrentItem( int ); 'changeSelect(int,QString,QString)' 指定番号のラベルと値を変更する int アイテム番号(0〜) QString ラベル QString 値 SelectView->changeItem( m_labels[i],int); (m_values[i])
- 2004-10-06 (Wed) 22:49:54 HK : スキル不足のためセルフ環境なんですが、qshdlg0.6.2のソースをmakeするとリンクでQShDlgBase.oの何か失敗します。お忙しいところ申し訳ないとは思いますが宜しくお願いします。
- 2004-10-06 (Wed) 23:31:26 yakty : あ、すいません。ここんとこ忙しくて見落としてました。セレクトビュー制御は検討してみます。リンク失敗の件は「何か失敗します」ではアドバイスのしようが無いんですが、セルフでってことはおそらく適切なqconfig.hを使用出来ていないのではないでしょうか。
- 2004-10-08 (Fri) 06:25:31 HK : ご検討宜しくお願いします。多分、コンパイルできそうにないです。セルフ:uicを実行するとlibqutil.so.1が無いというようなメッセージがでます。uic必要ですよね? qconfig.hはqtフォルダに見つけましたが、中身はありませんでした。(//everything)
- 2004-10-25 (Mon) 22:48:39 HK : RedHatのものを入れたらコンパイルできたようです。(起動までは確認しましたが)
- 2004-10-25 (Mon) 23:36:27 HK : リストのカレント指定とラベル変更まで何とか動きました。値変更はできませんでした。少しスクリプトの方が進められそうです。
[[#comment]]