Our application has a file format similar to the OpenDocument file format (see http://en.wikipedia.org/wiki/OpenDocument) – i.e. zipped with a manifest file, a thumbnail image, etc.
I notice that OpenOffice files have a preview image of the Open Office file as their icons, both in Windows and in Linux. Is there some way to accomplish this for our files: i.e. I want a dynamic icon based on the internal thumbnail.png?
Edit 1 Wow, thanks for all the quick answers. Thumbnailer looks great for the GNOME world. Windows I’ll be looking into those links, thanks. As for the comment question: programmatically OR via our installer.
Edit 2 Oh, forgot Mac. How about on the Mac? (Sorry Mac lovers!) Also are there any links or info for how OpenOffice does their IconHandler stuff – since ours would be very similar?
Windows
What you need is an Icon Handler, also known as a Thumbnail Handler. Here is an example written as an active x control.
Another resource is to look up Property Handlers, which should also point to you to the latest and greatest way of having dynamic meta data handled correctly in windows.
These are dynamic solutions – they aren’t needed if you just want an icon associated with all your files – they are only used when you want windows explorer to display an icon based on what’s in the file, not just the extension, and when the file changes the icon is updated to reflect the changes. It doesn’t have to be an image of the file itself, either, the thumbnail handler can generate any image based on the file contents.
The property handler updates other metadata, such as song or video length, so you can use all the metadata Windows Explorer supports.
Regarding MAC support, this page says, ‘The Mac and Windows operating systems have different methods of enabling this type of thumbnail, and in the case of the Mac OS, this support has been inconsistent from version to version so it hasn’t been pursued [for Adobe InDesign].’
OS X
Icons for Mac OSX are determined by the Launch Services Database. However, it refers to a static icon file for all files handled by a registered application (it’s not based on extension – each file has meta data attached that determines the application to which it belongs, although extensions give hints when the meta data doesn’t exist, such as getting the file from a different OS or file system)
It appears that the dynamic icon functionality in OSX is provided by Finder, but searches aren’t bringing up any easy pointers in this direction. Since Finder keeps changing over time, I can see why this target is hard to hit…
Gnome
For Gnome you use a thumbnailer. (thanks Dorward)
This is an extraordinarily simple program you write, which has 3 command line arguments:
I wish all systems were this simple. On the other hand this doesn’t support animation and a few other features that are provided by more difficult to implement plugins on other systems.
KDE
I’m a bit uncertain, but there are a few pointers that should get you started. First is that Konqueror is the file manager and displays the icons – it supports dynamic icons for some inbuilt types, but I don’t know if these are hardcoded, or plugins you can write. Check out the Embedded Components Tutorial for a starting point.
There’s a new (ish?) feature (or planned feature…) called Plasma which has a great deal to do with icons and icon functionality. Check out this announcment and this initial implementation.
You may need to dig into the source of Konqueror and check out how they did this for text files and others already implemented.
-Adam