From ee4e028d1ad9df58cfaff3bc7602ba0d3d66f8bb Mon Sep 17 00:00:00 2001 From: Grygorii Zharun Date: Wed, 21 May 2014 11:47:04 -0500 Subject: [PATCH] [Summary] Added editor MultiOut/StereoOut switching actions into editor button handlers [git-p4: depot-paths = "//Abdaw/dev_main/tracks/": change = 462461] --- gtk2_ardour/ardour_ui.cc | 25 +++++++++++++++++++++++++ gtk2_ardour/ardour_ui.h | 2 ++ gtk2_ardour/ardour_ui2.cc | 12 +++++++----- gtk2_ardour/ardour_ui_options.cc | 4 +++- 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index bde3b5fd7d..529028e294 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -571,6 +571,19 @@ ARDOUR_UI::post_engine () Config->map_parameters (pc); } +void +ARDOUR_UI::update_ouput_operation_mode_buttons() +{ + // muti out + WavesButton& multi_out_button = editor->get_waves_button ("mode_multi_out_button"); + multi_out_button.set_active(Config->get_output_auto_connect() & AutoConnectPhysical); + + // stereo out + WavesButton& stereo_out_button = editor->get_waves_button ("mode_stereo_out_button"); + stereo_out_button.set_active(Config->get_output_auto_connect() & AutoConnectMaster); +} + + ARDOUR_UI::~ARDOUR_UI () { if (ui_config->dirty()) { @@ -2030,12 +2043,24 @@ ARDOUR_UI::toggle_session_auto_loop () void ARDOUR_UI::toggle_multi_out_mode () { + if (Config->get_output_auto_connect() & AutoConnectPhysical) { + // the mode is already enabled, nothing to do here + return; + } + + Config->set_output_auto_connect(AutoConnectPhysical); editor->get_waves_button ("mode_multi_out_button").set_active(true); editor->get_waves_button ("mode_stereo_out_button").set_active(false); } void ARDOUR_UI::toggle_stereo_out_mode () { + if (Config->get_output_auto_connect() & AutoConnectMaster) { + // the mode is already enabled, nothing to do here + return; + } + + Config->set_output_auto_connect(AutoConnectMaster); editor->get_waves_button ("mode_stereo_out_button").set_active(true); editor->get_waves_button ("mode_multi_out_button").set_active(false); } diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index fc3325a4e9..0fba0607d4 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -275,6 +275,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void attach_to_engine (); void post_engine (); + void update_ouput_operation_mode_buttons(); + gint exit_on_main_window_close (GdkEventAny *); void maximise_editing_space (); diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc index 96f07046af..b866dc59ad 100644 --- a/gtk2_ardour/ardour_ui2.cc +++ b/gtk2_ardour/ardour_ui2.cc @@ -226,11 +226,13 @@ ARDOUR_UI::setup_transport_trx () editor->get_waves_button ("transport_record_button").set_controllable (rec_controllable); act = ActionManager::get_action (X_("Main"), X_("LockSession")); editor->get_waves_button ("lock_session_button").set_related_action (act); - act = ActionManager::get_action (X_("Main"), X_("ToggleMultiOutMode")); - editor->get_waves_button ("mode_multi_out_button").set_related_action (act); - act = ActionManager::get_action (X_("Main"), X_("ToggleStereoOutMode")); - editor->get_waves_button ("mode_stereo_out_button").set_related_action (act); - + act = ActionManager::get_action (X_("Main"), X_("ToggleMultiOutMode")); + editor->get_waves_button ("mode_multi_out_button").set_related_action (act); + act = ActionManager::get_action (X_("Main"), X_("ToggleStereoOutMode")); + editor->get_waves_button ("mode_stereo_out_button").set_related_action (act); + + update_ouput_operation_mode_buttons(); + transport_tearoff_hbox.set_border_width (3); transport_tearoff_hbox.set_spacing (3); diff --git a/gtk2_ardour/ardour_ui_options.cc b/gtk2_ardour/ardour_ui_options.cc index a49b113531..977f2aa44b 100644 --- a/gtk2_ardour/ardour_ui_options.cc +++ b/gtk2_ardour/ardour_ui_options.cc @@ -417,7 +417,9 @@ ARDOUR_UI::parameter_changed (std::string p) editor_meter_peak_display.show(); } } - } + } else if (p == "output-auto-connect") { + update_ouput_operation_mode_buttons(); + } } void