+ for (vector<MidiDeviceSettings>::const_iterator p = _midi_devices.begin(); p != _midi_devices.end(); ++p) {
+ ArdourButton *m;
+ Gtk::Button* b;
+ Gtk::Adjustment *a;
+ Gtk::SpinButton *s;
+ bool enabled = (*p)->enabled;
+
+ m = manage (new ArdourButton ((*p)->name, ArdourButton::led_default_elements));
+ m->set_name ("midi device");
+ m->set_can_focus (Gtk::CAN_FOCUS);
+ m->add_events (Gdk::BUTTON_RELEASE_MASK);
+ m->set_active (enabled);
+ m->signal_clicked.connect (sigc::bind (sigc::mem_fun (*this, &EngineControl::midi_device_enabled_toggled), m, *p));
+ midi_device_table.attach (*m, 0, 1, row, row + 1, xopt, AttachOptions (0)); m->show ();
+ if ((*p)->name == focus) {
+ m->grab_focus();
+ }
+
+ a = manage (new Gtk::Adjustment (0, 0, 99999, 1));
+ s = manage (new Gtk::SpinButton (*a));
+ a->set_value ((*p)->input_latency);
+ s->signal_value_changed().connect (sigc::bind (sigc::mem_fun (*this, &EngineControl::midi_latency_adjustment_changed), a, *p, true));
+ s->set_sensitive (_can_set_midi_latencies && enabled);
+ midi_device_table.attach (*s, 1, 2, row, row + 1, xopt, AttachOptions (0)); s->show ();
+
+ a = manage (new Gtk::Adjustment (0, 0, 99999, 1));
+ s = manage (new Gtk::SpinButton (*a));
+ a->set_value ((*p)->output_latency);
+ s->signal_value_changed().connect (sigc::bind (sigc::mem_fun (*this, &EngineControl::midi_latency_adjustment_changed), a, *p, false));
+ s->set_sensitive (_can_set_midi_latencies && enabled);
+ midi_device_table.attach (*s, 2, 3, row, row + 1, xopt, AttachOptions (0)); s->show ();
+
+ b = manage (new Button (_("Calibrate")));
+ b->signal_clicked().connect (sigc::bind (sigc::mem_fun (*this, &EngineControl::calibrate_midi_latency), *p));
+ b->set_sensitive (_can_set_midi_latencies && enabled);
+ midi_device_table.attach (*b, 3, 4, row, row + 1, xopt, AttachOptions (0)); b->show ();
+