Lumiera  0.pre.03
»edit your freedom«
timeline-widget.hpp
Go to the documentation of this file.
1 /*
2  TIMELINE-WIDGET.hpp - custom widget for timeline display of the project
3 
4  Copyright (C)
5  2016, 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 
46 #ifndef STAGE_TIMELINE_TIMELINE_WIDGET_H
47 #define STAGE_TIMELINE_TIMELINE_WIDGET_H
48 
49 #include "stage/gtk-base.hpp"
50 //#include "stage/timeline/timeline-controller.hpp" /////TODO possible to push that into the implementation?
51 //#include "stage/timeline/layout-manager.hpp"
52 #include "stage/ctrl/bus-term.hpp"
53 
54 #include "lib/time/timevalue.hpp"
56 #include "lib/nocopy.hpp"
57 
58 //#include <memory>
59 //#include <vector>
60 
61 
62 
63 namespace steam {
64 namespace asset{
65  class Timeline;
66 }}
67 
68 namespace stage {
69 namespace timeline {
70 
71  using ctrl::BusTerm;
72  class TimelineController;
73  class TimelineLayout;
74 
79  : public Gtk::Paned
80  {
81  public:
82  virtual ~TimelinePage() { }
83 
84  virtual cuString getLabel() const =0;
85 
86 
87  TimelinePage()
88  : Gtk::Paned{Gtk::ORIENTATION_HORIZONTAL}
89  { }
90  };
91 
100  : public TimelinePage
102  {
103  std::unique_ptr<TimelineLayout> layout_;
104  std::unique_ptr<TimelineController> control_;
105 
106  public:
126  TimelineWidget (BusTerm::ID identity, BusTerm::ID trackID, BusTerm& nexus);
127 
128  ~TimelineWidget();
129 
130 
131 
132  public: /* ===== Control interface ===== */
133 
135  void buildMutator (lib::diff::TreeMutator::Handle);
136 
137  cuString getLabel() const override;
138 
139  Gtk::WidgetPath getBodyWidgetPath() const;
140 
141 
142  public: /* ===== Signals ===== */
143 
144  private:/* ===== Events ===== */
145 
146  private:/* ===== Internals ===== */
147 
148  };
149 
150 
151 }}// namespace stage::timeline
152 #endif /*STAGE_TIMELINE_TIMELINE_WIDGET_H*/
Interface: GUI page holding a timeline display.
Abstraction or descriptor interface for a data structure exposing the ability for mutation by receivi...
connection point at the UI-Bus.
Definition: bus-term.hpp:96
Any copy and copy construction prohibited.
Definition: nocopy.hpp:37
Steam-Layer implementation namespace root.
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
Core timeline display (custom widget).
Lumiera GTK UI implementation root.
Definition: guifacade.cpp:37
virtual ~TimelinePage()
this is an interface
a family of time value like entities and their relationships.
The asset subsystem of the Steam-Layer.
Definition: wrapperptr.hpp:35
A set of basic GTK includes for the UI.