62 using std::make_unique;
79 class TrackHeadWidget;
86 : Controller{identity, nexus}
87 , name_{identity.getSym()}
91 layoutManager.setupStructure (*fork_);
95 TimelineController::~TimelineController()
144 using PMarker = unique_ptr<MarkerWidget>;
145 auto rootForkID = fork_->getID();
150 .isApplicableIf ([&](
GenNode const& spec) ->
bool 154 .constructFrom ([&](
GenNode const& spec) -> PMarker
156 return make_unique<MarkerWidget>(spec.idi, this->uiBus_);
160 target->buildMutator (buff);
166 fork_->buildMutator(buff);
168 .change(ATTR_name, [&](
string val)
Hard wired key constants and basic definitions for communication with the GUI.
connection point at the UI-Bus.
bool isNested() const
determine if payload constitutes a nested scope ("object")
Top-level anchor point for the timeline display (widgets).
Presentation control element to model and manage a track within the timeline UI.
TimelineController(ID identity, ID trackID, ctrl::BusTerm &nexus, TimelineLayout &)
Controller to supervise operation of timeline display in the UI.
A View-Model entity to represent a timeline track in the UI.
static Builder< TreeMutator > build()
DSL: start building a custom adapted tree mutator, where the operations are tied by closures or wrapp...
SUB & emplace(SUB &&implementation)
move-construct an instance of a subclass into the opaque buffer
A core service of the timeline UI to ensure consistent display and layout of all components within th...
A handle to allow for safe »remote implantation« of an unknown subclass into a given opaque InPlaceBu...
virtual void buildMutator(lib::diff::TreeMutator::Handle) override
set up a binding to respond to mutation messages via UiBus
Lumiera GTK UI implementation root.
auto collection(COLL &coll)
Entry point to a nested DSL for setup and configuration of a collection binding.
A set of basic GTK includes for the UI.
generic data element node within a tree
Customisable intermediary to abstract mutating operations on arbitrary, hierarchical object-like data...