diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc
index 48cc54eadb..0094a4795f 100644
--- a/gtk2_ardour/mixer_ui.cc
+++ b/gtk2_ardour/mixer_ui.cc
@@ -3167,7 +3167,7 @@ Mixer_UI::refill_favorite_plugins ()
{
PluginChartsSorter cmp;
plugs.sort (cmp);
- plugs.resize (std::min (plugs.size(), size_t(10)));
+ plugs.resize (std::min (plugs.size(), size_t(UIConfiguration::instance().get_max_plugin_chart())));
}
break;
case PLM_Recent:
@@ -3175,6 +3175,7 @@ Mixer_UI::refill_favorite_plugins ()
PluginRecentSorter cmp;
plugs.sort (cmp);
plugs.resize (std::min (plugs.size(), size_t(10)));
+ plugs.resize (std::min (plugs.size(), size_t(UIConfiguration::instance().get_max_plugin_recent())));
}
break;
}
diff --git a/gtk2_ardour/plugin_selector.cc b/gtk2_ardour/plugin_selector.cc
index 6ccae76e2f..e49894af32 100644
--- a/gtk2_ardour/plugin_selector.cc
+++ b/gtk2_ardour/plugin_selector.cc
@@ -970,7 +970,7 @@ PluginSelector::build_plugin_menu ()
items.push_back (SeparatorElem ());
Menu* charts = create_charts_menu(all_plugs);
- items.push_back (MenuElem (_("Top-10"), *manage (charts)));
+ items.push_back (MenuElem (_("By Popularity"), *manage (charts)));
Menu* by_creator = create_by_creator_menu(all_plugs);
items.push_back (MenuElem (_("By Creator"), *manage (by_creator)));
@@ -1048,7 +1048,7 @@ PluginSelector::create_charts_menu (PluginInfoList& all_plugs)
}
PluginChartsSorter cmp;
plugs.sort (cmp);
- plugs.resize (std::min (plugs.size(), size_t(10)));
+ plugs.resize (std::min (plugs.size(), size_t(UIConfiguration::instance().get_max_plugin_chart())));
PluginABCSorter abc;
plugs.sort (abc);
diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc
index 5cf83ae1af..206c672e4c 100644
--- a/gtk2_ardour/rc_option_editor.cc
+++ b/gtk2_ardour/rc_option_editor.cc
@@ -3767,6 +3767,30 @@ RCOptionEditor::RCOptionEditor ()
_("When enabled show a dialog to select instrument channel configuration before adding a multichannel plugin."));
#endif
+ add_option (_("Plugins"), new OptionEditorHeading (_("Statistics")));
+
+ add_option (_("Plugins"),
+ new RcActionButton (_("Reset Statistics"),
+ sigc::mem_fun (*this, &RCOptionEditor::plugin_reset_stats)));
+
+ add_option (_("Plugins"),
+ new SpinOption (
+ "max-plugin-chart",
+ _("Plugin chart (use-count) length"),
+ sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_max_plugin_chart),
+ sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_max_plugin_chart),
+ 10, 25, 1, 5
+ ));
+
+ add_option (_("Plugins"),
+ new SpinOption (
+ "max-plugin-recent",
+ _("Plugin recent list length"),
+ sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_max_plugin_recent),
+ sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_max_plugin_recent),
+ 10, 50, 1, 5
+ ));
+
add_option (_("Plugins"), new OptionEditorBlank ());
/* INTERFACE */
@@ -4296,6 +4320,10 @@ void RCOptionEditor::plugin_scan_refresh () {
psd.start ();
}
+void RCOptionEditor::plugin_reset_stats () {
+ PluginManager::instance().reset_stats();
+}
+
void RCOptionEditor::clear_vst_cache () {
PluginManager::instance().clear_vst_cache();
}
diff --git a/gtk2_ardour/rc_option_editor.h b/gtk2_ardour/rc_option_editor.h
index 55b9c63433..c37bd273e5 100644
--- a/gtk2_ardour/rc_option_editor.h
+++ b/gtk2_ardour/rc_option_editor.h
@@ -65,6 +65,7 @@ private:
/* plugin actions */
void plugin_scan_refresh ();
+ void plugin_reset_stats ();
void clear_vst_cache ();
void clear_vst_blacklist ();
void clear_au_cache ();
diff --git a/gtk2_ardour/ui_config_vars.h b/gtk2_ardour/ui_config_vars.h
index 1ecff7b1f7..1392baf7f8 100644
--- a/gtk2_ardour/ui_config_vars.h
+++ b/gtk2_ardour/ui_config_vars.h
@@ -103,6 +103,8 @@ UI_CONFIG_VARIABLE (bool, save_export_analysis_image, "save-export-analysis-imag
UI_CONFIG_VARIABLE (bool, save_export_mixer_screenshot, "save-export-mixer-screenshot", false)
UI_CONFIG_VARIABLE (bool, open_gui_after_adding_plugin, "open-gui-after-adding-plugin", true)
UI_CONFIG_VARIABLE (bool, show_inline_display_by_default, "show-inline-display-by-default", true)
+UI_CONFIG_VARIABLE (int32_t, max_plugin_chart, "max-plugin-chart", 10)
+UI_CONFIG_VARIABLE (int32_t, max_plugin_recent, "max-plugin-recent", 10)
UI_CONFIG_VARIABLE (bool, prefer_inline_over_gui, "prefer-inline-over-gui", true)
UI_CONFIG_VARIABLE (uint32_t, max_inline_controls, "max-inline-controls", 32) /* per processor */
UI_CONFIG_VARIABLE (uint32_t, action_table_columns, "action-table-columns", 3)