diff options
author | Tim Mayberry <mojofunk@gmail.com> | 2015-08-25 21:42:11 +1000 |
---|---|---|
committer | Tim Mayberry <mojofunk@gmail.com> | 2015-09-02 12:07:15 +1000 |
commit | dd275327a45d72c01021845516350e315846b14c (patch) | |
tree | dc0d8b9bbb49c942e7cf8dd0df7a171ea8463e35 | |
parent | 0396df963f0a46990ffac5e509f11bf9f7c0a582 (diff) |
Change "Stop" button into a Start/Stop button in Audio Setup dialog
-rw-r--r-- | gtk2_ardour/engine_dialog.cc | 52 | ||||
-rw-r--r-- | gtk2_ardour/engine_dialog.h | 4 |
2 files changed, 40 insertions, 16 deletions
diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index e6c787359f..d0912b0091 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -86,7 +86,7 @@ EngineControl::EngineControl () , ports_spinner (ports_adjustment) , control_app_button (_("Device Control Panel")) , midi_devices_button (_("Midi Device Setup")) - , stop_engine_button (_("Stop (Reconfigure)")) + , start_stop_button (_("Stop")) , lm_measure_label (_("Measure")) , lm_use_button (_("Use results")) , lm_back_button (_("Back to settings ... (ignore results)")) @@ -269,10 +269,10 @@ EngineControl::EngineControl () control_app_button.set_can_focus(true); manage_control_app_sensitivity (); - stop_engine_button.signal_clicked.connect (mem_fun (*this, &EngineControl::stop_engine_button_clicked)); - stop_engine_button.set_sensitive (false); - stop_engine_button.set_name ("generic button"); - stop_engine_button.set_can_focus(true); + start_stop_button.signal_clicked.connect (mem_fun (*this, &EngineControl::start_stop_button_clicked)); + start_stop_button.set_sensitive (false); + start_stop_button.set_name ("generic button"); + start_stop_button.set_can_focus(true); cancel_button = add_button (Gtk::Stock::CLOSE, Gtk::RESPONSE_CANCEL); apply_button = add_button (Gtk::Stock::APPLY, Gtk::RESPONSE_APPLY); @@ -469,7 +469,7 @@ EngineControl::build_notebook () basic_packer.attach (engine_status, 2, 3, 0, 1, xopt, (AttachOptions) 0); engine_status.show(); - basic_packer.attach (stop_engine_button, 3, 4, 0, 1, xopt, xopt); + basic_packer.attach (start_stop_button, 3, 4, 0, 1, xopt, xopt); lm_button_audio.signal_clicked.connect (sigc::mem_fun (*this, &EngineControl::calibrate_audio_latency)); lm_button_audio.set_name ("generic button"); @@ -739,7 +739,7 @@ EngineControl::update_sensitivity () if (!backend) { ok_button->set_sensitive (false); apply_button->set_sensitive (false); - stop_engine_button.set_sensitive (false); + start_stop_button.set_sensitive (false); return; } @@ -802,13 +802,24 @@ EngineControl::update_sensitivity () valid = false; } + if (_have_control) { + start_stop_button.set_sensitive(true); + start_stop_button.show(); + if (ARDOUR::AudioEngine::instance()->running()) { + start_stop_button.set_text("Stop"); + } else { + start_stop_button.set_text("Start"); + } + } else { + start_stop_button.set_sensitive(false); + start_stop_button.hide(); + } + if (ARDOUR::AudioEngine::instance()->running() && _have_control) { input_device_combo.set_sensitive (false); output_device_combo.set_sensitive (false); device_combo.set_sensitive (false); driver_combo.set_sensitive (false); - stop_engine_button.set_sensitive (true); - stop_engine_button.show (); } else { input_device_combo.set_sensitive (true); output_device_combo.set_sensitive (true); @@ -818,8 +829,6 @@ EngineControl::update_sensitivity () } else { driver_combo.set_sensitive (false); } - stop_engine_button.set_sensitive (false); - stop_engine_button.hide (); } if (valid || !_have_control) { @@ -2443,9 +2452,19 @@ EngineControl::control_app_button_clicked () } void -EngineControl::stop_engine_button_clicked () +EngineControl::start_stop_button_clicked () { - ARDOUR::AudioEngine::instance()->stop (); + boost::shared_ptr<ARDOUR::AudioBackend> backend = ARDOUR::AudioEngine::instance()->current_backend(); + + if (!backend) { + return; + } + + if (ARDOUR::AudioEngine::instance()->running()) { + ARDOUR::AudioEngine::instance()->stop (); + } else { + push_state_to_backend (true); + } } void @@ -2782,7 +2801,12 @@ EngineControl::engine_stopped () connect_disconnect_button.set_label (string_compose (_("Connect to %1"), backend->name())); connect_disconnect_button.show(); - engine_status.set_markup(X_("")); + if (_have_control) { + engine_status.set_markup(string_compose ("<span foreground=\"red\">%1</span>", _("Stopped"))); + } else { + engine_status.set_markup(X_("")); + } + update_sensitivity(); } diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index 783ab440e8..0e44d3585c 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -84,7 +84,7 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList { Gtk::Label have_control_text; ArdourButton control_app_button; ArdourButton midi_devices_button; - ArdourButton stop_engine_button; + ArdourButton start_stop_button; Gtk::Button connect_disconnect_button; @@ -289,7 +289,7 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList { void on_show (); void on_response (int); void control_app_button_clicked (); - void stop_engine_button_clicked (); + void start_stop_button_clicked (); void use_latency_button_clicked (); void manage_control_app_sensitivity (); int push_state_to_backend (bool start); |