Lumiera  0.pre.03
»edit your freedom«
timeline-widget.hpp File Reference

Go to the source code of this file.

Description

This file defines the core component of the Lumiera GUI.

Timelines are the top level elements within Lumiera's high-level-model ("the session"). In the UI workspace, there is a timeline pane with several tabs, each of which holds an instance of the TimelineWidget. Each of these tabs either represents one of the top-level timelines in the model, or it represents a (focused / slave) view into some timeline.

The TimelineWidget is the top level entry point to a significant part of the UI, anything related to timeline display and editing operations: each instance of this widget is dedicated to a single session::Timeline, known by its ID. The widget creates a TimelineController right away, which takes initiative to populate the display with that Timeline's contents.

Lifecycle

The assumption is that any element creation and deletion is triggered through messages over the UI-Bus. So there will be a parent element, corresponding to the model root, and this parent, in response to some mutation message, will create a TimelineWidget, add it into the appropriate GTK display setup and manage it as child element; the construction parameters ensure it gets connected to the bus as well. Incidentally, this assumption also implies that this parent element has set up a binding for diff mutation, typically by implementing model::Tangible::buildMutator. And further on this means that the parent will also destroy the TimelineWidget, prompted by a message to that end. All deregistration and unwinding happens automatically. Widgets, and also our model::Controller is sigc::trackable, which means after destruction any further signals will be silently ignored.

Todo:
as of 10/2018 a complete rework of the timeline display is underway

Definition in file timeline-widget.hpp.

Classes

class  TimelinePage
 Interface: GUI page holding a timeline display. More...
 
class  TimelineWidget
 Core timeline display (custom widget). More...
 

Namespaces

 stage
 Lumiera GTK UI implementation root.
 
 stage::timeline
 The timeline display and editing operations.
 
 steam
 Steam-Layer implementation namespace root.
 
 steam::asset
 The asset subsystem of the Steam-Layer.