Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
track_operator.h
1// SPDX-FileCopyrightText: © 2025 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#pragma once
5
6#include "structure/tracks/track_all.h"
7#include "structure/tracks/track_routing.h"
8#include "undo/undo_stack.h"
9
10#include <QtQmlIntegration/qqmlintegration.h>
11
12namespace zrythm::actions
13{
14class TrackOperator : public QObject
15{
16 Q_OBJECT
17 Q_PROPERTY (
18 zrythm::structure::tracks::Track * track READ track WRITE setTrack NOTIFY
19 trackChanged)
20 Q_PROPERTY (
21 zrythm::undo::UndoStack * undoStack READ undoStack WRITE setUndoStack NOTIFY
22 undoStackChanged)
23 Q_PROPERTY (
24 zrythm::structure::tracks::TrackRouting * trackRouting READ trackRouting
25 WRITE setTrackRouting NOTIFY trackRoutingChanged)
26 QML_ELEMENT
27
28public:
29 explicit TrackOperator (QObject * parent = nullptr) : QObject (parent) { }
30
31 structure::tracks::Track * track () const { return track_; }
32 void setTrack (structure::tracks::Track * track)
33 {
34 if (track_ != track)
35 {
36 track_ = track;
37 Q_EMIT trackChanged ();
38 }
39 }
40 Q_SIGNAL void trackChanged ();
41
42 undo::UndoStack * undoStack () const { return undo_stack_; }
43 void setUndoStack (undo::UndoStack * undoStack)
44 {
45 if (undo_stack_ != undoStack)
46 {
47 undo_stack_ = undoStack;
48 Q_EMIT undoStackChanged ();
49 }
50 }
51 Q_SIGNAL void undoStackChanged ();
52
53 structure::tracks::TrackRouting * trackRouting () const
54 {
55 return track_routing_;
56 }
57 void setTrackRouting (structure::tracks::TrackRouting * routing)
58 {
59 if (track_routing_ != routing)
60 {
61 track_routing_ = routing;
62 Q_EMIT trackRoutingChanged ();
63 }
64 }
65 Q_SIGNAL void trackRoutingChanged ();
66
67 Q_INVOKABLE void rename (const QString &newName);
68 Q_INVOKABLE void setColor (const QColor &color);
69 Q_INVOKABLE void setComment (const QString &comment);
70 Q_INVOKABLE void setOutputTrack (structure::tracks::Track * destination);
71
72private:
73 structure::tracks::Track * track_{};
74 undo::UndoStack * undo_stack_{};
75 structure::tracks::TrackRouting * track_routing_{};
76};
77}
Management of track-to-track connections.
Represents a track in the project.
Definition track.h:54