タイトル今から始めるCocoaプログラミング》文書ファイルを扱うアプリケーションを作る(17)さらにテキスト編集機能を追加カテゴリーユーザインタフェース, Cocoa, 今から始めるCocoaプログラミング
作成日2002/1/31 18:7:45作成者新居雅行
 この記事のPDFファイル(776KB)は以下のアドレスにあります。
 ダウンロードには、MDOnlineのアカウントが必要です。
 pdfs/MDOnline020001.pdf
 ‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥
Documentベースのアプリケーションを作成しているシリーズのさらに続きである。ここまでは、少ない行数ながらも「プログラムを作る」ということを主眼にしてきたが、今回は、プログラムは、作らないと言えば作らないことになる。Cocoaフレームワークと、Interface Builderの機能が多彩な機能を提供するあたりを紹介してみたい。

――――Interface Builderでメニューを追加
MOSAEditorのプロジェクトには最初から、MainMenu.nibというnibファイルが作成されていて、そこに、メニューが最初から作られている。このメニュー項目は、最初に方でも説明したように、すでに自動的に、MainMenu.nibのFirst Responderに接続されている。したがって、Cutを選択したら、カットを行うイベントが発生して、Responderに対応している適切なオブジェクトにメッセージが送られるのである。
ここで、ほかにもメニューがあるので、それらを追加してみることにしよう。MainMenu.nibをダブルクリックして、Interface Builderで開く。そして、そこに定義されているMainMenuというオブジェクトをダブルクリックして開く。これはメニューの定義で、ウインドウにメニューバーだけがあるウインドウが開くが、項目をクリックすると、それらが開き、さらにメニューの実際の項目をクリックして選択することなどができるようになっている。
ここで、ツールパレットで、上の段のアイコンのいちばん左にあるものをクリックして、メニューのツールを表示する。タイトルバーは「Cocoa-Menus」となるはずだ。ここにあるFormatというメニューを新たにメニューバーに追加しよう。メニューバー上にドラッグ&ドロップすればいいだけである。ドラッグ中の表示を注意深く見ていれば、どこにメニューが追加されるかはすぐに分かるはずだ。

◇Interface Bulderで新たなメニューを追加する
 

続いて、Editメニューは最初からあるものを削除して、ツールパレットから新たにEditメニューをドラッグしてくる。最初からあるものには、Speekメニューがないのであるが、新たにドラッグしてきたものには、Speekメニューが追加されている。

◇Editメニューをパレットにあるものと置き換えた
 

ほかにもメニューはたくさんあるので、もちろん、テストで全部登録をしてもらってもいいのであるが、概要を説明しておこう。まず、Findメニューについては、Editにあるものと同じものとなっている。FontやTextメニューについては、これらと同じ機能がFormatにもあるので、いちおう、機能を全部試すには、まずはFormatメニューを利用するのが便利であるということだ。

――――アプリケーションを実行してみる
こうして、アプリケーションを実行してみよう。ここで、テキストを適当に入力するのだが、FormatメニューのTextからShow Rulerを選択すれば、NSTextViewのコンポーネントでルーラがでてくる。そして、中央揃えやあるいはタブ位置、左右のインデントなどの設定がルーラ上でできる。また、FormatメニューのFontからShow Fontsを選択すると、Font選択パレットが表示されるし、Show Colorsを選択すると、カラーのパレットがでてくる。これらを使って、NSTextViewの中にあるテキストに対して色を付けたりができる。操作方法は、とりあえずご自分で試してもらうことにしよう。今までのMac OSとはちょっと異なるCocoaユーザインタフェースであるが、こうした機能は何のプログラミングをしなくても追加されるということだ。

◇アプリケーションを実行してみた
 

デモ好きの方(笑)は、ぜひとも、文字を選択して、EditメニューのSpeekメニューを利用してもらいたい。これだけで、選択範囲の読み上げを行ってしまうのである。また、Editメニューにあるスペルチェックも動くことを確認しよう。これも、一切プログラミングはしていない。
なお、Findによる検索については残念ながらこのままでは機能しない。ダイアログボックスや実際の検索などは、プログラミングをしなければならないところである。

――――Interface Builderでの定義を確認する
再度、Interface BuilderでMainMenu.nibの定義内容を確認してみよう。まずは、Font Managerという項目が増えている。これはFontメニューの追加で自動的に設定される模様だが、Show Fontsの項目を呼び出すと、このFont Managerへメッセージが送られて、その結果、フォント一覧メニューがでてくるようになる。

◇メニュー項目Show Fontsに接続されたAction
 

また、EditメニューのSpellingをみると、Check Spellingは、First ResponderのcheckSpellingというActionに接続されている。つまり、checkSpellingというメッセージが渡されるわけだが、NSTextViewがFirst Responderになっていれば、そこでcheckSpellingメソッドが呼び出されて、スペルチェックが実際に行われる。NSTextViewの親クラスであるNSTextでcheckSpellingメソッドが実際には定義されている。

◇メニュー項目Check Spellingに接続されたAction
 

以上のように、Interface Builderで最初から利用できるようになっているさまざまな機能は、実はけっこう広い範囲に及んでいる。しかも、Cocoaフレームワークの機能もうまくできている。Interface Builderを単なるユーザインタフェース構築ツールとしてしか見ていないのなら、こういう部分は見のがしてしまうかもしれない。いずれにしても、Cocoaの奥深さというところは言えるだろう。
(この項、続く)
関連リンク