ページ

2009年4月26日日曜日

SimpleCap調整(範囲選択サイズ指定のコンテキストメニュー移動)#2

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

さて用意したメニューのプレースホルダーにプリセットされた範囲選択サイズを設定する。

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];


可変の仕組みではないのでベタな作りだが。。ここは元々コンテキストメニューで使っていたコードをコピーしただけ。


さて動かしてみよう。


出た。