// // MPT_PluginControllerBase.m // AUCoderDemo // // Created by Andrew Salamon on 6/13/08. // Copyright (c) 2008 Machine Perception Laboratory, // University of California San Diego. All rights reserved. #import "MPT_PluginControllerBase.h" #import "MPT_Preferences.h" @implementation MPT_PluginControllerBase + (NSSet *)keyPathsForValuesAffectingvisiblePlugins { return [NSSet setWithObject:@"plugins"]; } - (id)init { if( self = [super init] ) { plugins = [[NSMutableArray alloc] init]; } return self; } - (void)dealloc { [plugins release]; [super dealloc]; } - (void)setPlugins:(NSArray *)newPlugins { [plugins autorelease]; plugins = [newPlugins mutableCopy]; } - (NSArray *)plugins { return plugins; } - (NSArray *)sortedPlugins { return [[self plugins] sortedArrayUsingDescriptors:[MPT_Preferences pluginTableSortDescriptors]]; } - (NSArray *)pluginsForStep:(NSString *)step { NSMutableArray *steppers = [NSMutableArray array]; NSEnumerator *plugEnum = [plugins objectEnumerator]; id plugin; while( plugin = [plugEnum nextObject] ) { if( [[plugin step] isEqualToString:step] ) [steppers addObject:plugin]; } return steppers; } - (NSArray *)enabledPluginsForStep:(NSString *)step { NSMutableArray *steppers = [NSMutableArray array]; NSEnumerator *plugEnum = [plugins objectEnumerator]; id plugin; while( plugin = [plugEnum nextObject] ) { if( [[plugin step] isEqualToString:step] && [plugin enabled] ) [steppers addObject:plugin]; } return steppers; } - (id)pluginForPluginID:(NSString *)pluginID { NSEnumerator *plugEnum = [plugins objectEnumerator]; id plugin; while( plugin = [plugEnum nextObject] ) { if( [[plugin pluginID] isEqualToString:pluginID] ) return plugin; } return nil; } - (NSArray *)visiblePlugins { // This will hide the Face plugin stub, and all feature plugins (requested by Javier). NSMutableArray *goodPlugins = [NSMutableArray array]; NSEnumerator *plugEnum = [[self plugins] objectEnumerator]; id plugin; while( plugin = [plugEnum nextObject] ) { if( ![[plugin step] isEqualToString:MPT_PluginStep_NoStep] && ![[plugin step] isEqualToString:MPT_PluginStep_Features] ) [goodPlugins addObject:plugin]; } return goodPlugins; } - (BOOL)removePlugin:(NSString *)pluginID { return NO; } @end