[Drawkit] any help with read/write
James Maxwell
jbmaxwell at rubato-music.com
Fri Aug 8 13:23:42 PDT 2008
This is great! Thanks, Brad.
I'll look into this over the next couple of days.
cheers,
J.
On 8-Aug-08, at 8:06 AM, Brad Larson wrote:
>
> On Aug 7, 2008, at 9:50 PM, James Maxwell wrote:
>
>> In particular, I'm wondering how to get a DKDrawingDocument-based
>> app to save to my own file type, extension, and all that. I have it
>> working, for now, just using the defaults of "Drawing" and
>> ".drawing", but I'd like to get my own file type and extension
>> implemented.
>>
>> A quick list of steps would be a huge help.
>>
>
> First, you'll want to create a category on DKDrawing that will
> handle your custom file format. Within that category, create two
> methods, a class method that takes in an NSData object and returns a
> new DKDrawing, and an instance method that returns an NSData
> object. The first is your loading method, the second your saving one.
>
> Next, you'll need to set up the file extension or UTI to use in your
> application's Info.plist. To set up a simple file extension, go to
> your Xcode project, click on the Targets tab, click on your
> application's target, and click the Get Info button. In the
> inspector, go to the Properties tab and add a new document type.
> Give it a name (for example "Pattern"), leave the UTI field blank,
> set the appropriate extension (or extensions) for this file format,
> set the class to be your new custom document class, give it an icon,
> and set the type to Editor or Viewer as appropriate.
>
> UTIs are a little more involved, and require you to edit the
> Info.plist. Find the Info.plist in your source files, right-click
> on it, and choose to open it as a plain-text file. You'll need to
> add XML to export your UTI definition similar to the following:
>
> <key>UTExportedTypeDeclarations</key>
> <array>
> <dict>
> <key>UTTypeConformsTo</key>
> <array>
> <string>public.xml</string>
> </array>
> <key>UTTypeDescription</key>
> <string>SonoPlot's proprietary XML pattern file type</string>
> <key>UTTypeIdentifier</key>
> <string>com.sonoplot.pattern</string>
> <key>UTTypeTagSpecification</key>
> <dict>
> <key>public.filename-extension</key>
> <array>
> <string>pattern</string>
> </array>
> </dict>
> </dict>
> </array>
>
> This example is for our custom XML-based file format. Repeat the
> same steps as for setting up a new file extension type, only this
> time fill in the UTI using the one you exported in your Info.plist.
> Unfortunately, UTIs don't always work the way you want, such as when
> another application on your system has claimed the same file
> extension as your application.
>
> Finally, you'll want to call the DKDrawingDocument class methods
> bindFileExportType:toSelector: and bindFileImportType:toSelector: to
> associate your file loading and saving methods from your custom
> category with the new filetype or UTI. For example, I do
>
> NSString* kSPPatternDocumentType = @"Pattern";
> NSString* kSPPatternDocumentUTI = @"com.sonoplot.pattern";
>
> [[self class] bindFileExportType:kSPPatternDocumentType
> toSelector:@selector(dataForPattern)];
> [[self class] bindFileExportType:kSPPatternDocumentUTI
> toSelector:@selector(dataForPattern)];
> [[self class] bindFileImportType:kSPPatternDocumentType
> toSelector:@selector(drawingWithPattern:)];
> [[self class] bindFileImportType:kSPPatternDocumentUTI
> toSelector:@selector(drawingWithPattern:)];
>
> in my document's init: method. I'm going to move that out of there,
> because it only needs to be called once on the start of the program,
> not with each new document.
>
> For a working example of this, I direct you to the code for the beta
> of SonoDraw that we have out there. I posted this earlier, but I
> can repeat:
>
> The source code is available for download from
> http://www.sonoplot.com/sites/default/files/SonoDraw/SonoDrawBeta1.zip
> and a compiled binary can be downloaded from
> http://www.sonoplot.com/sites/default/files/SonoDraw/SonoDrawBeta1-Binary.zip
>
> Example .pattern files that you can load with the software are also
> available at
> http://www.sonoplot.com/sites/default/files/SonoDraw/
> SamplePatterns.zip
>
> I'm getting close to releasing the final version of this, and I'll
> be sure to post that when it's done.
> ______________________
> Brad Larson
> SonoPlot, Inc.
> 3030 Laura Lane, Suite 120
> Middleton, WI 53562
>
>
>
> _______________________________________________
> Drawkit mailing list
> Drawkit at lists.apptree.net
> http://lists.apptree.net/listinfo.cgi/drawkit-apptree.net
More information about the Drawkit
mailing list