summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2015-01-17 12:00:34 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2015-06-29 14:18:13 -0400
commit745a235b9d930c7c28acb3d4e05d37131bc072dc (patch)
tree582287fe2561268513a17783be8f0c20b25f4a8c /gtk2_ardour
parent682d8ae064303634a7cac747ab96fa1226cddd14 (diff)
properly track, update, maintain and set auto return state
Conflicts: gtk2_ardour/ardour_ui_options.cc
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/ardour_ui.cc27
-rw-r--r--gtk2_ardour/ardour_ui2.cc12
-rw-r--r--gtk2_ardour/ardour_ui_options.cc6
3 files changed, 42 insertions, 3 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index f3483769d8..49424c78b6 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -4875,10 +4875,31 @@ void
ARDOUR_UI::toggle_auto_return_state (AutoReturnTarget t)
{
AutoReturnTarget art = Config->get_auto_return_target_list ();
- if (art & t) {
- Config->set_auto_return_target_list (AutoReturnTarget (art & ~t));
- } else {
+ CheckMenuItem* check_menu_item = 0;
+
+ switch (t) {
+ case LastLocate:
+ check_menu_item = auto_return_last_locate;
+ break;
+ case Loop:
+ check_menu_item = auto_return_loop;
+ break;
+ case RangeSelectionStart:
+ check_menu_item = auto_return_range_selection;
+ break;
+ case RegionSelectionStart:
+ check_menu_item = auto_return_region_selection;
+ break;
+ }
+
+ if (!check_menu_item) {
+ return;
+ }
+
+ if (check_menu_item->get_active()) {
Config->set_auto_return_target_list (AutoReturnTarget (art | t));
+ } else {
+ Config->set_auto_return_target_list (AutoReturnTarget (art & ~t));
}
}
diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc
index db53080e5c..d16b0f9c6d 100644
--- a/gtk2_ardour/ardour_ui2.cc
+++ b/gtk2_ardour/ardour_ui2.cc
@@ -265,6 +265,18 @@ ARDOUR_UI::setup_transport ()
auto_return_region_selection->show ();
auto_return_dropdown.AddMenuElem (Gtk::Menu_Helpers::CheckMenuElem (*auto_return_region_selection));
+ auto_return_range_selection = manage (new CheckMenuItem (_("Play from range selection")));
+ auto_return_range_selection->signal_toggled().connect (sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::toggle_auto_return_state), RangeSelectionStart));
+ auto_return_range_selection->show ();
+ auto_return_dropdown.AddMenuElem (Gtk::Menu_Helpers::CheckMenuElem (*auto_return_range_selection));
+
+ auto_return_loop = manage (new CheckMenuItem (_("Play from loop")));
+ auto_return_loop->signal_toggled().connect (sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::toggle_auto_return_state), Loop));
+ auto_return_loop->show ();
+ auto_return_dropdown.AddMenuElem (Gtk::Menu_Helpers::CheckMenuElem (*auto_return_loop));
+
+ auto_return_dropdown.AddMenuElem (Gtk::Menu_Helpers::MenuElem (_("Disable/Enable All Options"), sigc::mem_fun (*this, &ARDOUR_UI::toggle_all_auto_return)));
+
follow_edits_button.set_text(_("Follow Edits"));
// auto_input_button.set_text (_("Auto Input"));
diff --git a/gtk2_ardour/ardour_ui_options.cc b/gtk2_ardour/ardour_ui_options.cc
index 52f289b3f2..e5feeadeb0 100644
--- a/gtk2_ardour/ardour_ui_options.cc
+++ b/gtk2_ardour/ardour_ui_options.cc
@@ -422,6 +422,12 @@ ARDOUR_UI::parameter_changed (std::string p)
} else if (p == "waveform-cache-size") {
/* GUI option has units of megabytes; image cache uses units of bytes */
ArdourCanvas::WaveView::set_image_cache_size (ARDOUR_UI::config()->get_waveform_cache_size() * 1048576);
+ } else if (p == "auto-return-target-list") {
+ AutoReturnTarget art = Config->get_auto_return_target_list ();
+ auto_return_loop->set_active ((bool) (art & Loop));
+ auto_return_range_selection->set_active ((bool) (art & RangeSelectionStart));
+ auto_return_region_selection->set_active ((bool) (art & RegionSelectionStart));
+ auto_return_last_locate->set_active ((bool) (art & LastLocate));
}
}