* 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",
+ @"YES", @"UseCoreAudio",
@"NO", @"DefaultMpegName",
@"YES", @"DefaultCrf",
- @"NO", @"DefaultDeinterlaceOn",
- @"YES", @"DefaultPicSizeAutoiPod",
- @"NO", @"PixelRatio",
+ @"NO", @"UseDvdNav",
@"", @"DefAdvancedx264Flags",
@"YES", @"DefaultPresetsDrawerShow",
desktopDirectory, @"LastDestinationDirectory",
desktopDirectory, @"LastSourceDirectory",
@"NO", @"DefaultAutoNaming",
- @"NO", @"DefaultChapterMarkers",
- @"NO", @"ShowVerboseOutput",
- @"NO", @"AllowLargeFiles",
- @"NO", @"DisableDvdAutoDetect",
- @"Alert Window", @"AlertWhenDone",
+ @"NO", @"DisableDvdAutoDetect",
+ @"Alert Window", @"AlertWhenDone",
+ @"1", @"LoggingLevel",
+ @"NO", @"EncodeLogLocation",
+ @"10", @"PreviewsNumber",
+ @"", @"Drawer Size",
+ @"0.25", @"x264CqSliderFractional",
+ @"YES", @"AlertBuiltInPresetUpdate",
nil]];
}
/**
+ * -[HBPreferencesController init]
+ *
* Initializes the preferences controller by loading Preferences.nib file.
+ *
*/
- (id)init
{
{
NSAssert([self window], @"[HBPreferencesController init] window outlet is not connected in Preferences.nib");
}
- return self;
+ return self;
}
+/**
+ * -[HBPreferencesController awakeFromNib]
+ *
+ * Called after all the outlets in the nib file have been attached. Sets up the
+ * toolbar and shows the "General" pane.
+ *
+ */
- (void) awakeFromNib
{
- NSToolbar * toolbar = [[NSToolbar alloc] initWithIdentifier: @"Preferences Toolbar"];
+ 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
+- (NSToolbarItem *)toolbar: (NSToolbar *)toolbar
+ itemForItemIdentifier: (NSString *)ident
+ willBeInsertedIntoToolbar: (BOOL)flag
{
- NSToolbarItem * item;
- item = [[NSToolbarItem alloc] initWithItemIdentifier: ident];
-
- if ([ident isEqualToString: TOOLBAR_GENERAL])
+ if ( [ident isEqualToString:TOOLBAR_GENERAL] )
{
- [item setLabel: NSLocalizedString(@"General", "General")];
- [item setImage: [NSImage imageNamed: @"Preferences.png"]];
- [item setTarget: self];
- [item setAction: @selector(setPrefView:)];
- [item setAutovalidates: NO];
+ return [self toolbarItemWithIdentifier:ident
+ label:NSLocalizedString(@"General", @"Preferences General Toolbar Item")
+ image:[NSImage imageNamed:NSImageNamePreferencesGeneral]];
}
- else if ([ident isEqualToString: TOOLBAR_PICTURE])
+ else if ( [ident isEqualToString:TOOLBAR_PICTURE] )
{
- [item setLabel: NSLocalizedString(@"Picture", "Picture")];
-// [item setImage: [NSImage imageNamed: @"???.png"]];
- [item setTarget: self];
- [item setAction: @selector(setPrefView:)];
- [item setAutovalidates: NO];
+ return [self toolbarItemWithIdentifier:ident
+ label:NSLocalizedString(@"Picture", @"Preferences Picture Toolbar Item")
+ image:[NSImage imageNamed:@"pref-picture"]];
}
- else if ([ident isEqualToString: TOOLBAR_AUDIO])
+ else if ( [ident isEqualToString:TOOLBAR_AUDIO] )
{
- [item setLabel: NSLocalizedString(@"Audio", "Audio")];
- // [item setImage: [NSImage imageNamed: @"???.png"]];
- [item setTarget: self];
- [item setAction: @selector(setPrefView:)];
- [item setAutovalidates: NO];
+ return [self toolbarItemWithIdentifier:ident
+ label:NSLocalizedString(@"Audio", @"Preferences Audio Toolbar Item")
+ image:[NSImage imageNamed:@"pref-audio"]];
}
- else if ([ident isEqualToString: TOOLBAR_ADVANCED])
+ else if ( [ident isEqualToString:TOOLBAR_ADVANCED] )
{
- [item setLabel: NSLocalizedString(@"Advanced", "Advanced")];
- // [item setImage: [NSImage imageNamed: @"???.png"]];
- [item setTarget: self];
- [item setAction: @selector(setPrefView:)];
- [item setAutovalidates: NO];
- }
- else
- {
- [item release];
- return nil;
+ return [self toolbarItemWithIdentifier:ident
+ label:NSLocalizedString(@"Advanced", @"Preferences Advanced Toolbar Item")
+ image:[NSImage imageNamed:NSImageNameAdvanced]];
}
- return item;
+ return nil;
}
- (NSArray *) toolbarSelectableItemIdentifiers: (NSToolbar *) toolbar
- (NSArray *) toolbarAllowedItemIdentifiers: (NSToolbar *) toolbar
{
- return [NSArray arrayWithObjects: TOOLBAR_GENERAL, TOOLBAR_PICTURE,
+ return [NSArray arrayWithObjects: TOOLBAR_GENERAL, /*TOOLBAR_PICTURE, */
TOOLBAR_AUDIO, TOOLBAR_ADVANCED, nil];
}
-/**
- * Closes the window and stops modal state. Any changes made in field editor
- * are saved by [NSWindow endEditingFor:] before closing the window.
- */
-- (IBAction)close:(id)sender
-{
- //[self makeFirstResponder: nil];
-}
-
@end
@implementation HBPreferencesController (Private)
- (void) setPrefView: (id) sender
{
NSView * view = fGeneralView;
- if (sender)
+ if( sender )
{
NSString * identifier = [sender itemIdentifier];
- if ([identifier isEqualToString: TOOLBAR_PICTURE])
+ if( [identifier isEqualToString: TOOLBAR_PICTURE] )
view = fPictureView;
- else if ([identifier isEqualToString: TOOLBAR_AUDIO])
+ else if( [identifier isEqualToString: TOOLBAR_AUDIO] )
view = fAudioView;
- else if ([identifier isEqualToString: TOOLBAR_ADVANCED])
+ else if( [identifier isEqualToString: TOOLBAR_ADVANCED] )
view = fAdvancedView;
else;
}
-
+
NSWindow * window = [self window];
- if ([window contentView] == view)
+ if( [window contentView] == view )
return;
-
+
NSRect windowRect = [window frame];
- float difference = ([view frame].size.height - [[window contentView] frame].size.height) * [window userSpaceScaleFactor];
+ 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)
+ if( sender )
[window setTitle: [sender label]];
else
{
NSToolbar * toolbar = [window toolbar];
NSString * itemIdentifier = [toolbar selectedItemIdentifier];
- NSEnumerator * enumerator = [[toolbar items] objectEnumerator];
- NSToolbarItem * item;
- while ((item = [enumerator nextObject]))
- if ([[item itemIdentifier] isEqualToString: itemIdentifier])
+ for( NSToolbarItem * item in [toolbar items] )
+ if( [[item itemIdentifier] isEqualToString: itemIdentifier] )
{
[window setTitle: [item label]];
break;
}
}
+/**
+ * -[HBPreferencesController(Private) toolbarItemWithIdentifier:label:image:]
+ *
+ * Shared code for creating the NSToolbarItems for the Preferences toolbar.
+ *
+ */
+- (NSToolbarItem *)toolbarItemWithIdentifier: (NSString *)identifier
+ label: (NSString *)label
+ image: (NSImage *)image
+{
+ NSToolbarItem *item = [[NSToolbarItem alloc] initWithItemIdentifier:identifier];
+ [item setLabel:label];
+ [item setImage:image];
+ [item setAction:@selector(setPrefView:)];
+ [item setAutovalidates:NO];
+ return [item autorelease];
+}
+
@end