From 10eac4b4928e7dd9f79de454641889f2a0b77250 Mon Sep 17 00:00:00 2001 From: "SND\\weimingzhi_cp" Date: Tue, 9 Jun 2009 11:34:52 +0000 Subject: added prelimiary Mac OS X port (still not working) git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@23667 e17a0e51-4ae3-4d35-97c3-1a29b211df97 --- macosx/PluginController.m | 80 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 macosx/PluginController.m (limited to 'macosx/PluginController.m') diff --git a/macosx/PluginController.m b/macosx/PluginController.m new file mode 100644 index 00000000..958cad3a --- /dev/null +++ b/macosx/PluginController.m @@ -0,0 +1,80 @@ +#import "PluginController.h" +#import "PcsxPlugin.h" + +@implementation PluginController + +- (IBAction)doAbout:(id)sender +{ + PcsxPlugin *plugin = [plugins objectAtIndex:[pluginMenu indexOfSelectedItem]]; + [plugin aboutAs:pluginType]; +} + +- (IBAction)doConfigure:(id)sender +{ + PcsxPlugin *plugin = [plugins objectAtIndex:[pluginMenu indexOfSelectedItem]]; + + [plugin configureAs:pluginType]; +} + +- (IBAction)selectPlugin:(id)sender +{ + if (sender==pluginMenu) { + int index = [pluginMenu indexOfSelectedItem]; + if (index != -1) { + PcsxPlugin *plugin = [plugins objectAtIndex:index]; + + if (![[PluginList list] setActivePlugin:plugin forType:pluginType]) { + /* plugin won't initialize */ + } + + // write selection to defaults + [[NSUserDefaults standardUserDefaults] setObject:[plugin path] forKey:defaultKey]; + + // set button states + [aboutButton setEnabled:[plugin hasAboutAs:pluginType]]; + [configureButton setEnabled:[plugin hasConfigureAs:pluginType]]; + } else { + // set button states + [aboutButton setEnabled:NO]; + [configureButton setEnabled:NO]; + } + } +} + +// must be called before anything else +- (void)setPluginsTo:(NSArray *)list withType:(int)type +{ + NSString *sel; + int i; + + // remember the list + pluginType = type; + plugins = [list retain]; + defaultKey = [[PcsxPlugin getDefaultKeyForType:pluginType] retain]; + + // clear the previous menu items + [pluginMenu removeAllItems]; + + // load the currently selected plugin + sel = [[NSUserDefaults standardUserDefaults] stringForKey:defaultKey]; + + // add the menu entries + for (i=0; i<[plugins count]; i++) { + [pluginMenu addItemWithTitle:[[plugins objectAtIndex:i] description]]; + + // make sure the currently selected is set as such + if ([sel isEqualToString:[[plugins objectAtIndex:i] path]]) { + [pluginMenu selectItemAtIndex:i]; + } + } + + [self selectPlugin:pluginMenu]; +} + +- (void)dealloc +{ + if (plugins) [plugins release]; + if (defaultKey) [defaultKey release]; +} + +@end -- cgit v1.2.3