properly track, update, maintain and set auto return state

Conflicts:
	gtk2_ardour/ardour_ui_options.cc
This commit is contained in:
Paul Davis 2015-01-17 12:00:34 -05:00
parent 4f16a043a4
commit 07d0539526
3 changed files with 42 additions and 3 deletions

View File

@ -4874,10 +4874,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));
}
}

View File

@ -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"));

View File

@ -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));
}
}