さて用意したメニューのプレースホルダーにプリセットされた範囲選択サイズを設定する。
QuickConfigのメニューは、範囲選択処理を司る SelectionHandler がボタンが押されたら反応し、上位のCaptureController に開いてもらっている。これは Nib内のインスタンスを上位のコントローラで保持しているため。そんなこともあるので(少しややこしいが)CaptureControllerから再び SelectionHandlerをコールバックし、ここでプレースホルダーへプリセットサイズを設定することにする。
QuickConfigボタン押下
↓
SelectionHandler
↓
CaptureContorller#openSelectionConfigMenuWithView:event:
↓
SelectionHandler#setupQuickConfigMenu:(NSMenu*)menu
SelectionHandler#setupQuickConfigMenu: で InterfaceBuilderで用意しておいたメニューが渡されるので、この中からプレースホルダー用の NSMenuItemを見つけて置き換えれば良い。NSMenuItemを特定するには Tag か Titleで判断する。今回はあらかじめ InterfaceBuilderで Tagを1〜5(他は0)に設定しておいたのでこれでプレースホルダーのNSMenuItemを判定する。コードはこんな感じ。
- (void)setupQuickConfigMenu:(NSMenu*)menu
{
// [super setupQuickConfigMenu:menu];
NSMenuItem* item;
NSString* title;
item = [menu itemWithTag:1];
title = [self sizeTitleWithNameKey:UDKEY_SELECTION_NAME1
widthKey:UDKEY_SELECTION_WIDTH1
heightKey:UDKEY_SELECTION_HEIGHT1];
[item setTitle:title];
[item setAction:@selector(selectSize:)];
[item setTarget:self];
:
可変の仕組みではないのでベタな作りだが。。ここは元々コンテキストメニューで使っていたコードをコピーしただけ。
さて動かしてみよう。
出た。