Phase 0 of the Layer Groups feature (SF #222, feature-requests): group definition/naming/
membership, migration off the existing "Linked Layers" field, a new Manage Layer Groups dialog,
and a "show only this group" visibility action.
Scope (settled design, see SF #222 for full background):
Data model: a Layer Group is a named, flat, user-managed list of layer memberships. Any
layer can belong to any, all, or none of the defined groups -- no composition/derivation between
groups (a group is never defined in terms of another group).
Migration: the existing per-layer "Linked Layers" field (layer_t.layerLinkList, the
LAYERS LINK <idx> "<list>" file-format line) is superseded. On load, each layer's non-empty
link list is migrated into (or joined with) an auto-created group with a default, user-
renameable name (e.g. "Group 1"). The old field is retired once migrated -- this ticket must
keep reading it correctly for older files (one shipped example,
"Ondaville Franklin and Carolina RR.xtc", uses LAYERS LINK today).
New "Manage Layer Groups" dialog, parallel to the existing Manage Layers dialog: full
create/rename/edit-membership/delete of groups.
Fast "show only this group" visibility action: hides every layer not in the chosen group,
shows every layer that is. On-screen display and printing inherit this for free since both
already respect per-layer visibility -- no separate print/display-specific work needed in this
phase.
File format: this is a persisted structural change (new file-format line(s) for group
definitions/membership, replacing LAYERS LINK), so it needs a file-format version bump
(current PARAMVERSION is 12) and a load-time migration path for files below the new version.
Explicitly out of scope for phase 0 (tracked as later phases once this lands, per the SF #222
umbrella): native group-awareness inside individual reports, and export/import scoping. Also out
of scope: any decision about using a group in place of a single layer outside of the visibility
action above (e.g. as the current/active drawing layer) -- per SF #222's design notes, each such
UI site gets its own decision at the time it's actually investigated/implemented, not speced here.
GTK3V2MAIN only, no dual-branch port, per the established practice for new feature work given the
GTK3V2MAIN-becomes-default timeline (same pattern the Reports feature, SF #217, has used).
Anonymous
(Phase 0 complete: git PR #181 merged into GTK3V2MAIN (27/27 CI green), Hg bug branch bug-782-layer-groups-phase0-gtk3 pushed to SF (8 commits, tip 7a653d8f3a47). Delivers the data model, file-format wiring (PARAMVERSION 12->13), Linked-Layers migration, the Manage Layer Groups dialog (dual-list Available/Included membership shuttle), and the "Show Only" visibility action. Live-tested end-to-end including against the real NYE example layout and a real user click-through session. Holding out of Hg mainline for the normal review window.
Last edit: Allen D Byrne 2026-09-12