21 #include <gtk/gtkiconfactory.h>
33 #include "canvas/canvas.h"
34 #include "canvas/pixbuf.h"
60 reg_sens (RefPtr<ActionGroup> group,
char const *
name,
char const * label, sigc::slot<void> slot)
68 toggle_reg_sens (RefPtr<ActionGroup> group,
char const *
name,
char const * label, sigc::slot<void> slot)
75 radio_reg_sens (RefPtr<ActionGroup> action_group, RadioAction::Group& radio_group,
char const *
name,
char const * label, sigc::slot<void> slot)
86 editor_actions = ActionGroup::create (
X_(
"Editor"));
87 editor_menu_actions = ActionGroup::create (
X_(
"EditorMenu"));
148 register_region_actions ();
228 for (
int i = 1; i <= 12; ++i) {
234 for (
int i = 1; i <= 12; ++i) {
240 for (
int i = 1; i <= 9; ++i) {
263 reg_sens (editor_actions,
"nudge-playhead-forward",
_(
"Nudge Playhead Forward"), sigc::bind (sigc::mem_fun(*
this, &
Editor::nudge_forward),
false,
true));
264 reg_sens (editor_actions,
"nudge-playhead-backward",
_(
"Nudge Playhead Backward"), sigc::bind (sigc::mem_fun(*
this, &
Editor::nudge_backward),
false,
true));
300 reg_sens (editor_actions,
"edit-to-playhead",
_(
"Active Mark to Playhead"), sigc::bind (sigc::mem_fun(*
this, &
Editor::cursor_align),
false));
320 undo_action =
reg_sens (editor_actions,
"undo",
S_(
"Command|Undo"), sigc::bind (sigc::mem_fun(*
this, &
Editor::undo), 1U));
322 redo_action =
reg_sens (editor_actions,
"redo",
_(
"Redo"), sigc::bind (sigc::mem_fun(*
this, &
Editor::redo), 1U));
323 alternate_redo_action =
reg_sens (editor_actions,
"alternate-redo",
_(
"Redo"), sigc::bind (sigc::mem_fun(*
this, &
Editor::redo), 1U));
324 alternate_alternate_redo_action =
reg_sens (editor_actions,
"alternate-alternate-redo",
_(
"Redo"), sigc::bind (sigc::mem_fun(*
this, &
Editor::redo), 1U));
358 reg_sens (editor_actions,
"alternate-tab-to-transient-forwards",
_(
"Move to Next Transient"), sigc::bind (sigc::mem_fun(*
this, &
Editor::tab_to_transient),
true));
359 reg_sens (editor_actions,
"alternate-tab-to-transient-backwards",
_(
"Move to Previous Transient"), sigc::bind (sigc::mem_fun(*
this, &
Editor::tab_to_transient),
false));
375 "move-range-start-to-previous-region-boundary",
376 _(
"Move Range Start to Previous Region Boundary"),
382 "move-range-start-to-next-region-boundary",
383 _(
"Move Range Start to Next Region Boundary"),
389 "move-range-end-to-previous-region-boundary",
390 _(
"Move Range End to Previous Region Boundary"),
396 "move-range-end-to-next-region-boundary",
397 _(
"Move Range End to Next Region Boundary"),
422 act =
reg_sens (editor_actions,
"track-height-largest",
_(
"Largest"), sigc::bind (
425 act =
reg_sens (editor_actions,
"track-height-larger",
_(
"Larger"), sigc::bind (
428 act =
reg_sens (editor_actions,
"track-height-large",
_(
"Large"), sigc::bind (
431 act =
reg_sens (editor_actions,
"track-height-normal",
_(
"Normal"), sigc::bind (
434 act =
reg_sens (editor_actions,
"track-height-small",
_(
"Small"), sigc::bind (
440 Glib::RefPtr<ActionGroup> zoom_actions = ActionGroup::create (
X_(
"Zoom"));
441 RadioAction::Group zoom_group;
453 Glib::RefPtr<ActionGroup> mouse_mode_actions = ActionGroup::create (
X_(
"MouseMode"));
454 RadioAction::Group mouse_mode_group;
457 smart_mode_action = Glib::RefPtr<ToggleAction>::cast_static (act);
458 smart_mode_button.set_related_action (smart_mode_action);
459 smart_mode_button.set_text (
_(
"Smart"));
460 smart_mode_button.set_name (
"mouse mode button");
463 mouse_move_button.set_related_action (act);
464 mouse_move_button.set_image (::
get_icon(
"tool_object"));
465 mouse_move_button.set_name (
"mouse mode button");
468 mouse_select_button.set_related_action (act);
469 mouse_select_button.set_image (::
get_icon(
"tool_range"));
470 mouse_select_button.set_name (
"mouse mode button");
473 mouse_draw_button.set_related_action (act);
474 mouse_draw_button.set_image (::
get_icon(
"midi_tool_pencil"));
475 mouse_draw_button.set_name (
"mouse mode button");
478 mouse_audition_button.set_related_action (act);
479 mouse_audition_button.set_image (::
get_icon(
"tool_audition"));
480 mouse_audition_button.set_name (
"mouse mode button");
483 mouse_timefx_button.set_related_action (act);
484 mouse_timefx_button.set_image (::
get_icon(
"tool_stretch"));
485 mouse_timefx_button.set_name (
"mouse mode button");
488 mouse_content_button.set_related_action (act);
489 mouse_content_button.set_image (::
get_icon(
"tool_content"));
490 mouse_content_button.set_name (
"mouse mode button");
494 mouse_cut_button.set_related_action (act);
495 mouse_cut_button.set_image (::
get_icon(
"tool_cut"));
496 mouse_cut_button.set_name (
"mouse mode button");
501 RadioAction::Group edit_point_group;
518 RadioAction::Group snap_mode_group;
529 Glib::RefPtr<ActionGroup> snap_actions = ActionGroup::create (
X_(
"Snap"));
530 RadioAction::Group snap_choice_group;
569 Glib::RefPtr<ActionGroup> ruler_actions = ActionGroup::create (
X_(
"Rulers"));
596 no_ruler_shown_update =
true;
599 ruler_marker_action->set_active (
true);
600 ruler_meter_action->set_active (
false);
601 ruler_tempo_action->set_active (
false);
602 ruler_range_action->set_active (
false);
603 ruler_loop_punch_action->set_active (
false);
604 ruler_loop_punch_action->set_active (
false);
605 ruler_bbt_action->set_active (
true);
606 ruler_cd_marker_action->set_active (
false);
607 ruler_timecode_action->set_active (
false);
608 ruler_minsec_action->set_active (
true);
610 ruler_marker_action->set_active (
true);
611 ruler_meter_action->set_active (
true);
612 ruler_tempo_action->set_active (
true);
613 ruler_range_action->set_active (
true);
614 ruler_loop_punch_action->set_active (
true);
615 ruler_loop_punch_action->set_active (
true);
616 ruler_bbt_action->set_active (
false);
617 ruler_cd_marker_action->set_active (
true);
618 ruler_timecode_action->set_active (
true);
619 ruler_minsec_action->set_active (
false);
622 ruler_video_action->set_active (
false);
623 xjadeo_proc_action->set_active (
false);
624 xjadeo_proc_action->set_sensitive (
false);
625 xjadeo_ontop_action->set_active (
false);
626 xjadeo_ontop_action->set_sensitive (
false);
627 xjadeo_timecode_action->set_active (
false);
628 xjadeo_timecode_action->set_sensitive (
false);
629 xjadeo_frame_action->set_active (
false);
630 xjadeo_frame_action->set_sensitive (
false);
631 xjadeo_osdbg_action->set_active (
false);
632 xjadeo_osdbg_action->set_sensitive (
false);
633 xjadeo_fullscreen_action->set_active (
false);
634 xjadeo_fullscreen_action->set_sensitive (
false);
635 xjadeo_letterbox_action->set_active (
false);
636 xjadeo_letterbox_action->set_sensitive (
false);
637 xjadeo_zoom_100->set_sensitive (
false);
639 ruler_samples_action->set_active (
false);
640 no_ruler_shown_update =
false;
644 Glib::RefPtr<ActionGroup> rl_actions = ActionGroup::create (
X_(
"RegionList"));
645 RadioAction::Group sort_type_group;
646 RadioAction::Group sort_order_group;
715 Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
716 tact->set_active (
true);
735 key_bindings.set_action_map (editor_action_map);
737 std::string binding_file;
740 key_bindings.load (binding_file);
753 Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
754 bool s =
Config->get_skip_playback ();
755 if (tact->get_active() != s) {
756 Config->set_skip_playback (tact->get_active());
764 const char* action = 0;
766 if (no_ruler_shown_update) {
771 case ruler_metric_timecode:
772 action =
"toggle-timecode-ruler";
774 case ruler_metric_bbt:
775 action =
"toggle-bbt-ruler";
777 case ruler_metric_samples:
778 action =
"toggle-samples-ruler";
780 case ruler_metric_minsec:
781 action =
"toggle-minsec-ruler";
783 case ruler_time_tempo:
784 action =
"toggle-tempo-ruler";
786 case ruler_time_meter:
787 action =
"toggle-meter-ruler";
789 case ruler_time_marker:
790 action =
"toggle-marker-ruler";
792 case ruler_time_range_marker:
793 action =
"toggle-range-ruler";
795 case ruler_time_transport_marker:
796 action =
"toggle-loop-punch-ruler";
798 case ruler_time_cd_marker:
799 action =
"toggle-cd-marker-ruler";
801 case ruler_video_timeline:
802 action =
"toggle-video-ruler";
809 Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
810 update_ruler_visibility ();
811 store_ruler_visibility ();
820 Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
830 Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
840 act->set_sensitive (onoff);
847 xjadeo_proc_action->set_sensitive(onoff);
855 xjadeo_proc_action->set_active(
true);
858 xjadeo_proc_action->set_active(
false);
861 xjadeo_proc_action->set_active(!xjadeo_proc_action->get_active());
864 bool onoff = xjadeo_proc_action->get_active();
865 xjadeo_ontop_action->set_sensitive(onoff);
866 xjadeo_timecode_action->set_sensitive(onoff);
867 xjadeo_frame_action->set_sensitive(onoff);
868 xjadeo_osdbg_action->set_sensitive(onoff);
869 xjadeo_fullscreen_action->set_sensitive(onoff);
870 xjadeo_letterbox_action->set_sensitive(onoff);
871 xjadeo_zoom_100->set_sensitive(onoff);
877 if (xjadeo_proc_action->get_active()) {
887 Glib::RefPtr<Gtk::ToggleAction> action;
890 action = xjadeo_ontop_action;
893 action = xjadeo_timecode_action;
896 action = xjadeo_frame_action;
899 action = xjadeo_osdbg_action;
902 action = xjadeo_fullscreen_action;
905 action = xjadeo_letterbox_action;
915 action->set_active(
true);
918 action->set_active(
false);
921 action->set_active(!action->get_active());
929 Glib::RefPtr<Gtk::ToggleAction> action;
932 action = xjadeo_ontop_action;
935 action = xjadeo_timecode_action;
938 action = xjadeo_frame_action;
941 action = xjadeo_osdbg_action;
944 action = xjadeo_fullscreen_action;
947 action = xjadeo_letterbox_action;
955 if (action->get_active()) {
967 Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
968 set_show_measures (tact->get_active());
978 Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
980 if (tact->get_active()) {
992 const char* action = 0;
996 case Editing::SnapToCDFrame:
997 action =
"snap-to-cd-frame";
999 case Editing::SnapToTimecodeFrame:
1000 action =
"snap-to-timecode-frame";
1002 case Editing::SnapToTimecodeSeconds:
1003 action =
"snap-to-timecode-seconds";
1005 case Editing::SnapToTimecodeMinutes:
1006 action =
"snap-to-timecode-minutes";
1008 case Editing::SnapToSeconds:
1009 action =
"snap-to-seconds";
1011 case Editing::SnapToMinutes:
1012 action =
"snap-to-minutes";
1014 case Editing::SnapToBeatDiv128:
1015 action =
"snap-to-onetwentyeighths";
1017 case Editing::SnapToBeatDiv64:
1018 action =
"snap-to-sixtyfourths";
1020 case Editing::SnapToBeatDiv32:
1021 action =
"snap-to-thirtyseconds";
1023 case Editing::SnapToBeatDiv28:
1024 action =
"snap-to-twentyeighths";
1026 case Editing::SnapToBeatDiv24:
1027 action =
"snap-to-twentyfourths";
1029 case Editing::SnapToBeatDiv20:
1030 action =
"snap-to-twentieths";
1032 case Editing::SnapToBeatDiv16:
1033 action =
"snap-to-asixteenthbeat";
1035 case Editing::SnapToBeatDiv14:
1036 action =
"snap-to-fourteenths";
1038 case Editing::SnapToBeatDiv12:
1039 action =
"snap-to-twelfths";
1041 case Editing::SnapToBeatDiv10:
1042 action =
"snap-to-tenths";
1044 case Editing::SnapToBeatDiv8:
1045 action =
"snap-to-eighths";
1047 case Editing::SnapToBeatDiv7:
1048 action =
"snap-to-sevenths";
1050 case Editing::SnapToBeatDiv6:
1051 action =
"snap-to-sixths";
1053 case Editing::SnapToBeatDiv5:
1054 action =
"snap-to-fifths";
1056 case Editing::SnapToBeatDiv4:
1057 action =
"snap-to-quarters";
1059 case Editing::SnapToBeatDiv3:
1060 action =
"snap-to-thirds";
1062 case Editing::SnapToBeatDiv2:
1063 action =
"snap-to-halves";
1065 case Editing::SnapToBeat:
1066 action =
"snap-to-beat";
1068 case Editing::SnapToBar:
1069 action =
"snap-to-bar";
1071 case Editing::SnapToMark:
1072 action =
"snap-to-mark";
1074 case Editing::SnapToRegionStart:
1075 action =
"snap-to-region-start";
1077 case Editing::SnapToRegionEnd:
1078 action =
"snap-to-region-end";
1080 case Editing::SnapToRegionSync:
1081 action =
"snap-to-region-sync";
1083 case Editing::SnapToRegionBoundary:
1084 action =
"snap-to-region-boundary";
1094 RefPtr<RadioAction> ract = RefPtr<RadioAction>::cast_dynamic(act);
1098 error <<
string_compose (
_(
"programming error: %1"),
"Editor::snap_type_chosen could not find action to match type.") <<
endmsg;
1099 return RefPtr<RadioAction>();
1106 switch (_snap_type) {
1107 case Editing::SnapToCDFrame:
1108 set_snap_to (Editing::SnapToTimecodeFrame);
1110 case Editing::SnapToTimecodeFrame:
1111 set_snap_to (Editing::SnapToTimecodeSeconds);
1113 case Editing::SnapToTimecodeSeconds:
1114 set_snap_to (Editing::SnapToTimecodeMinutes);
1116 case Editing::SnapToTimecodeMinutes:
1117 set_snap_to (Editing::SnapToSeconds);
1119 case Editing::SnapToSeconds:
1120 set_snap_to (Editing::SnapToMinutes);
1122 case Editing::SnapToMinutes:
1123 set_snap_to (Editing::SnapToBeatDiv128);
1125 case Editing::SnapToBeatDiv128:
1126 set_snap_to (Editing::SnapToBeatDiv64);
1128 case Editing::SnapToBeatDiv64:
1129 set_snap_to (Editing::SnapToBeatDiv32);
1131 case Editing::SnapToBeatDiv32:
1132 set_snap_to (Editing::SnapToBeatDiv28);
1134 case Editing::SnapToBeatDiv28:
1135 set_snap_to (Editing::SnapToBeatDiv24);
1137 case Editing::SnapToBeatDiv24:
1138 set_snap_to (Editing::SnapToBeatDiv20);
1140 case Editing::SnapToBeatDiv20:
1141 set_snap_to (Editing::SnapToBeatDiv16);
1143 case Editing::SnapToBeatDiv16:
1144 set_snap_to (Editing::SnapToBeatDiv14);
1146 case Editing::SnapToBeatDiv14:
1147 set_snap_to (Editing::SnapToBeatDiv12);
1149 case Editing::SnapToBeatDiv12:
1150 set_snap_to (Editing::SnapToBeatDiv10);
1152 case Editing::SnapToBeatDiv10:
1153 set_snap_to (Editing::SnapToBeatDiv8);
1155 case Editing::SnapToBeatDiv8:
1156 set_snap_to (Editing::SnapToBeatDiv7);
1158 case Editing::SnapToBeatDiv7:
1159 set_snap_to (Editing::SnapToBeatDiv6);
1161 case Editing::SnapToBeatDiv6:
1162 set_snap_to (Editing::SnapToBeatDiv5);
1164 case Editing::SnapToBeatDiv5:
1165 set_snap_to (Editing::SnapToBeatDiv4);
1167 case Editing::SnapToBeatDiv4:
1168 set_snap_to (Editing::SnapToBeatDiv3);
1170 case Editing::SnapToBeatDiv3:
1171 set_snap_to (Editing::SnapToBeatDiv2);
1173 case Editing::SnapToBeatDiv2:
1174 set_snap_to (Editing::SnapToBeat);
1176 case Editing::SnapToBeat:
1177 set_snap_to (Editing::SnapToBar);
1179 case Editing::SnapToBar:
1180 set_snap_to (Editing::SnapToMark);
1182 case Editing::SnapToMark:
1183 set_snap_to (Editing::SnapToRegionStart);
1185 case Editing::SnapToRegionStart:
1186 set_snap_to (Editing::SnapToRegionEnd);
1188 case Editing::SnapToRegionEnd:
1189 set_snap_to (Editing::SnapToRegionSync);
1191 case Editing::SnapToRegionSync:
1192 set_snap_to (Editing::SnapToRegionBoundary);
1194 case Editing::SnapToRegionBoundary:
1195 set_snap_to (Editing::SnapToCDFrame);
1203 switch (_snap_type) {
1204 case Editing::SnapToCDFrame:
1205 set_snap_to (Editing::SnapToRegionBoundary);
1207 case Editing::SnapToTimecodeFrame:
1208 set_snap_to (Editing::SnapToCDFrame);
1210 case Editing::SnapToTimecodeSeconds:
1211 set_snap_to (Editing::SnapToTimecodeFrame);
1213 case Editing::SnapToTimecodeMinutes:
1214 set_snap_to (Editing::SnapToTimecodeSeconds);
1216 case Editing::SnapToSeconds:
1217 set_snap_to (Editing::SnapToTimecodeMinutes);
1219 case Editing::SnapToMinutes:
1220 set_snap_to (Editing::SnapToSeconds);
1222 case Editing::SnapToBeatDiv128:
1223 set_snap_to (Editing::SnapToMinutes);
1225 case Editing::SnapToBeatDiv64:
1226 set_snap_to (Editing::SnapToBeatDiv128);
1228 case Editing::SnapToBeatDiv32:
1229 set_snap_to (Editing::SnapToBeatDiv64);
1231 case Editing::SnapToBeatDiv28:
1232 set_snap_to (Editing::SnapToBeatDiv32);
1234 case Editing::SnapToBeatDiv24:
1235 set_snap_to (Editing::SnapToBeatDiv28);
1237 case Editing::SnapToBeatDiv20:
1238 set_snap_to (Editing::SnapToBeatDiv24);
1240 case Editing::SnapToBeatDiv16:
1241 set_snap_to (Editing::SnapToBeatDiv20);
1243 case Editing::SnapToBeatDiv14:
1244 set_snap_to (Editing::SnapToBeatDiv16);
1246 case Editing::SnapToBeatDiv12:
1247 set_snap_to (Editing::SnapToBeatDiv14);
1249 case Editing::SnapToBeatDiv10:
1250 set_snap_to (Editing::SnapToBeatDiv12);
1252 case Editing::SnapToBeatDiv8:
1253 set_snap_to (Editing::SnapToBeatDiv10);
1255 case Editing::SnapToBeatDiv7:
1256 set_snap_to (Editing::SnapToBeatDiv8);
1258 case Editing::SnapToBeatDiv6:
1259 set_snap_to (Editing::SnapToBeatDiv7);
1261 case Editing::SnapToBeatDiv5:
1262 set_snap_to (Editing::SnapToBeatDiv6);
1264 case Editing::SnapToBeatDiv4:
1265 set_snap_to (Editing::SnapToBeatDiv5);
1267 case Editing::SnapToBeatDiv3:
1268 set_snap_to (Editing::SnapToBeatDiv4);
1270 case Editing::SnapToBeatDiv2:
1271 set_snap_to (Editing::SnapToBeatDiv3);
1273 case Editing::SnapToBeat:
1274 set_snap_to (Editing::SnapToBeatDiv2);
1276 case Editing::SnapToBar:
1277 set_snap_to (Editing::SnapToBeat);
1279 case Editing::SnapToMark:
1280 set_snap_to (Editing::SnapToBar);
1282 case Editing::SnapToRegionStart:
1283 set_snap_to (Editing::SnapToMark);
1285 case Editing::SnapToRegionEnd:
1286 set_snap_to (Editing::SnapToRegionStart);
1288 case Editing::SnapToRegionSync:
1289 set_snap_to (Editing::SnapToRegionEnd);
1291 case Editing::SnapToRegionBoundary:
1292 set_snap_to (Editing::SnapToRegionSync);
1300 switch (_snap_type) {
1301 case Editing::SnapToMark:
1302 case Editing::SnapToRegionStart:
1303 case Editing::SnapToRegionEnd:
1304 case Editing::SnapToRegionSync:
1305 case Editing::SnapToRegionBoundary:
1306 case Editing::SnapToCDFrame:
1307 case Editing::SnapToTimecodeFrame:
1308 case Editing::SnapToTimecodeSeconds:
1309 case Editing::SnapToTimecodeMinutes:
1310 case Editing::SnapToSeconds:
1311 case Editing::SnapToMinutes:
1312 set_snap_to (Editing::SnapToBeatDiv128);
1314 case Editing::SnapToBeatDiv128:
1315 set_snap_to (Editing::SnapToBeatDiv64);
1317 case Editing::SnapToBeatDiv64:
1318 set_snap_to (Editing::SnapToBeatDiv32);
1320 case Editing::SnapToBeatDiv32:
1321 set_snap_to (Editing::SnapToBeatDiv28);
1323 case Editing::SnapToBeatDiv28:
1324 set_snap_to (Editing::SnapToBeatDiv24);
1326 case Editing::SnapToBeatDiv24:
1327 set_snap_to (Editing::SnapToBeatDiv20);
1329 case Editing::SnapToBeatDiv20:
1330 set_snap_to (Editing::SnapToBeatDiv16);
1332 case Editing::SnapToBeatDiv16:
1333 set_snap_to (Editing::SnapToBeatDiv14);
1335 case Editing::SnapToBeatDiv14:
1336 set_snap_to (Editing::SnapToBeatDiv12);
1338 case Editing::SnapToBeatDiv12:
1339 set_snap_to (Editing::SnapToBeatDiv10);
1341 case Editing::SnapToBeatDiv10:
1342 set_snap_to (Editing::SnapToBeatDiv8);
1344 case Editing::SnapToBeatDiv8:
1345 set_snap_to (Editing::SnapToBeatDiv7);
1347 case Editing::SnapToBeatDiv7:
1348 set_snap_to (Editing::SnapToBeatDiv6);
1350 case Editing::SnapToBeatDiv6:
1351 set_snap_to (Editing::SnapToBeatDiv5);
1353 case Editing::SnapToBeatDiv5:
1354 set_snap_to (Editing::SnapToBeatDiv4);
1356 case Editing::SnapToBeatDiv4:
1357 set_snap_to (Editing::SnapToBeatDiv3);
1359 case Editing::SnapToBeatDiv3:
1360 set_snap_to (Editing::SnapToBeatDiv2);
1362 case Editing::SnapToBeatDiv2:
1363 set_snap_to (Editing::SnapToBeat);
1365 case Editing::SnapToBeat:
1366 set_snap_to (Editing::SnapToBar);
1368 case Editing::SnapToBar:
1369 set_snap_to (Editing::SnapToBeatDiv128);
1377 switch (_snap_type) {
1378 case Editing::SnapToMark:
1379 case Editing::SnapToRegionStart:
1380 case Editing::SnapToRegionEnd:
1381 case Editing::SnapToRegionSync:
1382 case Editing::SnapToRegionBoundary:
1383 case Editing::SnapToCDFrame:
1384 case Editing::SnapToTimecodeFrame:
1385 case Editing::SnapToTimecodeSeconds:
1386 case Editing::SnapToTimecodeMinutes:
1387 case Editing::SnapToSeconds:
1388 case Editing::SnapToMinutes:
1389 set_snap_to (Editing::SnapToBar);
1391 case Editing::SnapToBeatDiv128:
1392 set_snap_to (Editing::SnapToBeat);
1394 case Editing::SnapToBeatDiv64:
1395 set_snap_to (Editing::SnapToBeatDiv128);
1397 case Editing::SnapToBeatDiv32:
1398 set_snap_to (Editing::SnapToBeatDiv64);
1400 case Editing::SnapToBeatDiv28:
1401 set_snap_to (Editing::SnapToBeatDiv32);
1403 case Editing::SnapToBeatDiv24:
1404 set_snap_to (Editing::SnapToBeatDiv28);
1406 case Editing::SnapToBeatDiv20:
1407 set_snap_to (Editing::SnapToBeatDiv24);
1409 case Editing::SnapToBeatDiv16:
1410 set_snap_to (Editing::SnapToBeatDiv20);
1412 case Editing::SnapToBeatDiv14:
1413 set_snap_to (Editing::SnapToBeatDiv16);
1415 case Editing::SnapToBeatDiv12:
1416 set_snap_to (Editing::SnapToBeatDiv14);
1418 case Editing::SnapToBeatDiv10:
1419 set_snap_to (Editing::SnapToBeatDiv12);
1421 case Editing::SnapToBeatDiv8:
1422 set_snap_to (Editing::SnapToBeatDiv10);
1424 case Editing::SnapToBeatDiv7:
1425 set_snap_to (Editing::SnapToBeatDiv8);
1427 case Editing::SnapToBeatDiv6:
1428 set_snap_to (Editing::SnapToBeatDiv7);
1430 case Editing::SnapToBeatDiv5:
1431 set_snap_to (Editing::SnapToBeatDiv6);
1433 case Editing::SnapToBeatDiv4:
1434 set_snap_to (Editing::SnapToBeatDiv5);
1436 case Editing::SnapToBeatDiv3:
1437 set_snap_to (Editing::SnapToBeatDiv4);
1439 case Editing::SnapToBeatDiv2:
1440 set_snap_to (Editing::SnapToBeatDiv3);
1442 case Editing::SnapToBeat:
1443 set_snap_to (Editing::SnapToBeatDiv2);
1445 case Editing::SnapToBar:
1446 set_snap_to (Editing::SnapToBeat);
1459 RefPtr<RadioAction> ract = snap_type_action (type);
1461 if (ract && ract->get_active()) {
1469 const char* action = 0;
1473 case Editing::SnapOff:
1474 action =
X_(
"snap-off");
1476 case Editing::SnapNormal:
1477 action =
X_(
"snap-normal");
1479 case Editing::SnapMagnetic:
1480 action =
X_(
"snap-magnetic");
1490 RefPtr<RadioAction> ract = RefPtr<RadioAction>::cast_dynamic(act);
1494 error <<
string_compose (
_(
"programming error: %1: %2"),
"Editor::snap_mode_chosen could not find action to match mode.", action) <<
endmsg;
1495 return RefPtr<RadioAction> ();
1502 switch (_snap_mode) {
1504 set_snap_mode (SnapNormal);
1507 set_snap_mode (SnapMagnetic);
1510 set_snap_mode (SnapOff);
1523 RefPtr<RadioAction> ract = snap_mode_action (mode);
1525 if (ract && ract->get_active()) {
1526 set_snap_mode (mode);
1533 const char* action = 0;
1537 case Editing::EditAtPlayhead:
1538 action =
X_(
"edit-at-playhead");
1540 case Editing::EditAtSelectedMarker:
1541 action =
X_(
"edit-at-selected-marker");
1543 case Editing::EditAtMouse:
1544 action =
X_(
"edit-at-mouse");
1554 RefPtr<RadioAction> ract = RefPtr<RadioAction>::cast_dynamic(act);
1558 error <<
string_compose (
_(
"programming error: %1: %2"),
"Editor::edit_point_action could not find action to match edit point.", action) <<
endmsg;
1559 return RefPtr<RadioAction> ();
1571 RefPtr<RadioAction> ract = edit_point_action (ep);
1573 if (ract && ract->get_active()) {
1574 set_edit_point_preference (ep);
1582 const char* action = 0;
1587 action =
X_(
"zoom-focus-left");
1589 case ZoomFocusRight:
1590 action =
X_(
"zoom-focus-right");
1592 case ZoomFocusCenter:
1593 action =
X_(
"zoom-focus-center");
1595 case ZoomFocusPlayhead:
1596 action =
X_(
"zoom-focus-playhead");
1598 case ZoomFocusMouse:
1599 action =
X_(
"zoom-focus-mouse");
1602 action =
X_(
"zoom-focus-edit");
1612 RefPtr<RadioAction> ract = RefPtr<RadioAction>::cast_dynamic(act);
1615 error <<
string_compose (
_(
"programming error: %1: %2"),
"Editor::zoom_focus_action could not find action to match focus.", action) <<
endmsg;
1618 return RefPtr<RadioAction> ();
1628 Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
1629 if (tact->get_active () != s) {
1643 RefPtr<RadioAction> ract = zoom_focus_action (focus);
1645 if (ract && ract->get_active()) {
1646 set_zoom_focus (focus);
1658 if (p ==
"auto-loop") {
1659 update_loop_range_view ();
1660 }
else if (p ==
"punch-in") {
1661 update_punch_range_view ();
1662 }
else if (p ==
"punch-out") {
1663 update_punch_range_view ();
1664 }
else if (p ==
"timecode-format") {
1665 update_just_timecode ();
1666 }
else if (p ==
"show-region-fades") {
1667 update_region_fade_visibility ();
1668 }
else if (p ==
"edit-mode") {
1670 }
else if (p ==
"show-track-meters") {
1671 toggle_meter_updating();
1672 }
else if (p ==
"show-summary") {
1676 _summary_hbox.show ();
1678 _summary_hbox.hide ();
1683 Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
1684 if (tact->get_active () != s) {
1685 tact->set_active (s);
1688 }
else if (p ==
"show-group-tabs") {
1692 _group_tabs->show ();
1694 _group_tabs->hide ();
1697 reset_controls_layout_width ();
1701 Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
1702 if (tact->get_active () != s) {
1703 tact->set_active (s);
1706 }
else if (p ==
"timecode-offset" || p ==
"timecode-offset-negative") {
1707 update_just_timecode ();
1708 }
else if (p ==
"show-zoom-tools") {
1709 if (_zoom_tearoff) {
1712 }
else if (p ==
"sound-midi-notes") {
1717 Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
1718 if (tact->get_active () != s) {
1719 tact->set_active (s);
1722 }
else if (p ==
"show-region-gain") {
1723 set_gain_envelope_visibility ();
1724 }
else if (p ==
"remote-model") {
1726 _routes->reset_remote_control_ids ();
1728 }
else if (p ==
"use-tooltips") {
1737 }
else if (p ==
"skip-playback") {
1741 bool s =
Config->get_skip_playback ();
1742 Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
1743 if (tact->get_active () != s) {
1744 tact->set_active (s);
1753 _track_canvas->grab_focus();
1759 if (_edit_point != EditAtMouse) {
1765 (*x)->set_sensitive (onoff);
1772 _region_actions = ActionGroup::create (
X_(
"Region"));
1804 "toggle-region-lock-style",
1805 _(
"Glue to Bars and Beats"),
1860 "multi-duplicate-region",
1861 _(
"Multi-Duplicate..."),
1904 "separate-under-region",
1905 _(
"Separate Under"),
1912 reg_sens (_region_actions,
"alternate-set-fade-out-length",
_(
"Set Fade Out Length"), sigc::bind (sigc::mem_fun (*
this, &
Editor::set_fade_length),
false));
1918 "split-region-at-transients",
1919 _(
"Split at Percussion Onsets"),
1944 "toggle-region-gain-envelope-active",
1945 _(
"Envelope Active"),
1960 reg_sens (_region_actions,
"alternate-nudge-forward",
_(
"Nudge Later"), sigc::bind (sigc::mem_fun (*
this, &
Editor::nudge_forward),
false,
false));
1962 reg_sens (_region_actions,
"alternate-nudge-backward",
_(
"Nudge Earlier"), sigc::bind (sigc::mem_fun (*
this, &
Editor::nudge_backward),
false,
false));
1968 "nudge-forward-by-capture-offset",
1969 _(
"Nudge Later by Capture Offset"),
1975 "nudge-backward-by-capture-offset",
1976 _(
"Nudge Earlier by Capture Offset"),
1990 "insert-region-from-region-list",
1991 _(
"Insert Region From Region List"),
2005 "align-regions-start",
2012 "align-regions-start-relative",
2013 _(
"Align Start Relative"),
2021 "align-regions-end-relative",
2022 _(
"Align End Relative"),
2028 "align-regions-sync",
2035 "align-regions-sync-relative",
2036 _(
"Align Sync Relative"),
2041 a->set_accel_group (get_accel_group ());
2044 a->set_accel_group (get_accel_group ());
2046 _all_region_actions_sensitized =
true;
void zoom_focus_chosen(Editing::ZoomFocus)
void selected_marker_to_selection_end()
void raise_region_to_top()
LIBPBD_API Transmitter fatal
std::string to_string(T t, std::ios_base &(*f)(std::ios_base &))
void editor_list_button_toggled()
std::vector< Glib::RefPtr< Gtk::Action > > track_selection_sensitive_actions
void hide_region_from_region_list()
void set_session_extents_from_selection()
void show_midi_list_editor()
void snap_mode_chosen(Editing::SnapMode)
void scroll_tracks_up_line()
void split_region_at_transients()
void toggle_sound_midi_notes()
void set_session_start_from_playhead()
void jump_backward_to_mark()
void reset_sort_type(Editing::RegionListSortType, bool)
void cycle_edit_point(bool with_marker)
void edit_point_chosen(Editing::EditPoint)
void next_snap_choice_music_only()
void cursor_to_previous_region_point(EditorCursor *, ARDOUR::RegionPoint)
void mouse_mode_toggled(Editing::MouseMode m)
void selected_marker_to_next_region_point(ARDOUR::RegionPoint)
void close_video_monitor()
void toggle_xjadeo_viewoption(int what, int state=-1)
void toggle_record_enable()
void cursor_align(bool playhead_to_edit)
void control_video_monitor(int, int)
void toggle_opaque_region()
void open_video_monitor()
void reset_region_scale_amplitude()
void pitch_shift_region()
void show_rhythm_ferret()
static ARDOUR_UI * instance()
void set_playhead_cursor()
void trim_region_to_punch()
void scroll_tracks_down_line()
void step_mouse_mode(bool next)
void set_fade_length(bool in)
void toggle_region_fades(int dir)
void align_regions_relative(ARDOUR::RegionPoint point)
LIBGTKMM2EXT_API Glib::RefPtr< Gtk::Action > get_action(const char *group, const char *name)
void legatize_region(bool shrink_only)
void set_punch_from_selection()
void toggle_region_video_lock()
void remove_location_at_playhead_cursor()
void move_selected_tracks(bool)
LIBPBD_API Transmitter error
void toggle_region_mute()
Glib::RefPtr< Gtk::RadioAction > snap_mode_action(Editing::SnapMode)
void register_region_actions()
void toggle_marker_lines()
void add_locations_from_region()
void selected_marker_to_selection_start()
std::ostream & endmsg(std::ostream &ostr)
void insert_region_list_selection(float times)
SessionConfiguration config
void parameter_changed(std::string)
void temporal_zoom_step(bool coarser)
void select_all_selectables_using_edit(bool)
void select_range_between()
void reset_sort_direction(bool)
#define ENSURE_GUI_THREAD(obj, method,...)
bool find_file(const Searchpath &search_path, const string &filename, std::string &result)
void cursor_to_previous_region_boundary(bool with_selection)
void keyboard_selection_finish(bool add)
void toggle_show_auto_regions()
void reset_canvas_action_sensitivity(bool)
void selected_marker_to_previous_region_boundary(bool with_selection)
void nudge_forward_capture_offset()
void editor_mixer_button_toggled()
void nudge_backward(bool next, bool force_playhead)
void select_all_selectables_using_loop()
void set_track_height(Height)
void set_punch_from_region()
void toggle_region_lock_style()
void toggle_follow_playhead()
void bring_all_sources_into_session()
LIBARDOUR_API RCConfiguration * Config
void cursor_to_selection_end(EditorCursor *)
std::vector< Glib::RefPtr< Gtk::Action > > region_list_selection_sensitive_actions
LIBGTKMM2EXT_API Glib::RefPtr< Gtk::Action > register_radio_action(Glib::RefPtr< Gtk::ActionGroup > group, Gtk::RadioAction::Group &, const char *name, const char *label, sigc::slot< void > sl, guint key, Gdk::ModifierType mods)
void show_region_properties()
Glib::RefPtr< Gtk::RadioAction > zoom_focus_action(Editing::ZoomFocus)
VideoTimeLine * video_timeline
void set_selection_from_loop()
void play_from_edit_point()
void move_range_selection_start_or_end_to_region_boundary(bool, bool)
static RefPtr< Action > reg_sens(RefPtr< ActionGroup > group, char const *name, char const *label, sigc::slot< void > slot)
void analyze_region_selection()
LIBGTKMM2EXT_API void disable_tooltips()
void session_import_dialog()
void scroll_tracks_down()
void toggle_solo_isolate()
void set_selection_from_punch()
void remove_region_sync()
void nudge_backward_capture_offset()
void remove_unused_regions()
void change_region_layering_order(bool from_context_menu)
void scroll_forward(float pages=0.8f)
void split_multichannel_region()
void reset_region_gain_envelopes()
void select_all_objects(Selection::Operation op)
void select_all_selectables_between(bool within)
std::vector< Glib::RefPtr< Gtk::Action > > write_sensitive_actions
void set_close_video_sensitive(bool onoff)
void selected_marker_to_previous_region_point(ARDOUR::RegionPoint)
void play_selected_region()
std::vector< Glib::RefPtr< Gtk::Action > > session_sensitive_actions
void add_external_audio_action(Editing::ImportMode)
void prev_snap_choice_music_only()
void crop_region_to_selection()
void snap_type_chosen(Editing::SnapType)
LIBARDOUR_API PBD::Searchpath ardour_config_search_path()
void bounce_region_selection(bool with_processing)
void separate_region_from_punch()
LIBPBD_API Transmitter info
void lower_region_to_bottom()
LIBARDOUR_API RuntimeProfile * Profile
LIBGTKMM2EXT_API void enable_tooltips()
static void toggle_reg_sens(RefPtr< ActionGroup > group, char const *name, char const *label, sigc::slot< void > slot)
void tav_zoom_step(bool coarser)
void set_xjadeo_viewoption(int)
void strip_region_silence()
void separate_under_selected_regions()
void set_region_sync_position()
void jump_forward_to_mark()
void snap_regions_to_grid()
void cursor_to_selection_start(EditorCursor *)
void add_location_from_playhead_cursor()
void select_all_selectables_using_punch()
void remove_last_capture()
static void radio_reg_sens(RefPtr< ActionGroup > action_group, RadioAction::Group &radio_group, char const *name, char const *label, sigc::slot< void > slot)
void insert_patch_change(bool from_context)
void add_location_from_region()
void toggle_ruler_visibility(RulerType rt)
void trim_region_to_previous_region_end()
void toggle_xjadeo_proc(int state=-1)
void toggle_tracks_active()
Glib::RefPtr< Gtk::RadioAction > snap_type_action(Editing::SnapType)
void toggle_stationary_playhead()
void toggle_skip_playback()
LIBGTKMM2EXT_API Glib::RefPtr< Gtk::Action > register_toggle_action(Glib::RefPtr< Gtk::ActionGroup > group, const char *name, const char *label, sigc::slot< void > sl, guint key, Gdk::ModifierType mods)
void duplicate_range(bool with_dialog)
static UIConfiguration * config()
void set_loop_from_selection(bool play)
void toggle_gain_envelope_active()
void toggle_region_lock()
void remove_selected_regions()
std::vector< Glib::RefPtr< Gtk::Action > > mouse_edit_point_requires_canvas_actions
void toggle_measure_visibility()
void playhead_backward_to_grid()
void adjust_region_gain(bool up)
void toggle_midi_input_active(bool flip_others)
void trim_region_to_next_region_start()
void set_edit_mode(ARDOUR::EditMode)
void goto_nth_marker(int nth)
LIBARDOUR_API const char * edit_mode_to_string(ARDOUR::EditMode)
void mouse_mode_object_range_toggled()
void temporal_zoom_session()
void set_selection_from_region()
void audition_region_from_region_list()
void separate_region_from_selection()
void nudge_forward(bool next, bool force_playhead)
void play_from_edit_point_and_return()
void cursor_to_next_region_boundary(bool with_selection)
void set_tempo_from_region()
Glib::RefPtr< Gdk::Pixbuf > get_icon(const char *cname)
void toggle_logo_visibility()
void set_xjadeo_sensitive(bool onoff)
void selected_marker_to_next_region_boundary(bool with_selection)
LIBGTKMM2EXT_API void add_action_group(Glib::RefPtr< Gtk::ActionGroup >)
void playhead_forward_to_grid()
void set_loop_from_region(bool play)
LIBGTKMM2EXT_API Glib::RefPtr< Gtk::Action > register_action(Glib::RefPtr< Gtk::ActionGroup > group, const char *name, const char *label)
void tab_to_transient(bool forward)
void separate_region_from_loop()
ARDOUR::Session * _session
void show_region_in_region_list()
void trim_region_to_loop()
void cursor_to_next_region_point(EditorCursor *, ARDOUR::RegionPoint)
void scroll_backward(float pages=0.8f)
Glib::RefPtr< Gtk::RadioAction > edit_point_action(Editing::EditPoint)
std::string string_compose(const std::string &fmt, const T1 &o1)
void cancel_visual_state_op(uint32_t n)
void temporal_zoom_selection(bool both_axes=false)
void align_regions(ARDOUR::RegionPoint)
void scroll_playhead(bool forward)
void keyboard_selection_begin()
void external_audio_dialog()
void start_visual_state_op(uint32_t n)
void set_session_end_from_playhead()