ページ

2009年11月5日木曜日

Cocoaの日々: Safari用独自プラグインを作る(16) - ツールバーを追加する #5

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

(前回)Cocoaの日々: Safari用独自プラグインを作る(15) - ツールバーを追加する #4

前回ツールバーへ画像を表示させたが押す事ができなかった。理由は単純で NSImageView を貼付けただけだったから。ボタンのような動きをさせるには NSButton を貼付ける必要がある。今回は NSButton を貼付けてみよう。

Safari のツールバーへ NSButton を貼付ける

前回までのコードを少し書き変える。こんな感じ。

NSBundle* bundle = [NSBundle bundleForClass:[SXSafariToolbarSwizzler class]];

NSString* path = [bundle pathForResource:@"toolbar_icon" ofType:@"tiff"];
NSImage* image = [[[NSImage alloc] initWithContentsOfFile:path] autorelease];
NSButton* button = [[[NSButton alloc] initWithFrame:NSMakeRect(0, 0, 28, 23)] autorelease];
[button setBezelStyle:NSTexturedRoundedBezelStyle];
[button setTarget:_shared_instance];
[button setAction:@selector(takeScreenshot:)];
[button setImage:image];

item = [[[NSToolbarItem alloc] initWithItemIdentifier:itemIdentifier] autorelease];
[item setView:button];
[item setEnabled:YES];


Interface Builder で NSButton の表示スタイルを調べたところ NSTexturedRoundedBezelStyle が Safari のボタンに近かったので使ってみる。サイズは Safari に付属していたボタン画像のそれを指定してみた。ボタンが押された場合の処理は、ボタン側のアクション/ターゲットを使う必要がある。NSToolbarItem に設定してもそちらは使われない。画像は最初に用意した背景がないものを使う。

さて実行してみよう。


出た。



ボタンも押せるし、takeScreenshot: も呼び出されている(現状はログへメッセージを出すだけ)。

わかってしまえば簡単だった。前回用意した画像が無駄になってしまったが。。