quakeforge/tools/Forge/PrefsController.m
Jeff Teunissen 29c68732c0 More Forge stuff.
Forge now loads the bundles in its resources first, and then loads the
bundles from the User, Local, Network, and System library directories,
in that order -- if it is told to by the defaults system.

Also, the MainPrefs class has some new options, to control what
directories Forge loads bundles from.
2002-01-26 22:09:15 +00:00

159 lines
3.6 KiB
Objective-C

/*
PrefsController.m
Preferences window controller class
Copyright (C) 2001 Dusk to Dawn Computing, Inc.
Author: Jeff Teunissen <deek@d2dc.net>
Date: 11 Nov 2001
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 2 of
the License, 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:
Free Software Foundation, Inc.
59 Temple Place - Suite 330
Boston, MA 02111-1307, USA
*/
static const char rcsid[] =
"$Id$";
#ifdef HAVE_CONFIG_H
# include "Config.h"
#endif
#import <AppKit/NSApplication.h>
#import "PrefsController.h"
#import "PrefsPanel.h"
#import "PrefsView.h"
@implementation PrefsController
static PrefsController *sharedInstance = nil;
static NSMutableArray *prefsViews = nil;
+ (PrefsController *) sharedPrefsController
{
return (sharedInstance ? sharedInstance : [[self alloc] init]);
}
- (id) init
{
PrefsPanel *prefsPanel;
if (sharedInstance) {
[self dealloc];
} else {
[super init];
sharedInstance = self;
prefsViews = [[[NSMutableArray alloc] initWithCapacity: 5] retain];
prefsPanel = [[PrefsPanel alloc]
initWithContentRect: NSMakeRect (250, 250, 516, 385)
styleMask: NSTitledWindowMask
| NSMiniaturizableWindowMask
| NSClosableWindowMask
backing: NSBackingStoreRetained
defer: NO
];
[prefsPanel setTitle: [NSString stringWithFormat: @"%@ %@", _(@"Forge"), _(@"Preferences")]];
[super initWithWindow: prefsPanel];
[prefsPanel initUI];
[prefsPanel setDelegate: self];
[prefsPanel release];
}
return sharedInstance;
}
- (void) dealloc
{
NSDebugLog (@"PrefsController -dealloc");
[prefsViews release];
[super dealloc];
}
- (void) windowWillClose: (NSNotification *) aNotification
{
}
- (void) orderFrontPreferencesPanel: (id) sender
{
[[self window] makeKeyAndOrderFront: self];
return;
}
- (void) savePreferencesAndCloseWindow: (id) sender
{
[self savePreferences: self];
[[self window] close];
}
- (void) savePreferences: (id) sender
{
NSEnumerator *enumerator = [prefsViews objectEnumerator];
id <PrefsViewController> current;
NSDebugLog (@"Saving all preferences...");
while ((current = [enumerator nextObject])) {
[current savePrefs: self];
}
[[NSUserDefaults standardUserDefaults] synchronize];
}
- (void) loadPreferences: (id) sender
{
NSEnumerator *enumerator = [prefsViews objectEnumerator];
id <PrefsViewController> current;
NSDebugLog (@"Loading all preferences from database...");
while ((current = [enumerator nextObject])) {
[current loadPrefs: self];
}
[[NSUserDefaults standardUserDefaults] synchronize];
}
- (void) resetToDefaults: (id) sender
{
NSEnumerator *enumerator = [prefsViews objectEnumerator];
id <PrefsViewController> current;
NSDebugLog (@"Setting all preferences to default values...");
while ((current = [enumerator nextObject])) {
[current resetPrefsToDefault: self];
}
[[NSUserDefaults standardUserDefaults] synchronize];
}
- (void) addPrefsViewController: (id <PrefsViewController>) controller;
{
PrefsPanel *prefsPanel;
prefsPanel = (PrefsPanel *) [self window];
if (! [prefsViews containsObject: controller]) {
[prefsViews addObject: controller];
[controller autorelease];
}
[prefsPanel addPrefsViewButton: controller];
}
@end