From 4d0fa60d478d1a341dba9324b0c9c1fbf36795b1 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Fri, 7 Nov 2025 00:01:11 +0100 Subject: [PATCH] Use "star" icon to indicate favorite plugin in plugin-selector --- gtk2_ardour/icons/favorite-no.png | Bin 0 -> 6462 bytes gtk2_ardour/icons/favorite-yes.png | Bin 0 -> 335 bytes gtk2_ardour/plugin_selector.cc | 27 ++++++++++++++++++++++----- 3 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 gtk2_ardour/icons/favorite-no.png create mode 100644 gtk2_ardour/icons/favorite-yes.png diff --git a/gtk2_ardour/icons/favorite-no.png b/gtk2_ardour/icons/favorite-no.png new file mode 100644 index 0000000000000000000000000000000000000000..540b42194498365df4f83903812bdae86f59618f GIT binary patch literal 6462 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 YZ`%cUvH3xO$N&HU07*qoM6N<$f*u8+pa1{> literal 0 HcmV?d00001 diff --git a/gtk2_ardour/icons/favorite-yes.png b/gtk2_ardour/icons/favorite-yes.png new file mode 100644 index 0000000000000000000000000000000000000000..6d9cc44950b2ac0aa294e8fb3932649adbc87c7a GIT binary patch literal 335 zcmV-V0kHmwP)t>ZRFfja|)l(Qvl!ix-9tDCl{J$vmA4ETT^vD5S4I>tP|DW%ZVvrDF zU|?YT&%mhh977$*PwPMmVc5!mn}L<(KU@UFN0w(`V3@&p@$4~SePgRP|1U{Fj1lZ) zVED9}f#J^?bO$gn>OW^Vb9_H1lfJRl+lyz9nltJ>gP8N>AOpj{rzncS?$dwHaOvzZ zP7_PVA8@Jt`}Zrr0sxFJNx|75@%{VvtKkX=kRqt*2q{MWXDDi!P&7dO_5CL!SmF1d z5T`*5g1QrnE&r1Oc)-p%bLI@l #include +#include "gtkmm2ext/cell_renderer_pixbuf_multi.h" #include "gtkmm2ext/utils.h" #include "widgets/tooltips.h" @@ -58,6 +59,7 @@ #include "plugin_utils.h" #include "gui_thread.h" #include "ui_config.h" +#include "utils.h" #include "pbd/i18n.h" @@ -94,7 +96,26 @@ PluginSelector::PluginSelector (PluginManager& mgr) plugin_model = Gtk::ListStore::create (plugin_columns); plugin_display.set_model (plugin_model); - plugin_display.append_column (S_("Favorite|Fav"), plugin_columns.favorite); + + { + Gtkmm2ext::CellRendererPixbufMulti* cell; + Gtk::TreeViewColumn* tvc; + + cell = manage (new Gtkmm2ext::CellRendererPixbufMulti ()); + cell->signal_changed().connect (sigc::mem_fun (*this, &PluginSelector::favorite_changed)); + cell->set_pixbuf (Gtkmm2ext::Off, ARDOUR_UI_UTILS::get_icon ("favorite-no")); + cell->set_pixbuf (Gtkmm2ext::ExplicitActive, ARDOUR_UI_UTILS::get_icon ("favorite-yes")); + + tvc = manage (new Gtk::TreeViewColumn (S_("Favorite|Fav"), *cell)); + tvc->add_attribute (cell->property_state (), plugin_columns.favorite); + tvc->set_sizing (Gtk::TREE_VIEW_COLUMN_AUTOSIZE); + tvc->set_alignment (Gtk::ALIGN_CENTER); + tvc->set_expand (false); + tvc->set_resizable (false); + + plugin_display.append_column (*tvc); + } + plugin_display.append_column (_("Name"), plugin_columns.name); plugin_display.append_column (_("Tags"), plugin_columns.tags); plugin_display.append_column (_("Creator"), plugin_columns.creator); @@ -115,10 +136,6 @@ PluginSelector::PluginSelector (PluginManager& mgr) plugin_display.signal_row_activated().connect_notify (sigc::mem_fun(*this, &PluginSelector::row_activated)); plugin_display.get_selection()->signal_changed().connect (sigc::mem_fun(*this, &PluginSelector::display_selection_changed)); - CellRendererToggle* fav_cell = dynamic_cast(plugin_display.get_column_cell_renderer (0)); - fav_cell->property_activatable() = true; - fav_cell->signal_toggled().connect (sigc::mem_fun (*this, &PluginSelector::favorite_changed)); - scroller.set_border_width(10); scroller.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); scroller.add(plugin_display);