+void
+RouteUI::delete_patch_change_dialog ()
+{
+ if (!_route) {
+ return;
+ }
+ delete _route->patch_selector_dialog ();
+ _route->set_patch_selector_dialog (0);
+}
+
+PatchChangeGridDialog*
+RouteUI::patch_change_dialog () const
+{
+ return _route->patch_selector_dialog ();
+}
+
+void
+RouteUI::select_midi_patch ()
+{
+ if (patch_change_dialog ()) {
+ patch_change_dialog()->present ();
+ return;
+ }
+
+ /* note: RouteTimeAxisView is resoponsible to updating
+ * the Dialog (PatchChangeGridDialog::refresh())
+ * when the midnam model changes.
+ */
+ PatchChangeGridDialog* d = new PatchChangeGridDialog (_route);
+ _route->set_patch_selector_dialog (d);
+ d->present ();
+}
+