<   2005年 02月 ( 5 )   > この月の画像一覧

[CoveredCalc for BeOS] カバー情報ダイアログ

昨日の早朝の時点で BeOS 版でもカバー情報ダイアログを表示できるようになりました。
Windows 版ではモーダルダイアログ(そのダイアログが表示されていると他のウィンドウの操作ができないダイアログ)なんですが、BeOS ではモーダルダイアログは一般的ではないのでモードレスダイアログ(他のウィンドウも操作できるダイアログ)にしてあります。

ちょっと時間がかかってしまった理由は、作業時間があまりとれなかったっていうのもありますが、BTextView にスクロールバーを付けるのに苦労したというのもあります。
BTextView を BScrollView でくるんでやればいいのはわかっていました。InterfaceElements でそう配置しようとしたのですが、BScrollView を作ったら BView な子ビューがすでに入ってました。それを削除して BTextView を入れて保存したところ、子 View の順序が変わったのがいけないのか、次に開くと水平スクロールバーがすごい位置に表示されました。本来、BScrollView のターゲットはコンストラクタで指定したあと変えることはできないはずなので、どうしようもないのかもしれません。
結局、InterfaceElements ではただの BTextView を貼り付けておくことにしました。
実行時にそれを親ビューから削除して、新しく BScrollView を作ります。


これで、Windows と BeOS で Version 1.1 をリリースしてもいいんですが、増えた機能がカバーのバージョン情報が表示されるようになっただけであんまりにも情けないのでもうちょっと細々したところをいじってみることにします。BeOS 版で、別スレッドからウィンドウを操作している部分があって少し不安なところもあるので、その辺もなおしたいし。

カバーの著作権情報が表示されないままなのは問題ありますが、今のところ自分以外にカバーを公開してくださっているのは桝田道也さんだけなのでもう少し延ばしてもまあいいかと勝手に判断。桝田さん、ごめんなさい。
[PR]
by hironytic | 2005-02-28 10:44 | 開発状況

[CoveredCalc for BeOS] Dano 版のビルド

Dano の環境を整えたので、Dano でもビルドできるようにしてみました。
ただビルドできるだけじゃする意味ないので、Dano でサポートされた非矩形ウィンドウを使って Dano バージョンなら Windows 版と同じように背景を透過するようにしました。
a0011820_1542752.jpg

スクリーンショット左は R5 版、右が Dano 版。

ほんとはこんなことやってないで、カバーのバージョン情報を BeOS 版で表示できるようにしないといけないのだけど。(^^;
[PR]
by hironytic | 2005-02-22 01:55 | 開発状況

[CoveredCalc] カバーのバージョン情報

現在のカバーのバージョン情報(about タグ)を表示するダイアログを作成中。
バージョン情報だけでは寂しいのでタイトル説明文も一緒に表示します。

Windows 版は動くようになりました。とりあえずこれだけの修正でいったんバージョンアップしようと考えているので、バージョン番号を上げて、一連のリリース作業をすれば Windows 版だけ先行でバージョンアップできます。
が、BeOS 版と共通のソースも修正しているので、BeOS 版は現在ビルドできないはずです。ここで BeOS 版をビルドできるようにしていると、たいてい共通ソースにも修正が入って Windows 版にも影響を与えることが多いのです。(要するに Windows 版作成時に共通ソースを修正していると BeOS 版に対する考慮が漏れている部分があるということです)
BeOS 版が動くようになるまでにそうそう時間はかからない(と思っている)のでやっぱり BeOS 版と同時リリースにしようと思います。

ちなみに、機能が増えるので、バージョンは 1.1 になります。
[PR]
by hironytic | 2005-02-08 17:59 | 開発状況

[CoveredCalc] なんちゃってDOM

CoveredCalc では、カバー定義と設定ファイルに XML を利用しています。
XML にすると汎用のパーサが使えたり、拡張がしやすかったりというメリットがあるからです。(と過去に自分が書いてます

汎用の XML パーサには、SAX と DOM の 2 種類があります。SAX はタグなどが見つかるたびに順に通知されるイベント型。お手軽で簡単な解析に向いています。DOM は XML 文書を解析したあとツリー構造をそのままオブジェクトにマッピングして、文書内のどこでも参照できるような高機能なものです。さらに、そのツリーに変更を加えて、XML 文書として書き出すこともできます。(SAX は読み込みしかしない)
作り始めた当初は、そんなに複雑にするつもりはなかったので、SAX パーサでお手軽にやればいいかと思っていました。でも、作ってみると(特にカバー定義が)思ったより複雑になってしまいました。SAX パーサからのイベントハンドリングは妙に複雑です。
さらに設定をファイルに落とすときに XML 文書を自分で書き出さなくてはいけないので割と面倒です。
これはカバー定義と設定項目の拡張を妨げる原因になっています。やる気がなくなるんだもん。

このあたりで、SAX パーサをやめて DOM パーサに変更しようかと思いました。
現在使っている Expat を採用した背景には、BeOS で使えたことと、ライセンスが希望に合うことがあります。(と、これもまた過去に書いてます
一方、DOM パーサとして有名なのは Xerces(C++ で利用するので Xerces C++)です(なお、Xerces は SAX パーサの機能も持っています)。最新バージョンは 2.6.0 のようですが、BeOS にも 2.4.0 がポーティングされているようです。ライセンスも Apache Software License 2.0 なので問題はないでしょう。
ただし、この BeOS ポートでは共有ライブラリ(.so)のバイナリしかありません。自分でビルドすればスタティックライブラリ(.a)も得られるんでしょうか。共有ライブラリでも構わない(むしろユーザからすればそっちの方がいい?)んですが、シンプルなファイル構成にしたいのと、ユーザの環境によってライブラリが異なっていると動きが変わったりするのを避けたいんです。

でも、そこまでしてフルスペックの DOM パーサがいるか?という気もしてきました。
当然、DOM パーサは処理も重いし、サイズも大きくなります。
Expat がうまく動いてくれていることはわかっているわけですから、解析にはこのまま SAX パーサを使うことにして、DOM ツリーの管理部分とツリーを XML に出力する部分だけを自力で作ればいいんじゃないかと。
別にフルスペック必要なわけではないので、自分が使うような機能だけを実装した「なんちゃってDOM」でいいんです。DOM の仕様を満たす必要なんか全然ありませんしね。

でも、これはそれなりに時間がかかりそうなので、他の機能を実装しながら、平行して進めようかなと思っています。パーサ自体は独立してるので、Subversion でブランチ切って作業してれば、最新ソースへのマージも楽かな~。
[PR]
by hironytic | 2005-02-01 01:02 | 構想

[CoveredCalc] さらにバージョンアップ

昨日のバージョンアップの修正で仕込んでしまったバグのおかげで連日バージョンアップ。
バグの修正よりもリリースのための作業(マニュアル更新、ZIPへのパッケージング、Web ページの更新など)に時間がかかるんだよな~。もぉ~。
自分で入れてしまった不具合だから文句は言えないけど。
[PR]
by hironytic | 2005-02-01 00:08 | 開発状況