X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fplugin_selector.h;h=3635b71a761f7de64f151cdf51e095f378be079f;hb=5173497c6d9b4bed0f64c1c3b4beab442a405849;hp=cc482ffbf050171b2f39c777150f40b7d65594fb;hpb=f5091b8db024c3499c72cac8694cde678e8f73bb;p=ardour.git diff --git a/gtk2_ardour/plugin_selector.h b/gtk2_ardour/plugin_selector.h index cc482ffbf0..3635b71a76 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 @@ -20,74 +20,127 @@ #ifndef __ardour_plugin_selector_h__ #define __ardour_plugin_selector_h__ -#include +#include #include #include #include -#include +#include "ardour/plugin.h" +#include "ardour/session_handle.h" +#include "plugin_interest.h" namespace ARDOUR { class Session; class PluginManager; - class Plugin; } -class PluginSelector : public ArdourDialog +class PluginSelector : public ArdourDialog { public: PluginSelector (ARDOUR::PluginManager *); - sigc::signal PluginCreated; - - void set_session (ARDOUR::Session*); + ~PluginSelector (); - private: - ARDOUR::Session* session; - Gtk::Notebook notebook; + void set_interested_object (PluginInterestedObject&); - // page 1 - Gtkmm2ext::Selector ladspa_display; - void column_clicked (int column, GtkCList* clist); + int run (); // XXX should we try not to overload the non-virtual Gtk::Dialog::run() ? -#ifdef VST_SUPPORT - // page 2 - Gtkmm2ext::Selector vst_display; - static void _vst_refiller (Gtk::CList &, void *); - void vst_refiller (Gtk::CList &); -#endif - Gtkmm2ext::Selector o_selector; + void on_show (); - 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; + Gtk::Menu* plugin_menu (); + void show_manager (); + private: + 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; + + 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 (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 audio_ins; + Gtk::TreeModelColumn audio_outs; + Gtk::TreeModelColumn midi_ins; + Gtk::TreeModelColumn midi_outs; + Gtk::TreeModelColumn plugin; + }; + 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 () { + add (text); + add (plugin); + } + Gtk::TreeModelColumn text; + Gtk::TreeModelColumn plugin; + }; + AddedColumns acols; + Glib::RefPtr amodel; + Gtk::TreeView added_list; + + 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 lxvst_refiller (const std::string&); + void au_refiller (const std::string&); + + Gtk::Menu* _plugin_menu; ARDOUR::PluginManager *manager; - list added_plugins; - - //static void _input_refiller (Gtk::CList &, void *); - //static void _output_refiller (Gtk::CList &, void *); - - //void input_refiller (Gtk::CList &); - //void output_refiller (Gtk::CList &); - //void i_plugin_selected (Gtkmm2ext::Selector *selector, - // Gtkmm2ext::SelectionResult *res); - //void i_plugin_chosen (Gtkmm2ext::Selector *selector, - // Gtkmm2ext::SelectionResult *res); - //void o_plugin_selected (Gtkmm2ext::Selector *selector, - // Gtkmm2ext::SelectionResult *res); - //void o_plugin_chosen (Gtkmm2ext::Selector *selector, - // Gtkmm2ext::SelectionResult *res); - + + void row_clicked(GdkEventButton *); void btn_add_clicked(); void btn_remove_clicked(); - void btn_ok_clicked(); void btn_update_clicked(); + void added_list_selection_changed(); + void display_selection_changed(); void btn_apply_clicked(); - void btn_cancel_clicked(); - void use_plugin (ARDOUR::PluginInfo*); - gint wm_close(GdkEventAny* ev); + 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::ScopedConnection plugin_list_changed_connection; }; #endif // __ardour_plugin_selector_h__ +