* The main data structure (not accessible by bundle) ----------- Category --------------- Item ------------------------- NSArray - NSDictionary key: @"name" (NSString) key: @"items" (NSArray) - NSDictionary key: @"name" (NSString ) key: @"location" (NSString) key: @"bundle" (NSString) * The extension of bundle should be "toolbox". * Each bundle can have info panel as long as it contains the AppNameInfo.plist file. Read ItemInfoPanel.h for entries of plist file. * Each bundle can have help as long as it contains the AppNameHelp.rtf file. # Each bundle can have default items which can be import by users. Defaults items are in the AppNameDefaults.plist. The data sturcture is NSArray - NSDictionary key: @"name" (NSString) key: @"location" (NSString) key: @"description" (NSString); * Check any built-in bundle as example. * Tools are not intended to open/save files frequently. It'll get the path of file/url when instantiated. So open file (if needed) when instantiated, and save file when dealloc. * Tools can have chance to reload data when user choose to do that. * For importing from files, the format should be the same as the object of "items" in main data structure. It is designed for importing items from other users.