Lumiera
0.pre.03
»edit your freedom«
|
Go to the source code of this file.
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.
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.
Definition in file timeline-widget.hpp.
#include "stage/gtk-base.hpp"
#include "stage/ctrl/bus-term.hpp"
#include "lib/time/timevalue.hpp"
#include "lib/diff/diff-mutable.hpp"
#include "lib/nocopy.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. | |