あまつぶ

5.13 【Carbon Event Managerを使う】

 ようやくCarbon Eventの実装に取りかかる。前回(4.29)書いたように、いろいろと気になるイベントがあるのだ。まずは、一番単純に実現できそうなPhutで試してみる。
 まず、kEventWindowGetClickActivationについて。どういうタイミングで呼ばれるのかわからなかったので、とりあえずビープ音が鳴るようにして実験開始。あれ、パレットの内容をクリックしてもイベントは起こらない。タイトルバーをクリックした場合には起こるようだ。うーん、どうもこれは、クリックに対してウィンドウをアクティブにするかどうか……という意味で、バックグラウンドにいるアプリケーションがクリックを受けられるかどうかというのとは違うのかな。
 しかし、Carbon Event Managerに対応した副作用(?)か、Xで動かした時もバックグラウンドにいながらにしてクリックを取得できるようになった。実験をする前に10.0.3にアップデートしたのでその関係もあるのかも知れないが、とりあえず、バックグラウンドでもクリックを受けられるようになってくれた。が、クリックした時にウィンドウが前に出てきてくれないという新たな問題が発生。タイトルバーをクリックすると上に書いたイベントが発生して前に出てきてくれるのだけど、タイトルバーをなしにしているとどうしようもない。
 Xではほぼ思ったとおりの動きをしてくれるようになったが、9.1上ではクリック判定(?)がちょっと甘いようだ。パレットの書類やアプリケーションをクリックしても起動してこなかったり、起動しているアプリケーションをクリックするとアプリケーションは切り替わるがパレットのハイライトが変化しなかったりする。Xではこのようなことはまったく起こらないのだが、CarbonLibの問題なんだろうか……。
 kEventAppLaunchedなどについては、どういうデータがどこから取得できるのかがわからなかったので未実装。次回にでも試してみる予定。

 実装自体は、AppleEventと同じようにイベントハンドラを登録してRunApplicationEventLoopを呼ぶだけ。あとはそれぞれのイベントについて、通常のイベントループ用の処理ルーチンに渡す形にすればちゃんと動く。ウィンドウの処理で、パレット内に表示するリストの初期化を行う前にイベントハンドラを登録してしまってエラーを起こしてしまったが、それ以外は問題なくすっきり実現できた。もちろん、もともと単純なアプリケーションだからというのはあったけど。

 QT-QのCarbon対応版(2.32b1)をリリース。減色後のCopyBitsなど、一部に問題はあるが、PhutやIconPartyにくらべれば完成に近いかも知れない。減色ルーチンがまとまったら、Classic版にも適用して2.4くらいで完成の予定。

 Xでの動作テストのためには、X上でコンパイルするのが一番効率がいい。しかし、ProjectBuilderは重いし、9.xでは使えない。そうすると、うちにはCodeWarriorしかないのだけど、Pro3なのでClassic環境でないと動かない。動かないよりはましだけど、やはりこれはなんとかしたい問題だ。Classicをずっと起動しておけばいいのだろうけど、起動に時間がかかるし、その後の動作もいまいち不安定だったりする。Pro6を買うという手もあるけど、お金が……(汗)。
 ResEditもClassicでしか動かないし、なぜかCodeWarriorのプロジェクトウィンドウからリソースファイルをダブルクリックすると止まってしまう。強制終了しても再起動しなくていいのはうれしいが、よく使う機能だから困る。Finderでウィンドウを開いておいてダブルクリックして起動すればいいのだけど、めんどくさいのだ。
 リソースについては、GUIでなくても編集できるようなバージョンなどはRezでコンパイルするようにしていく方が楽かのかなと思う。条件分岐できるから1つのソースで一括管理できるし、ProjectBuilderでも編集できる。DITLなどGUIで編集したいリソースは……、Nibベースにしたら解決するのね(笑)。
 そういえば、Acrobat Readerが5.0でCarbon対応になったみたい。これでPDFのドキュメントを見る環境は整ったかな。Xに標準でついているアプリを使うという手もあるけど、なんか使い勝手が悪かったので。それから、Fetchも4.0正式版になっていた。ベータ版の時と同じように初期設定ファイルなどがそのまま使える。まだ使ってみていないけど、AppleScriptへの対応もそのままいけるみたい。アプレットやドロップレットにしたスクリプトは、一度Script Editorで開いてX用アプレット(正確な名前じゃないと思うけど)として保存すればClassicを起動せずに動くようだ。
 Xへ移行できる環境は徐々に整いつつある感じだけど、2.12に書いた状況から大きく進展しているということはないのかな。単にソフトを「買えば」解決する部分も多いけど、そうでないとなかなか難しい。いろいろ新しいソフトが出てきているようなのでそれらをうまく使えば解決するのかも知れないけど、どうなのかな……。
 そういえば、Xでディスクイメージファイルを作成するにはどうしたらいいんだろう。Xに付属するDiskCopyでは作成できないみたいだけど。最近、「dmg」という拡張子のついたディスクイメージファイル形式で配付されているソフトがあるみたいなのでなにか方法があるのだと思うのだけど。標準でついているソフトではできないのかな?(^^;;;


April 29, 2001 ↑ May index → June 24, 2001