nkeynes@725: /** nkeynes@729: * $Id$ nkeynes@725: * nkeynes@725: * Construct and manage the preferences panel under cocoa. nkeynes@725: * nkeynes@725: * Copyright (c) 2008 Nathan Keynes. nkeynes@725: * nkeynes@725: * This program is free software; you can redistribute it and/or modify nkeynes@725: * it under the terms of the GNU General Public License as published by nkeynes@725: * the Free Software Foundation; either version 2 of the License, or nkeynes@725: * (at your option) any later version. nkeynes@725: * nkeynes@725: * This program is distributed in the hope that it will be useful, nkeynes@725: * but WITHOUT ANY WARRANTY; without even the implied warranty of nkeynes@725: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the nkeynes@725: * GNU General Public License for more details. nkeynes@725: */ nkeynes@725: nkeynes@725: #include "cocoaui/cocoaui.h" nkeynes@725: #include "lxdream.h" nkeynes@725: #include "config.h" nkeynes@725: nkeynes@725: @interface LxdreamPrefsToolbarDelegate : NSObject { nkeynes@725: NSArray *identifiers; nkeynes@725: NSArray *defaults; nkeynes@725: NSDictionary *items; nkeynes@725: } nkeynes@725: - (NSToolbarItem *) createToolbarItem: (NSString *)id label: (NSString *) label nkeynes@725: tooltip: (NSString *)tooltip icon: (NSString *)icon action: (SEL) action; nkeynes@725: @end nkeynes@725: nkeynes@725: @implementation LxdreamPrefsToolbarDelegate nkeynes@725: - (id) init nkeynes@725: { nkeynes@725: NSToolbarItem *paths = [self createToolbarItem: @"Paths" label: @"Paths" nkeynes@725: tooltip: @"Configure system paths" icon: @"tb-paths" nkeynes@725: action: @selector(paths_action:)]; nkeynes@725: NSToolbarItem *ctrls = [self createToolbarItem: @"Controllers" label: @"Controllers" nkeynes@725: tooltip: @"Configure controllers" icon: @"tb-ctrls" nkeynes@725: action: @selector(controllers_action:)]; nkeynes@725: identifiers = [NSArray arrayWithObjects: @"Paths", @"Controllers", nil ]; nkeynes@725: defaults = [NSArray arrayWithObjects: @"Paths", @"Controllers", nil ]; nkeynes@725: NSArray *values = [NSArray arrayWithObjects: paths, ctrls, nil ]; nkeynes@725: items = [NSDictionary dictionaryWithObjects: values forKeys: identifiers]; nkeynes@725: return self; nkeynes@725: } nkeynes@725: nkeynes@725: - (NSToolbarItem *) createToolbarItem: (NSString *)id label: (NSString *) label nkeynes@725: tooltip: (NSString *)tooltip icon: (NSString *)icon action: (SEL) action nkeynes@725: { nkeynes@725: NSToolbarItem *item = [[NSToolbarItem alloc] initWithItemIdentifier: id]; nkeynes@725: [item setLabel: label]; nkeynes@725: [item setToolTip: tooltip]; nkeynes@725: [item setTarget: self]; nkeynes@725: NSString *iconFile = [[NSBundle mainBundle] pathForResource:icon ofType:@"png"]; nkeynes@725: NSImage *image = [[NSImage alloc] initWithContentsOfFile: iconFile]; nkeynes@725: [item setImage: image]; nkeynes@725: [item setAction: action]; nkeynes@725: return item; nkeynes@725: } nkeynes@725: nkeynes@725: - (NSArray *) toolbarAllowedItemIdentifiers: (NSToolbar *)toolbar nkeynes@725: { nkeynes@725: return identifiers; nkeynes@725: } nkeynes@725: nkeynes@725: - (NSArray *) toolbarDefaultItemIdentifiers: (NSToolbar *)toolbar nkeynes@725: { nkeynes@725: return defaults; nkeynes@725: } nkeynes@725: nkeynes@725: - (NSArray *)toolbarSelectableItemIdentifiers: (NSToolbar *)toolbar nkeynes@725: { nkeynes@725: return [NSArray arrayWithObjects: @"Paths", @"Controllers", nil]; nkeynes@725: } nkeynes@725: nkeynes@725: - (NSToolbarItem *) toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdentifier nkeynes@725: willBeInsertedIntoToolbar:(BOOL)flag nkeynes@725: { nkeynes@725: return [items objectForKey: itemIdentifier]; nkeynes@725: } nkeynes@725: - (void)paths_action: (id)sender nkeynes@725: { nkeynes@725: } nkeynes@725: - (void)controllers_action: (id)sender nkeynes@725: { nkeynes@725: } nkeynes@725: @end nkeynes@725: nkeynes@725: @implementation LxdreamPrefsPanel nkeynes@725: - (NSView *)createPathsPane nkeynes@725: { nkeynes@725: NSView *pane = [NSView new]; nkeynes@725: int i; nkeynes@725: for( i=0; i<=CONFIG_KEY_MAX; i++ ) { nkeynes@725: lxdream_config_entry_t entry = lxdream_get_config_entry(i); nkeynes@725: if( entry->label != NULL ) { nkeynes@725: } nkeynes@725: } nkeynes@725: return pane; nkeynes@725: } nkeynes@725: - (id)initWithContentRect:(NSRect)contentRect nkeynes@725: { nkeynes@725: if( [super initWithContentRect: contentRect nkeynes@725: styleMask: ( NSTitledWindowMask | NSClosableWindowMask | nkeynes@725: NSMiniaturizableWindowMask | NSResizableWindowMask | nkeynes@725: NSUnifiedTitleAndToolbarWindowMask ) nkeynes@725: backing: NSBackingStoreBuffered defer: NO ] == nil ) { nkeynes@725: return nil; nkeynes@725: } else { nkeynes@725: [self setTitle: NS_("Preferences")]; nkeynes@725: [self setDelegate: self]; nkeynes@725: NSToolbar *toolbar = [[NSToolbar alloc] initWithIdentifier: @"LxdreamPrefsToolbar"]; nkeynes@725: [toolbar setDelegate: [[LxdreamPrefsToolbarDelegate alloc] init]]; nkeynes@725: [toolbar setDisplayMode: NSToolbarDisplayModeIconOnly]; nkeynes@725: [toolbar setSizeMode: NSToolbarSizeModeSmall]; nkeynes@725: [toolbar setSelectedItemIdentifier: @"Paths"]; nkeynes@725: [self setToolbar: toolbar]; nkeynes@725: [self setContentView: [self createPathsPane]]; nkeynes@725: return self; nkeynes@725: } nkeynes@725: } nkeynes@725: - (void)windowWillClose: (NSNotification *)notice nkeynes@725: { nkeynes@725: [NSApp stopModal]; nkeynes@725: } nkeynes@725: @end