From 54cbca8aa3ea0cde814ed0eff3eb985977e3854f Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 29 Nov 2007 18:07:32 +0000 Subject: [PATCH] add set-loop-from-region variants; no grabber cursor in object mode (for SAE); fixup add track dialog for SAE profile (no track mode selector) git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2727 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/add_route_dialog.cc | 8 +++++++- gtk2_ardour/ardour-sae.bindings.in | 12 +++++++----- gtk2_ardour/ardour-sae.menus | 3 ++- gtk2_ardour/ardour_ui2.cc | 4 +++- gtk2_ardour/editor.h | 1 + gtk2_ardour/editor_actions.cc | 4 ++++ gtk2_ardour/editor_mouse.cc | 10 +++++++--- gtk2_ardour/editor_ops.cc | 21 +++++++++++++++++++++ 8 files changed, 52 insertions(+), 11 deletions(-) diff --git a/gtk2_ardour/add_route_dialog.cc b/gtk2_ardour/add_route_dialog.cc index f28acb4e1b..2728e7687e 100644 --- a/gtk2_ardour/add_route_dialog.cc +++ b/gtk2_ardour/add_route_dialog.cc @@ -129,7 +129,9 @@ AddRouteDialog::AddRouteDialog () ccframe.set_shadow_type (SHADOW_IN); dvbox->pack_start (channel_combo, true, false, 5); - dvbox->pack_start (track_mode_combo, true, false, 5); + if (!ARDOUR::Profile->get_sae()) { + dvbox->pack_start (track_mode_combo, true, false, 5); + } dhbox->pack_start (*dvbox, true, false, 5); ccframe.add (*dhbox); @@ -181,6 +183,10 @@ AddRouteDialog::count () ARDOUR::TrackMode AddRouteDialog::mode () { + if (ARDOUR::Profile->get_sae()) { + return ARDOUR::Normal; + } + Glib::ustring str = track_mode_combo.get_active_text(); if (str == _("Normal")) { return ARDOUR::Normal; diff --git a/gtk2_ardour/ardour-sae.bindings.in b/gtk2_ardour/ardour-sae.bindings.in index 7b15d347a0..a28e586b05 100644 --- a/gtk2_ardour/ardour-sae.bindings.in +++ b/gtk2_ardour/ardour-sae.bindings.in @@ -50,7 +50,7 @@ ; (gtk_accel_path "/Editor/playhead-to-range-start" "") ; (gtk_accel_path "/Editor/Subframes" "") ; (gtk_accel_path "/Editor/Smpte2997drop" "") -; (gtk_accel_path "/Main/AddTrackBus" "") +(gtk_accel_path "/Main/AddTrackBus" "<%PRIMARY%><%SECONDARY%>n") (gtk_accel_path "/Editor/align-regions-end" "<%LEVEL4%>a") ; (gtk_accel_path "/JACK/JACKDisconnect" "") ; (gtk_accel_path "/options/MeterFalloffFast" "") @@ -78,11 +78,11 @@ ; (gtk_accel_path "/Snap/snap-to-smpte-minutes" "") ; (gtk_accel_path "/Main/FlushWastebasket" "") (gtk_accel_path "/Editor/normalize-region" "n") -(gtk_accel_path "/Editor/nudge-forward" "KP_Add") +(gtk_accel_path "/Editor/nudge-forward" "h") ; (gtk_accel_path "/RegionList/SortByRegionEndinFile" "") ; (gtk_accel_path "/Editor/ToggleMeasureVisibility" "") ; (gtk_accel_path "/Zoom/zoom-focus-center" "") -(gtk_accel_path "/Editor/nudge-backward" "KP_Subtract") +(gtk_accel_path "/Editor/nudge-backward" "g") ; (gtk_accel_path "/options/LatchedSolo" "") ; (gtk_accel_path "/options/MeterHoldOff" "") ; (gtk_accel_path "/options/OutputAutoConnectMaster" "") @@ -221,7 +221,6 @@ (gtk_accel_path "/Transport/TransitionToReverse" "<%PRIMARY%>downarrow") ; (gtk_accel_path "/Editor/Crossfades" "") ; (gtk_accel_path "/Editor/PullupPlus4" "") -(gtk_accel_path "/Editor/add-location-from-playhead" "KP_Enter") ; (gtk_accel_path "/Main/MeteringHoldTime" "") ; (gtk_accel_path "/Editor/PullupPlus1" "") ; (gtk_accel_path "/Editor/Smpte24976" "") @@ -301,7 +300,8 @@ (gtk_accel_path "/Editor/temporal-zoom-out" "r") ; (gtk_accel_path "/options/UseSoftwareMonitoring" "") ; (gtk_accel_path "/Editor/Subframes100" "") -(gtk_accel_path "/Editor/mute-unmute-region" "m") +(gtk_accel_path "/Editor/mute-unmute-region" "<%SECONDARY%>m") +(gtk_accel_path "/Editor/add-location-from-playhead" "m") ; (gtk_accel_path "/options/OutputAutoConnectManual" "") ; (gtk_accel_path "/Snap/snap-to-region-sync" "") (gtk_accel_path "/Editor/edit-cursor-to-previous-region-sync" "apostrophe") @@ -334,4 +334,6 @@ (gtk_accel_path "/Transport/focus-on-clock" "KP_Divide") (gtk_accel_path "/Editor/set-loop-from-edit-range" "bracketright") (gtk_accel_path "/Editor/set-punch-from-edit-range" "bracketleft") +(gtk_accel_path "/Editor/set-loop-from-region" "<%PRIMARY%><%SECONDARY%>bracketright") +(gtk_accel_path "/Editor/loop-region" "<%PRIMARY%>bracketright") diff --git a/gtk2_ardour/ardour-sae.menus b/gtk2_ardour/ardour-sae.menus index 1746cb4115..f8e745939f 100644 --- a/gtk2_ardour/ardour-sae.menus +++ b/gtk2_ardour/ardour-sae.menus @@ -33,7 +33,7 @@ - + @@ -69,6 +69,7 @@ + diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc index 17a9153797..461a246aa4 100644 --- a/gtk2_ardour/ardour_ui2.cc +++ b/gtk2_ardour/ardour_ui2.cc @@ -398,7 +398,9 @@ ARDOUR_UI::setup_transport () transport_tearoff_hbox.pack_start (*svbox, false, false, 3); transport_tearoff_hbox.pack_start (auto_loop_button, false, false); - transport_tearoff_hbox.pack_start (play_selection_button, false, false); + if (!Profile->get_sae()) { + transport_tearoff_hbox.pack_start (play_selection_button, false, false); + } transport_tearoff_hbox.pack_start (roll_button, false, false); transport_tearoff_hbox.pack_start (stop_button, false, false); transport_tearoff_hbox.pack_start (rec_button, false, false, 6); diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 9c97348f10..49e2485ead 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -1102,6 +1102,7 @@ class Editor : public PublicEditor void set_punch_from_selection (); void set_loop_from_edit_range (bool play); + void set_loop_from_region (bool play); void set_punch_from_edit_range (); void set_loop_range (nframes_t start, nframes_t end, std::string cmd); diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc index 001ee5be62..02b98bbbee 100644 --- a/gtk2_ardour/editor_actions.cc +++ b/gtk2_ardour/editor_actions.cc @@ -254,6 +254,10 @@ Editor::register_actions () act = ActionManager::register_action (editor_actions, "set-loop-from-edit-range", _("Set Loop From Edit Range"), bind (mem_fun(*this, &Editor::set_loop_from_edit_range), false)); ActionManager::session_sensitive_actions.push_back (act); + act = ActionManager::register_action (editor_actions, "set-loop-from-region", _("Set Loop From Region"), bind (mem_fun(*this, &Editor::set_loop_from_region), false)); + ActionManager::session_sensitive_actions.push_back (act); + act = ActionManager::register_action (editor_actions, "loop-region", _("Loop Region"), bind (mem_fun(*this, &Editor::set_loop_from_region), true)); + ActionManager::session_sensitive_actions.push_back (act); act = ActionManager::register_action (editor_actions, "set-punch-from-edit-range", _("Set Punch From Edit Range"), mem_fun(*this, &Editor::set_punch_from_edit_range)); ActionManager::session_sensitive_actions.push_back (act); diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index 0f4a6b34fb..c3d4cd2c94 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -243,7 +243,7 @@ Editor::set_mouse_mode (MouseMode m, bool force) } } - /* XXX the hack of unsetting all other buttongs should go + /* XXX the hack of unsetting all other buttons should go away once GTK2 allows us to use regular radio buttons drawn like normal buttons, rather than my silly GroupedButton hack. */ @@ -258,7 +258,11 @@ Editor::set_mouse_mode (MouseMode m, bool force) case MouseObject: mouse_move_button.set_active (true); - current_canvas_cursor = grabber_cursor; + if (Profile->get_sae()) { + current_canvas_cursor = timebar_cursor; + } else { + current_canvas_cursor = grabber_cursor; + } break; case MouseGain: @@ -1154,7 +1158,7 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_ set_verbose_canvas_cursor (cp->line.get_verbose_cursor_string (fraction), at_x, at_y); show_verbose_canvas_cursor (); - if (is_drawable()) { + if (is_drawable() && !_scrubbing) { track_canvas.get_window()->set_cursor (*fader_cursor); } } diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 9c9a6435f5..06422ff1a1 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -4476,6 +4476,27 @@ Editor::set_loop_from_edit_range (bool play) } } +void +Editor::set_loop_from_region (bool play) +{ + ensure_entered_region_selected (true); + + if (selection->regions.empty()) { + info << _("cannot set loop: no region selected") << endmsg; + return; + } + + nframes64_t start = selection->regions.front()->region()->first_frame(); + nframes64_t end = selection->regions.front()->region()->last_frame() + 1; + + set_loop_range (start, end, _("set loop range from region")); + + if (play) { + session->request_play_loop (true); + session->request_locate (start, true); + } +} + void Editor::set_punch_from_selection () {