Extend iStumbler by writing plugins!
iStumbler now allows you to create plugins to enable other network discovery and management functions. Plugins for GPS, Mapping and Bluetooth are under development, download the iStumbler Plugin SDK and get started today!
/*
The ISPlugin protocol supports additions to the source list in iStumbler.
Plugins should use the default NSNotificationCenter for inter-plugin
communications. iStumbler provides a global slider notification and will
listen for notifications to update the status or user interface.
The lifespan of a plugin.
When iStumbler is launched the ISPluginManager scans for plugins bundles in
all the usual places. As it finds the bundles it loads their primary classes
and caches them in an array.
Each class has it's initPlugin method called with the bundle it was loaded
from for convenience. The plugin may start a thread or perform any other
initialization at this stage.
Once the init has completed an instance of the plugin is created. That
instance is used by iStumbler for the duration of it's run. The plugin
instance provides the application with the following information:
plugin icon 16x16 icon for the list
plugin name the name to display in the list
plugin toolbar toolbar to display
plugin view view for the main window
plugin status status to display in the main window
preferences view for the preferences
preferences icon 32x32 icon for the preferences
inspector view for the inspector icon 24x24 icon for the inspector
These methods will be called every time the application needs them, in
whatever order we want. Once the application is ready to get rid of the
plugin, typically it is about to quit it will release the plugin instances
and then call the stopPlugin method on the class so that it can stop
whatever threads it is running, close files and release memory.
*/
@protocol ISPlugin
/* Called by the IStumberController when the plugin is loaded, the plugins
bundle object is passed for convenance. The plugin should return true
if it's ready to have an instance created and false if it cannot. */
+ (BOOL)initPlugin:(NSBundle*) bundle;
/* Create a new instance of this plugin with the object as a parameter.
May be called multiple times for multiple instances of a plugin object. */
+ (NSObject*)createPlugin:(id) environment;
/* Called by the ISPluginManager when the plugin is unloaded. Close
your files, stop your threads and let those objects go free. */
+ (void)stopPlugin;
/* Returns a string which we can display in the window title and
in the plugin list and menu. */
- (NSString*) pluginName;
/* Returns a string which has the plugin's info, such as copy
right and legal notices for or display in the info window. */
- (NSString*) pluginInfo;
/* Returns a string with the plugin's current status */
- (NSString*) pluginStatus;
/* Returns the entire scroll view for the plugin, this view is placed in the main
window of iStumbler. */
- (NSView*) pluginView;
/* Returns an icon for the plugin. The image may be any size but will be scaled
to 16X16 for the outline view, so be ready for that. */
- (NSImage*) pluginIcon;
/* Returns the NSToolbar to display while the plugin is selected. */
- (NSToolbar*) pluginToolbar;
/* Returns an NSMenu for the plugin to be grafted into the applications menu
when the plugin is selected and a sub-menu of the dock menu while it's loaded*/
- (NSMenu*) pluginMenu;
/* Returns the NSView to show in the prefrences window. */
- (NSView*) pluginPrefrences;
/* Returns an icon for the preferences toolbar */
- (NSImage*) pluginPrefrencesIcon;
/* Returns the NSView to show in the inspector panel */
- (NSView*) pluginInspector;
/* Returns an icon for the inspector toolbar */
- (NSImage*) pluginInspectorIcon;
@end