X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=macosx%2FHBPreferencesController.m;h=e82bfd0abbdcbdcc6489eeac667ae8985d58aa21;hb=73c14d29e5ad89dd1798d73f424791396c944b69;hp=5afe02bacef36be92b38b1bd50ebb1cdd030eb10;hpb=755eea993308090140ae06327fd695190d5bc492;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/macosx/HBPreferencesController.m b/macosx/HBPreferencesController.m index 5afe02ba..e82bfd0a 100644 --- a/macosx/HBPreferencesController.m +++ b/macosx/HBPreferencesController.m @@ -4,6 +4,10 @@ */ #import "HBPreferencesController.h" +#define TOOLBAR_GENERAL @"TOOLBAR_GENERAL" +#define TOOLBAR_PICTURE @"TOOLBAR_PICTURE" +#define TOOLBAR_AUDIO @"TOOLBAR_AUDIO" +#define TOOLBAR_ADVANCED @"TOOLBAR_ADVANCED" /** * This class controls the preferences window of HandBrake. Default values for @@ -15,38 +19,54 @@ * no getter/setter code is needed in this file (unless more complicated * preference settings are added that cannot be handled with Cocoa bindings). */ + +@interface HBPreferencesController (Private) + +- (void) setPrefView: (id) sender; +- (NSToolbarItem *)toolbarItemWithIdentifier: (NSString *)identifier + label: (NSString *)label + image: (NSImage *)image; + +@end + @implementation HBPreferencesController /** + * +[HBPreferencesController registerUserDefaults] + * * Registers default values to user defaults. This is called immediately * when HandBrake starts, from [HBController init]. */ + (void)registerUserDefaults { NSString *desktopDirectory = [@"~/Desktop" stringByExpandingTildeInPath]; - + [[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys: @"YES", @"CheckForUpdates", + @"Open Source", @"LaunchSourceBehavior", @"English", @"DefaultLanguage", @"NO", @"DefaultMpegName", @"YES", @"DefaultCrf", - @"NO", @"DefaultDeinterlaceOn", - @"YES", @"DefaultPicSizeAutoiPod", - @"NO", @"PixelRatio", @"", @"DefAdvancedx264Flags", @"YES", @"DefaultPresetsDrawerShow", desktopDirectory, @"LastDestinationDirectory", desktopDirectory, @"LastSourceDirectory", @"NO", @"DefaultAutoNaming", - @"NO", @"DefaultChapterMarkers", - @"NO", @"ShowVerboseOutput", - @"NO", @"AllowLargeFiles", - @"NO", @"DisableDvdAutoDetect", + @"NO", @"DisableDvdAutoDetect", + @"Alert Window", @"AlertWhenDone", + @"1", @"LoggingLevel", + @"NO", @"EncodeLogLocation", + @"10", @"PreviewsNumber", + @"", @"Drawer Size", + @"0.25", @"x264CqSliderFractional", nil]]; } /** + * -[HBPreferencesController init] + * * Initializes the preferences controller by loading Preferences.nib file. + * */ - (id)init { @@ -54,26 +74,142 @@ { NSAssert([self window], @"[HBPreferencesController init] window outlet is not connected in Preferences.nib"); } - return self; + return self; } /** - * Shows the preferences window in modal state. + * -[HBPreferencesController awakeFromNib] + * + * Called after all the outlets in the nib file have been attached. Sets up the + * toolbar and shows the "General" pane. + * */ -- (IBAction)runModal:(id)sender +- (void) awakeFromNib { - [NSApp runModalForWindow:[self window]]; + NSToolbar * toolbar = [[[NSToolbar alloc] initWithIdentifier: @"Preferences Toolbar"] autorelease]; + [toolbar setDelegate: self]; + [toolbar setAllowsUserCustomization: NO]; + [toolbar setDisplayMode: NSToolbarDisplayModeIconAndLabel]; + [toolbar setSizeMode: NSToolbarSizeModeRegular]; + [[self window] setToolbar: toolbar]; + + [toolbar setSelectedItemIdentifier: TOOLBAR_GENERAL]; + [self setPrefView:nil]; +} + +- (NSToolbarItem *)toolbar: (NSToolbar *)toolbar + itemForItemIdentifier: (NSString *)ident + willBeInsertedIntoToolbar: (BOOL)flag +{ + if ( [ident isEqualToString:TOOLBAR_GENERAL] ) + { + return [self toolbarItemWithIdentifier:ident + label:NSLocalizedString(@"General", @"Preferences General Toolbar Item") + image:[NSImage imageNamed:NSImageNamePreferencesGeneral]]; + } + else if ( [ident isEqualToString:TOOLBAR_PICTURE] ) + { + return [self toolbarItemWithIdentifier:ident + label:NSLocalizedString(@"Picture", @"Preferences Picture Toolbar Item") + image:[NSImage imageNamed:@"pref-picture"]]; + } + else if ( [ident isEqualToString:TOOLBAR_AUDIO] ) + { + return [self toolbarItemWithIdentifier:ident + label:NSLocalizedString(@"Audio", @"Preferences Audio Toolbar Item") + image:[NSImage imageNamed:@"pref-audio"]]; + } + else if ( [ident isEqualToString:TOOLBAR_ADVANCED] ) + { + return [self toolbarItemWithIdentifier:ident + label:NSLocalizedString(@"Advanced", @"Preferences Advanced Toolbar Item") + image:[NSImage imageNamed:NSImageNameAdvanced]]; + } + + return nil; +} + +- (NSArray *) toolbarSelectableItemIdentifiers: (NSToolbar *) toolbar +{ + return [self toolbarDefaultItemIdentifiers: toolbar]; +} + +- (NSArray *) toolbarDefaultItemIdentifiers: (NSToolbar *) toolbar +{ + return [self toolbarAllowedItemIdentifiers: toolbar]; +} + +- (NSArray *) toolbarAllowedItemIdentifiers: (NSToolbar *) toolbar +{ + return [NSArray arrayWithObjects: TOOLBAR_GENERAL, TOOLBAR_PICTURE, + TOOLBAR_AUDIO, TOOLBAR_ADVANCED, nil]; +} + +@end + +@implementation HBPreferencesController (Private) + +- (void) setPrefView: (id) sender +{ + NSView * view = fGeneralView; + if( sender ) + { + NSString * identifier = [sender itemIdentifier]; + if( [identifier isEqualToString: TOOLBAR_PICTURE] ) + view = fPictureView; + else if( [identifier isEqualToString: TOOLBAR_AUDIO] ) + view = fAudioView; + else if( [identifier isEqualToString: TOOLBAR_ADVANCED] ) + view = fAdvancedView; + else; + } + + NSWindow * window = [self window]; + if( [window contentView] == view ) + return; + + NSRect windowRect = [window frame]; + CGFloat difference = ( [view frame].size.height - [[window contentView] frame].size.height ) * [window userSpaceScaleFactor]; + windowRect.origin.y -= difference; + windowRect.size.height += difference; + + [view setHidden: YES]; + [window setContentView: view]; + [window setFrame: windowRect display: YES animate: YES]; + [view setHidden: NO]; + + //set title label + if( sender ) + [window setTitle: [sender label]]; + else + { + NSToolbar * toolbar = [window toolbar]; + NSString * itemIdentifier = [toolbar selectedItemIdentifier]; + for( NSToolbarItem * item in [toolbar items] ) + if( [[item itemIdentifier] isEqualToString: itemIdentifier] ) + { + [window setTitle: [item label]]; + break; + } + } } /** - * Closes the window and stops modal state. Any changes made in field editor - * are saved by [NSWindow endEditingFor:] before closing the window. + * -[HBPreferencesController(Private) toolbarItemWithIdentifier:label:image:] + * + * Shared code for creating the NSToolbarItems for the Preferences toolbar. + * */ -- (IBAction)close:(id)sender +- (NSToolbarItem *)toolbarItemWithIdentifier: (NSString *)identifier + label: (NSString *)label + image: (NSImage *)image { - [[self window] endEditingFor:nil]; - [[self window] orderOut:sender]; - [NSApp stopModal]; + NSToolbarItem *item = [[NSToolbarItem alloc] initWithItemIdentifier:identifier]; + [item setLabel:label]; + [item setImage:image]; + [item setAction:@selector(setPrefView:)]; + [item setAutovalidates:NO]; + return [item autorelease]; } @end