Bug 218824 - Allow state of the tag tree to be saved
Summary: Allow state of the tag tree to be saved
Status: RESOLVED FIXED
Alias: None
Product: digikam
Classification: Applications
Component: Tags-Engine (show other bugs)
Version: 1.0.0
Platform: Ubuntu Linux
: NOR wishlist
Target Milestone: ---
Assignee: Digikam Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-12-15 19:45 UTC by DGardner
Modified: 2013-12-01 22:57 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In: 4.0.0


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description DGardner 2009-12-15 19:45:13 UTC
Version:           1.0.0-rc1 (using KDE 4.3.4)
OS:                Linux
Installed from:    Ubuntu Packages

I'd like to be able to save the expansion state of the tag tree in the
"Captions/Tags" view. I'd like to give the saved state a name for later
retrieval and store as many saved states as I want. The use case is as
follows:

When I upload a set of photographs and begin tagging them, I first expand
the tag tree (where I have about 400 tags) to expose the tags that I am
likely to use for that set of photographs. This would be much easier if
I could expand the tree to one of a number of saved states for photos
with common subject matter.

For example, if I have some photos taken at a family occasion, I would
normally expand the "Places/..." tags to show the places where members
of my family live. I would also expand the "People/Family/..." tags to
show the members of my (slightly extended) family. I want to expand
these tags and then have the option to save this tag tree state under
the name "Family Occasion". If I had been to the zoo, I might want a
different state named "Zoo Visit" where I expand the "Places/..." tags
for the local zoo and also the "Things/Animals/..." tags. Now, when I
upload a new set of images, I can either set the tree state manually,
or just select an option to restore a previously saved state.

It might also be possible to allow tags (or other items) to be omitted
from a state by allowing items to be hidden and to have the hidden
state recorded along with the expansion state. For example, when I
tag photos, I generally don't want to see "Places/Germany" or
"Places/Spain", as I only needed those tags for photos from I took on
holidays and might not have any new photos that need those tags for
quite some time. While I want to see these when filtering or searching
by tags, I do not (usually) want to see them when setting tags. I could
right-click on a tag and select "Hide" or "Hide Children" to remove them
from the tree and also right-click on a tag to "Show Children" or
"Show All" if I want them back. That would allow me to have a nice,
compact tag tree when tagging common sets of images.

To avoid clutter, it might be easiest if the whole thing was managed by
context menus. To avoid cluttering the menus, there would be a single
"View State" (or "Expansion State") option that expands as follows:

  View State ->
     Save As...
     Expand ->
        One
        All
        Children
        Descendants
     Collapse ->
        One
        All
        Children
        Descendants
     Hide ->
        One
        All
        Children
     Show ->
        All
        Children
        Descendants
     ----------
     Family Occasion ->
       Restore
       Save
       Delete
     Zoo Visit ->
       Restore
       Save
       Delete

Selecting "Save As..." would allow a new state name to be entered in a
dialog box. It would then appear in the menu.

Selecting "Expand" or "Collapse" would change the expansion state of
the tree. "One" would change the state of the selected item (the one
on which the RMB was pressed). "All" would change all nodes in the
tree. "Children" would change only the children of the current node.
"Descendants" would change all children and their children, as so on.

The "Hide" option would remove the item from the visible tree (it would
still exist) and the "Show" option would make items visible again. As
a hidden item cannot be selected, there is no "Show -> One" option.
Similarly, I cannot think of a use case for "Hide -> Descendants". A
line could be shown in the tree view to represent the position of hidden
tags, just to remind users that tags are hidden. There might also be an
option to temporarily show all tags, with the hidden ones in a different
colour while this temporary view is active.

Selecting an existing state name (they would be sorted alphabetically)
would open a further menu to allow that state to be restored, saved
(overwritten by the current state) or deleted. The latter two would be
subject to confirmation. The active state could be shown using a tick
mark beside its name. There would be no need to show its name in the
tree view or status bar.

DigiKam has lots of trees for albums, calendars, tag filters, tag
searches, tag setting, etc. The option to save the state of a tree
under a given name for later restoration could be applied to all of
these trees.

How hard can it be?
Comment 1 DGardner 2009-12-15 19:59:24 UTC
I forgot to mention that the "Collapse" and "Expand" options are
also open bugs/wishes for trees for quite some time. I just
thought it would be useful to fit them coherently into a more
comprehensive solution for managing big trees.
Comment 2 DGardner 2009-12-16 14:56:19 UTC
Sorry for harping on, but I'm offering this in the way of a sort
of requirements specification or set of use cases to make it
clear what feature I am wishing for. Hopefully, this will make it
easier for the developers to assess the request and critique it.

If I had to set priorities (according to my own biases), I would
choose them in this order:

 1. Fix the problems where the tree gets collapsed for no good
    reason. There are open bug reports for the tree collapsing
    when switching back from "Tags already assigned" and for some
    other operations. That would at least allow the current,
    manually set state to be preserved.

 2. Fix the lack of options to collapse or expand nodes in the
    trees. For example if I might have branches of my tag tree
    expanded like this:

     Places
       Australia
         Sydney
         Melbourne
       Spain
         Barcelona
         Madrid
         Seville
       Germany
         Berlin
         Munich

    Now, if I want to tag some photos that I took in Germany,
    I would like to collapse Australia and Spain to make the
    tree more compact. I would like to click on "Places" and
    choose "Collapse -> Children" to get this tree:

     Places
       Australia
       Spain
       Germany

    Then I can just expand the child tags of "Germany". Once
    there are more than about three country tags (and I have
    more than that) this is much easier than individually
    collapsing all of the country tags that are not relevant
    to my current tagging session.

 3. Allow the expanded and collapsed state of the tree to be
    saved. A first iteration might just allow one saved state.
    Later iterations might add support for named states.

 4. Support the hide/show functionality.

 5. Expand this functionality to all trees.
Comment 3 caulier.gilles 2013-12-01 22:57:07 UTC
A long long long explanation for a simple wish : "save all album tree-view state between sessions"

Multiple wishes in same bugzilla entry is a large pain to manage. This is highly prohibited !!!

The original wish from this file is implemented since a while... CLOSED...

Gilles Caulier