Lumiera  0.pre.03
»edit your freedom«
timeline-gui.hpp
Go to the documentation of this file.
1 /*
2  TIMELINE-GUI.hpp - top-level anchor point and placeholder for "the timeline"
3 
4  Copyright (C)
5  2018, Hermann Vosseler <Ichthyostega@web.de>
6 
7   **Lumiera** is free software; you can redistribute it and/or modify it
8   under the terms of the GNU General Public License as published by the
9   Free Software Foundation; either version 2 of the License, or (at your
10   option) any later version. See the file COPYING for further details.
11 
12 */
13 
14 
43 #ifndef STAGE_TIMELINE_TIMELINE_GUI_H
44 #define STAGE_TIMELINE_TIMELINE_GUI_H
45 
46 #include "stage/ctrl/bus-term.hpp"
47 #include "stage/model/w-link.hpp"
49 #include "lib/nocopy.hpp"
50 
51 #include <memory>
52 
53 
54 namespace stage {
55 namespace timeline {
56 
57  class TimelinePage;
58  class TimelineWidget;
59  using ctrl::BusTerm;
60 
67  : public model::WLink<TimelineWidget>
68  , public lib::diff::DiffMutable
70  {
71  using ID = BusTerm::ID;
72 
73  ID timelineID_;
74  ID rootTrackID_;
75 
76  public:
77  TimelineGui (ID identity, ID trackID);
78  virtual ~TimelineGui();
79 
80  TimelineGui (TimelineGui const&);
82 
83  ID getID() const { return timelineID_; }
84 
85 
88  std::unique_ptr<TimelinePage> buildTimelineWidget (BusTerm&);
89 
91  void buildMutator (lib::diff::TreeMutator::Handle buffer) override;
92 
93  };
94 
95 
96 }}// namespace stage::timeline
97 #endif /*STAGE_TIMELINE_TIMELINE_GUI_H*/
Abstraction or descriptor interface for a data structure exposing the ability for mutation by receivi...
smart-Handle as anchor point for "the UI representation" of a timeline.
connection point at the UI-Bus.
Definition: bus-term.hpp:96
TimelineGui(ID identity, ID trackID)
Initially, TimelineGui is just an empty placeholder handle.
std::unique_ptr< TimelinePage > buildTimelineWidget(BusTerm &)
actually build a TimelineWidget to enact the role represented by this smart-handle ...
Attachment point to the UI-Bus.
Mix-Ins to allow or prohibit various degrees of copying and cloning.
A handle to allow for safe »remote implantation« of an unknown subclass into a given opaque InPlaceBu...
Definition: record.hpp:104
Lumiera GTK UI implementation root.
Definition: guifacade.cpp:37
Types marked with this mix-in may be duplicated by copy-construction, yet may not be moved or transfe...
Definition: nocopy.hpp:95
Marker or capability interface: an otherwise not further disclosed data structure, which can be transformed through "tree diff messages".
void buildMutator(lib::diff::TreeMutator::Handle buffer) override
forwarding implementation of the DiffMutable interface, delegating through the referred TimelineWidge...