display policy of plugin-scan progress popup-window
authorRobin Gareus <robin@gareus.org>
Thu, 27 Feb 2014 22:41:48 +0000 (23:41 +0100)
committerRobin Gareus <robin@gareus.org>
Thu, 27 Feb 2014 23:05:47 +0000 (00:05 +0100)
Only show scan-progress when discovering new plugins
(discovery can be cancelled) and optionally also show
it during 'scanning index only'
(with insensitive cancel button)

gtk2_ardour/ardour_ui.cc
gtk2_ardour/rc_option_editor.cc

index fdd680a6699ce693bed23d52cd9f2cc0d7a6e5e5..865fba97dbf5a71f99485d94a58711fb8402e492 100644 (file)
@@ -3802,7 +3802,22 @@ static MessageDialog *scan_dlg = NULL;
 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);
@@ -3823,19 +3838,16 @@ ARDOUR_UI::plugin_scan_dialog (std::string type, std::string plugin, bool can_ca
                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 ();
        }
index b3f95f4547fd01fad4baca4a89766260fa50064d..f465aade1db06fafde569138251b4031fdf7309f 100644 (file)
@@ -999,7 +999,7 @@ class PluginOptions : public OptionEditorBox
 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;
@@ -1015,16 +1015,17 @@ public:
                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);
@@ -1043,7 +1044,7 @@ public:
                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);