X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fthecheat;a=blobdiff_plain;f=PreferenceController.m;h=8a558108a5bba2926a6ec58bb0991a30eb7c3ce4;hp=4b603622eca9dab99750b6d35a3845657485e64e;hb=HEAD;hpb=5c3719dab502456afddef1ae919e73f06973012f diff --git a/PreferenceController.m b/PreferenceController.m index 4b60362..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,188 +15,124 @@ @implementation PreferenceController -- (id)initWithDelegate:(id)del +- (id)init { if ( self = [super initWithWindowNibName:@"Preferences"] ) { [self setWindowFrameAutosaveName:@"TCPreferencWindowPosition"]; - - delegate = del; } - return self; } -- (void)windowDidLoad +- (void)dealloc { - [self initialInterfaceSetup]; + [_toolbar release]; + [_contentView release]; + [super dealloc]; } -- (void)initialInterfaceSetup +- (void)windowDidLoad { - [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]; + _toolbar = [[NSToolbar alloc] initWithIdentifier:@"TCPreferencesToolbar"]; + [_toolbar setDelegate:self]; + [_toolbar setVisible:YES]; + [[self window] setToolbar:_toolbar]; - [self interfaceUpdate]; + _contentView = [[[self window] contentView] retain]; + + [self initialInterfaceSetup]; } -- (void)interfaceUpdate -{ - if ( [allowRemoteButton state] ) - { - [listenPortTextField setEnabled:YES]; - [broadcastNameTextField setEnabled:YES]; - } - else - { - [listenPortTextField setEnabled:NO]; - [broadcastNameTextField setEnabled:NO]; - } -} -/* -- (IBAction)playSoundsButton:(id)sender +- (void)initialInterfaceSetup { - if ( [playSoundsButton state] == NSOnState ) - { - TCGlobalPlaySounds = YES; - [[NSUserDefaults standardUserDefaults] setBool:YES forKey:TCPlaySoundsPref]; - } - else - { - TCGlobalPlaySounds = NO; - [[NSUserDefaults standardUserDefaults] setBool:NO forKey:TCPlaySoundsPref]; - } + [self chooseGeneral:self]; } -- (IBAction)windowsOnTopButton:(id)sender -{ - if ( [windowsOnTopButton state] == NSOnState ) - { - TCGlobalWindowsOnTop = YES; - [[NSUserDefaults standardUserDefaults] setBool:YES forKey:TCWindowsOnTopPref]; - } - else - { - TCGlobalWindowsOnTop = NO; - [[NSUserDefaults standardUserDefaults] setBool:NO forKey:TCWindowsOnTopPref]; - } - - [[NSNotificationCenter defaultCenter] postNotificationName:@"TCWindowsOnTopChanged" object:nil]; -} -- (IBAction)updateAutomaticallyButton:(id)sender +- (void)chooseGeneral:(id)object { - if ( [updateAutomaticallyButton state] == NSOnState ) - { - TCGlobalUpdateCheck = YES; - [[NSUserDefaults standardUserDefaults] setBool:YES forKey:TCUpdateCheckPref]; - } - else - { - TCGlobalUpdateCheck = NO; - [[NSUserDefaults standardUserDefaults] setBool:NO forKey:TCUpdateCheckPref]; + NSWindow *window = [self window]; + [self switchToView:ibGeneralView]; + [window setTitle:@"General"]; + if ( MacOSXVersion() >= 0x1030 ) { + [_toolbar setSelectedItemIdentifier:@"General"]; } } -- (IBAction)allowRemoteButton:(id)sender +- (void)chooseServer:(id)object { - 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]; + [self switchToView:ibServerView]; + [window setTitle:@"Server"]; + if ( MacOSXVersion() >= 0x1030 ) { + [_toolbar setSelectedItemIdentifier:@"Server"]; } - - [self interfaceUpdate]; - - [delegate preferenceAllowRemoteChanged:TCGlobalAllowRemote]; } -- (IBAction)listenPortTextField:(id)sender +- (void)chooseUpdate:(id)object { - TCGlobalListenPort = [listenPortTextField intValue]; - - [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:TCGlobalListenPort] forKey:TCListenPortPref]; - - [delegate preferenceListenPortChanged:TCGlobalListenPort]; + NSWindow *window = [self window]; + [self switchToView:ibUpdateCheckView]; + [window setTitle:@"Update Check"]; + if ( MacOSXVersion() >= 0x1030 ) { + [_toolbar setSelectedItemIdentifier:@"Update Check"]; + } } -- (IBAction)broadcastNameTextField:(id)sender +- (void)switchToView:(NSView *)view { - NSString *name = [broadcastNameTextField stringValue]; + NSWindow *window = [self window]; + NSRect frame = [window frame]; + float xdif, ydif; - [[NSUserDefaults standardUserDefaults] setObject:name forKey:TCBroadcastNamePref]; - - [delegate preferenceBroadcastNameChanged:name]; -} - -- (IBAction)hitsDisplayedTextField:(id)sender -{ - TCGlobalHitsDisplayed = [hitsDisplayedTextField intValue]; + 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; - [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:TCGlobalHitsDisplayed] forKey:TCHitsDisplayedPref]; + // switch to the new view + [window setContentView:_contentView]; + [window setFrame:frame display:YES animate:YES]; + [window setContentView:view]; + [window makeFirstResponder:view]; } -*/ -- (IBAction)change:(id)sender +- (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag { - [self interfaceUpdate]; + 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)revert:(id)sender +- (NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar*)toolbar { - [self initialInterfaceSetup]; + 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 { - 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]]; - - TCGlobalWindowsOnTop = [windowsOnTopButton state]; - [[NSUserDefaults standardUserDefaults] setBool:TCGlobalWindowsOnTop forKey:TCWindowsOnTopPref]; - - TCGlobalUpdateCheck = [updateAutomaticallyButton state]; - [[NSUserDefaults standardUserDefaults] setBool:TCGlobalUpdateCheck forKey:TCUpdateCheckPref]; - - // send server information to the delegate so the server can be updated accordingly - [delegate preferenceSetAllowRemote:[allowRemoteButton state] listenPort:[listenPortTextField intValue] broadcastName:[broadcastNameTextField stringValue]]; - - TCGlobalAllowRemote = [allowRemoteButton state]; - [[NSUserDefaults standardUserDefaults] setBool:TCGlobalAllowRemote forKey:TCAllowRemotePref]; - - TCGlobalListenPort = [listenPortTextField intValue]; - [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:TCGlobalListenPort] forKey:TCListenPortPref]; - - [[NSUserDefaults standardUserDefaults] setObject:[broadcastNameTextField stringValue] forKey:TCBroadcastNamePref]; - - TCGlobalHitsDisplayed = [hitsDisplayedTextField intValue]; - [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:TCGlobalHitsDisplayed] forKey:TCHitsDisplayedPref]; - - [self close]; + return [NSArray arrayWithObjects:@"General", @"Update", @"Server", nil]; } -@end \ No newline at end of file +@end