void
ARDOUR_UI::plugin_scan_dialog (std::string type, std::string plugin, bool can_cancel)
{
- if (!Config->get_show_plugin_scan_window()) { return; }
+ if (type == X_("closeme") && !(scan_dlg && scan_dlg->is_mapped())) {
+ return;
+ }
+
+ const bool cancelled = PluginManager::instance().cancelled();
+ if (type != X_("closeme") && !Config->get_show_plugin_scan_window()) {
+ if (cancelled && scan_dlg->is_mapped()) {
+ scan_dlg->hide();
+ gui_idle_handler();
+ return;
+ }
+ if (cancelled || !can_cancel) {
+ return;
+ }
+ }
+
static Gtk::Button *cancel_button;
if (!scan_dlg) {
scan_dlg = new MessageDialog("", false, MESSAGE_INFO, BUTTONS_NONE);
scan_dlg->set_message(type + ": " + Glib::path_get_basename(plugin));
scan_dlg->show_all();
}
- cancel_button->set_sensitive(can_cancel);
+ cancel_button->set_sensitive(can_cancel && !cancelled);
- /* due to idle calls, gtk_events_pending() may always return true */
- int timeout = 30;
- while (gtk_events_pending() && --timeout) {
- gtk_main_iteration ();
- }
+ gui_idle_handler();
}
void
ARDOUR_UI::gui_idle_handler ()
{
int timeout = 30;
+ /* due to idle calls, gtk_events_pending() may always return true */
while (gtk_events_pending() && --timeout) {
gtk_main_iteration ();
}
public:
PluginOptions (RCConfiguration* c)
: _rc_config (c)
- , _display_plugin_scan_progress (_("Display Plugin Scan Progress"))
+ , _display_plugin_scan_progress (_("Always Display Plugin Scan Progress"))
, _discover_vst_on_start (_("Scan for new VST Plugins on Application Start"))
{
Label *l;
t->attach (*manage (new Label ("")), 0, 3, n, n+1, FILL | EXPAND); ++n;
t->attach (*l, 0, 2, n, n+1, FILL | EXPAND); ++n;
- b = manage (new Button (_("Refresh Plugin List")));
+ b = manage (new Button (_("Scan for Plugins")));
b->signal_clicked().connect (sigc::mem_fun (*this, &PluginOptions::refresh_clicked));
t->attach (*b, 0, 2, n, n+1, FILL); ++n;
t->attach (_display_plugin_scan_progress, 0, 2, n, n+1); ++n;
_display_plugin_scan_progress.signal_toggled().connect (sigc::mem_fun (*this, &PluginOptions::display_plugin_scan_progress_toggled));
Gtkmm2ext::UI::instance()->set_tip (_display_plugin_scan_progress,
- _("<b>When enabled</b> display a popup window showing plugin scan progress."));
+ _("<b>When enabled</b> a popup window showing plugin scan progress is displayed for indexing (cache load) and discovery (detect new plugins)"));
+ ss.str("");
ss << "<b>" << _("VST") << "</b>";
l = manage (left_aligned_label (ss.str()));
l->set_use_markup (true);
t->attach (_discover_vst_on_start, 0, 2, n, n+1); ++n;
_discover_vst_on_start.signal_toggled().connect (sigc::mem_fun (*this, &PluginOptions::discover_vst_on_start_toggled));
Gtkmm2ext::UI::instance()->set_tip (_discover_vst_on_start,
- _("<b>When enabled</b> VST plugins are searched and tested on application start. When disabled they a Refresh will have to be tiggered manually"));
+ _("<b>When enabled</b> new VST plugins are searched, tested and added to the cache index on application start. When disabled new plugins will only be available after triggering a 'Scan' manually"));
#ifdef WINDOWS_VST_SUPPORT
t->attach (*manage (left_aligned_label (_("Windows VST Path:"))), 0, 1, n, n+1);