X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=PreferenceController.m;h=f8f2cbadc1ca9f5a5618411df79c377d6f195551;hb=44e9757722f3ed40d15e0a7d06c50567d9664833;hp=fe178fb4b62a3f89a5ddac19585e9a9814d9bb7a;hpb=42cf7bbe564d70233a0d73baee613f209eb00eb6;p=chaz%2Fthecheat diff --git a/PreferenceController.m b/PreferenceController.m index fe178fb..f8f2cba 100644 --- a/PreferenceController.m +++ b/PreferenceController.m @@ -1,12 +1,22 @@ -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// Project: The Cheat -// -// File: PreferenceController.m -// Created: Wed Sep 24 2003 -// -// Copyright: 2003 Chaz McGarvey. All rights reserved. -// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// ********************************************************************** +// The Cheat - A universal game cheater for Mac OS X +// (C) 2003-2005 Chaz McGarvey (BrokenZipper) +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 1, or (at your option) +// any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +// #import "PreferenceController.h" @@ -14,113 +24,123 @@ @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]; }