feature: Set exclusive layer visibility within groups
This discussion is connected to the gimp-developer-list.gnome.org mailing list which is provided by the GIMP developers and not related to gimpusers.com.
This is a read-only list on gimpusers.com so this discussion thread is read-only, too.
feature: Set exclusive layer visibility within groups | Richard Gitschlag | 23 May 05:23 |
feature: Set exclusive layer visibility within groups | gfxuser | 23 May 16:04 |
feature: Set exclusive layer visibility within groups | Richard Gitschlag | 24 May 15:25 |
feature: Set exclusive layer visibility within groups | gfxuser | 26 May 09:21 |
feature: Set exclusive layer visibility within groups | Richard Gitschlag | 26 May 16:59 |
feature: Set exclusive layer visibility within groups | Joao S. O. Bueno | 27 May 12:55 |
feature: Set exclusive layer visibility within groups | gfxuser | 27 May 18:15 |
feature: Set exclusive layer visibility within groups | Richard Gitschlag | 27 May 20:27 |
feature: Set exclusive layer visibility within groups | gfxuser | 04 Jun 18:48 |
feature: Set exclusive layer visibility within groups | Richard Gitschlag | 05 Jun 12:04 |
feature: Set exclusive layer visibility within groups | Tobias Jakobs | 05 Jun 12:22 |
feature: Set exclusive layer visibility within groups
I have a little gripe about setting "exclusive visibility" (shift+click a layer's visibility icon) in an image. Now that we have layer groups in GIMP 2.8, it only functions on the "top level" of the layer stack -- it seems impossible to toggle exclusive visibility inside a group.
Since a layer group can itself be a complex combination of layers (apparently including other layer groups!), we should have some ability to toggle exclusive visibility with respect to other members in that group only.
For example, the current behavior could be expanded from a simple on/off toggle to an iterative loop somewhat like this:
1 - When toggling exclusive visibility, first note the full path from image root to the selected item (inclusively) and begin iterating through it. 2 - IF at any point along this path there are any visible sibling items, THEN hide them, leaving only the selected item visible, and break and return. 3 - Otherwise, if we have traversed the entire path without finding any visible siblings, then selected item is the only visible item in the whole image. (Whether the selected item is itself a layer or group is irrelevant.) Therefore, traverse the selected path again and ensure that any and all sibling items at any point along the path are made visible.
This would establish a toggle chain of all items -> selected group -> (subgroup, etc.) -> selected item in group -> all items.
It could also be reversed; all items -> selected item in group -> selected group -> (parent group, etc.) -> all items, but I'm not exactly sure how that logic would pan out.
Note that in the simple case of an image with no layer groups, this quickly reduces to the current behavior of all items -> selected layer -> all items. (This also applies when setting exclusive visibility on a top-level group, because in that case we DO want to act on the group as a whole).
-- Stratadrake
strata_ranger@hotmail.com
--------------------
Numbers may not lie, but neither do they tell the whole truth.
feature: Set exclusive layer visibility within groups
Richard Gitschlag wrote:
I have a little gripe about setting "exclusive visibility" (shift+click a layer's visibility icon) in an image. Now that we have layer groups in GIMP 2.8, it only functions on the "top level" of the layer stack -- it seems impossible to toggle exclusive visibility inside a group.
Since a layer group can itself be a complex combination of layers (apparently including other layer groups!), we should have some ability to toggle exclusive visibility with respect to other members in that group only.
You're right.
I'm also missing two other possibilities in changing layers' visibility:
1) Only one layer can be selected at one time. It can be useful to make
just a few layers visible while hiding the others. Could it be made
possible to multiselect layers?
2) Shift-clicking on a layers visibility icon toggles between the state
of 'exclusive visibility' and the state 'all layers are visible', no
matter whether all layers were visible before.
An example:
Layer L1 visible, L2 hidden, L3 hidden, L4 visible. Make L2 visible
exclusively, shift-click on L2's eye again -> L1 to L4 will become
visible, including L3 which was hidden before. It's annoying to set the
previous visibility settings manually again, especially for users who
have to handle a lot of layers.
This should be changed to restore the previous visibility settings, for
instance to the following state chain:
Exclusive visibility -> Restore previous visibility -> Exclusive
visibility ->.....
A second state chain could be added, which resembles the current
behaviour. Perhaps this could be bound to the Shift + double click on
the layers eye.
Both chains can be complemented with the aforementioned 'visibility in
groups' functionality: Exclusive visibility in group-> ... in the
surrounding groups -> ... in the whole layer stack-> Restore previous
visibility in the whole layer stack-> ... in the surrounding groups
->... in the current group -> Exclusive visibility in group->.....
and
Show exclusively in the whole layer stack -> Show all layers in the
whole layer stack -> Show exclusively in the whole layer stack -> ...
Best regards,
grafxuser
feature: Set exclusive layer visibility within groups
Date: Wed, 23 May 2012 18:04:49 +0200 From: gfx.user@online.de
To: gimp-developer-list@gnome.org
Subject: Re: [Gimp-developer] feature: Set exclusive layer visibility within groupsRichard Gitschlag wrote:
I have a little gripe about setting "exclusive visibility" (shift+click a layer's visibility icon) in an image. Now that we have layer groups in GIMP 2.8, it only functions on the "top level" of the layer stack -- it seems impossible to toggle exclusive visibility inside a group.
Since a layer group can itself be a complex combination of layers (apparently including other layer groups!), we should have some ability to toggle exclusive visibility with respect to other members in that group only.
You're right.
I'm also missing two other possibilities in changing layers' visibility: 1) Only one layer can be selected at one time. It can be useful to make just a few layers visible while hiding the others. Could it be made possible to multiselect layers?
That is an unrelated question. As far as I know GIMP only allows one 'active' layer at a time because that is the surface that any drawing operations are applied to.
2) Shift-clicking on a layers visibility icon toggles between the state of 'exclusive visibility' and the state 'all layers are visible', no matter whether all layers were visible before.
grafxuser
On further reflection I agree - if you Shift+click on a layer within a group it should toggle between all items visible and THAT LAYER (regardless of location within the overall layer tree) exclusively. If you want to do this for an entire layer group as a whole, you Shift+click on the layer group. Simple!
Besides, the behavior should be that your first Shift+clicking on a layer should hide all layers except that one, but I'm having difficulty figuring out the conceptual logic of making it unhide the parent layers (if any) one at a time -- too difficult to differentiate between that state and "all layers visible" state. After all, in the current behavior, if an image contains multiple layers but only some are visible, the first Shift+Click is to make only the selected layer visible. Only when the selected layer is the sole visible item does it restore visibility to all layers.
So a better loop that preserves the two-state "all items -> selected layer only -> all items" click chain, but also supports layers within groups, would look like:
1 - Note the full layer path from image root to the selected item (excluding the selected item). It does not matter whether the selected item is itself a layer or group. (Note that if we clicked a top-level item, the path will have only contain one entry: the image root itself.) 2 - Begin iterating through the path starting at the top-level of the layer tree. 3 - At each node in the path, retrieve a list of all child nodes (layers or groups) and note which one actually belongs to the selected path. IF that item is not visible, OR if any other (sibling) items are visible, THEN the action to take is "set exclusive visibility = true"; we can break from the loop and proceed directly to step 6. 4 - Repeat step 3 until we have reached the end of the path. 5 - If we do reach the end of the path, this means the selected item is the only thing visible in the entire image (whether or not it is a group containing visible sublayers is irrelevant), and the action to take is "set exclusive visibility = false". 6 - Now that we've determined what action we are performing, iterate through the path a second time and apply visibility accordingly. If the child of a node belongs to the selected path, its visibility becomes true. Otherwise, it is only a sibling to such a node and its visibility becomes FALSE (show selected item only) or TRUE (show all items).
Also, as you hinted above a way to toggle exclusive visibility with respect to the current item's group WITHOUT evaluating or affecting other layers higher up in the layer tree can also be useful. Maybe a Shift+Alt or Shift+Ctrl modifier for this purpose. The same logic above applies, except that instead of iterating the fullpath from top level to selected item, we'd be evaluating a partial path using the item's parent group only.
-- Stratadrake
strata_ranger@hotmail.com
--------------------
Numbers may not lie, but neither do they tell the whole truth.
feature: Set exclusive layer visibility within groups
Richard Gitschlag wrote:
I'm also missing two other possibilities in changing layers' visibility: 1) Only one layer can be selected at one time. It can be useful to make just a few layers visible while hiding the others. Could it be made possible to multiselect layers?
That is an unrelated question. As far as I know GIMP only allows one 'active' layer at a time because that is the surface that any drawing operations are applied to.
As long as drawing operations are the only operations in GIMP, this would be a reason. But there are other scenarios where a multiselection of layers will be useful: merging a few layers down to one without having to affect visibility of the other layers, copying some layers to another image, moving some layers into a layer group and so on. Yes it's a bit unrelated to your original problem. Maybe a topic for another thread if it's of enough interest.
It's a bit hard to understand what you mean exactly in your further writing. Can you write down a state chain, please?
BTW: AFAIK layer groups are still work in progress. At least layer masks are postponed for a later version. Filters don't work (yet) on layer groups, too (see bug #676768). Are there some UI specs for the handling of layers and layer groups? Maybe they answer all our questions and suggestions here. I haven't found them on gui.gimp.org, but perhaps I searched in the wrong place.
Best regards,
grafxuser
feature: Set exclusive layer visibility within groups
Date: Sat, 26 May 2012 11:21:35 +0200 From: gfx.user@online.de
To: gimp-developer-list@gnome.org
Subject: Re: [Gimp-developer] feature: Set exclusive layer visibility within groupsIt's a bit hard to understand what you mean exactly in your further writing. Can you write down a state chain, please?
Give an example? Sure. Let's say I have an image with the following layer tree:
* - G1
* - - L1
* - - G2
* - - - L2
* - - - L3
* - L4
* - G3
* - - L5
* - - L6
If I Shift+Click on L3, GIMP should toggle between "all items" and "ONLY item L3". Specifically: 1 - The path to the clicked item in this case is "G1 -> G2 -> L3". Therefore, G1, G2, and L3 shall all be made visible. 2 - All direct siblings to any of G1, G2, or L3 shall be made non-visible. This means: 3a - On the top level, G1's siblings are L4 and G3. L4 and G3 shall be hidden. 3b - G2 has one sibling: L1. L1 shall be hidden. 3c - L3 has one sibling: L2. L2 shall be hidden. 4 - L5 and L6, the descendants of G3, are not relevant and shall not be affected -- we already hid G3 and that is sufficient. 5 - L3 is now the only visible item in the entire image. 6 - If I Shift+Click again, steps 2 and 3 are repeated, but with siblings made visible.
Or say I Shift+Click on G2, GIMP should toggle between "all items" and "ONLY item G2": 1 - The path in this case is just "G1 -> G2". Even though G2 is a group containing child items (L2 and L3), those items are NOT of interest right now because I am acting on G2 as a whole. 2 - G1 and G2 shall both be made visible. 3 - Any siblings to G1 or G2 shall be made hidden: 3a - L4 and G3 are siblings to G1; they shall be hidden. 3b - L2 is sibling to G2; it shall be hidden. 4 - G2 is now the only visible item in the entire image. 5 - If I Shift+Click again, steps 2 and 3 are repeated, but with all siblings made visible.
Note what happens if I click on a top-level item, say, L4: 1 - The path is now simply "L4". L4 shall be the only item made visible. 2 - All direct siblings of L4 (G1 and G3) shall be made hidden. 3 - Any items inside G1 and G3 are NOT of interest and shall NOT be individually affected. 4 - L4 is now the only item actually visible in the entire image. 5 - If I Shift+Click again, repeat step 2 but with siblings made visible.
This last case neatly duplicates our current behavior in 2.8.0 by affecting only top-level layers.
-- Stratadrake
strata_ranger@hotmail.com
--------------------
Numbers may not lie, but neither do they tell the whole truth.
feature: Set exclusive layer visibility within groups
Ok -
we it can be seen that there are a couple of desired/needed visibility
features when
group layers are in the mix.
Since any native changes to existing behavior could only come in gimp 2.10 (and only them we would have the feedback of lots o people just as we are having now with 2.8) - this is what could be done now:
We document desired perceived behaviors for toggling visibility, I write a couple of Python scripts to implement those - we test it carefully (with input from the UI team), and the optimal settings for those could be consolidated in gimp 2.10 .
The major drawback being that these scripts can be called by a one-key shortcut, but not assigned to be triggered by clicking/shift clicking on the layers or eye-icons, or other UI parts. Once there are clear and well defined preferred behaviors, they could be made into the core bypassing this limitation.
So, we could use a wiki page somewhere for getting this started. Like here:
http://wiki.gimp.org/index.php/Specs/Visibility
On 26 May 2012 13:59, Richard Gitschlag wrote:
Date: Sat, 26 May 2012 11:21:35 +0200 From: gfx.user@online.de
To: gimp-developer-list@gnome.org
Subject: Re: [Gimp-developer] feature: Set exclusive layer visibility within groupsIt's a bit hard to understand what you mean exactly in your further writing. Can you write down a state chain, please?
Give an example? Sure. Let's say I have an image with the following layer tree:
(...)
feature: Set exclusive layer visibility within groups
Joao S. O. Bueno wrote:
Ok -
we it can be seen that there are a couple of desired/needed visibility features when
group layers are in the mix.Since any native changes to existing behavior could only come in gimp 2.10 (and only them we would have the feedback of lots o people just as we are having now with 2.8) - this is what could be done now:
We document desired perceived behaviors for toggling visibility, I write a couple of Python scripts to implement those - we test it carefully (with input from the UI team), and the optimal settings for those could be consolidated in gimp 2.10 .
The major drawback being that these scripts can be called by a one-key shortcut, but not assigned to be triggered by clicking/shift clicking on the layers or eye-icons, or other UI parts. Once there are clear and well defined preferred behaviors, they could be made into the core bypassing this limitation.
So, we could use a wiki page somewhere for getting this started. Like here:
This is a good idea and I hope Richard and Peter agree, too.
Best regards,
grafxuser
feature: Set exclusive layer visibility within groups
Date: Sun, 27 May 2012 20:15:54 +0200 From: gfx.user@online.de
To: gimp-developer-list@gnome.org
Subject: Re: [Gimp-developer] feature: Set exclusive layer visibility within groupsJoao S. O. Bueno wrote:
Ok -
we it can be seen that there are a couple of desired/needed visibility features when group layers are in the mix.Since any native changes to existing behavior could only come in gimp 2.10 (and only them we would have the feedback of lots o people just as we are having now with 2.8) - this is what could be done now:
[ ... ]
This is a good idea and I hope Richard and Peter agree, too.
Best regards,
grafxuser gimp-developer-list mailing list
gimp-developer-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gimp-developer-list
I have always held some criticism for the dearth of even minor features/enhancements in a given branch, but that aside, yes I agree.
Now if all that's needed to contribute is registering on the wiki (how many GIMP wikis are there, btw?), I can at least give that page a copypasta of the suggested logic, maybe even some mockup illustrations.
-- Stratadrake
strata_ranger@hotmail.com
--------------------
Numbers may not lie, but neither do they tell the whole truth.
feature: Set exclusive layer visibility within groups
Joao S. O. Bueno wrote:
So, we could use a wiki page somewhere for getting this started. Like here:
Hi,
I posted descriptions of the current behaviour and the proposals in the wiki. No it's on you ;-)
Best regards,
grafxuser
feature: Set exclusive layer visibility within groups
Date: Mon, 4 Jun 2012 20:48:40 +0200 From: gfx.user@online.de
To: gimp-developer-list@gnome.org
Subject: Re: [Gimp-developer] feature: Set exclusive layer visibility within groupsHi,
I posted descriptions of the current behaviour and the proposals in the wiki. Now it's on you ;-)
Best regards,
grafxuser
I cannot seem to register a username on the wiki (or edit the page without one). The "Login / create account" message only shows the Login panel, not showing the registration panel.
-- Stratadrake
strata_ranger@hotmail.com
--------------------
Numbers may not lie, but neither do they tell the whole truth.
feature: Set exclusive layer visibility within groups
Hello Richard,
have a look at the Startpage:
"How do I get a user account? Contact LightningIsMyName at the GIMP IRC (irc://irc.gimp.org#gimp) or by email (LightningIsMyName at gmail dot com). He is available on IRC usually several hours each day :) Only if not possible, try to contact Alexia_Death on the GIMP IRC. "
Regards, Tobias
On Tue, Jun 5, 2012 at 2:04 PM, Richard Gitschlag wrote:
Date: Mon, 4 Jun 2012 20:48:40 +0200
From: gfx.user@online.de
To: gimp-developer-list@gnome.org
Subject: Re: [Gimp-developer] feature: Set exclusive layer visibility within groupsHi,
I posted descriptions of the current behaviour and the proposals in the wiki. Now it's on you ;-)
Best regards,
grafxuser
I cannot seem to register a username on the wiki (or edit the page without one). The "Login / create account" message only shows the Login panel, not showing the registration panel.
-- Stratadrake strata_ranger@hotmail.com
--------------------
Numbers may not lie, but neither do they tell the whole truth._______________________________________________ gimp-developer-list mailing list
gimp-developer-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gimp-developer-list
gimp-developer-list mailing list gimp-developer-list@gnome.org https://mail.gnome.org/mailman/listinfo/gimp-developer-list