以前、範囲指定の履歴を左下の三角ボタンで呼びだせるようにしたが、これをコンテキストメニューへ統合することにした。こんな感じ。
上がユーザ設定の範囲、下が履歴となる。
- - - -
三角ボタンがどうも気になっていたがこれですっきりした。
2008年11月30日日曜日
範囲指定の履歴をコンテキストメニューへ
投稿者
xcatsan
時刻:
17:30
ラベル: cocoa, SimpleCap, コンテキストメニュー
2008年11月27日木曜日
simpleCapへコンテキストメニューを追加 (2)
昨日の続き。コンテキストメニューで3種類の画像フォーマットを選択する個所の実装について。
これら3つのメニューは排他的で1つを選ぶと他の二つのチェックを外さなければならない。最初は Cocoa Bindings で簡単にできるだろうと高をくくっていたが、結局複数のパス(Model Key Path)が必要だったり、既にチェック済みの状態で選ぶとチェックが外れてしまうなど、どうもうまくいかなかった。結局いい方法が思い浮かばず IBOutletとIBActionを3つのメニューそれぞれに接続して、ベタに制御することにした。
AppController
@interface AppController : NSObject {
IBOutlet NSMenuItem* _menu_png;
IBOutlet NSMenuItem* _menu_gif;
IBOutlet NSMenuItem* _menu_jpeg;
:
@implements
- (void)setImageFormat:(int)image_format
{
[_menu_png setState:0];
[_menu_gif setState:0];
[_menu_jpeg setState:0];
switch (image_format) {
case 0:
[_menu_png setState:1];
break;
case 1:
[_menu_gif setState:1];
break;
case 2:
[_menu_jpeg setState:1];
break;
}
[UserDefaults setValue:[NSNumber numberWithFloat:image_format]
forKey:UDKEY_IMAGE_FORMAT];
[UserDefaults save];
}
- (IBAction)setImageFormatPNG:(id)sender
{
[self setImageFormat:0];
}
- (IBAction)setImageFormatGIF:(id)sender
{
[self setImageFormat:1];
}
- (IBAction)setImageFormatJPEG:(id)sender
{
[self setImageFormat:2];
}
これらを InterfaceBuilderで接続する。

あまりにもベタな実装になってしまった。。
投稿者
xcatsan
時刻:
21:50
ラベル: cocoa, コンテキストメニュー
2008年11月26日水曜日
SimpleCapへコンテキストメニューを追加
SimpleCapへコンテキストメニューを追加する。画像形式や出力オプションをその場で変更したい場合、プリファレンスを開くのが面倒な時がある。現在のボタンの横に設定用のコントロールオブジェクトを追加することも考えたが、ごちゃごちゃしてわかりづらくなりそう。色々と考えたあげくコンテキストメニューで実現することにした。
SimpleCapで表示する範囲指定枠などの上で右クリックすると表示される。こんな感じ。
モデル(NSUserDefaults)との紐付けは簡単で、InterfaceBuilderでパスを指定するだけ。コーディング0。あいかわらずよくできている。
バインド先(Bind to)に"Shared User Defaults Controller" を選び、パス(Model Key Path)にユーザでフォルトで使っているキーを指定するだけ。
- - - -
今回バインディングで簡単に紐付けができたのはON/OFFを持つ単純な値だけ(例えば、QuickLookを使う/使わない)。画像形式(PNG, JPEG, GIF)はそうは行かない。これはどうやればいいのだろうか。
投稿者
xcatsan
時刻:
22:05
ラベル: cocoa, SimpleCap, コンテキストメニュー
