―――――ツールバーの初期化
 ̄ ̄ ̄起動時の処理の概要___
ツールバーを初期化するコードは、awakeFromNibに書かれています。アプリケーションが起動した時にMainMenu.nibが読み込みまれますが、その時に、その中に含まれるインスタンスのawakeFromNibが実行されます。
◇Controller.m → awakeFromNib
- (void) awakeFromNib { : 省略 NSToolbar *toolbar = [ [ [ NSToolbar alloc ] initWithIdentifier : @"myToolbar" ] autorelease ]; // ツールバーを作成 // アイテム辞書作成 toolbarItems = [ [ NSMutableDictionary dictionary ] retain ];
// ツールバーアイテムを辞書(toolbarItems)に登録 addToolbarItem( … 省略 … ); // Font Style addToolbarItem( … 省略 … ); // Font Size addToolbarItem( … 省略 … ); // Blue Text
// ツールバーの属性をセット [ toolbar setDelegate : self ]; // デリゲートをセット [ toolbar setAllowsUserCustomization : YES ]; // 設定パレットを使う [ toolbar setAutosavesConfiguration : YES ]; // 設定の自動保存をする [ toolbar setDisplayMode : NSToolbarDisplayModeIconOnly ]; // 表示モード設定
[ theWindow setToolbar : toolbar ]; // ツールバーをウィンドウにセット : 省略 }
順に細かく見ていきましょう。まず、最初にツールバーのインスタンスを作っています。これを後程ウィンドウにセットします。allocで生成してinitWithIdentifier : で初期化しています。
NSToolbar *toolbar = [ [ [ NSToolbar alloc ] initWithIdentifier : @"myToolbar" ] autorelease ]; // ツールバーを作成
initWithIdentifier : は、名前のとおり識別子で初期化をします。ツールバーアイテムにも識別子がありましたが、ツールバーにも識別子があります。Mailのように、受信メールのウィンドウとメール作成ウィンドウで異なるツールバーを使用する場合もありますが、識別子を使うことで、どちらのツールバーかが識別できます。
★ NSToolbar : 識別子を指定して初期化 [書式] - (id) initWithIdentifier : (NSString *) identifier [入力] identifier : ツールバーの識別子 [出力] 返り値 : 初期化したNSToolbar
次は、全てのツールバーアイテムを入れておくための辞書toolbarItemsを作成します。その後ろでaddToolbarItemをいう関数を3回呼んでいますが、このaddToolbarItemの中でNSToolbarItemを作成してtoolbarItemsに登録を行っています。ここは、addToolbarItemと合わせて後程説明します。
// アイテム辞書作成 toolbarItems = [ [ NSMutableDictionary dictionary ] retain ];
// ツールバーアイテムを辞書(toolbarItems)に登録 addToolbarItem( … 省略 … ); // Font Style addToolbarItem( … 省略 … ); // Font Size addToolbarItem( … 省略 … ); // Blue Text
ツールバーアイテムの辞書が出来たところで、setDelegate : でデリゲートを自分自身にセットします。setAllowsUserCustomization : でユーザーに設定パレットを使わせるかどうかを指定します。常に同じツールバーを表示してカスタマイズさせないのであればNOでも構いませんが、通常はYESでいいでしょう。続いて、setAutosavesConfiguration : でツールバーのカスタマイズ状態の自動保存をするかどうかを指定します。こちらも特殊な処理をしない限りはYESでよいでしょう。
// ツールバーの属性をセット [ toolbar setDelegate : self ]; // デリゲートをセット [ toolbar setAllowsUserCustomization : YES ]; // 設定パレットを使う [ toolbar setAutosavesConfiguration : YES ]; // 設定の自動保存をする [ toolbar setDisplayMode : NSToolbarDisplayModeIconOnly ]; // 表示モード設定
[ theWindow setToolbar : toolbar ]; // ツールバーをウィンドウにセット
そして、setDisplayMode : でデフォルトの表示モードを指定します。表示モードの指定は以下のようになっています。
◇NSToolbar : 表示モード
typedef enum { NSToolbarDisplayModeDefault, NSToolbarDisplayModeIconAndLabel, // Icon & Text NSToolbarDisplayModeIconOnly, // Icon Only NSToolbarDisplayModeLabelOnly // Text Only } NSToolbarDisplayMode;
最後に、setToolbar : でウィンドウにツールバーをセットします。setToolbar : をすると、セットしようとしたツールバーの識別子を見て、アプリケーションの環境設定ファイルの中にそのツールバーのカスタマイズ状態が記録されているかをチェックします。記録されていればその状態を再現しますし、無ければデフォルトセットをツールバーに表示します。環境設定ファイルが無い場合もデフォルトセットを表示します。ただし、この自動処理は、setAutosavesConfiguration : でYESを指定している時に限られます。
ちなみに、環境設定ファイルには以下のような内容が書き込まれます。
/Users//Library/ToolbarSample.plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd"> <plist version="0.9"> <dict> <key>NSToolbar Configuration myToolbar</key> <dict> <key>TB Display Mode</key> <integer>1</integer> <key>TB Is Shown</key> <integer>1</integer> <key>TB Item Identifiers</key> <array> <string>FontStyle</string> <string>FontSize</string> <string>NSToolbarSeparatorItem</string> <string>BlueLetter</string> <string>NSToolbarPrintItem</string> </array> <key>TB Size Mode</key> <integer>1</integer> </dict> <key>NSWindow Frame NSFontPanel</key> <string>603 269 300 221 0 0 1152 746 </string> </dict> </plist>
(この項続く) [鶴薗賢吾] |