ZeMarmot Is Working On Searchable Layer Groups, Stored Layer Selection And Other Cool Features For GIMP
ZeMarmot is a 2D animation film project that uses free software to create animated films and other artwork made free available under the Art Libre and Creative Commons licenses. It is easy to see what software you are using daily is missing. Jehan from ZeMarmot has written code for several cool new features that make his GIMP experience better.
Jehan, a ZeMarmot member from France, has also been a major GIMP contributor since 2012. He is working on some interesting new features for the GNU Image Manipulation Program such as searchable layer groups, pattern-matching selection and stored layer selection.
None of these features have been merged into the GIMP git tree, they are all experimental features that are so far only available in the frenchman's local repository. They are interesting nevertheless, and there is fair chance that the code will end up in GIMP 3.0 or a later release.
The frenchman had this to share about the new GIMP features he has been working on in a post over at Patreon:
Lately I have been coding many GUI changes I have not pushed yet because we want to experiment further in production if the changes are suitable.
As often the code we push in public trees is the tip of the iceberg. Sometimes it represents only the finale result of days, weeks or sometimes months of experiments and code trash-and-retry.
So here are these latest experiments, especially in the item dockables (Layers, Channels and similar dockables) area:
Item Sets: base concept
If you recall, one of my annoyances about multi-selection was what to do with the linked item concept (the little chain icon next to the eye icon to transform several items together). Indeed multi-selection allows the same feature in a friendlier way.
Moreover it makes code more complicated than necessary (with many features now having to deal with the 2 types of item relations: links and selection) and more (similar yet slightly different) concepts to handle for creators themselves. Worse it made some kind of conceptual inconsistencies, because historically linked layers only work for transform tools (scale, rotation, etc.) but selected layers should work everywhere if possible.
Yet there is one useful remaining side of linked items: its permanency unlike transient selected items, by nature. You could "store" the relation between a set layers. Thus I was certain that if I just deleted the feature, some people would come angrily at us for this (because workflow has its fans).
This is how we came up with the idea of storing named item sets (an idea we first told you about back in May, if you recall).
At some point, I was thinking about creating a new dockable for this, but… one more dockable, really? Dockables should be reserved for outstanding features, otherwise we will end up flooded by them. But how to fill a item set list into the main Layer dockable without over-crowding it? This is how I started experimenting with a popup button instead.
Workflow: when you have items selected, you can click the "chain" button (in the bottom button list) and name your selection for easy later retrieval. Then you can just click on your named layer set anytime to re-select it!
Our main worry was to add yet another button to the bottom button list. We were a bit reluctant, especially as Aryeom was noticing it makes the minimum dockable width larger (which is not a problem for her, but may be for people with smaller screens, and she cares about the software design as a whole). But for now, it seems to work fine this way.
Another idea we had is that people detect layers through pattern naming, so what if you could quick-select by pattern? For any artist who is as organized as Aryeom and name one's layers with utter care, being able to select them by name patterns instead of clicking infinitely, wouldn't it be neat?
This is why I added pattern-matching selection. For the pattern algorithm, at first I thought about the glob pattern, like "I want all layers starting with 'Marmot ' would be 'Marmot *'" but it is also quite limited: what if I want all layers starting with Marmot then a number, and in particular not 'Marmot color' and a number?
This is why I went with regular expression. I know, it's hard and overkill and most artist would dread such field (I personally have always loved these as I am into languages, pattern grammars, and stuff). Probably will we propose a way to switch to glob pattern or even maybe simple text search later. As I said, it's an experiment anyway.
Of course if you are able to search from patterns, you might want to save the resulting set, especially if it's a complex pattern. The coolest thing about storing a pattern is that you don't store the selected items anymore, you really only store the pattern itself. So the next time you select this stored set, it will recompute the contents, which means that if you added new layers with a matching pattern, they would now be selected (oppositely, if you renamed a layer out of the pattern, it would not be selected anymore).
Logical selection of item sets
Last very useful trick: the item sets are not only usable for link replacement. You can use the common logical selection modifiers:
- ⇧ Shift-click an item set adds the stored set contents to currently selected items.
- Ctrl-click removes the stored set contents from currently selected items.
- Ctrl+⇧ Shift-click, you keep the intersection of the stored set and currently selected items.
More to come
We made much more very interesting layer interaction experiments in the last 2 months (actually you can even catch a glimpse of these in the video) but it will be for another news. Making this one just took far too much time and exhausted me.
To be continued!…
Jehan ZeMarmot team"