diff options
Diffstat (limited to 'gtk2_ardour/ardour_ui.cc')
-rw-r--r-- | gtk2_ardour/ardour_ui.cc | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index cb1c22a8d0..10de8e795d 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -72,6 +72,7 @@ #include "ardour/filename_extensions.h" #include "ardour/filesystem_paths.h" #include "ardour/port.h" +#include "ardour/plugin_manager.h" #include "ardour/process_thread.h" #include "ardour/profile.h" #include "ardour/recent_sessions.h" @@ -304,6 +305,9 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir) ARDOUR::FileSource::AmbiguousFileName.connect_same_thread (forever_connections, boost::bind (&ARDOUR_UI::ambiguous_file, this, _1, _2)); + /* also plugin scan messages */ + ARDOUR::PluginScanMessage.connect (forever_connections, MISSING_INVALIDATOR, boost::bind(&ARDOUR_UI::plugin_scan_dialog, this, _1, _2), gui_context()); + /* lets get this party started */ setup_gtk_ardour_enums (); @@ -3791,6 +3795,41 @@ quickly enough to keep up with recording.\n"), PROGRAM_NAME)); } 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 (); +} + +void ARDOUR_UI::disk_underrun_handler () { ENSURE_GUI_THREAD (*this, &ARDOUR_UI::disk_underrun_handler) |