summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2007-01-23 22:29:45 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2007-01-23 22:29:45 +0000
commite35621772ee93f7fbadeac5ff636d2c83eb6780f (patch)
tree62071e392fed199211d098a5201499792ab5e4f0 /gtk2_ardour
parent3cfa32d6c23b360f1772aaff0753972722dcc539 (diff)
add transition_to_{roll,reverse}
git-svn-id: svn://localhost/ardour2/trunk@1376 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/ardour.bindings2
-rw-r--r--gtk2_ardour/ardour.menus3
-rw-r--r--gtk2_ardour/ardour_ui_ed.cc16
-rw-r--r--gtk2_ardour/editor.h1
-rw-r--r--gtk2_ardour/editor_ops.cc24
-rw-r--r--gtk2_ardour/public_editor.h1
6 files changed, 47 insertions, 0 deletions
diff --git a/gtk2_ardour/ardour.bindings b/gtk2_ardour/ardour.bindings
index 6ebd9b284c..1297a98266 100644
--- a/gtk2_ardour/ardour.bindings
+++ b/gtk2_ardour/ardour.bindings
@@ -257,6 +257,8 @@
; (gtk_accel_path "<Actions>/Main/Snapshot" "")
; (gtk_accel_path "<Actions>/Transport/ToggleVideoSync" "")
(gtk_accel_path "<Actions>/Transport/ToggleRoll" "space")
+(gtk_accel_path "<Actions>/Transport/TransitionToRoll" "<Ctrl>uparrow")
+(gtk_accel_path "<Actions>/Transport/TransitionToReverse" "<Ctrl>downarrow")
; (gtk_accel_path "<Actions>/RegionList/SortBySourceFilesystem" "")
(gtk_accel_path "<Actions>/Common/ToggleColorManager" "<Alt>c")
; (gtk_accel_path "<Actions>/Common/About" "")
diff --git a/gtk2_ardour/ardour.menus b/gtk2_ardour/ardour.menus
index 075a526693..7bb75ed94b 100644
--- a/gtk2_ardour/ardour.menus
+++ b/gtk2_ardour/ardour.menus
@@ -47,6 +47,9 @@
<separator/>
<menuitem action='Record'/>
<separator/>
+ <menuitem action='TransitionToRoll'/>
+ <menuitem action='TransitionToReverse'/>
+ <separator/>
<menuitem action='jump-forward-to-mark'/>
<menuitem action='jump-backward-to-mark'/>
<menuitem action='add-location-from-playhead'/>
diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc
index 2ebcb765c3..c2e8740789 100644
--- a/gtk2_ardour/ardour_ui_ed.cc
+++ b/gtk2_ardour/ardour_ui_ed.cc
@@ -233,6 +233,22 @@ ARDOUR_UI::install_actions ()
ActionManager::register_action (transport_actions, X_("ToggleRollForgetCapture"), _("Stop + Forget Capture"), bind (mem_fun(*editor, &PublicEditor::toggle_playback), true));
ActionManager::session_sensitive_actions.push_back (act);
ActionManager::transport_sensitive_actions.push_back (act);
+
+ /* these two behave as follows:
+
+ - if transport speed != 1.0 or != -1.0, change speed to 1.0 or -1.0 (respectively)
+ - otherwise do nothing
+ */
+
+ ActionManager::register_action (transport_actions, X_("TransitionToRoll"), _("Transition To Roll"), bind (mem_fun (*editor, &PublicEditor::transition_to_rolling), true));
+ ActionManager::session_sensitive_actions.push_back (act);
+ ActionManager::session_sensitive_actions.push_back (act);
+
+ ActionManager::register_action (transport_actions, X_("TransitionToReverse"), _("Transition To Reverse"), bind (mem_fun (*editor, &PublicEditor::transition_to_rolling), false));
+ ActionManager::session_sensitive_actions.push_back (act);
+ ActionManager::session_sensitive_actions.push_back (act);
+
+
act = ActionManager::register_action (transport_actions, X_("Loop"), _("Play Loop Range"), mem_fun(*this, &ARDOUR_UI::toggle_session_auto_loop));
ActionManager::session_sensitive_actions.push_back (act);
ActionManager::transport_sensitive_actions.push_back (act);
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index 94d85f976c..43f170f679 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -171,6 +171,7 @@ class Editor : public PublicEditor
void separate_region_from_selection ();
void separate_regions_using_location (ARDOUR::Location&);
void toggle_playback (bool with_abort);
+ void transition_to_rolling (bool forward);
/* undo related */
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index 3b053d7042..bdae9dca66 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -1912,6 +1912,30 @@ Editor::edit_envelope ()
/* PLAYBACK */
void
+Editor::transition_to_rolling (bool fwd)
+{
+ if (!session) {
+ return;
+ }
+
+ switch (Config->get_slave_source()) {
+ case None:
+ case JACK:
+ break;
+ default:
+ /* transport controlled by the master */
+ return;
+ }
+
+ if (session->is_auditioning()) {
+ session->cancel_audition ();
+ return;
+ }
+
+ session->request_transport_speed (fwd ? 1.0f : -1.0f);
+}
+
+void
Editor::toggle_playback (bool with_abort)
{
if (!session) {
diff --git a/gtk2_ardour/public_editor.h b/gtk2_ardour/public_editor.h
index dcc9a3b3ab..2e00b632b7 100644
--- a/gtk2_ardour/public_editor.h
+++ b/gtk2_ardour/public_editor.h
@@ -86,6 +86,7 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway
virtual void new_region_from_selection () = 0;
virtual void separate_region_from_selection () = 0;
virtual void toggle_playback (bool with_abort) = 0;
+ virtual void transition_to_rolling (bool fwd) = 0;
virtual nframes_t unit_to_frame (double unit) = 0;
virtual double frame_to_unit (nframes_t frame) = 0;
virtual double frame_to_unit (double frame) = 0;