[CREATE] Categorizing resources

Aurimas Juška aurimas.juska at gmail.com
Wed Sep 3 14:13:35 PDT 2008


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


More information about the CREATE mailing list