4#ifndef __ACTIONS_TRACKLIST_SELECTIONS_ACTION_H__
5#define __ACTIONS_TRACKLIST_SELECTIONS_ACTION_H__
20typedef enum TracklistSelectionsActionType
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;
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,
57 EDIT_TRACK_ACTION_TYPE_COLOR,
58 EDIT_TRACK_ACTION_TYPE_COMMENT,
59 EDIT_TRACK_ACTION_TYPE_ICON,
61 EDIT_TRACK_ACTION_TYPE_MIDI_FADER_MODE,
72 TracklistSelectionsActionType
type;
135 size_t src_sends_size;
162 int tracks_after[600];
199 GdkRGBA * colors_before;
231 TracklistSelectionsActionType type,
245 const GdkRGBA * color_new,
248 const char * new_txt,
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)
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, \
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, \
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, \
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)
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)
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)
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)
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, \
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, \
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, \
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)
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, \
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)
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, \
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)
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)
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)
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)
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)
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, \
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, \
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, \
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)
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, \
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)
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, \
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)
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, \
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, \
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)
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, \
533tracklist_selections_action_perform (
534 TracklistSelectionsActionType type,
548 const GdkRGBA * color_new,
551 const char * new_txt,
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)
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, \
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, \
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, \
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)
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)
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)
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)
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, \
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, \
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, \
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)
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, \
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)
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, \
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)
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)
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)
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)
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)
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, \
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, \
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, \
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)
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, \
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)
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, \
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)
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, \
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, \
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)
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, \
856tracklist_selections_action_do (
861tracklist_selections_action_undo (
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.
Port connections manager.
A setting for a specific plugin descriptor.
Port connections manager.
A Position is made up of bars.beats.sixteenths.ticks.
Metadata for a supported file.
Track to be inserted into the Project's Tracklist.
Tracklist selections (tracks) action.
float val_before
Float values.
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.
int * ival_before
Int value.
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.