Build a GTK custom widget for a named entity.
This is the most prominent building block of the Lumiera UI.
It will be used pervasively, and define its appearance and behaviour traits.
- it will be used for
- Markers
- Elements in the Bins (Clips, Media, Effects, Assets....)
- abridged display of Clips (and Effects)
- the Effect-bar to mark the presence of an Effect
- for the Track heads in the Timeline Header pane
- for Clip-Placement and name
Structure
This widget presents a horizontally extended body, which holds a characteristic Head-Triplet of visual Elements:
- an Icon to create the visual anchor point. In many cases, this will be the Placement-Icon (which is to become a hallmark of Lumiera's UI)
- a Menu Button -- a small downward arrow, which can be flipped upwards (expand/collapse)
- a Text Label designating the element
As a starting point, this characteristic cadence of elements has to be displayed compact, yet normally sized. However, we acknowledge the possibility that we'll want a down-sized tiny display variant eventually
Properties
- the Icon shall be easily configurable (from the coding view point, of course this is all hard wired in the code or the theme)
- the default is to configure the Placement Icon
- alternatively a Stock-ID can be given
- the horizontal extension is easy to control, through several options
- natural extension; don't give any size request, let GTK figure out the extension rather
- set a fixed length-limit, causing the text label to be abridged eventually
- proportional head-placement
- the body may optionally hold another GTK widget, in which case the head-triplet alignes to the upper side
We offer pre-arranged options for standard wiring of interaction response
- when the Icon is a Placement, it will launch the Placement-Pop-up (#1188) -- which in turn can be de-modalised, thereby allocating a place in the Property grid pane (see #1163). When such a placement control already is open and allocated, the click to the placement icon will lead there.
- in the most basic case, there is only one common binding, which is a signal, emitted when clicking on the icon or the menu button
- yet there can be two distinct bindings (signals) for the icon and the button
- the Expander (which is part of the UI-Element protocol is pre-wired with the arror on the menu button, to yield a visible clue for the expand/collapse state
- each of the bindings can be easily replaced by a pop-up menu (#1187)
proportional Head placement
This behaviour pattern (see #1186) is a distinguishing trait of the Lumiera timeline display. It indicates elements with a temporal extension surpassing the current display window. When scrolling, the head-triplet will slowly glide to the other side, thereby indicating the our relative position.
Working on a draft for Clip display and Track header display and conducted a requirement analysis regarding ElementBoxWidget