Hi, The task of organizing resources seems to be very similar to what has already been in implemented in Gimp recently (GSoC project "Tagging of Gimp Resources"). As it was mentioned, there are various ways to organize resources, such as folders. Tags have been chosen in Gimp as they allow to assign each item to multiple categories and are easily understood by users.
Some aspects of Gimp Resource Tagging implementation: * Resource files (brushes, patterns, etc which are tagged) are not changed themselves, but all tags assigned to resources are stored in central place, tag cache file. Because files can be moved during sessions, tagging system has ability to detect where tagged files were moved (using hash value) and update cache with the new location of resource file. There is a class for the task (GimpTagCache), which can load and save tags for resource collections. * Implementation is not limited to certain items (class hierarchy). Any class implementing GimpTaggedInterface can be integrated into tagging system. * Special GUI widgets have been developed to query and assign tags (GimpComboTagEntry, GimpTagEntry). They support special autocompletion, atomic tags (once tag is entered, it becomes a single unit, as in some email application when entering email), picking tags from a menu-like list, etc. These widgets have been developed together with usability expert, therefore they solve a lot of usability problems related with resource organization GUI. More technical information about tagging implementation in Gimp can be found in soc-2008-tagging branch [1], file devel-docs/tagging.txt (tag implementation overview) and also Gimp app reference manual. Should you decide to implement something similar, I could answer questions about the implementation decisions and how some parts can be reused in more detail. [1] svn://svn.gnome.org/svn/gimp/branches/soc-2008-tagging _______________________________________________ CREATE mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/create
