X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fplugin_selector.h;h=c4b613647d20781df194aeff47fd9d3901946cf8;hb=68e943265edf04e63a8e8b8f62bab20f99d9c637;hp=2f0395e82bc7e4c9c1c7ef9335a1fa99c9744cdf;hpb=3b24364b3a2fa4f190133570621822b96baa9ef9;p=ardour.git diff --git a/gtk2_ardour/plugin_selector.h b/gtk2_ardour/plugin_selector.h index 2f0395e82b..c4b613647d 100644 --- a/gtk2_ardour/plugin_selector.h +++ b/gtk2_ardour/plugin_selector.h @@ -25,48 +25,72 @@ #include #include +#include +#include "plugin_interest.h" + namespace ARDOUR { class Session; class PluginManager; - class Plugin; } class PluginSelector : public ArdourDialog { public: PluginSelector (ARDOUR::PluginManager *); - sigc::signal PluginCreated; + void set_interested_object (PluginInterestedObject&); + int run (); // XXX should we try not to overload the non-virtual Gtk::Dialog::run() ? void set_session (ARDOUR::Session*); + void on_show (); + + Gtk::Menu& plugin_menu (); private: + PluginInterestedObject* interested_object; + ARDOUR::Session* session; - Gtk::Notebook notebook; - Gtk::ScrolledWindow lscroller; - Gtk::ScrolledWindow vscroller; - Gtk::ScrolledWindow ascroller; - - // page 1 - struct LadspaColumns : public Gtk::TreeModel::ColumnRecord { - LadspaColumns () { + Gtk::ScrolledWindow scroller; // Available plugins + Gtk::ScrolledWindow ascroller; // Added plugins + + Gtk::ComboBoxText filter_mode; + Gtk::Entry filter_entry; + Gtk::Button filter_button; + + void filter_button_clicked (); + void filter_entry_changed (); + void filter_mode_changed (); + + struct PluginColumns : public Gtk::TreeModel::ColumnRecord { + PluginColumns () { + add (favorite); add (name); - add (type); - add (ins); - add (outs); + add (type_name); + add (category); + add (creator); + add (audio_ins); + add (audio_outs); + add (midi_ins); + add (midi_outs); add (plugin); } - Gtk::TreeModelColumn name; - Gtk::TreeModelColumn type; - Gtk::TreeModelColumn ins; - Gtk::TreeModelColumn outs; - Gtk::TreeModelColumn plugin; + Gtk::TreeModelColumn favorite; + 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 plugin; }; - LadspaColumns lcols; - Glib::RefPtr lmodel; - Glib::RefPtr lselection; - Gtk::TreeView ladspa_display; + PluginColumns plugin_columns; + Glib::RefPtr plugin_model; + Gtk::TreeView plugin_display; + Gtk::Button* btn_add; + Gtk::Button* btn_remove; struct AddedColumns : public Gtk::TreeModel::ColumnRecord { AddedColumns () { @@ -74,54 +98,39 @@ class PluginSelector : public ArdourDialog add (plugin); } Gtk::TreeModelColumn text; - Gtk::TreeModelColumn plugin; + Gtk::TreeModelColumn plugin; }; AddedColumns acols; Glib::RefPtr amodel; - Glib::RefPtr aselection; Gtk::TreeView added_list; -#ifdef VST_SUPPORT - // page 2 - struct VstColumns : public Gtk::TreeModel::ColumnRecord { - VstColumns () { - add (name); - add (ins); - add (outs); - add (plugin); - } - Gtk::TreeModelColumn name; - Gtk::TreeModelColumn ins; - Gtk::TreeModelColumn outs; - Gtk::TreeModelColumn plugin; - }; - VstColumns vcols; - Glib::RefPtr vmodel; - Glib::RefPtr vselection; - Gtk::TreeView vst_display; - static void _vst_refiller (void *); - void vst_refiller (); -#endif - - ARDOUR::PluginInfo* i_selected_plug; - - // We need an integer for the output side because - // the name isn't promised to be unique. - gint o_selected_plug; + void refill (); + void refiller (const ARDOUR::PluginInfoList& plugs, const::std::string& filterstr, const char* type); + void ladspa_refiller (const std::string&); + void lv2_refiller (const std::string&); + void vst_refiller (const std::string&); + void au_refiller (const std::string&); ARDOUR::PluginManager *manager; - list added_plugins; - static void _input_refiller (void *); - - void input_refiller (); void row_clicked(GdkEventButton *); void btn_add_clicked(); void btn_remove_clicked(); void btn_update_clicked(); + void added_list_selection_changed(); + void display_selection_changed(); void btn_apply_clicked(); - void use_plugin (ARDOUR::PluginInfo*); - void cleanup (); + ARDOUR::PluginPtr load_plugin (ARDOUR::PluginInfoPtr); + bool show_this_plugin (const ARDOUR::PluginInfoPtr&, const std::string&); + void setup_filter_string (std::string&); + + void favorite_changed (const Glib::ustring& path); + bool in_row_change; + + void plugin_chosen_from_menu (const ARDOUR::PluginInfoPtr&); + Gtk::Menu* _menu; + void show_manager (); }; #endif // __ardour_plugin_selector_h__ +