+void
+AudioClock::set_slave_info ()
+{
+ if (!_with_info) {
+ return;
+ }
+
+ SyncSource sync_src = Config->get_sync_source();
+
+ if (_session->config.get_external_sync()) {
+ Slave* slave = _session->slave();
+
+ switch (sync_src) {
+ case Engine:
+ _left_btn.set_text (sync_source_to_string (sync_src, true));
+ _right_btn.set_text ("");
+ break;
+ case MIDIClock:
+ if (slave) {
+ _left_btn.set_text (sync_source_to_string (sync_src, true));
+ _right_btn.set_text (slave->approximate_current_delta (), true);
+ } else {
+ _left_btn.set_text (_("--pending--"));
+ _right_btn.set_text ("");
+ }
+ break;
+ case LTC:
+ case MTC:
+ if (slave) {
+ bool matching;
+ TimecodeSlave* tcslave;
+ if ((tcslave = dynamic_cast<TimecodeSlave*>(_session->slave())) != 0) {
+ matching = (tcslave->apparent_timecode_format() == _session->config.get_timecode_format());
+ _left_btn.set_text (string_compose ("%1 <span face=\"monospace\" foreground=\"%3\">%2</span>",
+ sync_source_to_string(sync_src, true)[0],
+ dynamic_cast<TimecodeSlave*>(slave)->approximate_current_position (),
+ matching ? "#66ff66" : "#ff3333"
+ ), true);
+ _right_btn.set_text (slave->approximate_current_delta (), true);
+ }
+ } else {
+ _left_btn.set_text (_("--pending--"));
+ _right_btn.set_text ("");
+ }
+ break;
+ }
+ } else {
+ _left_btn.set_text (string_compose ("%1/%2",
+ _("INT"), sync_source_to_string(sync_src, true)));
+ _right_btn.set_text ("");
+ }
+}
+