AddTransportMasterDialog d;
d.present ();
- int r = d.run ();
+ string name;
- switch (r) {
- case RESPONSE_ACCEPT:
- break;
- default:
- return;
+ while (name.empty()) {
+
+ int r = d.run ();
+
+ switch (r) {
+ case RESPONSE_ACCEPT:
+ name = d.get_name();
+ break;
+ default:
+ return;
+ }
}
- TransportMasterManager::instance().add (d.get_type(), d.get_name());
+ d.hide ();
+
+ if (TransportMasterManager::instance().add (d.get_type(), name)) {
+ MessageDialog msg (_("New transport master not added - check error log for details"));
+ msg.run ();
+ }
}
void
table.show_all ();
- // r->label_box.set_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK);
r->label_box.signal_button_press_event().connect (sigc::mem_fun (*r, &TransportMastersWidget::Row::name_press));
r->port_combo.signal_changed().connect (sigc::mem_fun (*r, &TransportMastersWidget::Row::port_choice_changed));
r->use_button.signal_toggled().connect (sigc::mem_fun (*r, &TransportMastersWidget::Row::use_button_toggled));
return false;
}
+bool
+TransportMastersWidget::idle_remove (TransportMastersWidget::Row* row)
+{
+ TransportMasterManager::instance().remove (row->tm->name());
+ return false;
+}
+
void
TransportMastersWidget::Row::remove_clicked ()
{
- TransportMasterManager::instance().remove (tm->name());
+ /* have to do this via an idle callback, because it will destroy the
+ widget from which this callback was initiated.
+ */
+ Glib::signal_idle().connect (sigc::bind (sigc::mem_fun (parent, &TransportMastersWidget::idle_remove), this));
}
void
}
void
- TransportMastersWidget::update (samplepos_t /* audible */)
+TransportMastersWidget::update (samplepos_t /* audible */)
{
samplepos_t now = AudioEngine::instance()->sample_time ();
type_label.show ();
name_hbox.show ();
type_hbox.show ();
+
+ name_entry.signal_activate().connect (sigc::bind (sigc::mem_fun (*this, &Gtk::Dialog::response), Gtk::RESPONSE_ACCEPT));
}
string