summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Mayberry <mojofunk@gmail.com>2015-08-25 21:42:11 +1000
committerTim Mayberry <mojofunk@gmail.com>2015-09-02 12:07:15 +1000
commitdd275327a45d72c01021845516350e315846b14c (patch)
treedc0d8b9bbb49c942e7cf8dd0df7a171ea8463e35
parent0396df963f0a46990ffac5e509f11bf9f7c0a582 (diff)
Change "Stop" button into a Start/Stop button in Audio Setup dialog
-rw-r--r--gtk2_ardour/engine_dialog.cc52
-rw-r--r--gtk2_ardour/engine_dialog.h4
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);