From ab10720260e2c184b319026da89f4dfd338500bb Mon Sep 17 00:00:00 2001 From: Brian Cully Date: Wed, 2 Apr 2008 19:20:20 -0400 Subject: Initial commit --- WorldSettingsController.m | 113 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 WorldSettingsController.m (limited to 'WorldSettingsController.m') diff --git a/WorldSettingsController.m b/WorldSettingsController.m new file mode 100644 index 0000000..2ee9623 --- /dev/null +++ b/WorldSettingsController.m @@ -0,0 +1,113 @@ +// +// WorldSettingsController.m +// Moxie +// +// Created by Brian Cully on Thu Jan 01 2004. +// Copyright (c) 2004 Brian Cully. All rights reserved. +// + +#import "WorldSettingsController.h" + +#import "World.h" + +@implementation WorldSettingsController ++ (WorldSettingsController *)sharedController +{ + static WorldSettingsController *sharedController = nil; + + if (sharedController == nil) { + sharedController = [[WorldSettingsController alloc] init]; + } + return sharedController; +} + +- (id)init +{ + self = [self initWithWindowNibName: @"WorldSettings"]; + [self setWindowFrameAutosaveName: @"worldSettingsWindow"]; + return self; +} + +- (void)dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver: self]; + [super dealloc]; +} + +- (void)setMainWindow: (NSWindow *)aWindow +{ + World *world; + + world = [[aWindow windowController] document]; + if ([world isKindOfClass: [World class]]) { + // XXX: this needs to be pluginified + [self setSettings: [world settings]]; + } +} + +- (void)windowDidLoad +{ + NSNotificationCenter *defaultCenter; + + [super windowDidLoad]; + + [self setMainWindow: [NSApp mainWindow]]; + + defaultCenter = [NSNotificationCenter defaultCenter]; + [defaultCenter addObserver: self + selector: @selector(mainWindowChanged:) + name: NSWindowDidBecomeMainNotification + object: nil]; + [defaultCenter addObserver: self + selector: @selector(mainWindowResigned:) + name: NSWindowDidResignMainNotification + object: nil]; +} + +- (void)mainWindowChanged: (NSNotification *)aNotification +{ + [self setMainWindow: [aNotification object]]; +} + +- (void)mainWindowResigned: (NSNotification *)aNotification +{ + [self setMainWindow: nil]; +} + +- (void)changeFont: (id)sender +{ + NSFont *oldFont, *newFont; + + oldFont = [[self settings] font]; + newFont = [sender convertFont: oldFont]; + [[self settings] setFont: newFont]; +} + +- (IBAction)saveSettingsAsDefault: (id)sender +{ + [[NSUserDefaults standardUserDefaults] setDefaultsFromWorldSettings: [self settings]]; +} + +- (IBAction)openLogDirectory: (id)sender +{ + [[NSWorkspace sharedWorkspace] openFile: [[NSUserDefaults standardUserDefaults] logDirectory]]; +} + +- (void)showHostSettingsTab +{ + [self showWindow: self]; + [theTabView selectTabViewItem: theHostSettingsTab]; +} +@end + +@implementation WorldSettingsController (Accessors) +- (MxWorldSettings *)settings +{ + return [theSettingsController content]; +} + +- (void)setSettings: (MxWorldSettings *)someSettings +{ + [theSettingsController setContent: someSettings]; +} +@end \ No newline at end of file -- cgit v1.2.3