This is EKDefaultsManager.m in view mode; [Download] [Up]
/*
* EKDefaultsManager
* description: a generic object for reading/writing/accessing defaults/prefs
* history:
* 5/19/93 [Erik Kay] - created
* 5/23/93 [Erik Kay] - writing the defaults out
*/
/*
* NOTE: This is probably the most questionable object in the code here.
* There is a lot of missing functionailty, and some of the existing
* stuff needs a bit of work. I think that the basic idea has potential
* though, so send me your suggestions/fixes! -EK
*/
#import "EKDefaultsManager.h"
@implementation EKDefaultsManager
- init
{
defaultsTable = [[NXStringTable alloc] init];
return self;
}
// add a new default to the hash table
- addDefault:(const char *)key
{
static const char *dummyStr = "";
[defaultsTable insertKey:(void *)key value:(void *)dummyStr];
return self;
}
// override this method to initialize a custom defaults vector
- loadDefaults
{
const void *key;
void *value;
const char *def;
NXHashState state = [defaultsTable initState];
while ([defaultsTable nextState: &state key: &key value: &value]) {
def = NXGetDefaultValue([NXApp appName],(const char *)key);
[self setDefault:(const char *)key value:def];
}
return self;
}
// write out all of the defaults in the hash table
//! This is kind of bogus because *all* of the defaults are being written out
//! rather than keeping track of the ones that have changed, and simply writing
//! those out.
- writeDefaults
{
const void *key;
void *value;
NXHashState state = [defaultsTable initState];
while ([defaultsTable nextState: &state key: &key value: &value]) {
NXWriteDefault([NXApp appName],(const char *)key,(const char *)value);
}
return self;
}
// Set the value of a default that is already in the hash table
// Note: override this method when you want specific actions to happen when
// a certain default is set or changed
- setDefault:(const char *)key value:(const char *)val
{
if ([defaultsTable isKey:key])
[defaultsTable insertKey:(void *)key value:(void *)val];
return self;
}
// get the value for a default
- (const char *)getDefault:(const char *)key
{
if ([defaultsTable isKey:key])
return [defaultsTable valueForStringKey:key];
return NULL;
}
// we manage a preferences panel (UI to set defaults), so it's only natural
// that someone might actually want to see the panel. Here, we load the nib
// file that has the preferences UI in it.
- loadPreferencesPanel
{
if (!prefsPanel) {
[NXApp loadNibSection:"Preferences.nib" owner:self withNames:NO];
}
return self;
}
// now actually show the panel
- showPreferencesPanel:sender
{
// make sure it's loaded first
[self loadPreferencesPanel];
[prefsPanel makeKeyAndOrderFront:self];
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.