+void
+ARDOUR_UI::cancel_plugin_scan ()
+{
+ PluginManager::instance().cancel_plugin_scan();
+}
+
+static MessageDialog *scan_dlg = NULL;
+
+void
+ARDOUR_UI::plugin_scan_dialog (std::string type, std::string plugin)
+{
+ if (!Config->get_show_plugin_scan_window()) { return; }
+ if (!scan_dlg) {
+ scan_dlg = new MessageDialog("", false, MESSAGE_INFO, BUTTONS_NONE);
+ VBox* vbox = scan_dlg->get_vbox();
+ vbox->set_size_request(400,-1);
+ scan_dlg->set_title (_("Scanning for plugins"));
+
+ Gtk::Button *cancel_button = manage(new Gtk::Button(_("Cancel plugin scan")));
+ cancel_button->set_name ("EditorGTKButton");
+ cancel_button->signal_clicked().connect ( mem_fun (*this, &ARDOUR_UI::cancel_plugin_scan) );
+
+ scan_dlg->get_vbox()->pack_start ( *cancel_button, PACK_SHRINK);
+ }
+
+ if (type == X_("closeme")) {
+ scan_dlg->hide();
+ } else {
+ scan_dlg->set_message(type + ": " + Glib::path_get_basename(plugin));
+ scan_dlg->show_all();
+ }
+
+ gtk_main_iteration ();
+}
+