今回も引き続き、CarbonアプリケーションからNibファイルを活用した時の経験談です。Nibファイルを作成するのには、Developer ToosのInterface Builderを使います。最近発表された最新版のInterface Builderでの問題点を再度まとめてみました。
12/20現在、ADCメンバーサイトには「CarebonLib_1.5f6_SDK」が登録されています。f版になってからもどんどんとリビジョン番号が上がっていますね(笑)。てっきりMac OS 9.2.2に搭載するためにβバージョンをスキップしたのかと思っていたのですが、結局のところ、CarbonLib 1.5はMac OS 9.2.2には搭載されませんでした。この感じでは、以前に予想していた通り年内搭載は無理かもしれません。それから、Apple社からの少し早めのクリスマスプレゼントでしょうか?ADCメンバーサイトに「December 2001 Mac OS X Developer Tools」が登録されました。ADCのOnline会員でもダウンロードしてインストールすることが可能です。とは言っても、容量が200Mバイト以上もありますので、誰でも簡単にと言うわけにはいかないでしょう。当方ではADSL経由でアクセスしたのですが、ダウンロード完了までには20分以上かかりました。
ダウンロードする前に、以前のDeveloper Toolsからの変更点を確認しておきたい方は、以下のApple社サイトをチェックしてください。
http://developer.apple.com/tools/macosxtools.html
今回のDeveloper Toolsの目玉は、AppleScriptからCocoaフレームワークを呼ぶことで、ダイアログやコントロールなどのユーザインターフェースを利用可能にすることです。この仕組みを「AppleScript Studio」と呼んでいます。Project Builderもv1.1.1となり、コンパイラやデバッガのパフォーマンスが改善されています。同様に、これから紹介するInterface Builderもv2.2へとバージョンアップされていました。さっそく使ってみたところ、確かにコントロールをレイアウトする時のパフォーマンスが良くなっています。また、配置のためにドラッグしているコントロールが、ガイドライン上で一時停止してくれるのも大きな進歩です。しかし、以前の紹介した「バグ」がひとつも直っていないのにはがっかりしました。現在確認できているバグを再度まとめておきましょう。
(1)タブコントロールのアイテムに日本語が表示できない。
これが一番困っているバグです。聞いたところによると、CocoaベースのNibファイルでは、ちゃんと日本後が表示されるそうです。アップル社では、日本語版Carbonアプリケーションを作る時にInterface Builderを使ったことがないのかもしれません?
(2)ResourceからImportするといくつかのコントロールが正しく変換されない。
例えば、AutoTogleタイプのCheckBox(kControlCheckBoxAutoToggleProc)などがうまく変換できません。全種類のコントロールを試したわけではありませんので、他にも変換不可なコントロールがあるかもしれません。
(3)メニューアイテムの「コマンドキー」が「シフト+コマンドキー」に化ける。
こちらも、ResourceからメニューをImportするときに起きる現象です。Mac OS Xの日本語環境が関係しているのかもしれません。

(4)カットしたコントロールを別ウィンドウにペーストすると位置がずれる。
同じウィンドウ内でコントロールをカット&ペースとすると、オリジナル位置から少しずれて配置されます。この仕組みは理解できます。なぜなら、まったく同じ位置に置かれたらピッタリ重なって判別出来ないからです。しかし、別ウィンドウへペーストする時には、オリジナルと同じ位置に配置してもらいたいものです。でないと、コントロールのレイアウトが似たダイアログを複数作成するような場合に非常に不便です。初期設定のどこかに何らかのオプションがあるのでしょうか?
(5)ガイドラインに従うとコントロールが正しく表示されない。
ガイドラインに従いタブコントロールの下にボタンを配置すると、アプリケーションでボタンが切れて表示されてしまいます。ボタン配置を示すガイドラインの位置がタブコントロールに接近しすぎているのが原因です。誰も実際に使ったことがないのがバレバレではないでしょうか(笑)。

(6)タブコンアイテム用に配置されているUserPaneコントロールがずれる。
Interface Builderで編集している時には大丈夫なのですが、Nibファイルへ保存してアプリケーションで表示してみると、タブアイテム用に配置されているUserPaneコントロールがずれている場合があります。しかし、これがどういった状況やタイミングで起こるのかは把握できていません。謎の現象です。
Interface Builderのこうしたバグや不都合は、すべてアップル社に報告してあります。現状、NibベースのCarbonアプリケーションを作成する時には、Interface Builderに頼るしかありませんので、早急なる対処を望みたいと思います。
今回のバージョンでも、Project Builder経由以外ではImage Tabに画像やアイコンを表示させる方法はないようです。仕方がないので、Metrowerks CodeWarriorのプロジェクトフォルダの中にテンポラリのProject Builder用フォルダを作り、Project Builder経由で編集したNibファイルをアプリケーションパッケージ内に複製することでその場をしのいでいます。

これについては、Metrowerks CodeWarriorが、Nibファイルの取り扱いを強化してくれるまで待つしかないでしょうね。それから、タブコントロールでの内容(Embedしたコントロール)の切り替も自動で実行してくれると嬉しいのですが...。現状だと、Interface Builderではそうなるのですが、アプリケーションにすると、以下のようなソースコードを呼び出して自分で切り替える必要があります。

もうひとつ、これは直接Interface Builderとは関係ないのですが、Aquaコントロールでは背景に影を描画します。ですから、PICT画像の上などにコントロールを配置すると、背景の一部が抜けてしまい、非常にみっともない表示になります。

コントロールに対してEmbed(埋め込み)処理をしてもダメですし、アピアランスマネージャやコントロールマネージャを色々と調べても解決方法が見つかりません。どなたかご存知ないでしょうか?もし、現状では方法が無いとすれば、アピアランスマネージャの改良で何とか対応してもらいたいと思います。どんな背景にコントロールを配置しても美しい見栄えを保つことができれば、アプリケーションでのAquaインターフェースの活用方法がさらに広がるのではないでしょうか?
copyright 2001 Ottimo, Inc. All rights reserved
無断転載・引用禁止
Contact Us: koike@ottimo.co.jp