#import #import "ResKnifeResourceProtocol.h" /*! @protocol ResKnifePluginProtocol @abstract Your plug-in's principal class must implement initWithResource: or initWithResources:, all other methods are optional, and thus declared in ResKnifeInformalPluginProtocol. */ @protocol ResKnifePluginProtocol /*! @method initWithResource: @abstract Your plug-in is inited with this call. This allows immediate access to the resource you are about to edit, and with this information you can set up different windows, etc. */ - (id)initWithResource:(id )inResource; @end /*! @protocol ResKnifeTemplatePluginProtocol @abstract If you're implementing a template editor, you should implement this extended protocol instead of the regular plugin protocol. */ @protocol ResKnifeTemplatePluginProtocol /*! @method initWithResource: @abstract Your template editor is inited with this call. The first argument is the resource to edit, the second is the TMPL resource that defines the data structure. */ - (id)initWithResources:(id )inResource, ...; @end /*! @protocol ResKnifeInformalPluginProtocol @abstract Optional methods your plugin may implement to provide additional functionality. @author Uli Kusterer @change 2005-10-03 NGS: Added UTI, MIME Type and OSType methods, renamed extensionForFileExport: to filenameExtensionForFileExport: */ @interface ResKnifeInformalPluginProtocol /*! @method dataForFileExport: @abstract Return the data to be saved to disk when your resource is exported to a flat file. By default the host application uses the raw resource data if you don't implement this. The idea is that this export function is non-lossy, i.e. only override this if there is a format that is a 100% equivalent to your data. */ + (NSData *)dataForFileExport:(id )resource; /* Your plug should implement one of the following four methods. * They are looked for in the order shown below. Only implement one. */ /*! @method UTIForFileExport: @abstract Regardless of whether you implement dataForFileExport, you should implement this and return the proper Uniform Type Identifier for your file. */ + (NSString *)UTIForFileExport:(id )resource; /*! @method MIMETypeForFileExport: @abstract If you do not know the UTI for your file type, but it has a known MIME Type (e.g. image/svg), you can return that here. */ + (NSString *)MIMETypeForFileExport:(id )resource; /*! @method OSTypeForFileExport: @abstract If your data has a classical Macintosh OSType code, you can return that here. */ + (NSString *)OSTypeForFileExport:(id )resource; /*! @method filenameExtensionForFileExport: @abstract As a last resort, you can return here the filename extension for your resource type. By default the host application substitutes the resource type if you do not implement this. */ + (NSString *)filenameExtensionForFileExport:(id )resource; @end