ページ

2008年9月15日月曜日

環境設定(5)

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

次はファイルの保管場所。


"Choose..."を押すとダイアログが開いて保存先を選べる。



ダイアログのオープンには NSPanel#runModalForDirectory:file:types: を使う。

PreferenceController.m

- (void)chooseImageLocation:(id)sender
{
NSOpenPanel *openPanel = [NSOpenPanel openPanel];
[openPanel setCanChooseFiles:NO];
[openPanel setCanChooseDirectories:YES];
[openPanel setCanCreateDirectories:YES];
[openPanel setAllowsMultipleSelection:NO];

int result = [openPanel runModalForDirectory:NSHomeDirectory()
file:nil
types:nil];

if (result == NSOKButton) {
NSArray* filenames = [openPanel filenames];
if ([filenames count] > 0) {
NSString* new_path = [filenames objectAtIndex:0];
[UserDefaults setValue:new_path forKey:UDKEY_IMAGE_LOCATION];
}
}
}


上記の UserDefaults は NSDefaultsController を初期化したりするラッパー。パネルでフォルダが選択されたらユーザでフォルトへ書き込む。

NSDefaultsController 経由の書き込みは #values で取り出したオブジェクトに対して #setValue:forKey: を投げる。するとNSDefaultsControllerとバインドされたビュー上のオブジェクトも値が更新される。