Zrythm
a highly automated and intuitive digital audio workstation
Loading...
Searching...
No Matches
tracklist_selections.h
1// SPDX-FileCopyrightText: © 2019-2022 Alexandros Theodotou <alex@zrythm.org>
2// SPDX-License-Identifier: LicenseRef-ZrythmLicense
3
4#ifndef __ACTIONS_TRACKLIST_SELECTIONS_ACTION_H__
5#define __ACTIONS_TRACKLIST_SELECTIONS_ACTION_H__
6
10#include "dsp/track.h"
13
20enum class TracklistSelectionsActionType
21{
22 TRACKLIST_SELECTIONS_ACTION_COPY,
23 TRACKLIST_SELECTIONS_ACTION_COPY_INSIDE,
24 TRACKLIST_SELECTIONS_ACTION_CREATE,
25 TRACKLIST_SELECTIONS_ACTION_DELETE,
26 TRACKLIST_SELECTIONS_ACTION_EDIT,
27 TRACKLIST_SELECTIONS_ACTION_MOVE,
28 TRACKLIST_SELECTIONS_ACTION_MOVE_INSIDE,
29 TRACKLIST_SELECTIONS_ACTION_PIN,
30 TRACKLIST_SELECTIONS_ACTION_UNPIN,
31};
32
37{
38 EDIT_TRACK_ACTION_TYPE_SOLO,
39 EDIT_TRACK_ACTION_TYPE_SOLO_LANE,
40 EDIT_TRACK_ACTION_TYPE_MUTE,
41 EDIT_TRACK_ACTION_TYPE_MUTE_LANE,
42 EDIT_TRACK_ACTION_TYPE_LISTEN,
43 EDIT_TRACK_ACTION_TYPE_ENABLE,
44 EDIT_TRACK_ACTION_TYPE_FOLD,
45 EDIT_TRACK_ACTION_TYPE_VOLUME,
46 EDIT_TRACK_ACTION_TYPE_PAN,
47
50
53
56
57 EDIT_TRACK_ACTION_TYPE_COLOR,
58 EDIT_TRACK_ACTION_TYPE_COMMENT,
59 EDIT_TRACK_ACTION_TYPE_ICON,
60
61 EDIT_TRACK_ACTION_TYPE_MIDI_FADER_MODE,
62};
63
68{
69 UndoableAction parent_instance;
70
72 TracklistSelectionsActionType type;
73
78
81
85
86 bool have_pos;
87
90
94
102
109
120
130
134 int num_src_sends;
135 size_t src_sends_size;
136
142 unsigned int * out_tracks;
143 int num_out_tracks;
144
152
153 EditTrackActionType edit_type;
154
162 int tracks_after[600];
163 int num_tracks;
164
168
172
178
182
186
187 /* --------------- DELTAS ---------------- */
188
195 int ival_after;
196
197 /* -------------- end DELTAS ------------- */
198
199 GdkRGBA * colors_before;
200 GdkRGBA new_color;
201
202 char * new_txt;
203
206
209 float val_after;
210
212
213void
214tracklist_selections_action_init_loaded (TracklistSelectionsAction * self);
215
229WARN_UNUSED_RESULT UndoableAction *
231 TracklistSelectionsActionType type,
232 TracklistSelections * tls_before,
233 TracklistSelections * tls_after,
234 const PortConnectionsManager * port_connections_mgr,
235 Track * track,
236 TrackType track_type,
237 const PluginSetting * pl_setting,
238 const SupportedFile * file_descr,
239 int track_pos,
240 int lane_pos,
241 const Position * pos,
242 int num_tracks,
243 EditTrackActionType edit_type,
244 int ival_after,
245 const GdkRGBA * color_new,
246 float val_before,
247 float val_after,
248 const char * new_txt,
249 bool already_edited,
250 GError ** error);
251
256#define tracklist_selections_action_new_create( \
257 track_type, pl_setting, file_descr, track_pos, pos, num_tracks, \
258 disable_track_pos, err) \
259 tracklist_selections_action_new ( \
260 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_CREATE, NULL, \
261 NULL, NULL, NULL, track_type, pl_setting, file_descr, track_pos, -1, pos, \
262 num_tracks, ENUM_INT_TO_VALUE (EditTrackActionType, 0), disable_track_pos, \
263 NULL, 0.f, 0.f, NULL, false, err)
264
269#define tracklist_selections_action_new_create_audio_fx( \
270 pl_setting, track_pos, num_tracks, err) \
271 tracklist_selections_action_new_create ( \
272 TRACK_TYPE_AUDIO_BUS, pl_setting, NULL, track_pos, NULL, num_tracks, -1, \
273 err)
274
279#define tracklist_selections_action_new_create_midi_fx( \
280 pl_setting, track_pos, num_tracks, err) \
281 tracklist_selections_action_new_create ( \
282 TRACK_TYPE_MIDI_BUS, pl_setting, NULL, track_pos, NULL, num_tracks, -1, \
283 err)
284
289#define tracklist_selections_action_new_create_instrument( \
290 pl_setting, track_pos, num_tracks, err) \
291 tracklist_selections_action_new_create ( \
292 TRACK_TYPE_INSTRUMENT, pl_setting, NULL, track_pos, NULL, num_tracks, -1, \
293 err)
294
299#define tracklist_selections_action_new_create_audio_group( \
300 track_pos, num_tracks, err) \
301 tracklist_selections_action_new_create ( \
302 TRACK_TYPE_AUDIO_GROUP, NULL, NULL, track_pos, NULL, num_tracks, -1, err)
303
308#define tracklist_selections_action_new_create_midi_group( \
309 track_pos, num_tracks, err) \
310 tracklist_selections_action_new_create ( \
311 TRACK_TYPE_MIDI_GROUP, NULL, NULL, track_pos, NULL, num_tracks, -1, err)
312
317#define tracklist_selections_action_new_create_midi(track_pos, num_tracks, err) \
318 tracklist_selections_action_new_create ( \
319 TRACK_TYPE_MIDI, NULL, NULL, track_pos, NULL, num_tracks, -1, err)
320
325#define tracklist_selections_action_new_create_folder( \
326 track_pos, num_tracks, err) \
327 tracklist_selections_action_new_create ( \
328 TRACK_TYPE_FOLDER, NULL, NULL, track_pos, NULL, num_tracks, -1, err)
329
333#define tracklist_selections_action_new_edit_generic( \
334 type, tls_before, tls_after, already_edited, err) \
335 tracklist_selections_action_new ( \
336 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, \
337 tls_before, tls_after, NULL, NULL, 0, NULL, NULL, -1, -1, NULL, -1, type, \
338 false, NULL, 0.f, 0.f, NULL, already_edited, err)
339
345#define tracklist_selections_action_new_edit_single_float( \
346 type, track, val_before, val_after, already_edited, err) \
347 tracklist_selections_action_new ( \
348 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, NULL, \
349 NULL, NULL, track, (TrackType) 0, NULL, NULL, -1, -1, NULL, -1, type, \
350 false, NULL, val_before, val_after, NULL, already_edited, err)
351
357#define tracklist_selections_action_new_edit_single_int( \
358 type, track, val_after, already_edited, err) \
359 tracklist_selections_action_new ( \
360 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, NULL, \
361 NULL, NULL, track, 0, NULL, NULL, -1, -1, NULL, -1, type, val_after, NULL, \
362 0.f, 0.f, NULL, already_edited, err)
363
364#define tracklist_selections_action_new_edit_mute(tls_before, mute_new, err) \
365 tracklist_selections_action_new ( \
366 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, \
367 tls_before, NULL, NULL, NULL, 0, NULL, NULL, -1, -1, NULL, -1, \
368 EditTrackActionType::EDIT_TRACK_ACTION_TYPE_MUTE, mute_new, NULL, 0.f, \
369 0.f, NULL, false, err)
370
371#define tracklist_selections_action_new_edit_mute_lane( \
372 track_lane, mute_new, err) \
373 tracklist_selections_action_new ( \
374 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, NULL, \
375 NULL, NULL, track_lane_get_track (track_lane), 0, NULL, NULL, -1, \
376 track_lane->pos, NULL, -1, \
377 EditTrackActionType::EDIT_TRACK_ACTION_TYPE_MUTE_LANE, mute_new, NULL, \
378 0.f, 0.f, NULL, false, err)
379
380#define tracklist_selections_action_new_edit_solo(tls_before, solo_new, err) \
381 tracklist_selections_action_new ( \
382 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, \
383 tls_before, NULL, NULL, NULL, 0, NULL, NULL, -1, -1, NULL, -1, \
384 EditTrackActionType::EDIT_TRACK_ACTION_TYPE_SOLO, solo_new, NULL, 0.f, \
385 0.f, NULL, false, err)
386
387#define tracklist_selections_action_new_edit_solo_lane( \
388 track_lane, solo_new, err) \
389 tracklist_selections_action_new ( \
390 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, NULL, \
391 NULL, NULL, track_lane_get_track (track_lane), 0, NULL, NULL, -1, \
392 track_lane->pos, NULL, -1, \
393 EditTrackActionType::EDIT_TRACK_ACTION_TYPE_SOLO_LANE, solo_new, NULL, \
394 0.f, 0.f, NULL, false, err)
395
396#define tracklist_selections_action_new_edit_listen(tls_before, solo_new, err) \
397 tracklist_selections_action_new ( \
398 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, \
399 tls_before, NULL, NULL, NULL, 0, NULL, NULL, -1, -1, NULL, -1, \
400 EditTrackActionType::EDIT_TRACK_ACTION_TYPE_LISTEN, solo_new, NULL, 0.f, \
401 0.f, NULL, false, err)
402
403#define tracklist_selections_action_new_edit_enable( \
404 tls_before, enable_new, err) \
405 tracklist_selections_action_new ( \
406 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, \
407 tls_before, NULL, NULL, NULL, 0, NULL, NULL, -1, -1, NULL, -1, \
408 EditTrackActionType::EDIT_TRACK_ACTION_TYPE_ENABLE, enable_new, NULL, 0.f, \
409 0.f, NULL, false, err)
410
411#define tracklist_selections_action_new_edit_fold(tls_before, fold_new, err) \
412 tracklist_selections_action_new ( \
413 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, \
414 tls_before, NULL, NULL, NULL, 0, NULL, NULL, -1, -1, NULL, -1, \
415 EditTrackActionType::EDIT_TRACK_ACTION_TYPE_FOLD, fold_new, NULL, 0.f, \
416 0.f, NULL, false, err)
417
418#define tracklist_selections_action_new_edit_direct_out( \
419 tls, port_connections_mgr, direct_out, err) \
420 tracklist_selections_action_new ( \
421 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, tls, NULL, \
422 port_connections_mgr, NULL, ENUM_INT_TO_VALUE (TrackType, 0), NULL, NULL, \
423 -1, -1, NULL, -1, EditTrackActionType::EDIT_TRACK_ACTION_TYPE_DIRECT_OUT, \
424 (direct_out)->pos, NULL, 0.f, 0.f, NULL, false, err)
425
426#define tracklist_selections_action_new_edit_remove_direct_out( \
427 tls, port_connections_mgr, err) \
428 tracklist_selections_action_new ( \
429 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, tls, NULL, \
430 port_connections_mgr, NULL, ENUM_INT_TO_VALUE (TrackType, 0), NULL, NULL, \
431 -1, -1, NULL, -1, EditTrackActionType::EDIT_TRACK_ACTION_TYPE_DIRECT_OUT, \
432 -1, NULL, 0.f, 0.f, NULL, false, err)
433
434#define tracklist_selections_action_new_edit_color(tls, color, err) \
435 tracklist_selections_action_new ( \
436 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, tls, \
437 NULL, NULL, NULL, ENUM_INT_TO_VALUE (TrackType, 0), NULL, NULL, -1, -1, \
438 NULL, -1, EditTrackActionType::EDIT_TRACK_ACTION_TYPE_COLOR, false, color, \
439 0.f, 0.f, NULL, false, err)
440
441#define tracklist_selections_action_new_edit_icon(tls, icon, err) \
442 tracklist_selections_action_new ( \
443 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, tls, \
444 NULL, NULL, NULL, ENUM_INT_TO_VALUE (TrackType, 0), NULL, NULL, -1, -1, \
445 NULL, -1, EditTrackActionType::EDIT_TRACK_ACTION_TYPE_ICON, false, NULL, \
446 0.f, 0.f, icon, false, err)
447
448#define tracklist_selections_action_new_edit_comment(tls, comment, err) \
449 tracklist_selections_action_new ( \
450 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, tls, \
451 NULL, NULL, NULL, ENUM_INT_TO_VALUE (TrackType, 0), NULL, NULL, -1, -1, \
452 NULL, -1, EditTrackActionType::EDIT_TRACK_ACTION_TYPE_COMMENT, false, \
453 NULL, 0.f, 0.f, comment, false, err)
454
455#define tracklist_selections_action_new_edit_rename( \
456 track, port_connections_mgr, name, err) \
457 tracklist_selections_action_new ( \
458 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, NULL, \
459 NULL, port_connections_mgr, track, ENUM_INT_TO_VALUE (TrackType, 0), NULL, \
460 NULL, -1, -1, NULL, -1, EditTrackActionType::EDIT_TRACK_ACTION_TYPE_RENAME, \
461 false, NULL, 0.f, 0.f, name, false, err)
462
463#define tracklist_selections_action_new_edit_rename_lane(track_lane, name, err) \
464 tracklist_selections_action_new ( \
465 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, NULL, \
466 NULL, NULL, track_lane_get_track (track_lane), \
467 ENUM_INT_TO_VALUE (TrackType, 0), NULL, NULL, -1, track_lane->pos, NULL, \
468 -1, EditTrackActionType::EDIT_TRACK_ACTION_TYPE_RENAME_LANE, false, NULL, \
469 0.f, 0.f, name, false, err)
470
482#define tracklist_selections_action_new_move( \
483 tls, port_connections_mgr, track_pos, err) \
484 tracklist_selections_action_new ( \
485 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_MOVE, tls, \
486 NULL, NULL, NULL, ENUM_INT_TO_VALUE (TrackType, 0), NULL, NULL, track_pos, \
487 -1, NULL, -1, 0, false, NULL, 0.f, 0.f, NULL, false, err)
488
489#define tracklist_selections_action_new_copy( \
490 tls, port_connections_mgr, track_pos, err) \
491 tracklist_selections_action_new ( \
492 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_COPY, tls, \
493 NULL, port_connections_mgr, NULL, ENUM_INT_TO_VALUE (TrackType, 0), NULL, \
494 NULL, track_pos, -1, NULL, -1, 0, false, NULL, 0.f, 0.f, NULL, false, err)
495
509#define tracklist_selections_action_new_move_inside( \
510 tls, port_connections_mgr, track_pos, err) \
511 tracklist_selections_action_new ( \
512 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_MOVE_INSIDE, \
513 tls, NULL, NULL, NULL, ENUM_INT_TO_VALUE (TrackType, 0), NULL, NULL, \
514 track_pos, -1, NULL, -1, 0, false, NULL, 0.f, 0.f, NULL, false, err)
515
516#define tracklist_selections_action_new_copy_inside( \
517 tls, port_connections_mgr, track_pos, err) \
518 tracklist_selections_action_new ( \
519 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_COPY_INSIDE, \
520 tls, NULL, port_connections_mgr, NULL, ENUM_INT_TO_VALUE (TrackType, 0), \
521 NULL, NULL, track_pos, -1, NULL, -1, 0, false, NULL, 0.f, 0.f, NULL, \
522 false, err)
523
524#define tracklist_selections_action_new_delete(tls, port_connections_mgr, err) \
525 tracklist_selections_action_new ( \
526 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_DELETE, tls, \
527 NULL, port_connections_mgr, NULL, ENUM_INT_TO_VALUE (TrackType, 0), NULL, \
528 NULL, -1, -1, NULL, -1, 0, false, NULL, 0.f, 0.f, NULL, false, err)
529
533#define tracklist_selections_action_new_pin(tls, port_connections_mgr, err) \
534 tracklist_selections_action_new ( \
535 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_PIN, tls, NULL, \
536 port_connections_mgr, NULL, ENUM_INT_TO_VALUE (TrackType, 0), NULL, NULL, \
537 -1, -1, NULL, -1, 0, false, NULL, 0.f, 0.f, NULL, false, err)
538
542#define tracklist_selections_action_new_unpin(tls, port_connections_mgr, err) \
543 tracklist_selections_action_new ( \
544 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_UNPIN, tls, \
545 NULL, port_connections_mgr, NULL, ENUM_INT_TO_VALUE (TrackType, 0), NULL, \
546 NULL, -1, -1, NULL, -1, 0, false, NULL, 0.f, 0.f, NULL, false, err)
547
549tracklist_selections_action_clone (const TracklistSelectionsAction * src);
550
551bool
552tracklist_selections_action_perform (
553 TracklistSelectionsActionType type,
554 TracklistSelections * tls_before,
555 TracklistSelections * tls_after,
556 const PortConnectionsManager * port_connections_mgr,
557 Track * track,
558 TrackType track_type,
559 const PluginSetting * pl_setting,
560 const SupportedFile * file_descr,
561 int track_pos,
562 int lane_pos,
563 const Position * pos,
564 int num_tracks,
565 EditTrackActionType edit_type,
566 int ival_after,
567 const GdkRGBA * color_new,
568 float val_before,
569 float val_after,
570 const char * new_txt,
571 bool already_edited,
572 GError ** error);
573
578#define tracklist_selections_action_perform_create( \
579 track_type, pl_setting, file_descr, track_pos, pos, num_tracks, \
580 disable_track_pos, err) \
581 tracklist_selections_action_perform ( \
582 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_CREATE, NULL, \
583 NULL, NULL, NULL, track_type, pl_setting, file_descr, track_pos, -1, pos, \
584 num_tracks, EditTrackActionType::EDIT_TRACK_ACTION_TYPE_MUTE, \
585 disable_track_pos, NULL, 0.f, 0.f, NULL, false, err)
586
591#define tracklist_selections_action_perform_create_audio_fx( \
592 pl_setting, track_pos, num_tracks, err) \
593 tracklist_selections_action_perform_create ( \
594 TRACK_TYPE_AUDIO_BUS, pl_setting, NULL, track_pos, NULL, num_tracks, -1, \
595 err)
596
601#define tracklist_selections_action_perform_create_midi_fx( \
602 pl_setting, track_pos, num_tracks, err) \
603 tracklist_selections_action_perform_create ( \
604 TRACK_TYPE_MIDI_BUS, pl_setting, NULL, track_pos, NULL, num_tracks, -1, \
605 err)
606
611#define tracklist_selections_action_perform_create_instrument( \
612 pl_setting, track_pos, num_tracks, err) \
613 tracklist_selections_action_perform_create ( \
614 TRACK_TYPE_INSTRUMENT, pl_setting, NULL, track_pos, NULL, num_tracks, -1, \
615 err)
616
621#define tracklist_selections_action_perform_create_audio_group( \
622 track_pos, num_tracks, err) \
623 tracklist_selections_action_perform_create ( \
624 TRACK_TYPE_AUDIO_GROUP, NULL, NULL, track_pos, NULL, num_tracks, -1, err)
625
630#define tracklist_selections_action_perform_create_midi_group( \
631 track_pos, num_tracks, err) \
632 tracklist_selections_action_perform_create ( \
633 TRACK_TYPE_MIDI_GROUP, NULL, NULL, track_pos, NULL, num_tracks, -1, err)
634
639#define tracklist_selections_action_perform_create_midi( \
640 track_pos, num_tracks, err) \
641 tracklist_selections_action_perform_create ( \
642 TrackType::TRACK_TYPE_MIDI, NULL, NULL, track_pos, NULL, num_tracks, -1, \
643 err)
644
649#define tracklist_selections_action_perform_create_folder( \
650 track_pos, num_tracks, err) \
651 tracklist_selections_action_perform_create ( \
652 TRACK_TYPE_FOLDER, NULL, NULL, track_pos, NULL, num_tracks, -1, err)
653
657#define tracklist_selections_action_perform_edit_generic( \
658 type, tls_before, tls_after, already_edited, err) \
659 tracklist_selections_action_perform ( \
660 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, \
661 tls_before, tls_after, NULL, NULL, 0, NULL, NULL, -1, -1, NULL, -1, type, \
662 false, NULL, 0.f, 0.f, NULL, already_edited, err)
663
669#define tracklist_selections_action_perform_edit_single_float( \
670 type, track, val_before, val_after, already_edited, err) \
671 tracklist_selections_action_perform ( \
672 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, NULL, \
673 NULL, NULL, track, TrackType::TRACK_TYPE_MASTER, NULL, NULL, -1, -1, NULL, \
674 -1, type, false, NULL, val_before, val_after, NULL, already_edited, err)
675
681#define tracklist_selections_action_perform_edit_single_int( \
682 type, track, val_after, already_edited, err) \
683 tracklist_selections_action_perform ( \
684 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, NULL, \
685 NULL, NULL, track, ENUM_INT_TO_VALUE (TrackType, 0), NULL, NULL, -1, -1, \
686 NULL, -1, type, val_after, NULL, 0.f, 0.f, NULL, already_edited, err)
687
688#define tracklist_selections_action_perform_edit_mute( \
689 tls_before, mute_new, err) \
690 tracklist_selections_action_perform ( \
691 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, \
692 tls_before, NULL, NULL, NULL, ENUM_INT_TO_VALUE (TrackType, 0), NULL, \
693 NULL, -1, -1, NULL, -1, EditTrackActionType::EDIT_TRACK_ACTION_TYPE_MUTE, \
694 mute_new, NULL, 0.f, 0.f, NULL, false, err)
695
696#define tracklist_selections_action_perform_edit_mute_lane( \
697 track_lane, mute_new, err) \
698 tracklist_selections_action_perform ( \
699 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, NULL, \
700 NULL, NULL, track_lane_get_track (track_lane), \
701 ENUM_INT_TO_VALUE (TrackType, 0), NULL, NULL, -1, track_lane->pos, NULL, \
702 -1, EditTrackActionType::EDIT_TRACK_ACTION_TYPE_MUTE_LANE, mute_new, NULL, \
703 0.f, 0.f, NULL, false, err)
704
705#define tracklist_selections_action_perform_edit_solo( \
706 tls_before, solo_new, err) \
707 tracklist_selections_action_perform ( \
708 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, \
709 tls_before, NULL, NULL, NULL, ENUM_INT_TO_VALUE (TrackType, 0), NULL, \
710 NULL, -1, -1, NULL, -1, EditTrackActionType::EDIT_TRACK_ACTION_TYPE_SOLO, \
711 solo_new, NULL, 0.f, 0.f, NULL, false, err)
712
713#define tracklist_selections_action_perform_edit_solo_lane( \
714 track_lane, solo_new, err) \
715 tracklist_selections_action_perform ( \
716 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, NULL, \
717 NULL, NULL, track_lane_get_track (track_lane), \
718 ENUM_INT_TO_VALUE (TrackType, 0), NULL, NULL, -1, track_lane->pos, NULL, \
719 -1, EditTrackActionType::EDIT_TRACK_ACTION_TYPE_SOLO_LANE, solo_new, NULL, \
720 0.f, 0.f, NULL, false, err)
721
722#define tracklist_selections_action_perform_edit_listen( \
723 tls_before, solo_new, err) \
724 tracklist_selections_action_perform ( \
725 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, \
726 tls_before, NULL, NULL, NULL, ENUM_INT_TO_VALUE (TrackType, 0), NULL, \
727 NULL, -1, -1, NULL, -1, EditTrackActionType::EDIT_TRACK_ACTION_TYPE_LISTEN, \
728 solo_new, NULL, 0.f, 0.f, NULL, false, err)
729
730#define tracklist_selections_action_perform_edit_enable( \
731 tls_before, enable_new, err) \
732 tracklist_selections_action_perform ( \
733 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, \
734 tls_before, NULL, NULL, NULL, ENUM_INT_TO_VALUE (TrackType, 0), NULL, \
735 NULL, -1, -1, NULL, -1, EditTrackActionType::EDIT_TRACK_ACTION_TYPE_ENABLE, \
736 enable_new, NULL, 0.f, 0.f, NULL, false, err)
737
738#define tracklist_selections_action_perform_edit_fold( \
739 tls_before, fold_new, err) \
740 tracklist_selections_action_perform ( \
741 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, \
742 tls_before, NULL, NULL, NULL, ENUM_INT_TO_VALUE (TrackType, 0), NULL, \
743 NULL, -1, -1, NULL, -1, EditTrackActionType::EDIT_TRACK_ACTION_TYPE_FOLD, \
744 fold_new, NULL, 0.f, 0.f, NULL, false, err)
745
746#define tracklist_selections_action_perform_edit_direct_out( \
747 tls, port_connections_mgr, direct_out, err) \
748 tracklist_selections_action_perform ( \
749 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, tls, \
750 NULL, port_connections_mgr, NULL, 0, NULL, NULL, -1, -1, NULL, -1, \
751 EditTrackActionType::EDIT_TRACK_ACTION_TYPE_DIRECT_OUT, (direct_out)->pos, \
752 NULL, 0.f, 0.f, NULL, false, err)
753
754#define tracklist_selections_action_perform_edit_remove_direct_out( \
755 tls, port_connections_mgr, err) \
756 tracklist_selections_action_perform ( \
757 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, tls, \
758 NULL, port_connections_mgr, NULL, 0, NULL, NULL, -1, -1, NULL, -1, \
759 EditTrackActionType::EDIT_TRACK_ACTION_TYPE_DIRECT_OUT, -1, NULL, 0.f, \
760 0.f, NULL, false, err)
761
762#define tracklist_selections_action_perform_edit_color(tls, color, err) \
763 tracklist_selections_action_perform ( \
764 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, tls, \
765 NULL, NULL, NULL, ENUM_INT_TO_VALUE (TrackType, 0), NULL, NULL, -1, -1, \
766 NULL, -1, EditTrackActionType::EDIT_TRACK_ACTION_TYPE_COLOR, false, color, \
767 0.f, 0.f, NULL, false, err)
768
769#define tracklist_selections_action_perform_edit_icon(tls, icon, err) \
770 tracklist_selections_action_perform ( \
771 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, tls, \
772 NULL, NULL, NULL, ENUM_INT_TO_VALUE (TrackType, 0), NULL, NULL, -1, -1, \
773 NULL, -1, EditTrackActionType::EDIT_TRACK_ACTION_TYPE_ICON, false, NULL, \
774 0.f, 0.f, icon, false, err)
775
776#define tracklist_selections_action_perform_edit_comment(tls, comment, err) \
777 tracklist_selections_action_perform ( \
778 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, tls, \
779 NULL, NULL, NULL, ENUM_INT_TO_VALUE (TrackType, 0), NULL, NULL, -1, -1, \
780 NULL, -1, EditTrackActionType::EDIT_TRACK_ACTION_TYPE_COMMENT, false, \
781 NULL, 0.f, 0.f, comment, false, err)
782
783#define tracklist_selections_action_perform_edit_rename( \
784 track, port_connections_mgr, name, err) \
785 tracklist_selections_action_perform ( \
786 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, NULL, \
787 NULL, port_connections_mgr, track, ENUM_INT_TO_VALUE (TrackType, 0), NULL, \
788 NULL, -1, -1, NULL, -1, EditTrackActionType::EDIT_TRACK_ACTION_TYPE_RENAME, \
789 false, NULL, 0.f, 0.f, name, false, err)
790
791#define tracklist_selections_action_perform_edit_rename_lane( \
792 track_lane, name, err) \
793 tracklist_selections_action_perform ( \
794 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_EDIT, NULL, \
795 NULL, NULL, track_lane_get_track (track_lane), \
796 ENUM_INT_TO_VALUE (TrackType, 0), NULL, NULL, -1, track_lane->pos, NULL, \
797 -1, EditTrackActionType::EDIT_TRACK_ACTION_TYPE_RENAME_LANE, false, NULL, \
798 0.f, 0.f, name, false, err)
799
811#define tracklist_selections_action_perform_move( \
812 tls, port_connections_mgr, track_pos, err) \
813 tracklist_selections_action_perform ( \
814 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_MOVE, tls, \
815 NULL, NULL, NULL, ENUM_INT_TO_VALUE (TrackType, 0), NULL, NULL, track_pos, \
816 -1, NULL, -1, ENUM_INT_TO_VALUE (EditTrackActionType, 0), false, NULL, \
817 0.f, 0.f, NULL, false, err)
818
819#define tracklist_selections_action_perform_copy( \
820 tls, port_connections_mgr, track_pos, err) \
821 tracklist_selections_action_perform ( \
822 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_COPY, tls, \
823 NULL, port_connections_mgr, NULL, ENUM_INT_TO_VALUE (TrackType, 0), NULL, \
824 NULL, track_pos, -1, NULL, -1, ENUM_INT_TO_VALUE (EditTrackActionType, 0), \
825 false, NULL, 0.f, 0.f, NULL, false, err)
826
840#define tracklist_selections_action_perform_move_inside( \
841 tls, port_connections_mgr, track_pos, err) \
842 tracklist_selections_action_perform ( \
843 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_MOVE_INSIDE, \
844 tls, NULL, NULL, NULL, ENUM_INT_TO_VALUE (TrackType, 0), NULL, NULL, \
845 track_pos, -1, NULL, -1, ENUM_INT_TO_VALUE (EditTrackActionType, 0), \
846 false, NULL, 0.f, 0.f, NULL, false, err)
847
848#define tracklist_selections_action_perform_copy_inside( \
849 tls, port_connections_mgr, track_pos, err) \
850 tracklist_selections_action_perform ( \
851 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_COPY_INSIDE, \
852 tls, NULL, port_connections_mgr, NULL, ENUM_INT_TO_VALUE (TrackType, 0), \
853 NULL, NULL, track_pos, -1, NULL, -1, \
854 ENUM_INT_TO_VALUE (EditTrackActionType, 0), false, NULL, 0.f, 0.f, NULL, \
855 false, err)
856
857#define tracklist_selections_action_perform_delete( \
858 tls, port_connections_mgr, err) \
859 tracklist_selections_action_perform ( \
860 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_DELETE, tls, \
861 NULL, port_connections_mgr, NULL, ENUM_INT_TO_VALUE (TrackType, 0), NULL, \
862 NULL, -1, -1, NULL, -1, ENUM_INT_TO_VALUE (EditTrackActionType, 0), false, \
863 NULL, 0.f, 0.f, NULL, false, err)
864
868#define tracklist_selections_action_perform_pin(tls, port_connections_mgr, err) \
869 tracklist_selections_action_perform ( \
870 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_PIN, tls, NULL, \
871 port_connections_mgr, NULL, ENUM_INT_TO_VALUE (TrackType, 0), NULL, NULL, \
872 -1, -1, NULL, -1, ENUM_INT_TO_VALUE (EditTrackActionType, 0), false, NULL, \
873 0.f, 0.f, NULL, false, err)
874
878#define tracklist_selections_action_perform_unpin( \
879 tls, port_connections_mgr, err) \
880 tracklist_selections_action_perform ( \
881 TracklistSelectionsActionType::TRACKLIST_SELECTIONS_ACTION_UNPIN, tls, \
882 NULL, port_connections_mgr, NULL, ENUM_INT_TO_VALUE (TrackType, 0), NULL, \
883 NULL, -1, -1, NULL, -1, ENUM_INT_TO_VALUE (EditTrackActionType, 0), false, \
884 NULL, 0.f, 0.f, NULL, false, err)
885
894bool
896 TracklistSelections * self,
897 PortConnectionsManager * port_connections_mgr,
898 Track * direct_out,
899 GError ** error);
900
901int
902tracklist_selections_action_do (
904 GError ** error);
905
906int
907tracklist_selections_action_undo (
909 GError ** error);
910
911char *
912tracklist_selections_action_stringize (TracklistSelectionsAction * self);
913
914void
915tracklist_selections_action_free (TracklistSelectionsAction * self);
916
921#endif
The backend for a timeline track.
EditTrackActionType
Action type.
WARN_UNUSED_RESULT UndoableAction * tracklist_selections_action_new(TracklistSelectionsActionType type, TracklistSelections *tls_before, TracklistSelections *tls_after, const PortConnectionsManager *port_connections_mgr, Track *track, TrackType track_type, const PluginSetting *pl_setting, const SupportedFile *file_descr, int track_pos, int lane_pos, const Position *pos, int num_tracks, EditTrackActionType edit_type, int ival_after, const GdkRGBA *color_new, float val_before, float val_after, const char *new_txt, bool already_edited, GError **error)
Creates a new TracklistSelectionsAction.
bool tracklist_selections_action_perform_set_direct_out(TracklistSelections *self, PortConnectionsManager *port_connections_mgr, Track *direct_out, GError **error)
Edit or remove direct out.
@ EDIT_TRACK_ACTION_TYPE_RENAME
Rename track.
@ EDIT_TRACK_ACTION_TYPE_RENAME_LANE
Rename lane.
@ EDIT_TRACK_ACTION_TYPE_DIRECT_OUT
Direct out change.
TrackType
The Track's type.
Definition track.h:82
Tracklist selections.
Plugin settings.
Port connections manager.
Channel send.
A setting for a specific plugin descriptor.
Port connections manager.
A Position is made up of bars.beats.sixteenths.ticks.
Definition position.h:124
Metadata for a supported file.
Track to be inserted into the Project's Tracklist.
Definition track.h:177
Tracklist selections (tracks) action.
PortConnectionsManager * connections_mgr_before
A clone of the port connections at the start of the action.
TrackType track_type
Track type.
int lane_pos
Lane position, if editing lane.
int pool_id
If this is an action to create an Audio track from an audio file, this is the pool ID of the audio fi...
TracklistSelections * tls_after
Clone of the TracklistSelections, if applicable.
char * file_basename
The basename of the file, if any.
int tracks_before[600]
Track positions.
TracklistSelectionsActionType type
Type of action.
PortConnectionsManager * connections_mgr_after
A clone of the port connections after applying the action.
int is_empty
Flag to know if we are making an empty track.
int track_pos
Position to make the tracks at.
ChannelSend ** src_sends
Source sends that need to be deleted/ recreated on do/undo.
PluginSetting * pl_setting
PluginSetting, if making an instrument or bus track from a plugin.
bool already_edited
Skip do if true.
TracklistSelections * foldable_tls_before
Foldable tracks before the change, used when undoing to set the correct sizes.
TracklistSelections * tls_before
Clone of the TracklistSelections, if applicable.
Position pos
Position to add the audio region to, if applicable.
unsigned int * out_tracks
Direct out tracks of the original tracks.
int num_fold_change_tracks
Number of tracks under folder affected.
char * base64_midi
If this is an action to create a MIDI track from a MIDI file, this is the base64 representation so th...
Selections to be used for the tracklist's current selections, copying, undoing, etc.
Base struct to be inherited by implementing undoable actions.
Supported file info.
Undoable actions.