Lumiera  0.pre.03
»edit your freedom«
clip-presenter.hpp File Reference

Go to the source code of this file.

Description

Presentation control element to model and manage a clip within the timeline UI.

In the Lumiera timeline UI, we are mixing two different scope of concerns: For one, we have the globally tangible scope of actual session elements an operations performed on those. And then there are more local considerations regarding the "mechanics" of the UI elements, their state and immediate feedback to user interactions. The Presenter – as known from the MVP pattern – serves as link between both levels. For the global angle of view, it is a model::Tangible and thus plays the role of the View, while the Model and Controller roles are mediated through the stage::UiBus, exchanging command, state and mutation messages. On the other hand, for the local angle of view, the Presenter is a structural model element, kind of a view model, and corresponds to the respective element within the session. In addition, it manages actively the collaborative part of layout building, delegating to a mostly passive GTK widget for the actual display. This way it becomes possible to manage the actual UI resources on a global level, avoiding to represent potentially several thousand individual elements as GTK entities, while at any time only several can be visible and active as far as user interaction is concerned.

Especially the ClipPresenter plays a crucial role when it comes to deciding which clip appearance style to use for the actual display. Depending on the zoom level, the ClipPresenter may even decide to hide the individual clip and join it into a combined placeholder for degraded display of a whole strike of clips, just to indicate some content is actually present in this part of the timeline.

Todo:

WIP-WIP-WIP as of 12/2016

as of 10/2018 timeline display in the UI is rebuilt to match the architecture

Definition in file clip-presenter.hpp.

#include "stage/gtk-base.hpp"
#include "include/ui-protocol.hpp"
#include "stage/model/controller.hpp"
#include "stage/timeline/clip-widget.hpp"
#include "stage/timeline/marker-widget.hpp"
#include "stage/interact/cmd-context.hpp"
#include "lib/time/timevalue.hpp"
#include "steam/cmd.hpp"
#include "lib/format-cout.hpp"
#include "lib/format-string.hpp"
#include <optional>
#include <vector>

Classes

class  ClipPresenter
 A View-Model entity to represent a clip within the timeline-UI. More...
 
class  ClipPresenter::DragRelocateObserver
 

Namespaces

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