X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gtk2_ardour%2Fplugin_selector.h;h=dacbcccd74e062c28b371436c0b33bafac2fc715;hb=237741d18722252abd4a6a20d3422315481ccffe;hp=ea258d3be07b86e5abc553699d64c0447e2215db;hpb=4ca1fe7993adf63ea3f35958f63dd20ee546e7ae;p=ardour.git diff --git a/gtk2_ardour/plugin_selector.h b/gtk2_ardour/plugin_selector.h index ea258d3be0..dacbcccd74 100644 --- a/gtk2_ardour/plugin_selector.h +++ b/gtk2_ardour/plugin_selector.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2000 Paul Davis + Copyright (C) 2000 Paul Davis This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,7 +25,9 @@ #include #include -#include +#include "ardour/plugin.h" +#include "ardour/session_handle.h" +#include "plugin_interest.h" namespace ARDOUR { class Session; @@ -35,16 +37,22 @@ namespace ARDOUR { class PluginSelector : public ArdourDialog { public: - PluginSelector (ARDOUR::PluginManager *); - sigc::signal > PluginCreated; + PluginSelector (ARDOUR::PluginManager&); + ~PluginSelector (); + + 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 (); + void show_manager (); private: - ARDOUR::Session* session; - Gtk::ScrolledWindow scroller; // Available plugins + PluginInterestedObject* interested_object; + + Gtk::ScrolledWindow scroller; // Available plugins Gtk::ScrolledWindow ascroller; // Added plugins Gtk::ComboBoxText filter_mode; @@ -54,23 +62,31 @@ class PluginSelector : public ArdourDialog void filter_button_clicked (); void filter_entry_changed (); void filter_mode_changed (); - + struct PluginColumns : public Gtk::TreeModel::ColumnRecord { PluginColumns () { + add (favorite); + add (hidden); add (name); add (type_name); add (category); add (creator); - add (ins); - add (outs); + add (audio_ins); + add (audio_outs); + add (midi_ins); + add (midi_outs); add (plugin); } + Gtk::TreeModelColumn favorite; + Gtk::TreeModelColumn hidden; Gtk::TreeModelColumn name; Gtk::TreeModelColumn type_name; Gtk::TreeModelColumn category; Gtk::TreeModelColumn creator; - Gtk::TreeModelColumn ins; - Gtk::TreeModelColumn outs; + Gtk::TreeModelColumn audio_ins; + Gtk::TreeModelColumn audio_outs; + Gtk::TreeModelColumn midi_ins; + Gtk::TreeModelColumn midi_outs; Gtk::TreeModelColumn plugin; }; PluginColumns plugin_columns; @@ -96,21 +112,34 @@ class PluginSelector : public ArdourDialog void ladspa_refiller (const std::string&); void lv2_refiller (const std::string&); void vst_refiller (const std::string&); + void lxvst_refiller (const std::string&); void au_refiller (const std::string&); - ARDOUR::PluginManager *manager; + Gtk::Menu* _plugin_menu; + ARDOUR::PluginManager& manager; - void row_clicked(GdkEventButton *); + 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 display_selection_changed(); void btn_apply_clicked(); - void use_plugin (ARDOUR::PluginInfoPtr); - 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 std::string& path); + void hidden_changed (const std::string& path); + bool in_row_change; + + void plugin_chosen_from_menu (const ARDOUR::PluginInfoPtr&); + + Gtk::Menu* create_favs_menu (ARDOUR::PluginInfoList&); + Gtk::Menu* create_by_creator_menu (ARDOUR::PluginInfoList&); + Gtk::Menu* create_by_category_menu (ARDOUR::PluginInfoList&); + void build_plugin_menu (); + PBD::ScopedConnectionList plugin_list_changed_connection; }; #endif // __ardour_plugin_selector_h__