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
20typedef enum 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} TracklistSelectionsActionType;
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,
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 EditTracksActionType 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 EditTracksActionType 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 TRACKLIST_SELECTIONS_ACTION_CREATE, NULL, NULL, NULL, NULL, track_type, \
261 pl_setting, file_descr, track_pos, -1, pos, num_tracks, 0, \
262 disable_track_pos, NULL, 0.f, 0.f, NULL, false, err)
263
268#define tracklist_selections_action_new_create_audio_fx( \
269 pl_setting, track_pos, num_tracks, err) \
270 tracklist_selections_action_new_create ( \
271 TRACK_TYPE_AUDIO_BUS, pl_setting, NULL, track_pos, NULL, num_tracks, -1, \
272 err)
273
278#define tracklist_selections_action_new_create_midi_fx( \
279 pl_setting, track_pos, num_tracks, err) \
280 tracklist_selections_action_new_create ( \
281 TRACK_TYPE_MIDI_BUS, pl_setting, NULL, track_pos, NULL, num_tracks, -1, \
282 err)
283
288#define tracklist_selections_action_new_create_instrument( \
289 pl_setting, track_pos, num_tracks, err) \
290 tracklist_selections_action_new_create ( \
291 TRACK_TYPE_INSTRUMENT, pl_setting, NULL, track_pos, NULL, num_tracks, -1, \
292 err)
293
298#define tracklist_selections_action_new_create_audio_group( \
299 track_pos, num_tracks, err) \
300 tracklist_selections_action_new_create ( \
301 TRACK_TYPE_AUDIO_GROUP, NULL, NULL, track_pos, NULL, num_tracks, -1, err)
302
307#define tracklist_selections_action_new_create_midi_group( \
308 track_pos, num_tracks, err) \
309 tracklist_selections_action_new_create ( \
310 TRACK_TYPE_MIDI_GROUP, NULL, NULL, track_pos, NULL, num_tracks, -1, err)
311
316#define tracklist_selections_action_new_create_midi(track_pos, num_tracks, err) \
317 tracklist_selections_action_new_create ( \
318 TRACK_TYPE_MIDI, NULL, NULL, track_pos, NULL, num_tracks, -1, err)
319
324#define tracklist_selections_action_new_create_folder( \
325 track_pos, num_tracks, err) \
326 tracklist_selections_action_new_create ( \
327 TRACK_TYPE_FOLDER, NULL, NULL, track_pos, NULL, num_tracks, -1, err)
328
332#define tracklist_selections_action_new_edit_generic( \
333 type, tls_before, tls_after, already_edited, err) \
334 tracklist_selections_action_new ( \
335 TRACKLIST_SELECTIONS_ACTION_EDIT, tls_before, tls_after, NULL, NULL, 0, \
336 NULL, NULL, -1, -1, NULL, -1, type, false, NULL, 0.f, 0.f, NULL, \
337 already_edited, err)
338
344#define tracklist_selections_action_new_edit_single_float( \
345 type, track, val_before, val_after, already_edited, err) \
346 tracklist_selections_action_new ( \
347 TRACKLIST_SELECTIONS_ACTION_EDIT, NULL, NULL, NULL, track, 0, NULL, NULL, \
348 -1, -1, NULL, -1, type, false, NULL, val_before, val_after, NULL, \
349 already_edited, err)
350
356#define tracklist_selections_action_new_edit_single_int( \
357 type, track, val_after, already_edited, err) \
358 tracklist_selections_action_new ( \
359 TRACKLIST_SELECTIONS_ACTION_EDIT, NULL, NULL, NULL, track, 0, NULL, NULL, \
360 -1, -1, NULL, -1, type, val_after, NULL, 0.f, 0.f, NULL, already_edited, \
361 err)
362
363#define tracklist_selections_action_new_edit_mute(tls_before, mute_new, err) \
364 tracklist_selections_action_new ( \
365 TRACKLIST_SELECTIONS_ACTION_EDIT, tls_before, NULL, NULL, NULL, 0, NULL, \
366 NULL, -1, -1, NULL, -1, EDIT_TRACK_ACTION_TYPE_MUTE, mute_new, NULL, 0.f, \
367 0.f, NULL, false, err)
368
369#define tracklist_selections_action_new_edit_mute_lane( \
370 track_lane, mute_new, err) \
371 tracklist_selections_action_new ( \
372 TRACKLIST_SELECTIONS_ACTION_EDIT, NULL, NULL, NULL, \
373 track_lane_get_track (track_lane), 0, NULL, NULL, -1, track_lane->pos, \
374 NULL, -1, EDIT_TRACK_ACTION_TYPE_MUTE_LANE, mute_new, NULL, 0.f, 0.f, \
375 NULL, false, err)
376
377#define tracklist_selections_action_new_edit_solo(tls_before, solo_new, err) \
378 tracklist_selections_action_new ( \
379 TRACKLIST_SELECTIONS_ACTION_EDIT, tls_before, NULL, NULL, NULL, 0, NULL, \
380 NULL, -1, -1, NULL, -1, EDIT_TRACK_ACTION_TYPE_SOLO, solo_new, NULL, 0.f, \
381 0.f, NULL, false, err)
382
383#define tracklist_selections_action_new_edit_solo_lane( \
384 track_lane, solo_new, err) \
385 tracklist_selections_action_new ( \
386 TRACKLIST_SELECTIONS_ACTION_EDIT, NULL, NULL, NULL, \
387 track_lane_get_track (track_lane), 0, NULL, NULL, -1, track_lane->pos, \
388 NULL, -1, EDIT_TRACK_ACTION_TYPE_SOLO_LANE, solo_new, NULL, 0.f, 0.f, \
389 NULL, false, err)
390
391#define tracklist_selections_action_new_edit_listen(tls_before, solo_new, err) \
392 tracklist_selections_action_new ( \
393 TRACKLIST_SELECTIONS_ACTION_EDIT, tls_before, NULL, NULL, NULL, 0, NULL, \
394 NULL, -1, -1, NULL, -1, EDIT_TRACK_ACTION_TYPE_LISTEN, solo_new, NULL, \
395 0.f, 0.f, NULL, false, err)
396
397#define tracklist_selections_action_new_edit_enable( \
398 tls_before, enable_new, err) \
399 tracklist_selections_action_new ( \
400 TRACKLIST_SELECTIONS_ACTION_EDIT, tls_before, NULL, NULL, NULL, 0, NULL, \
401 NULL, -1, -1, NULL, -1, EDIT_TRACK_ACTION_TYPE_ENABLE, enable_new, NULL, \
402 0.f, 0.f, NULL, false, err)
403
404#define tracklist_selections_action_new_edit_fold(tls_before, fold_new, err) \
405 tracklist_selections_action_new ( \
406 TRACKLIST_SELECTIONS_ACTION_EDIT, tls_before, NULL, NULL, NULL, 0, NULL, \
407 NULL, -1, -1, NULL, -1, EDIT_TRACK_ACTION_TYPE_FOLD, fold_new, NULL, 0.f, \
408 0.f, NULL, false, err)
409
410#define tracklist_selections_action_new_edit_direct_out( \
411 tls, port_connections_mgr, direct_out, err) \
412 tracklist_selections_action_new ( \
413 TRACKLIST_SELECTIONS_ACTION_EDIT, tls, NULL, port_connections_mgr, NULL, \
414 0, NULL, NULL, -1, -1, NULL, -1, EDIT_TRACK_ACTION_TYPE_DIRECT_OUT, \
415 (direct_out)->pos, NULL, 0.f, 0.f, NULL, false, err)
416
417#define tracklist_selections_action_new_edit_remove_direct_out( \
418 tls, port_connections_mgr, err) \
419 tracklist_selections_action_new ( \
420 TRACKLIST_SELECTIONS_ACTION_EDIT, tls, NULL, port_connections_mgr, NULL, \
421 0, NULL, NULL, -1, -1, NULL, -1, EDIT_TRACK_ACTION_TYPE_DIRECT_OUT, -1, \
422 NULL, 0.f, 0.f, NULL, false, err)
423
424#define tracklist_selections_action_new_edit_color(tls, color, err) \
425 tracklist_selections_action_new ( \
426 TRACKLIST_SELECTIONS_ACTION_EDIT, tls, NULL, NULL, NULL, 0, NULL, NULL, \
427 -1, -1, NULL, -1, EDIT_TRACK_ACTION_TYPE_COLOR, false, color, 0.f, 0.f, \
428 NULL, false, err)
429
430#define tracklist_selections_action_new_edit_icon(tls, icon, err) \
431 tracklist_selections_action_new ( \
432 TRACKLIST_SELECTIONS_ACTION_EDIT, tls, NULL, NULL, NULL, 0, NULL, NULL, \
433 -1, -1, NULL, -1, EDIT_TRACK_ACTION_TYPE_ICON, false, NULL, 0.f, 0.f, \
434 icon, false, err)
435
436#define tracklist_selections_action_new_edit_comment(tls, comment, err) \
437 tracklist_selections_action_new ( \
438 TRACKLIST_SELECTIONS_ACTION_EDIT, tls, NULL, NULL, NULL, 0, NULL, NULL, \
439 -1, -1, NULL, -1, EDIT_TRACK_ACTION_TYPE_COMMENT, false, NULL, 0.f, 0.f, \
440 comment, false, err)
441
442#define tracklist_selections_action_new_edit_rename( \
443 track, port_connections_mgr, name, err) \
444 tracklist_selections_action_new ( \
445 TRACKLIST_SELECTIONS_ACTION_EDIT, NULL, NULL, port_connections_mgr, track, \
446 0, NULL, NULL, -1, -1, NULL, -1, EDIT_TRACK_ACTION_TYPE_RENAME, false, \
447 NULL, 0.f, 0.f, name, false, err)
448
449#define tracklist_selections_action_new_edit_rename_lane(track_lane, name, err) \
450 tracklist_selections_action_new ( \
451 TRACKLIST_SELECTIONS_ACTION_EDIT, NULL, NULL, NULL, \
452 track_lane_get_track (track_lane), 0, NULL, NULL, -1, track_lane->pos, \
453 NULL, -1, EDIT_TRACK_ACTION_TYPE_RENAME_LANE, false, NULL, 0.f, 0.f, name, \
454 false, err)
455
467#define tracklist_selections_action_new_move( \
468 tls, port_connections_mgr, track_pos, err) \
469 tracklist_selections_action_new ( \
470 TRACKLIST_SELECTIONS_ACTION_MOVE, tls, NULL, NULL, NULL, 0, NULL, NULL, \
471 track_pos, -1, NULL, -1, 0, false, NULL, 0.f, 0.f, NULL, false, err)
472
473#define tracklist_selections_action_new_copy( \
474 tls, port_connections_mgr, track_pos, err) \
475 tracklist_selections_action_new ( \
476 TRACKLIST_SELECTIONS_ACTION_COPY, tls, NULL, port_connections_mgr, NULL, \
477 0, NULL, NULL, track_pos, -1, NULL, -1, 0, false, NULL, 0.f, 0.f, NULL, \
478 false, err)
479
493#define tracklist_selections_action_new_move_inside( \
494 tls, port_connections_mgr, track_pos, err) \
495 tracklist_selections_action_new ( \
496 TRACKLIST_SELECTIONS_ACTION_MOVE_INSIDE, tls, NULL, NULL, NULL, 0, NULL, \
497 NULL, track_pos, -1, NULL, -1, 0, false, NULL, 0.f, 0.f, NULL, false, err)
498
499#define tracklist_selections_action_new_copy_inside( \
500 tls, port_connections_mgr, track_pos, err) \
501 tracklist_selections_action_new ( \
502 TRACKLIST_SELECTIONS_ACTION_COPY_INSIDE, tls, NULL, port_connections_mgr, \
503 NULL, 0, NULL, NULL, track_pos, -1, NULL, -1, 0, false, NULL, 0.f, 0.f, \
504 NULL, false, err)
505
506#define tracklist_selections_action_new_delete(tls, port_connections_mgr, err) \
507 tracklist_selections_action_new ( \
508 TRACKLIST_SELECTIONS_ACTION_DELETE, tls, NULL, port_connections_mgr, NULL, \
509 0, NULL, NULL, -1, -1, NULL, -1, 0, false, NULL, 0.f, 0.f, NULL, false, \
510 err)
511
515#define tracklist_selections_action_new_pin(tls, port_connections_mgr, err) \
516 tracklist_selections_action_new ( \
517 TRACKLIST_SELECTIONS_ACTION_PIN, tls, NULL, port_connections_mgr, NULL, 0, \
518 NULL, NULL, -1, -1, NULL, -1, 0, false, NULL, 0.f, 0.f, NULL, false, err)
519
523#define tracklist_selections_action_new_unpin(tls, port_connections_mgr, err) \
524 tracklist_selections_action_new ( \
525 TRACKLIST_SELECTIONS_ACTION_UNPIN, tls, NULL, port_connections_mgr, NULL, \
526 0, NULL, NULL, -1, -1, NULL, -1, 0, false, NULL, 0.f, 0.f, NULL, false, \
527 err)
528
530tracklist_selections_action_clone (const TracklistSelectionsAction * src);
531
532bool
533tracklist_selections_action_perform (
534 TracklistSelectionsActionType type,
535 TracklistSelections * tls_before,
536 TracklistSelections * tls_after,
537 const PortConnectionsManager * port_connections_mgr,
538 Track * track,
539 TrackType track_type,
540 const PluginSetting * pl_setting,
541 const SupportedFile * file_descr,
542 int track_pos,
543 int lane_pos,
544 const Position * pos,
545 int num_tracks,
546 EditTracksActionType edit_type,
547 int ival_after,
548 const GdkRGBA * color_new,
549 float val_before,
550 float val_after,
551 const char * new_txt,
552 bool already_edited,
553 GError ** error);
554
559#define tracklist_selections_action_perform_create( \
560 track_type, pl_setting, file_descr, track_pos, pos, num_tracks, \
561 disable_track_pos, err) \
562 tracklist_selections_action_perform ( \
563 TRACKLIST_SELECTIONS_ACTION_CREATE, NULL, NULL, NULL, NULL, track_type, \
564 pl_setting, file_descr, track_pos, -1, pos, num_tracks, 0, \
565 disable_track_pos, NULL, 0.f, 0.f, NULL, false, err)
566
571#define tracklist_selections_action_perform_create_audio_fx( \
572 pl_setting, track_pos, num_tracks, err) \
573 tracklist_selections_action_perform_create ( \
574 TRACK_TYPE_AUDIO_BUS, pl_setting, NULL, track_pos, NULL, num_tracks, -1, \
575 err)
576
581#define tracklist_selections_action_perform_create_midi_fx( \
582 pl_setting, track_pos, num_tracks, err) \
583 tracklist_selections_action_perform_create ( \
584 TRACK_TYPE_MIDI_BUS, pl_setting, NULL, track_pos, NULL, num_tracks, -1, \
585 err)
586
591#define tracklist_selections_action_perform_create_instrument( \
592 pl_setting, track_pos, num_tracks, err) \
593 tracklist_selections_action_perform_create ( \
594 TRACK_TYPE_INSTRUMENT, pl_setting, NULL, track_pos, NULL, num_tracks, -1, \
595 err)
596
601#define tracklist_selections_action_perform_create_audio_group( \
602 track_pos, num_tracks, err) \
603 tracklist_selections_action_perform_create ( \
604 TRACK_TYPE_AUDIO_GROUP, NULL, NULL, track_pos, NULL, num_tracks, -1, err)
605
610#define tracklist_selections_action_perform_create_midi_group( \
611 track_pos, num_tracks, err) \
612 tracklist_selections_action_perform_create ( \
613 TRACK_TYPE_MIDI_GROUP, NULL, NULL, track_pos, NULL, num_tracks, -1, err)
614
619#define tracklist_selections_action_perform_create_midi( \
620 track_pos, num_tracks, err) \
621 tracklist_selections_action_perform_create ( \
622 TRACK_TYPE_MIDI, NULL, NULL, track_pos, NULL, num_tracks, -1, err)
623
628#define tracklist_selections_action_perform_create_folder( \
629 track_pos, num_tracks, err) \
630 tracklist_selections_action_perform_create ( \
631 TRACK_TYPE_FOLDER, NULL, NULL, track_pos, NULL, num_tracks, -1, err)
632
636#define tracklist_selections_action_perform_edit_generic( \
637 type, tls_before, tls_after, already_edited, err) \
638 tracklist_selections_action_perform ( \
639 TRACKLIST_SELECTIONS_ACTION_EDIT, tls_before, tls_after, NULL, NULL, 0, \
640 NULL, NULL, -1, -1, NULL, -1, type, false, NULL, 0.f, 0.f, NULL, \
641 already_edited, err)
642
648#define tracklist_selections_action_perform_edit_single_float( \
649 type, track, val_before, val_after, already_edited, err) \
650 tracklist_selections_action_perform ( \
651 TRACKLIST_SELECTIONS_ACTION_EDIT, NULL, NULL, NULL, track, 0, NULL, NULL, \
652 -1, -1, NULL, -1, type, false, NULL, val_before, val_after, NULL, \
653 already_edited, err)
654
660#define tracklist_selections_action_perform_edit_single_int( \
661 type, track, val_after, already_edited, err) \
662 tracklist_selections_action_perform ( \
663 TRACKLIST_SELECTIONS_ACTION_EDIT, NULL, NULL, NULL, track, 0, NULL, NULL, \
664 -1, -1, NULL, -1, type, val_after, NULL, 0.f, 0.f, NULL, already_edited, \
665 err)
666
667#define tracklist_selections_action_perform_edit_mute( \
668 tls_before, mute_new, err) \
669 tracklist_selections_action_perform ( \
670 TRACKLIST_SELECTIONS_ACTION_EDIT, tls_before, NULL, NULL, NULL, 0, NULL, \
671 NULL, -1, -1, NULL, -1, EDIT_TRACK_ACTION_TYPE_MUTE, mute_new, NULL, 0.f, \
672 0.f, NULL, false, err)
673
674#define tracklist_selections_action_perform_edit_mute_lane( \
675 track_lane, mute_new, err) \
676 tracklist_selections_action_perform ( \
677 TRACKLIST_SELECTIONS_ACTION_EDIT, NULL, NULL, NULL, \
678 track_lane_get_track (track_lane), 0, NULL, NULL, -1, track_lane->pos, \
679 NULL, -1, EDIT_TRACK_ACTION_TYPE_MUTE_LANE, mute_new, NULL, 0.f, 0.f, \
680 NULL, false, err)
681
682#define tracklist_selections_action_perform_edit_solo( \
683 tls_before, solo_new, err) \
684 tracklist_selections_action_perform ( \
685 TRACKLIST_SELECTIONS_ACTION_EDIT, tls_before, NULL, NULL, NULL, 0, NULL, \
686 NULL, -1, -1, NULL, -1, EDIT_TRACK_ACTION_TYPE_SOLO, solo_new, NULL, 0.f, \
687 0.f, NULL, false, err)
688
689#define tracklist_selections_action_perform_edit_solo_lane( \
690 track_lane, solo_new, err) \
691 tracklist_selections_action_perform ( \
692 TRACKLIST_SELECTIONS_ACTION_EDIT, NULL, NULL, NULL, \
693 track_lane_get_track (track_lane), 0, NULL, NULL, -1, track_lane->pos, \
694 NULL, -1, EDIT_TRACK_ACTION_TYPE_SOLO_LANE, solo_new, NULL, 0.f, 0.f, \
695 NULL, false, err)
696
697#define tracklist_selections_action_perform_edit_listen( \
698 tls_before, solo_new, err) \
699 tracklist_selections_action_perform ( \
700 TRACKLIST_SELECTIONS_ACTION_EDIT, tls_before, NULL, NULL, NULL, 0, NULL, \
701 NULL, -1, -1, NULL, -1, EDIT_TRACK_ACTION_TYPE_LISTEN, solo_new, NULL, \
702 0.f, 0.f, NULL, false, err)
703
704#define tracklist_selections_action_perform_edit_enable( \
705 tls_before, enable_new, err) \
706 tracklist_selections_action_perform ( \
707 TRACKLIST_SELECTIONS_ACTION_EDIT, tls_before, NULL, NULL, NULL, 0, NULL, \
708 NULL, -1, -1, NULL, -1, EDIT_TRACK_ACTION_TYPE_ENABLE, enable_new, NULL, \
709 0.f, 0.f, NULL, false, err)
710
711#define tracklist_selections_action_perform_edit_fold( \
712 tls_before, fold_new, err) \
713 tracklist_selections_action_perform ( \
714 TRACKLIST_SELECTIONS_ACTION_EDIT, tls_before, NULL, NULL, NULL, 0, NULL, \
715 NULL, -1, -1, NULL, -1, EDIT_TRACK_ACTION_TYPE_FOLD, fold_new, NULL, 0.f, \
716 0.f, NULL, false, err)
717
718#define tracklist_selections_action_perform_edit_direct_out( \
719 tls, port_connections_mgr, direct_out, err) \
720 tracklist_selections_action_perform ( \
721 TRACKLIST_SELECTIONS_ACTION_EDIT, tls, NULL, port_connections_mgr, NULL, \
722 0, NULL, NULL, -1, -1, NULL, -1, EDIT_TRACK_ACTION_TYPE_DIRECT_OUT, \
723 (direct_out)->pos, NULL, 0.f, 0.f, NULL, false, err)
724
725#define tracklist_selections_action_perform_edit_remove_direct_out( \
726 tls, port_connections_mgr, err) \
727 tracklist_selections_action_perform ( \
728 TRACKLIST_SELECTIONS_ACTION_EDIT, tls, NULL, port_connections_mgr, NULL, \
729 0, NULL, NULL, -1, -1, NULL, -1, EDIT_TRACK_ACTION_TYPE_DIRECT_OUT, -1, \
730 NULL, 0.f, 0.f, NULL, false, err)
731
732#define tracklist_selections_action_perform_edit_color(tls, color, err) \
733 tracklist_selections_action_perform ( \
734 TRACKLIST_SELECTIONS_ACTION_EDIT, tls, NULL, NULL, NULL, 0, NULL, NULL, \
735 -1, -1, NULL, -1, EDIT_TRACK_ACTION_TYPE_COLOR, false, color, 0.f, 0.f, \
736 NULL, false, err)
737
738#define tracklist_selections_action_perform_edit_icon(tls, icon, err) \
739 tracklist_selections_action_perform ( \
740 TRACKLIST_SELECTIONS_ACTION_EDIT, tls, NULL, NULL, NULL, 0, NULL, NULL, \
741 -1, -1, NULL, -1, EDIT_TRACK_ACTION_TYPE_ICON, false, NULL, 0.f, 0.f, \
742 icon, false, err)
743
744#define tracklist_selections_action_perform_edit_comment(tls, comment, err) \
745 tracklist_selections_action_perform ( \
746 TRACKLIST_SELECTIONS_ACTION_EDIT, tls, NULL, NULL, NULL, 0, NULL, NULL, \
747 -1, -1, NULL, -1, EDIT_TRACK_ACTION_TYPE_COMMENT, false, NULL, 0.f, 0.f, \
748 comment, false, err)
749
750#define tracklist_selections_action_perform_edit_rename( \
751 track, port_connections_mgr, name, err) \
752 tracklist_selections_action_perform ( \
753 TRACKLIST_SELECTIONS_ACTION_EDIT, NULL, NULL, port_connections_mgr, track, \
754 0, NULL, NULL, -1, -1, NULL, -1, EDIT_TRACK_ACTION_TYPE_RENAME, false, \
755 NULL, 0.f, 0.f, name, false, err)
756
757#define tracklist_selections_action_perform_edit_rename_lane( \
758 track_lane, name, err) \
759 tracklist_selections_action_perform ( \
760 TRACKLIST_SELECTIONS_ACTION_EDIT, NULL, NULL, NULL, \
761 track_lane_get_track (track_lane), 0, NULL, NULL, -1, track_lane->pos, \
762 NULL, -1, EDIT_TRACK_ACTION_TYPE_RENAME_LANE, false, NULL, 0.f, 0.f, name, \
763 false, err)
764
776#define tracklist_selections_action_perform_move( \
777 tls, port_connections_mgr, track_pos, err) \
778 tracklist_selections_action_perform ( \
779 TRACKLIST_SELECTIONS_ACTION_MOVE, tls, NULL, NULL, NULL, 0, NULL, NULL, \
780 track_pos, -1, NULL, -1, 0, false, NULL, 0.f, 0.f, NULL, false, err)
781
782#define tracklist_selections_action_perform_copy( \
783 tls, port_connections_mgr, track_pos, err) \
784 tracklist_selections_action_perform ( \
785 TRACKLIST_SELECTIONS_ACTION_COPY, tls, NULL, port_connections_mgr, NULL, \
786 0, NULL, NULL, track_pos, -1, NULL, -1, 0, false, NULL, 0.f, 0.f, NULL, \
787 false, err)
788
802#define tracklist_selections_action_perform_move_inside( \
803 tls, port_connections_mgr, track_pos, err) \
804 tracklist_selections_action_perform ( \
805 TRACKLIST_SELECTIONS_ACTION_MOVE_INSIDE, tls, NULL, NULL, NULL, 0, NULL, \
806 NULL, track_pos, -1, NULL, -1, 0, false, NULL, 0.f, 0.f, NULL, false, err)
807
808#define tracklist_selections_action_perform_copy_inside( \
809 tls, port_connections_mgr, track_pos, err) \
810 tracklist_selections_action_perform ( \
811 TRACKLIST_SELECTIONS_ACTION_COPY_INSIDE, tls, NULL, port_connections_mgr, \
812 NULL, 0, NULL, NULL, track_pos, -1, NULL, -1, 0, false, NULL, 0.f, 0.f, \
813 NULL, false, err)
814
815#define tracklist_selections_action_perform_delete( \
816 tls, port_connections_mgr, err) \
817 tracklist_selections_action_perform ( \
818 TRACKLIST_SELECTIONS_ACTION_DELETE, tls, NULL, port_connections_mgr, NULL, \
819 0, NULL, NULL, -1, -1, NULL, -1, 0, false, NULL, 0.f, 0.f, NULL, false, \
820 err)
821
825#define tracklist_selections_action_perform_pin(tls, port_connections_mgr, err) \
826 tracklist_selections_action_perform ( \
827 TRACKLIST_SELECTIONS_ACTION_PIN, tls, NULL, port_connections_mgr, NULL, 0, \
828 NULL, NULL, -1, -1, NULL, -1, 0, false, NULL, 0.f, 0.f, NULL, false, err)
829
833#define tracklist_selections_action_perform_unpin( \
834 tls, port_connections_mgr, err) \
835 tracklist_selections_action_perform ( \
836 TRACKLIST_SELECTIONS_ACTION_UNPIN, tls, NULL, port_connections_mgr, NULL, \
837 0, NULL, NULL, -1, -1, NULL, -1, 0, false, NULL, 0.f, 0.f, NULL, false, \
838 err)
839
848bool
850 TracklistSelections * self,
851 PortConnectionsManager * port_connections_mgr,
852 Track * direct_out,
853 GError ** error);
854
855int
856tracklist_selections_action_do (
858 GError ** error);
859
860int
861tracklist_selections_action_undo (
863 GError ** error);
864
865char *
866tracklist_selections_action_stringize (TracklistSelectionsAction * self);
867
868void
869tracklist_selections_action_free (TracklistSelectionsAction * self);
870
875#endif
The backend for a timeline track.
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, EditTracksActionType 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.
EditTracksActionType
Action type.
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_LANE
Rename lane.
@ EDIT_TRACK_ACTION_TYPE_DIRECT_OUT
Direct out change.
@ EDIT_TRACK_ACTION_TYPE_RENAME
Rename track.
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:126
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.