X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fthecheat;a=blobdiff_plain;f=PreferenceController.m;h=8a558108a5bba2926a6ec58bb0991a30eb7c3ce4;hp=7c0ec13ad805aa28f2954f3466a092004a60f43d;hb=HEAD;hpb=fcdfb47212ad3d7f8ec8ae115ccf4f30b7ace383 diff --git a/PreferenceController.m b/PreferenceController.m index 7c0ec13..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,104 +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]; } - (void)initialInterfaceSetup { - [playSoundsButton setState:(TCGlobalPlaySounds)? NSOnState:NSOffState]; - [windowsOnTopButton setState:(TCGlobalWindowsOnTop)? NSOnState:NSOffState]; - [updateAutomaticallyButton setState:(TCGlobalUpdateCheck)? NSOnState:NSOffState]; - [allowRemoteButton setState:(TCGlobalAllowRemote)? NSOnState:NSOffState]; - [listenPortTextField setIntValue:TCGlobalListenPort]; - [broadcastNameTextField setStringValue:[[NSUserDefaults standardUserDefaults] objectForKey:TCBroadcastNamePref]]; - [hitsDisplayedTextField setIntValue:TCGlobalHitsDisplayed]; - - [self interfaceUpdate]; + [self chooseGeneral:self]; } -- (void)interfaceUpdate + +- (void)chooseGeneral:(id)object { - if ( [allowRemoteButton state] ) - { - [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)change:(id)sender +- (void)chooseServer:(id)object { - [self interfaceUpdate]; + NSWindow *window = [self window]; + [self switchToView:ibServerView]; + [window setTitle:@"Server"]; + if ( MacOSXVersion() >= 0x1030 ) { + [_toolbar setSelectedItemIdentifier:@"Server"]; + } } - -- (IBAction)revert:(id)sender +- (void)chooseUpdate:(id)object { - [self initialInterfaceSetup]; + NSWindow *window = [self window]; + [self switchToView:ibUpdateCheckView]; + [window setTitle:@"Update Check"]; + if ( MacOSXVersion() >= 0x1030 ) { + [_toolbar setSelectedItemIdentifier:@"Update Check"]; + } } -- (IBAction)apply:(id)sender +- (void)switchToView:(NSView *)view { - TCGlobalPlaySounds = [playSoundsButton state]; - [[NSUserDefaults standardUserDefaults] setBool:TCGlobalPlaySounds forKey:TCPlaySoundsPref]; - - // send window information to the delegate so the necessary adjustments can be made - [delegate preferenceSetWindowsOnTop:[windowsOnTopButton state]]; + NSWindow *window = [self window]; + NSRect frame = [window frame]; + float xdif, ydif; - TCGlobalWindowsOnTop = [windowsOnTopButton state]; - [[NSUserDefaults standardUserDefaults] setBool:TCGlobalWindowsOnTop forKey:TCWindowsOnTopPref]; - - TCGlobalUpdateCheck = [updateAutomaticallyButton state]; - [[NSUserDefaults standardUserDefaults] setBool:TCGlobalUpdateCheck forKey:TCUpdateCheckPref]; + if ( view == [window contentView] ) { + return; + } - // send server information to the delegate so the server can be updated accordingly - [delegate preferenceSetAllowRemote:[allowRemoteButton state] listenPort:[listenPortTextField intValue] broadcastName:[broadcastNameTextField stringValue]]; + xdif = [view frame].size.width - [[window contentView] frame].size.width; + ydif = [view frame].size.height - [[window contentView] frame].size.height; - TCGlobalAllowRemote = [allowRemoteButton state]; - [[NSUserDefaults standardUserDefaults] setBool:TCGlobalAllowRemote forKey:TCAllowRemotePref]; + frame.size.width += xdif; + frame.size.height += ydif; + frame.origin.y -= ydif; - TCGlobalListenPort = [listenPortTextField intValue]; - [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:TCGlobalListenPort] forKey:TCListenPortPref]; + // switch to the new view + [window setContentView:_contentView]; + [window setFrame:frame display:YES animate:YES]; + [window setContentView:view]; + [window makeFirstResponder:view]; +} + + +- (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag +{ + NSToolbarItem *item = [[NSToolbarItem alloc] initWithItemIdentifier:itemIdentifier]; - [[NSUserDefaults standardUserDefaults] setObject:[broadcastNameTextField stringValue] forKey:TCBroadcastNamePref]; + [item setLabel:itemIdentifier]; + [item setPaletteLabel:itemIdentifier]; + [item setImage:[NSImage imageNamed:itemIdentifier]]; + [item setTarget:self]; + [item setAction:NSSelectorFromString( [NSString stringWithFormat:@"choose%@:", itemIdentifier] )]; - TCGlobalHitsDisplayed = [hitsDisplayedTextField intValue]; - [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:TCGlobalHitsDisplayed] forKey:TCHitsDisplayedPref]; + return [item autorelease]; } +- (NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar*)toolbar +{ + return [NSArray arrayWithObjects:@"General", @"Update", @"Server", nil]; +} -- (IBAction)cancel:(id)sender +- (NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar*)toolbar { - [self initialInterfaceSetup]; - [self close]; + return [NSArray arrayWithObjects:@"General", @"Update", @"Server", nil]; } -- (IBAction)save:(id)sender +- (NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar { - [self apply:self]; - [self close]; + return [NSArray arrayWithObjects:@"General", @"Update", @"Server", nil]; } -@end \ No newline at end of file +@end