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

Go to the source code of this file.

Description

Controller to supervise operation of timeline display in the UI.

While the TimelineWidget is the top level entry point to any facility dealing with timeline display and editing operations, the widget in turn creates a TimelineController right away, which then takes initiative to populate the display with the corresponding session::Timeline contents. The controller thus serves as the model connection through the UI-Bus and becomes the active part of running the timeline display, delegating display activities to the widget, which in turn uses the timeline::LayoutManager to work out the details of presentation in collaboration with the local UI model elements. Incidentally, those UI model elements, which are actually Presenters, are managed as children of the TimelineController; this makes sense from an architectural point of view: In Lumiera, we separate between the core concerns and the questions of UI mechanics. For the former, the global angle of view, the roles of controller and model are mediated by the control::UiBus, while the tangible elements, play the role of the view. But at the same time, following the local UI centric angle, the latter entities act more like presenters, forming a dedicated view model, while controlling mostly passive view components (widgets).

To sum up

  • TimelineController is a Tangible, connected to the UiBus, representing "the timeline"
  • it directly manages a set of TrackPresenter entities, to correspond to the session::Fork
  • these in turn manage a set of ClipPresenter entities
  • and those presenters care for injecting suitable widgets into the TimelineWidget's parts.
Todo:
as of 10/2018 timeline display in the UI is rebuilt to match the architecture

Definition in file timeline-controller.hpp.

#include "stage/gtk-base.hpp"
#include "stage/model/controller.hpp"
#include "lib/time/timevalue.hpp"
#include <memory>
#include <vector>
#include <string>

Classes

class  TimelineController
 Controller to supervise the timeline display. More...
 

Namespaces

 stage
 Lumiera GTK UI implementation root.
 
 stage::timeline
 The timeline display and editing operations.