-
Notifications
You must be signed in to change notification settings - Fork 2
/
ComponentManager.h
87 lines (74 loc) · 2.88 KB
/
ComponentManager.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/////////////////////////////////////////////////////////////////////////
// File: $URL$
// Module: Loads Components at runtime.
// Part of: VitaminSEE
//
// ID: $Id: ApplicationController.m 123 2005-04-18 00:21:02Z elliot $
// Revision: $Revision$
// Last edited: $Date$
// Author: $Author$
// Copyright: (c) 2005 Elliot Glaysher
// Created: 9/4/05
//
/////////////////////////////////////////////////////////////////////////
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
////////////////////////////////////////////////////////////////////////
#import <Cocoa/Cocoa.h>
#import "FileList.h"
#import "CurrentFilePlugin.h"
// The ComponentManager keeps track of plugins that can be loaded. These plugins
// are scaned for at startup, but aren't actually loaded until needed.
// Each Plugin Bundle MUST define the following keys in its Info.plist file:
//
// <key>VSPluginType</key>
// <string>[FileList|CurrentFile|InternalUse]</string>
// <key>VSPluginName</key>
// <string>Plugin Name</string>
//
// For FileList plugins, the following must be defined:
// <key>VSFLMenuName</key>
// <string>as Icons</string>
// For CurrentFile plugins, the following must be defined:
// <key>VSCFMenuItems</key>
// <array>
// <dict>
// <key>Item</key>
// <string>Picture Info</string>
// <key>Location</key>
// <string>Window</string>
// <key>Action</key>
// <string>pictureInfo:</string>
// </dict>
// [You may add as many menu items as you think you need]
// </array>
// InternalUse plugins signal plugins that I use to provide features of
// VitaminSEE. You can go ahead and mark your plugins as InteralUse, but they
// will just be ignored.
@interface ComponentManager : NSObject {
}
+(void)scanDirectoryForPlugins:(NSString*)path;
+(id<FileListFactory>)getFileListPluginNamed:(NSString*)name;
+(id<CurrentFilePlugin>)getCurrentFilePluginNamed:(NSString*)name;
+(id)getInteranlComponentNamed:(NSString*)name;
+(id)returnPluginNamed:(NSString*)name
fromDictionary:(NSDictionary*)dictionary
protocol:(Protocol*)protocol
firstTime:(BOOL*)firstTime;
+(NSArray*)getFileListsToDisplayInMenu;
+(NSArray*)getCurrentFilePluginsInViewMenu;
+(NSArray*)getLoadedCurrentFilePlugins;
@end