]> Dogcows Code - chaz/thecheat/blobdiff - PreferenceController.m
update contact information and project URL
[chaz/thecheat] / PreferenceController.m
index 4b603622eca9dab99750b6d35a3845657485e64e..8a558108a5bba2926a6ec58bb0991a30eb7c3ce4 100644 (file)
@@ -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"
 
 @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
This page took 0.026651 seconds and 4 git commands to generate.