X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fplugin_selector.h;h=fda03c10f339acefa5e55d43a8f4658d85a926b3;hb=14c390ed027b3ba1c48084502677d1a1287bfc05;hp=034622b3865504d2cbdd78a713a998b007c5d3ee;hpb=f13ff1e10bba05be12f021bcee601d5c636bcc26;p=ardour.git diff --git a/gtk2_ardour/plugin_selector.h b/gtk2_ardour/plugin_selector.h index 034622b386..fda03c10f3 100644 --- a/gtk2_ardour/plugin_selector.h +++ b/gtk2_ardour/plugin_selector.h @@ -20,14 +20,29 @@ #ifndef __ardour_plugin_selector_h__ #define __ardour_plugin_selector_h__ -#include +#include +#include +#include +#include +#include #include +#include +#include #include -#include + +#include "widgets/ardour_button.h" +#include "widgets/ardour_dropdown.h" + +#include "gtkmm2ext/dndtreeview.h" #include "ardour/plugin.h" +#include "ardour/plugin_manager.h" #include "ardour/session_handle.h" + +#include "widgets/ardour_button.h" + #include "plugin_interest.h" +#include "ardour_dialog.h" namespace ARDOUR { class Session; @@ -36,7 +51,7 @@ namespace ARDOUR { class PluginSelector : public ArdourDialog { - public: +public: PluginSelector (ARDOUR::PluginManager&); ~PluginSelector (); @@ -49,49 +64,72 @@ class PluginSelector : public ArdourDialog Gtk::Menu* plugin_menu (); void show_manager (); - private: +private: + + //search + ArdourWidgets::ArdourButton* _search_name_checkbox; + ArdourWidgets::ArdourButton* _search_tags_checkbox; + ArdourWidgets::ArdourButton* _search_ignore_checkbox; + + //radio-button filters + Gtk::RadioButton *_fil_effects_radio; + Gtk::RadioButton *_fil_instruments_radio; + Gtk::RadioButton *_fil_utils_radio; + Gtk::RadioButton *_fil_favorites_radio; + Gtk::RadioButton *_fil_hidden_radio; + Gtk::RadioButton *_fil_all_radio; + + /* combobox filters */ + ArdourWidgets::ArdourDropdown _fil_type_combo; + ArdourWidgets::ArdourDropdown _fil_creator_combo; + PluginInterestedObject* interested_object; Gtk::ScrolledWindow scroller; // Available plugins Gtk::ScrolledWindow ascroller; // Added plugins - Gtk::ComboBoxText filter_mode; - Gtk::Entry filter_entry; - Gtk::Button filter_button; + Gtk::Entry search_entry; + Gtk::Button search_clear_button; + + Gtk::Entry *tag_entry; + Gtk::Button* tag_reset_button; + void tag_reset_button_clicked (); - void filter_button_clicked (); - void filter_entry_changed (); - void filter_mode_changed (); + void set_sensitive_widgets(); + + void search_clear_button_clicked (); + void search_entry_changed (); + + void tag_entry_changed (); + sigc::connection tag_entry_connection; + + void tags_changed ( ARDOUR::PluginType t, std::string unique_id, std::string tag); struct PluginColumns : public Gtk::TreeModel::ColumnRecord { PluginColumns () { add (favorite); add (hidden); add (name); - add (type_name); - add (category); + add (tags); add (creator); - add (audio_ins); - add (audio_outs); - add (midi_ins); - add (midi_outs); + add (type_name); + add (audio_io); + add (midi_io); add (plugin); } Gtk::TreeModelColumn favorite; Gtk::TreeModelColumn hidden; Gtk::TreeModelColumn name; Gtk::TreeModelColumn type_name; - Gtk::TreeModelColumn category; Gtk::TreeModelColumn creator; - Gtk::TreeModelColumn audio_ins; - Gtk::TreeModelColumn audio_outs; - Gtk::TreeModelColumn midi_ins; - Gtk::TreeModelColumn midi_outs; + Gtk::TreeModelColumn tags; + Gtk::TreeModelColumn audio_io; + Gtk::TreeModelColumn midi_io; Gtk::TreeModelColumn plugin; }; PluginColumns plugin_columns; Glib::RefPtr plugin_model; - Gtk::TreeView plugin_display; + Gtkmm2ext::DnDTreeView plugin_display; Gtk::Button* btn_add; Gtk::Button* btn_remove; @@ -113,7 +151,9 @@ class PluginSelector : public ArdourDialog void lv2_refiller (const std::string&); void vst_refiller (const std::string&); void lxvst_refiller (const std::string&); + void mac_vst_refiller (const std::string&); void au_refiller (const std::string&); + void lua_refiller (const std::string&); Gtk::Menu* _plugin_menu; ARDOUR::PluginManager& manager; @@ -121,13 +161,14 @@ class PluginSelector : public ArdourDialog void row_activated(Gtk::TreeModel::Path path, Gtk::TreeViewColumn* col); void btn_add_clicked(); void btn_remove_clicked(); - void btn_update_clicked(); void added_list_selection_changed(); + void added_row_clicked(GdkEventButton* event); void display_selection_changed(); void btn_apply_clicked(); ARDOUR::PluginPtr load_plugin (ARDOUR::PluginInfoPtr); bool show_this_plugin (const ARDOUR::PluginInfoPtr&, const std::string&); - void setup_filter_string (std::string&); + + void setup_search_string (std::string&); void favorite_changed (const std::string& path); void hidden_changed (const std::string& path); @@ -135,11 +176,19 @@ class PluginSelector : public ArdourDialog void plugin_chosen_from_menu (const ARDOUR::PluginInfoPtr&); + void plugin_status_changed ( ARDOUR::PluginType t, std::string unique_id, ARDOUR::PluginManager::PluginStatusType s ); + Gtk::Menu* create_favs_menu (ARDOUR::PluginInfoList&); Gtk::Menu* create_by_creator_menu (ARDOUR::PluginInfoList&); - Gtk::Menu* create_by_category_menu (ARDOUR::PluginInfoList&); + Gtk::Menu* create_by_tags_menu (ARDOUR::PluginInfoList&); void build_plugin_menu (); - PBD::ScopedConnection plugin_list_changed_connection; + PBD::ScopedConnectionList plugin_list_changed_connection; + + bool _need_tag_save; + bool _need_status_save; + bool _need_menu_rebuild; + + bool _inhibit_refill; }; #endif // __ardour_plugin_selector_h__