#import "PluginController.h" #include "stdafx.h" #include "externals.h" #include "maccfg.h" #ifdef USEOPENAL #define APP_ID @"net.sf.peops.ALPlugin" #else #define APP_ID @"net.sf.peops.SPUPlugin" #endif #define PrefsKey APP_ID @" Settings" static PluginController *pluginController; char * pConfigFile=NULL; void DoAbout() { // Get parent application instance NSApplication *app = [NSApplication sharedApplication]; NSBundle *bundle = [NSBundle bundleWithIdentifier:APP_ID]; // Get Credits.rtf NSString *path = [bundle pathForResource:@"Credits" ofType:@"rtf"]; NSAttributedString *credits; if (path) { credits = [[[NSAttributedString alloc] initWithPath: path documentAttributes:NULL] autorelease]; } else { credits = [[[NSAttributedString alloc] initWithString:@""] autorelease]; } // Get Application Icon NSImage *icon = [[NSWorkspace sharedWorkspace] iconForFile:[bundle bundlePath]]; NSSize size = NSMakeSize(64, 64); [icon setSize:size]; [app orderFrontStandardAboutPanelWithOptions:[NSDictionary dictionaryWithObjectsAndKeys: [bundle objectForInfoDictionaryKey:@"CFBundleName"], @"ApplicationName", icon, @"ApplicationIcon", [bundle objectForInfoDictionaryKey:@"CFBundleShortVersionString"], @"ApplicationVersion", [bundle objectForInfoDictionaryKey:@"CFBundleVersion"], @"Version", [bundle objectForInfoDictionaryKey:@"NSHumanReadableCopyright"], @"Copyright", credits, @"Credits", nil]]; } long DoConfiguration() { NSWindow *window; if (pluginController == nil) { pluginController = [[PluginController alloc] initWithWindowNibName:@"NetSfPeopsSpuPluginMain"]; } window = [pluginController window]; /* load values */ [pluginController loadValues]; [window center]; [window makeKeyAndOrderFront:nil]; return 0; } void ReadConfig(void) { NSDictionary *keyValues; NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys: [NSMutableDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:YES], @"High Compatibility Mode", [NSNumber numberWithBool:YES], @"SPU IRQ Wait", [NSNumber numberWithBool:NO], @"XA Pitch", [NSNumber numberWithInt:0], @"Interpolation Quality", [NSNumber numberWithInt:1], @"Reverb Quality", [NSNumber numberWithInt:3], @"Volume", nil], PrefsKey, nil]]; keyValues = [defaults dictionaryForKey:PrefsKey]; iUseTimer = [[keyValues objectForKey:@"High Compatibility Mode"] boolValue] ? 2 : 0; iSPUIRQWait = [[keyValues objectForKey:@"SPU IRQ Wait"] boolValue]; iDisStereo = [[keyValues objectForKey:@"Mono Sound Output"] boolValue]; iXAPitch = [[keyValues objectForKey:@"XA Pitch"] boolValue]; iUseInterpolation = [[keyValues objectForKey:@"Interpolation Quality"] intValue]; iUseReverb = [[keyValues objectForKey:@"Reverb Quality"] intValue]; iVolume = 5 - [[keyValues objectForKey:@"Volume"] intValue]; } @implementation PluginController - (IBAction)cancel:(id)sender { [self close]; } - (IBAction)ok:(id)sender { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSMutableDictionary *writeDic = [NSMutableDictionary dictionaryWithDictionary:keyValues]; [writeDic setObject:[NSNumber numberWithInt:[hiCompBox intValue]] forKey:@"High Compatibility Mode"]; [writeDic setObject:[NSNumber numberWithInt:[irqWaitBox intValue]] forKey:@"SPU IRQ Wait"]; [writeDic setObject:[NSNumber numberWithInt:[monoSoundBox intValue]] forKey:@"Mono Sound Output"]; [writeDic setObject:[NSNumber numberWithInt:[xaSpeedBox intValue]] forKey:@"XA Pitch"]; [writeDic setObject:[NSNumber numberWithInt:[interpolValue intValue]] forKey:@"Interpolation Quality"]; [writeDic setObject:[NSNumber numberWithInt:[reverbValue intValue]] forKey:@"Reverb Quality"]; [writeDic setObject:[NSNumber numberWithInt:[volumeValue intValue]] forKey:@"Volume"]; // write to defaults [defaults setObject:writeDic forKey:PrefsKey]; [defaults synchronize]; // and set global values accordingly ReadConfig(); [self close]; } - (IBAction)reset:(id)sender { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults removeObjectForKey:PrefsKey]; [self loadValues]; } - (void)loadValues { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; ReadConfig(); /* load from preferences */ [keyValues release]; keyValues = [[defaults dictionaryForKey:PrefsKey] mutableCopy]; [hiCompBox setIntValue:[[keyValues objectForKey:@"High Compatibility Mode"] intValue]]; [irqWaitBox setIntValue:[[keyValues objectForKey:@"SPU IRQ Wait"] intValue]]; [monoSoundBox setIntValue:[[keyValues objectForKey:@"Mono Sound Output"] intValue]]; [xaSpeedBox setIntValue:[[keyValues objectForKey:@"XA Pitch"] intValue]]; [interpolValue setIntValue:[[keyValues objectForKey:@"Interpolation Quality"] intValue]]; [reverbValue setIntValue:[[keyValues objectForKey:@"Reverb Quality"] intValue]]; [volumeValue setIntValue:[[keyValues objectForKey:@"Volume"] intValue]]; } - (void)awakeFromNib { [interpolValue setStrings:[NSArray arrayWithObjects: @"(No Interpolation)", @"(Simple Interpolation)", @"(Gaussian Interpolation)", @"(Cubic Interpolation)", nil]]; [reverbValue setStrings:[NSArray arrayWithObjects: @"(No Reverb)", @"(Simple Reverb)", @"(PSX Reverb)", nil]]; [volumeValue setStrings:[NSArray arrayWithObjects: @"(Muted)", @"(Low)", @"(Medium)", @"(Loud)", @"(Loudest)", nil]]; } @end