NAP
sequencetrackview.h
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4 
5 #pragma once
6 
7 // Local Includes
8 #include "sequenceeditorgui.h"
9 #include "sequenceeditorguiactions.h"
10 #include "sequenceeditorguistate.h"
11 #include "sequenceguiservice.h"
12 
13 // nap includes
14 #include <nap/core.h>
15 
16 namespace nap
17 {
19 
20  // forward declares
21  class SequenceTrack;
22  class SequenceTrackView;
23  class SequenceEditorGUIView;
24 
30  class NAPAPI SequenceTrackView
31  {
32  RTTI_ENABLE()
33  public:
40 
44  virtual ~SequenceTrackView() = default;
45 
51  virtual void handleActions();
52 
57  virtual void showInspector(const SequenceTrack& track);
58 
63  virtual void showTrack(const SequenceTrack& track);
64 
66  // static utility methods
68 
76  static bool Combo(const char* label, int* currIndex, std::vector<std::string>& values);
77 
85  static bool ListBox(const char* label, int* currIndex, std::vector<std::string>& values);
86 
92  static std::string formatTimeString(double time);
93 
94  protected:
95  void handleTrackOptionsPopup();
96 
101  virtual void showInspectorContent(const SequenceTrack& track) = 0;
102 
108  virtual void showTrackContent(const SequenceTrack& track, const ImVec2& trackTopLeft) = 0;
109 
115  void registerActionHandler(const rttr::type& type, const std::function<void()>& handler);
116 
117  // reference to gui view
119 
120  // reference to sequence player
121  const SequencePlayer& getPlayer();
122 
123  // reference to editor
124  SequenceEditor& getEditor();
125 
126  // reference to gui state
128  // map of action handlers
129  std::unordered_map<rttr::type, std::function<void()>> mActionHandlers;
130  // reference to service
132  };
133 }
nap::SequenceTrackView::mState
SequenceEditorGUIState & mState
Definition: sequencetrackview.h:127
nap::SequencePlayer
Definition: sequenceplayer.h:36
nap::SequenceEditorGUIState
Definition: sequenceeditorguistate.h:23
nap::SequenceTrackView::mView
SequenceEditorGUIView & mView
Definition: sequencetrackview.h:118
nap::SequenceEditor
Definition: sequenceeditor.h:32
nap::SequenceTrackView::mService
SequenceGUIService & mService
Definition: sequencetrackview.h:131
nap::SequenceGUIService
Definition: sequenceguiservice.h:59
nap::SequenceTrack
Definition: sequencetrack.h:22
nap::SequenceTrackView
Definition: sequencetrackview.h:30
nap::SequenceEditorGUIView
Definition: sequenceeditorgui.h:82
nap
Definition: templateapp.h:17
nap::SequenceTrackView::mActionHandlers
std::unordered_map< rttr::type, std::function< void()> > mActionHandlers
Definition: sequencetrackview.h:129