X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fthecheat;a=blobdiff_plain;f=PreferenceController.m;h=8a558108a5bba2926a6ec58bb0991a30eb7c3ce4;hp=fe178fb4b62a3f89a5ddac19585e9a9814d9bb7a;hb=HEAD;hpb=42cf7bbe564d70233a0d73baee613f209eb00eb6 diff --git a/PreferenceController.m b/PreferenceController.m index fe178fb..8a55810 100644 --- a/PreferenceController.m +++ b/PreferenceController.m @@ -1,12 +1,13 @@ -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// Project: The Cheat -// -// File: PreferenceController.m -// Created: Wed Sep 24 2003 -// -// Copyright: 2003 Chaz McGarvey. All rights reserved. -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/* + * The Cheat - The legendary universal game trainer for Mac OS X. + * http://www.brokenzipper.com/trac/wiki/TheCheat + * + * Copyright (c) 2003-2011, Charles McGarvey et al. + * + * Distributable under the terms and conditions of the 2-clause BSD + * license; see the file COPYING for the legal text of the license. + */ #import "PreferenceController.h" @@ -14,114 +15,124 @@ @implementation PreferenceController -- (id)initWithDelegate:(id)del +- (id)init { if ( self = [super initWithWindowNibName:@"Preferences"] ) { [self setWindowFrameAutosaveName:@"TCPreferencWindowPosition"]; - - delegate = del; } - return self; } +- (void)dealloc +{ + [_toolbar release]; + [_contentView release]; + [super dealloc]; +} + + - (void)windowDidLoad { + _toolbar = [[NSToolbar alloc] initWithIdentifier:@"TCPreferencesToolbar"]; + [_toolbar setDelegate:self]; + [_toolbar setVisible:YES]; + [[self window] setToolbar:_toolbar]; + + _contentView = [[[self window] contentView] retain]; + [self initialInterfaceSetup]; - [self interfaceUpdate]; } - (void)initialInterfaceSetup { - [playSoundsButton setState:(TCGlobalPlaySounds)? NSOnState:NSOffState]; - [windowsOnTopButton setState:(TCGlobalWindowsOnTop)? NSOnState:NSOffState]; - [allowRemoteButton setState:(TCGlobalAllowRemote)? NSOnState:NSOffState]; - [listenPortTextField setIntValue:TCGlobalListenPort]; - [broadcastNameTextField setStringValue:[[NSUserDefaults standardUserDefaults] objectForKey:TCBroadcastNamePref]]; + [self chooseGeneral:self]; } -- (void)interfaceUpdate + +- (void)chooseGeneral:(id)object { - if ( TCGlobalAllowRemote ) - { - [listenPortTextField setEnabled:YES]; - [broadcastNameTextField setEnabled:YES]; - } - else - { - [listenPortTextField setEnabled:NO]; - [broadcastNameTextField setEnabled:NO]; + NSWindow *window = [self window]; + [self switchToView:ibGeneralView]; + [window setTitle:@"General"]; + if ( MacOSXVersion() >= 0x1030 ) { + [_toolbar setSelectedItemIdentifier:@"General"]; } } - -- (IBAction)playSoundsButton:(id)sender +- (void)chooseServer:(id)object { - if ( [playSoundsButton state] == NSOnState ) - { - TCGlobalPlaySounds = YES; - [[NSUserDefaults standardUserDefaults] setBool:YES forKey:TCPlaySoundsPref]; - } - else - { - TCGlobalPlaySounds = NO; - [[NSUserDefaults standardUserDefaults] setBool:NO forKey:TCPlaySoundsPref]; + NSWindow *window = [self window]; + [self switchToView:ibServerView]; + [window setTitle:@"Server"]; + if ( MacOSXVersion() >= 0x1030 ) { + [_toolbar setSelectedItemIdentifier:@"Server"]; } } -- (IBAction)windowsOnTopButton:(id)sender +- (void)chooseUpdate:(id)object { - if ( [windowsOnTopButton state] == NSOnState ) - { - TCGlobalWindowsOnTop = YES; - [[NSUserDefaults standardUserDefaults] setBool:YES forKey:TCWindowsOnTopPref]; - } - else - { - TCGlobalWindowsOnTop = NO; - [[NSUserDefaults standardUserDefaults] setBool:NO forKey:TCWindowsOnTopPref]; + NSWindow *window = [self window]; + [self switchToView:ibUpdateCheckView]; + [window setTitle:@"Update Check"]; + if ( MacOSXVersion() >= 0x1030 ) { + [_toolbar setSelectedItemIdentifier:@"Update Check"]; } - - [[NSNotificationCenter defaultCenter] postNotificationName:@"TCWindowsOnTopChanged" object:nil]; } -- (IBAction)allowRemoteButton:(id)sender +- (void)switchToView:(NSView *)view { - if ( [allowRemoteButton state] == NSOnState ) - { - TCGlobalAllowRemote = YES; - [[NSUserDefaults standardUserDefaults] setBool:YES forKey:TCAllowRemotePref]; - } - else - { - TCGlobalAllowRemote = NO; - [[NSUserDefaults standardUserDefaults] setBool:NO forKey:TCAllowRemotePref]; + NSWindow *window = [self window]; + NSRect frame = [window frame]; + float xdif, ydif; + + if ( view == [window contentView] ) { + return; } + + xdif = [view frame].size.width - [[window contentView] frame].size.width; + ydif = [view frame].size.height - [[window contentView] frame].size.height; + + frame.size.width += xdif; + frame.size.height += ydif; + frame.origin.y -= ydif; + + // switch to the new view + [window setContentView:_contentView]; + [window setFrame:frame display:YES animate:YES]; + [window setContentView:view]; + [window makeFirstResponder:view]; +} - [self interfaceUpdate]; - [delegate preferenceAllowRemoteChanged:TCGlobalAllowRemote]; +- (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag +{ + NSToolbarItem *item = [[NSToolbarItem alloc] initWithItemIdentifier:itemIdentifier]; + + [item setLabel:itemIdentifier]; + [item setPaletteLabel:itemIdentifier]; + [item setImage:[NSImage imageNamed:itemIdentifier]]; + [item setTarget:self]; + [item setAction:NSSelectorFromString( [NSString stringWithFormat:@"choose%@:", itemIdentifier] )]; + + return [item autorelease]; } -- (IBAction)listenPortTextField:(id)sender +- (NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar*)toolbar { - TCGlobalListenPort = [listenPortTextField intValue]; - - [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:TCGlobalListenPort] forKey:TCListenPortPref]; - - [delegate preferenceListenPortChanged:TCGlobalListenPort]; + return [NSArray arrayWithObjects:@"General", @"Update", @"Server", nil]; } -- (IBAction)broadcastNameTextField:(id)sender +- (NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar*)toolbar { - NSString *name = [broadcastNameTextField stringValue]; - - [[NSUserDefaults standardUserDefaults] setObject:name forKey:TCBroadcastNamePref]; + return [NSArray arrayWithObjects:@"General", @"Update", @"Server", nil]; +} - [delegate preferenceBroadcastNameChanged:name]; +- (NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar +{ + return [NSArray arrayWithObjects:@"General", @"Update", @"Server", nil]; } -@end \ No newline at end of file +@end