pcsxr-1.9.92
[pcsx_rearmed.git] / macosx / PluginController.m
CommitLineData
ef79bbde
P
1#import "PluginController.h"
2#import "PcsxPlugin.h"
3#import "PcsxController.h"
4
5@implementation PluginController
6
7- (IBAction)doAbout:(id)sender
8{
9 PcsxPlugin *plugin = [plugins objectAtIndex:[pluginMenu indexOfSelectedItem]];
10 [plugin aboutAs:pluginType];
11}
12
13- (IBAction)doConfigure:(id)sender
14{
15 PcsxPlugin *plugin = [plugins objectAtIndex:[pluginMenu indexOfSelectedItem]];
16
17 [plugin configureAs:pluginType];
18}
19
20- (IBAction)selectPlugin:(id)sender
21{
22 if (sender==pluginMenu) {
23 int index = [pluginMenu indexOfSelectedItem];
24 if (index != -1) {
25 PcsxPlugin *plugin = [plugins objectAtIndex:index];
26
27 if (![[PluginList list] setActivePlugin:plugin forType:pluginType]) {
28 /* plugin won't initialize */
29 }
30
31 // write selection to defaults
32 [[NSUserDefaults standardUserDefaults] setObject:[plugin path] forKey:defaultKey];
33
34 // set button states
35 [aboutButton setEnabled:[plugin hasAboutAs:pluginType]];
36 [configureButton setEnabled:[plugin hasConfigureAs:pluginType]];
37 } else {
38 // set button states
39 [aboutButton setEnabled:NO];
40 [configureButton setEnabled:NO];
41 }
42 }
43}
44
45// must be called before anything else
46- (void)setPluginsTo:(NSArray *)list withType:(int)type
47{
48 NSString *sel;
49 int i;
50
51 // remember the list
52 pluginType = type;
53 plugins = [list retain];
54 defaultKey = [[PcsxPlugin getDefaultKeyForType:pluginType] retain];
55
56 // clear the previous menu items
57 [pluginMenu removeAllItems];
58
59 // load the currently selected plugin
60 sel = [[NSUserDefaults standardUserDefaults] stringForKey:defaultKey];
61
62 // add the menu entries
63 for (i = 0; i < [plugins count]; i++) {
64 [pluginMenu addItemWithTitle:[[plugins objectAtIndex:i] description]];
65
66 // make sure the currently selected is set as such
67 if ([sel isEqualToString:[[plugins objectAtIndex:i] path]]) {
68 [pluginMenu selectItemAtIndex:i];
69 }
70 }
71
72 [self selectPlugin:pluginMenu];
73}
74
75- (void)dealloc
76{
77 if (plugins) [plugins release];
78 if (defaultKey) [defaultKey release];
79}
80
81@end