// // MPT_PluginBase.m // // Created by Andrew Salamon on 9/25/06. // Copyright 2006 __MyCompanyName__. All rights reserved. // #import "MPT_PluginBase.h" #import "MPT_AUView.h" @implementation MPT_PluginBase - (id)init { if( self = [super init] ) { [self loadLabels]; views = [[NSMutableDictionary alloc] init]; [self initViews]; } return self; } - (void)initViews { NSEnumerator *labelEnum = [labels objectEnumerator]; NSString *label; while( label = [labelEnum nextObject] ) { MPT_AUView *view = [self viewForLabel:label]; if( !view ) { view = [[MPT_AUView alloc] init]; [view setAUString:label]; [self setView:view forLabel:label]; [view release]; } } } - (void)dealloc { [views release]; [labels release]; [super dealloc]; } - (BOOL)loadLabels { NSString *labelFile = [[NSBundle bundleForClass:[self class]] pathForResource:@"labels" ofType:@"plist"]; if( [labelFile length] > 0 ) labels = [[NSArray alloc] initWithContentsOfFile:labelFile]; else labels = [[NSArray alloc] init]; return ([labels count] > 0); } - (void)setDelegate:(id)_delegate { delegate = _delegate; } - (id)delegate { return delegate; } - (NSString *)pluginID { NSString *ident = [[NSBundle bundleForClass:[self class]] objectForInfoDictionaryKey:(NSString *)kCFBundleIdentifierKey]; if( [ident length] > 0 ) return ident; return nil; } - (NSString *)localizedName { NSAssert( YES, @"Improper use of base class. Subclasses must define localizedName method." ); return NSLocalizedStringFromTableInBundle(@"Unknown Name", nil, [NSBundle bundleForClass:[self class]], @""); } - (NSString *)internalName { NSAssert( YES, @"Improper use of base class. Subclasses must define internalName method." ); return @"MPT_PluginBase"; } - (NSArray *)labels { return labels; } - (MPT_AUView *)viewForLabel:(NSString *)label { return [views objectForKey:label]; } - (void)setView:(MPT_AUView *)newView forLabel:(NSString *)label { MPT_AUView *view = [self viewForLabel:label]; if( newView != view ) { [views setObject:newView forKey:label]; } } - (NSView *)prefPane { return nil; } - (NSString *)step { return MPT_PluginStep_NoStep; } - (BOOL)enabled { return enabled; } - (void)setEnabled:(BOOL)value { if( enabled != value ) { enabled = value; NSEnumerator *labelEnum = [labels objectEnumerator]; NSString *label; while( label = [labelEnum nextObject] ) { MPT_AUView *view = [self viewForLabel:label]; [view setEnabled:enabled]; } if( [self delegate] && [[self delegate] respondsToSelector:@selector(didChangeEnabledStateForPlugin:)] ) [[self delegate] didChangeEnabledStateForPlugin:self]; } } @end