+MidiTimeAxisView::update_patch_selector ()
+{
+ typedef MIDI::Name::MidiPatchManager PatchManager;
+ PatchManager& patch_manager = PatchManager::instance();
+
+ bool pluginprovided = false;
+ if (_route) {
+ boost::shared_ptr<Processor> the_instrument (_route->the_instrument());
+ boost::shared_ptr<PluginInsert> pi = boost::dynamic_pointer_cast<PluginInsert>(the_instrument);
+ if (pi && pi->plugin ()->has_midnam ()) {
+ midnam_connection.drop_connections ();
+ the_instrument->DropReferences.connect (midnam_connection, invalidator (*this),
+ boost::bind (&MidiTimeAxisView::drop_instrument_ref, this),
+ gui_context());
+ pi->plugin()->UpdateMidnam.connect (midnam_connection, invalidator (*this),
+ boost::bind (&Plugin::read_midnam, pi->plugin ()),
+ gui_context());
+
+ pluginprovided = true;
+ std::string model_name = pi->plugin ()->midnam_model ();
+ if (gui_property (X_("midnam-model-name")) != model_name) {
+ model_changed (model_name);
+ }
+ }
+ }
+
+ if (patch_manager.all_models().empty() || pluginprovided) {
+ _midnam_model_selector.hide ();
+ _midnam_custom_device_mode_selector.hide ();
+ } else {
+ _midnam_model_selector.show ();
+ _midnam_custom_device_mode_selector.show ();
+ }
+}
+
+void
+MidiTimeAxisView::model_changed(const std::string& model)