<div>Hello,</div><div><br></div><div>I am writing to inquire into the inclusion of QuickLook bundles into MonoMac apps.</div><div><br></div><div>QuickLook bundles are little plugins loaded by the Quick Look daemon in OS X to generate thumbnails and previews of documents. The are little Mach-O executables that implement 4 functions. These functions are supposed to be written in a re-entrant fashion since they will be used over and over on possibly 1 thread. (This behavior can be prevented, but it would be best if we support it.)</div>
<div><br></div><div>Thread safety: <a href="http://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/Quicklook_Programming_Guide/Articles/QLImplementationOverview.html%23//apple_ref/doc/uid/TP40005020-CH6-SW1">http://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/Quicklook_Programming_Guide/Articles/QLImplementationOverview.html%23//apple_ref/doc/uid/TP40005020-CH6-SW1</a></div>
<div><br></div><div>It would be a wonderful dream world if I could create an assembly that contains a class that implements those 4 functions and have that packaged up into a bundle and included in my MonoMac app.</div><div>
<br></div><div>Any thoughts on how much work it would be to create such a packager?</div><div><br></div><div>Below are some notes I gathered while looking into what exactly the generator bundle is composed of.</div><div><br>
</div><div><br></div><div><div>Create Quick Look Plug-in</div><div>=========================</div><div>1. Xcode -&gt; New Project -&gt; System Plug-in -&gt; Quick Look Plug-in</div><div>2. Name it &quot;Alpha&quot;</div><div>
<br></div><div><br></div><div>Output</div><div>======</div><div><br></div><div><a href="http://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/Quicklook_Programming_Guide/Articles/QLProjectConfig.html%23//apple_ref/doc/uid/TP40005020-CH5-SW7">http://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/Quicklook_Programming_Guide/Articles/QLProjectConfig.html%23//apple_ref/doc/uid/TP40005020-CH5-SW7</a></div>
<div><br></div><div>Alpha.qlgenerator</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>Contents</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>Info.plist</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>MacOS</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>Alpha</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>Resources</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>English.lproj</div>
<div><span class="Apple-tab-span" style="white-space:pre">                        </span>InfoPlist.strings</div><div><br></div><div><br></div><div>Alpha</div><div>=====</div><div><br></div><div>Architectures:          Standard (32/64-bit Universal)</div>
<div>Base SDK:               Mac OS X 10.6</div><div>Valid Architectures:    i386 ppc ppc64 ppc7400 ppc970 x86_64</div><div><br></div><div>File Type: MH_BUNDLE</div><div>Flags: MH_NOUNDEFS | MH_DYLDLINK | MH_TWOLEVEL</div>
<div><br></div><div>Implements the following functions:</div><div><br></div><div>OSStatus GeneratePreviewForURL(void *thisInterface, QLPreviewRequestRef preview, CFURLRef url, CFStringRef contentTypeUTI, CFDictionaryRef options)</div>
<div>{</div><div>    return noErr;</div><div>}</div><div><br></div><div>void CancelPreviewGeneration(void* thisInterface, QLPreviewRequestRef preview)</div><div>{</div><div>}</div><div><br></div><div>OSStatus GenerateThumbnailForURL(void *thisInterface, QLThumbnailRequestRef thumbnail, CFURLRef url, CFStringRef contentTypeUTI, CFDictionaryRef options, CGSize maxSize)</div>
<div>{</div><div>    return noErr;</div><div>}</div><div><br></div><div>void CancelThumbnailGeneration(void* thisInterface, QLThumbnailRequestRef thumbnail)</div><div>{</div><div>}</div><div><br></div><div><br></div><div>
Installation</div><div>============</div><div><br></div><div>You can store a Quick Look generator in an application bundle (in MyApp.app/Contents/Library/QuickLook/) or in one of the standard file-system locations:</div><div>
<br></div><div>* ~/Library/QuickLook—third party generators, accessible only to logged-in user</div><div>* /Library/QuickLook—third party generators, accessible to all users of the system</div><div>* /System/Library/QuickLook—Apple-provided generators, accessible to all users of the system</div>
</div><div><br></div><div><br></div><div><br></div><div><br></div>