Zrythm v2.0.0-DEV
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
event.h
1// SPDX-FileCopyrightText: © 2019-2022, 2024 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#ifndef __GUI_BACKEND_EVENT_H__
5#define __GUI_BACKEND_EVENT_H__
6
7#include "common/utils/format.h"
8#include "common/utils/logger.h"
9#include "common/utils/types.h"
10
16
17enum class EventType
18{
19 /* arranger objects */
20 ET_ARRANGER_OBJECT_CREATED,
21 ET_ARRANGER_OBJECT_REMOVED,
22 ET_ARRANGER_OBJECT_CHANGED,
23
24 /* arranger_selections */
25 ET_ARRANGER_SELECTIONS_CREATED,
26 ET_ARRANGER_SELECTIONS_CHANGED,
27 ET_ARRANGER_SELECTIONS_REMOVED,
28 ET_ARRANGER_SELECTIONS_MOVED,
29 ET_ARRANGER_SELECTIONS_QUANTIZED,
30
33
37
42 ET_AUTOMATION_TRACK_ADDED,
43 ET_AUTOMATION_TRACK_REMOVED,
44 ET_TIME_SIGNATURE_CHANGED,
45 ET_TRACK_ADDED,
46 ET_TRACK_CHANGED,
47 ET_TRACK_COLOR_CHANGED,
48 ET_TRACK_NAME_CHANGED,
49 ET_CHANNEL_SEND_CHANGED,
50
51 ET_RULER_DISPLAY_TYPE_CHANGED,
52
53 ET_TRANSPORT_TOTAL_BARS_CHANGED,
54
55 ET_TRACK_AUTOMATION_VISIBILITY_CHANGED,
56 ET_AUTOMATION_TRACK_CHANGED,
57
65
71
72 ET_UNDO_REDO_ACTION_DONE,
73 ET_RANGE_SELECTION_CHANGED,
74 ET_TIMELINE_LOOP_MARKER_POS_CHANGED,
75 ET_TIMELINE_PUNCH_MARKER_POS_CHANGED,
76 ET_TIMELINE_SONG_MARKER_POS_CHANGED,
77 ET_RULER_SIZE_CHANGED,
78
79 ET_LOOP_TOGGLED,
80
83
90
91 ET_PLUGIN_ADDED,
92 ET_PLUGINS_ADDED,
93 ET_PLUGINS_REMOVED,
94 ET_PLUGIN_DELETED,
95 ET_PLUGIN_CRASHED,
96 ET_PLAYHEAD_POS_CHANGED,
97 ET_PLAYHEAD_POS_CHANGED_MANUALLY,
98 ET_AUTOMATION_VALUE_CHANGED,
99
100 ET_TRACKLIST_SELECTIONS_CHANGED,
101
105
108
111
112 ET_TRACKS_ADDED,
113 ET_TRACKS_REMOVED,
114 ET_TRACKS_MOVED,
115 ET_CHANNEL_REMOVED,
116 ET_REFRESH_ARRANGER,
117 ET_MIXER_SELECTIONS_CHANGED,
118 ET_CHANNEL_OUTPUT_CHANGED,
119 ET_CHANNEL_SLOTS_CHANGED,
120
121 ET_MODULATOR_ADDED,
122 ET_RT_SELECTIONS_CHANGED,
123 ET_PINNED_TRACKLIST_SIZE_CHANGED,
124
131
138
145
152
153 ET_PIANO_ROLL_HIGHLIGHTING_CHANGED,
154 ET_PIANO_ROLL_MIDI_MODIFIER_CHANGED,
155 ET_AUTOMATION_TRACKLIST_AT_REMOVED,
156 ET_ARRANGER_SELECTIONS_IN_TRANSIT,
157 ET_JACK_TRANSPORT_TYPE_CHANGED,
158 ET_TRACK_VISIBILITY_CHANGED,
159 ET_SELECTING_IN_ARRANGER,
160 ET_TRACKS_RESIZED,
161 ET_CLIP_EDITOR_FIRST_TIME_REGION_SELECTED,
162 ET_BPM_CHANGED,
163 ET_CHANNEL_FADER_VAL_CHANGED,
164
165 ET_CHORD_KEY_CHANGED,
166
173
180
187
194
201
208
215
222
232
235
238
241
245
248
249 ET_ENGINE_ACTIVATE_CHANGED,
250 ET_ENGINE_BUFFER_SIZE_CHANGED,
251 ET_ENGINE_SAMPLE_RATE_CHANGED,
252 ET_MIDI_BINDINGS_CHANGED,
253 ET_PORT_CONNECTION_CHANGED,
254 ET_EDITOR_FUNCTION_APPLIED,
255
256 ET_SPLASH_CLOSED,
257
258 ET_AUTOMATION_VALUE_VISIBILITY_CHANGED,
259 ET_PROJECT_SELECTION_TYPE_CHANGED,
260
263
264 ET_PLUGIN_COLLECTIONS_CHANGED,
265
266 ET_SNAP_GRID_OPTIONS_CHANGED,
267
268 ET_TRANSPORT_RECORDING_ON_OFF_CHANGED,
269
276
283
291
299
307
315
322
326
331
338
345
352
359
367
375
383
390
397
404
411 ET_AUDIO_REGION_FADE_OUT_CHANGED,
412
419
426
433
440
448};
449
454{
455public:
456 // Rule of 0
457
458public:
461
463 void * arg_ = nullptr;
464
466 const char * file_ = nullptr;
467
469 const char * func_ = nullptr;
470
472 int lineno_ = 0;
473
475 std::string backtrace_;
476};
477
478DEFINE_OBJECT_FORMATTER (ZEvent, [] (const ZEvent &ev) {
479 return fmt::format (
480 "UI Event from {}:{}:{}:\ntype: {}\narg: {}", ev.file_, ev.func_,
481 ev.lineno_, ENUM_NAME (ev.type_), fmt::ptr (ev.arg_));
482});
483
487
488#endif
A Zrythm event.
Definition event.h:454
void * arg_
Argument.
Definition event.h:463
const char * file_
Source file initialized from.
Definition event.h:466
int lineno_
Line no initialized from.
Definition event.h:472
const char * func_
Function initialized from.
Definition event.h:469
std::string backtrace_
Backtrace.
Definition event.h:475
EventType type_
Event type.
Definition event.h:460
EventType
Definition event.h:18
@ ET_TRANSPORT_TOGGLE_LOOP_REQUIRED
Transport toggle loop is required on the GTK thread.
Definition event.h:306
@ ET_PLUGIN_WINDOW_VISIBILITY_CHANGED
Plugin UI opened or closed, should redraw.
Definition event.h:107
@ ET_TRACK_LANE_REMOVED
Track lane removed.
Definition event.h:151
@ ET_MIXER_CHANNEL_INSERTS_EXPANDED_CHANGED
Channel inserts revealed status changed in the mixer.
Definition event.h:374
@ ET_PLUGIN_STATE_CHANGED
Plugin's control port values changed.
Definition event.h:110
@ ET_TRACK_STATE_CHANGED
also for channels
Definition event.h:39
@ ET_TRANSPORT_MOVE_BACKWARD_REQUIRED
Transport move backward is required on the GTK thread.
Definition event.h:290
@ ET_FILE_BROWSER_BOOKMARK_DELETED
File browser bookmark deleted.
Definition event.h:432
@ ET_ARRANGER_SCROLLED
An arranger was scrolled.
Definition event.h:439
@ ET_RULER_VIEWPORT_CHANGED
Zoom level or view area changed.
Definition event.h:89
@ ET_AUDIO_REGION_FADE_IN_CHANGED
Audio region fade in/out changed.
Definition event.h:410
@ ET_TRANSPORT_PAUSE_REQUIRED
Transport pause is required on the GTK thread.
Definition event.h:282
@ ET_PLUGIN_PRESET_SAVED
Plugin preset saved.
Definition event.h:344
@ ET_CHORD_PRESET_PACK_ADDED
Chord preset pack added.
Definition event.h:193
@ ET_TRANSPORT_ROLL_REQUIRED
Transport roll is required on the GTK thread.
Definition event.h:275
@ ET_CHORD_PRESET_PACK_REMOVED
Chord preset pack removed.
Definition event.h:207
@ ET_FILE_BROWSER_INSTRUMENT_CHANGED
Auditioning instrument changed in file/chord pack browser.
Definition event.h:447
@ ET_MAIN_WINDOW_LOADED
Sent after the main window finishes loading.
Definition event.h:234
@ ET_CHORD_PRESET_ADDED
Chord preset added.
Definition event.h:172
@ ET_RULER_STATE_CHANGED
works for all rulers
Definition event.h:41
@ ET_TRACK_FADER_BUTTON_CHANGED
Fader button (mute/solo/etc) changed.
Definition event.h:337
@ ET_MIXER_CHANNEL_MIDI_FX_EXPANDED_CHANGED
Channel MIDI FX revealed status changed in the mixer.
Definition event.h:366
@ ET_PLUGIN_LATENCY_CHANGED
Sent when plugin latency changes, to update the graph.
Definition event.h:244
@ ET_TRACK_FREEZE_CHANGED
Track freeze status changed.
Definition event.h:321
@ ET_TRACK_LANE_ADDED
Track lane added.
Definition event.h:144
@ ET_ARRANGER_SELECTIONS_CHANGED_REDRAW_EVERYTHING
Redraws all arrangers.
Definition event.h:32
@ ET_CLIP_EDITOR_REGION_CHANGED
Region (clip) to show in the piano roll changed.
Definition event.h:64
@ ET_LOG_WARNING_STATE_CHANGED
Log has new unseen warnings or warnings have been seen.
Definition event.h:325
@ ET_ARRANGER_SELECTIONS_ACTION_FINISHED
To be used after an action is finished to redraw everything.
Definition event.h:36
@ ET_AUDIO_REGION_GAIN_CHANGED
Audio region gain changed.
Definition event.h:418
@ ET_FILE_BROWSER_BOOKMARK_ADDED
File browser bookmark added.
Definition event.h:425
@ ET_PLUGIN_VISIBILITY_CHANGED
Plugin visibility parameter changed, should close/open UI.
Definition event.h:104
@ ET_TRACK_LANES_VISIBILITY_CHANGED
Track lanes visibility changed.
Definition event.h:137
@ ET_AUDIO_SELECTIONS_RANGE_CHANGED
Range selection changed in audio editor.
Definition event.h:262
@ ET_PROJECT_SAVED
Sent when a project is saved.
Definition event.h:240
@ ET_PROJECT_LOADED
Sent when a project is loaded.
Definition event.h:237
@ ET_PIANO_ROLL_KEY_ON_OFF
Piano roll key pressed or unpressed.
Definition event.h:396
@ ET_CHORDS_UPDATED
Chords updated in chord editor.
Definition event.h:214
@ ET_TRANSPORT_MOVE_FORWARD_REQUIRED
Transport move forward is required on the GTK thread.
Definition event.h:298
@ ET_REGION_ACTIVATED
Double click (or similar action) on region.
Definition event.h:389
@ ET_DRUM_MODE_CHANGED
Drum mode changed.
Definition event.h:130
@ ET_CHORD_PRESET_PACK_EDITED
Chord preset pack edited.
Definition event.h:200
@ ET_PIANO_ROLL_KEY_HEIGHT_CHANGED
Piano roll key height level changed.
Definition event.h:231
@ ET_ARRANGER_HIGHLIGHT_CHANGED
Arranger highlight rectangle changed.
Definition event.h:247
@ ET_TOOL_CHANGED
Selected tool (mode) changed.
Definition event.h:82
@ ET_TRACK_FOLD_CHANGED
Track folded status changed.
Definition event.h:358
@ ET_VELOCITIES_RAMPED
Velocities have been ramped.
Definition event.h:403
@ ET_TRANSPORT_TOGGLE_RECORDING_REQUIRED
Transport toggle recording is required on the GTK thread.
Definition event.h:314
@ ET_CHORD_PRESET_EDITED
Chord preset edited.
Definition event.h:179
@ ET_MIXER_CHANNEL_SENDS_EXPANDED_CHANGED
Channel sends revealed status changed in the mixer.
Definition event.h:382
@ ET_PIANO_ROLL_KEY_ZOOM_CHANGED
Piano roll key zoom level changed.
Definition event.h:221
@ ET_PLAYHEAD_SCROLL_MODE_CHANGED
Follow playhead/scroll edges state changed.
Definition event.h:330
@ ET_CLIP_MARKER_POS_CHANGED
Clip marker (clip start, loop start, loop end) position changed.
Definition event.h:70
@ ET_CHORD_PRESET_REMOVED
Chord preset removed.
Definition event.h:186
@ ET_PLUGIN_PRESET_LOADED
Plugin preset loaded.
Definition event.h:351