+ 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;
+ }
+ }