goo blog サービス終了のお知らせ 

Hironytic Status

ひろんの開発日誌

[CoveredCalc for BeOS] 常に手前に表示 その後

2005-10-20 09:43:02 | 開発状況
BeOS で floater にして常に手前に表示を実現しようとしたら、Deskbar にウィンドウが表示されなくなった件については小手先のテクニックでなんとかごまかせそうなことがわかりました。(「なんとかなりそう」ではないことに注意)

常に手前に表示する floater ウィンドウとは別にダミーのウィンドウ(こいつは floater にしない)を (-10000,-10000)-(-10000,-10000) みたいな画面外の座標に作っておきます。Deskbar にダミーウィンドウが表示されるので、ダミーウィンドウの名前を floater ウィンドウと同じ名前にしておけばごまかせます。
ダミーウィンドウの WindowActivated() でアクティブになるときに、floater ウィンドウを Activate(true) してやります。これで、Deskbar からダミーウィンドウが選ばれたら floater ウィンドウがアクティブになります。
注意点としては、floater はアクティブにしても、その前にアクティブだったウィンドウが非アクティブにならないことです。なので、そのままだとダミーウィンドウもアクティブ状態です。ここでさらに Deskbar をクリック(このタイミングで floater ウィンドウは非アクティブになります)。それからダミーウィンドウを選ぶとアクティブが変わらないと考えられるのか、ダミーウィンドウはアクティブになりますが floater ウィンドウをアクティブにできません。
そこで、ダミーウィンドウの WindowActivate() で floater ウィンドウを Activate する前に、自分自身を Activate(false) してやります。どっか別のアプリがアクティブ状態になりますがまあ仕方ないでしょう。(^^;
それから注意点その2として、ワークスペースを切り替えたときにダミーウィンドウも同じワークスペースへ移動させる必要があります。そうしないと、Deeskbar からダミーウィンドウを選んだときに元のワークスペースに戻ってしまいます。(あと、Deskbar のウィンドウの横に別ワークスペースにあるというアイコンが出てしまうというのもありますね)

で、常に手前に表示状態で発生する次のことは制限事項にするしかないようです。
・すべてのワークスペースに表示される。
・Workspaces にウィンドウが表示されない。
・別のウィンドウがアクティブなときに、常に手前に表示しているウィンドウをクリックすると、元のウィンドウがアクティブなまま。

……というあたりをテストアプリ作って検証しただけで、CoveredCalc への組み込みはまだ行っていません。

[CoveredCalc] 常に手前に表示

2005-10-19 21:32:16 | 開発状況
バージョン 1.3.0 をリリースした後、少し時間があまったので次のバージョンの機能でも少し作り始めるか…と思って「常に手前に表示」の機能追加にとりかかりました。
40分くらいで Windows 版は実装できてしまいました。(゜Д゜
今朝になって、BeOS 版にとりかかりましたが、なんとなく動くようにはなりました。

こんなことなら、「常に手前に表示」も 1.3.0 に入れてしまえばよかった……なんて思っていたら、BeOS 版の方はそう簡単には動いてくれていないようです。
feel として B_FLOATING_ALL_WINDOW_FEEL をセットすると、最小化(Minimize)できないんですねっ!
あと、Deskbar にウィンドウが表示されませんっ! こういうものなのですかっ!?
最小化については、B_NORMAL_WINDOW_FEEL になおしてから行えばいいのかもしれませんが、Deskbar に表示されないのはどうしようかな。
……制限にする?(^^;

誰か情報をご存じの方いませんでしょうか~っ。

まあ、どっちにしても 1.4.0 はまだ出ません。

[CoveredCalc] 1.3.0 リリース

2005-10-18 20:44:27 | 開発状況
予告どおり、CoveredCalc バージョン 1.3.0 をリリースしました
今日は仕事が早く終われたのでよかった。
ソースコードも最新のものを公開しています。

ZETA R1 がリリースされたこともあり(※すでに 1.1 のバージョンアップが出ていますが)、これまで「BeOS Dano 版」と呼んでいたものを「BeOS 版 ZETA 向け」と名称変更しました。
中身は変わってないので Dano でも動作しますが、今後、ZETA ネイティブな開発環境でのビルドも考えているので、そうなってくると Dano 版はサポートしなくなるかもです。
ソースコードレベルでは Dano 用としてもビルドできるようにしておくかもしれません。
あと、ZETA ネイティブなバージョンを作ったら、たぶん、「CoveredCalc for ZETA」になりそうな予感。(現在は「CoveredCalc for BeOS (Zeta向け)」)

予告の時にも書いたように、しばらく引っ越し作業になります。
引っ越してからは今より遙かに通勤時間がかかるようになるので開発時間が今まで以上に短くなる可能性も(^^;
なお、次のメジャーバージョンアップ(バージョン 1.4.0)では、実装予定機能の中にあるコマゴマしたものをいくつか入れようかなぁと考えています。

[CoveredCalc] 1.3.0 リリース予告

2005-10-18 09:49:48 | 開発状況
BeOS のツールチップも動くようになりました。

ということで、近いうちに(というか今晩)バージョン 1.3.0 をリリースします。
実は今朝、ドキュメントの更新から zip ファイルにアーカイブするまでをやったんですが、それを Web にアップしていると会社に遅れそうだったので断念しました。(^^;

1.2.0 から 4 ヶ月ぶりのリリースになりますが、何が変わったのかというと…
  • カバー定義ファイル(CoverDef.xml)と設定ファイル(Setting.xml)の読み書きルーチンを書き直した。設定ファイルに手動でコメントを付加しても、それが保存されるようになるはず。(なんちゃってDOMを利用するようにしたやつです)
  • ダイアログ、メニューのリソースの形式を変更。ダイアログデザインの調整。(← BeOS 版のみ)
  • ツールチップ表示に対応。

とまあ、更新点が少ない上にほとんどユーザーにメリットがありません。

今月末に家を引っ越します。その前後は準備・後片付けなどで作業できません。
また、引っ越し後はしばらくインターネットにも繋げられない可能性もあるので、その前にリリースしておくことにしました。
ソースコードもリリースします。(バックアップも兼ねて…)

[CoveredCalc] ソース公開&ツールチップ対応

2005-10-11 11:31:47 | 開発状況
エンドユーザにとっての機能追加がないのでバイナリのリリースはしていませんが、ソースだけ少し新しいやつ(r429)を公開してます
しょっちゅうアナウンスを忘れてる気がしますが、9/30 に公開しました。

現在、ずっと放置したままになっていたツールチップ対応を実装中です。
Windows 版は実装を終えました。
つーか、たびたびテストコードとかだけ作って実装に備えて用意を行っていたのですが、それらを組み合わせるだけで 40 分程度の作業で終ってしまいました。なんだったんだ。もっと時間がかかると思ってたのに。早いうちからやっておけばよかったと思いました。
でも、BeOS 版はツールチップのウィンドウからして作らないといけないようなのでちょっと時間がかかっています。
あまり時間がかかるようなら、Windows 版だけ先にリリースしてもいいかもしれませんね。1.3.0 として。

ちなみに、Windows 版でツールチップを表示させてみての感想。
[1] ボタンの上にマウスカーソルを持っていって「1」というツールチップが出るのはかなりおバカな印象を受けました。
いや、ぼくの作った電卓が全部そうなってるんですが…。
かといって、他に表示するものもないしなあ。あ、別にツールチップを与えないって選択肢もあるんやね。

[CoveredCalc Be]ダイアログリソースの問題

2005-09-25 20:58:38 | 開発状況
カバー読み込みを DOM 経由にする作業は終わりました。でも、これだけではユーザにとっては何の意味もないので、まだリリースはしません。ソースは公開してもいいかもしれません。区切りとして。

それはともかく、なんとなく、BeOS 版のダイアログリソースの持ち方を変更し始めました。
これまで、Interface Elements で作った 'ARCV' リソースを BMessage で Unflatern して、そこからダイアログ (BWindow) オブジェクトを構築していました。
この方法を採った理由の 1 つは、ダイアログエディタを使いたかったこと。そしてもう 1 つはリソースを変更するだけでローカライゼーションが (まあ少しは) 可能なこと。
(LocaleKit を使わない)ローカライゼーション対応も将来行いたいと思っていますが、これは単に読み込むリソースを切り替えるだけで実現することを考えています。(今回の件に関係ないので触れてないだけで、ZETA 用に LocaleKit を使ったローカライゼーションの対応も予定としてはあります)
が、実装を進めるごとに、これはちょっと問題やなと思う点がいくつかでてきたので、ちょっと別の実現方法に変更中です。

以下、問題やなと思った点:

1. Interface Elements が古い。

Interface Elements 自身がすでに手に入りにくかったり、今後のサポートも期待できません。
まあ、GuiBerry に期待するという手はあると思いますが。(でも、GuiBerryは BWindow ではなく、BView をアーカイブするんだった気もします。まあ、それでも別に問題無いんですが。)

2. BMessage への Archive が完璧ではない。

例えば、BTextView は Archive したときにフォントと色の情報をちゃんと覚えてくれないみたいで、C++のソースの方でオブジェクトを復元してから改めてフォントと色を設定していたりします。なんか中途半端です。

3. BMessage を Flatten したときのデータの形式が R5 と ZETA で異なる。

ZETA では BMessage を Flattern したデータの形式が新しくなっているみたいで、R5 で作ったデータを ZETA で Unflatten することはできますが、逆はできなかったような記憶があります。これはつまり、ローカライゼーションのためにリソースを作るだけでも、ZETA 上で作業したのでは R5 用に使えないのでダメということになります。

4. 独自のクラスをどうするかいつも悩む。

BView(あるいはその継承クラス)を継承した独自クラスでコントロールの実装を行うときに、それをどうアーカイブしようか悩んでしまいます。

[CoveredCalc] なんちゃってDOMを使うぞ

2005-08-05 12:55:43 | 開発状況
2月に他の実装と平行して「なんちゃってDOM」を作ろうというようなことを書きましたが、実際に平行して作っていました。
ソースをノートパソコンに入れて、ちょっと(いや、かなり)手が空いたときには「なんちゃってDOM」の実装をすると決めてやってました。
んでもって、もともと DOM の仕様を満たしたりはしないつもりでしたが、雰囲気だけは参考にしたりしました。

このなんちゃってDOMが、そこそこ使える状態になっていたので、CoverdCalc の開発本線にマージして、試しに設定ファイルの読み書きをこれまでの SAX パーサのイベントハンドリングから、なんちゃって DOM に変えてみました。
開発側のメリットとしては、そこそこ拡張がしやすくなったこと。
ユーザー側のメリットとしては、これまで、設定ファイルにコメントを書いても、設定値が変わる度にコメントが消されてしまっていましたが、これがちゃんと残るようになったことでしょうか。そんなコメント書こうとするやつがいたのかどうか知りませんが。
んで、気分が乗ってきたので、本来置き換えたかったカバー定義読み込み部分も、なんちゃって DOM 経由にしようと……

思ったのが、先週です。(だったら先週のうちにここに書けよと)
しかも、それからさっぱり進んでいません。ごめんなさい。

[CoveredCalc] ソースを公開しました

2005-07-13 18:26:45 | 開発状況
CoveredCalc(各OS版の)version 1.2.0 相当のソースを公開してみました
相当っていうのは、
・アイコンが違う(配布できないため)
・About ダイアログのアイコンに関する記述がない。
という程度ですが、そのためにちょっと修正も加えているので厳密には 1.2.0 公開時より新しいソースです。

一応、改行コードの違いによって、CRLF 版と LF 版を用意しましたが、中身は一緒です。

近況

2005-07-11 15:20:26 | 開発状況
CoveredCalc 1.2.0 をリリースしてからもうすぐ 1 ヶ月になります。
しばらくここを更新していなかったので、まるで何もしてなかったかのようですが、その通り、ほとんど何もしてません。
CoveredCalc のソース公開についてちょっと準備してたくらい。

今後の予定:(CoveredCalc)
・ソース公開準備
・ボタンのツールチップ表示
・キーカスタマイズ
あたりから手をつけます。ボタンのツールチップ表示は地味な割に時間がかかりそう……。