23class ClipEditor :
public QObject
29 Q_PROPERTY (QVariant track READ track NOTIFY clipObjectChanged)
38 audioClipEditor CONSTANT FINAL)
41 automationEditor CONSTANT FINAL)
45 using TrackUuid = structure::tracks::TrackUuid;
56 MidiEditor * midiEditor ()
const {
return midi_editor_.get (); }
57 ChordEditor * chordEditor ()
const {
return chord_editor_.get (); }
60 return audio_clip_editor_.get ();
64 return automation_editor_.get ();
68 QVariant track ()
const;
69 Q_INVOKABLE
void setClip (QVariant clip, QVariant track);
70 Q_INVOKABLE
void unsetClip ();
71 Q_SIGNAL
void clipObjectChanged ();
90 bool has_clip ()
const {
return clip_id_.has_value (); }
92 std::optional<std::pair<ArrangerObject *, Track *>>
93 get_clip_and_track ()
const;
95 friend void init_from (
101 static constexpr auto kClipIdKey =
"clipId"sv;
102 static constexpr auto kMidiEditorKey =
"midiEditor"sv;
103 static constexpr auto kAutomationEditorKey =
"automationEditor"sv;
104 static constexpr auto kChordEditorKey =
"chordEditor"sv;
105 static constexpr auto kAudioClipEditorKey =
"audioClipEditor"sv;
106 friend void to_json (nlohmann::json &j,
const ClipEditor &editor);
107 friend void from_json (
const nlohmann::json &j,
ClipEditor &editor);
113 std::optional<std::pair<ArrangerObject::Uuid, TrackUuid>> clip_id_;