#ifndef __ardour_plugin_selector_h__
#define __ardour_plugin_selector_h__
-#include <gtkmm.h>
-#include <gtkmm/ctree.h>
+#include <gtkmm/dialog.h>
+#include <gtkmm/notebook.h>
+#include <gtkmm/treeview.h>
#include <gtkmm2ext/selector.h>
-#include <ardour_dialog.h>
+#include <ardour/plugin.h>
namespace ARDOUR {
class Session;
class PluginManager;
- class Plugin;
}
-class PluginSelector : public ArdourDialog
+class PluginSelector : public ArdourDialog
{
public:
PluginSelector (ARDOUR::PluginManager *);
- sigc::signal<void,ARDOUR::Plugin *> PluginCreated;
+ sigc::signal<void,boost::shared_ptr<ARDOUR::Plugin> > PluginCreated;
+
+ int run (); // XXX should we try not to overload the non-virtual Gtk::Dialog::run() ?
void set_session (ARDOUR::Session*);
private:
ARDOUR::Session* session;
Gtk::Notebook notebook;
+ Gtk::ScrolledWindow lscroller; // ladspa
+ Gtk::ScrolledWindow vscroller; // vst
+ Gtk::ScrolledWindow auscroller; // AudioUnit
+ Gtk::ScrolledWindow ascroller; // Added plugins
+
+ ARDOUR::PluginType current_selection;
// page 1
- Gtkmm2ext::Selector ladspa_display;
- void column_clicked (int column, GtkCList* clist);
+ struct LadspaColumns : public Gtk::TreeModel::ColumnRecord {
+ LadspaColumns () {
+ add (name);
+ add (type);
+ add (ins);
+ add (outs);
+ add (plugin);
+ }
+ Gtk::TreeModelColumn<std::string> name;
+ Gtk::TreeModelColumn<std::string> type;
+ Gtk::TreeModelColumn<std::string> ins;
+ Gtk::TreeModelColumn<std::string> outs;
+ Gtk::TreeModelColumn<ARDOUR::PluginInfoPtr> plugin;
+ };
+ LadspaColumns lcols;
+ Glib::RefPtr<Gtk::ListStore> lmodel;
+ Glib::RefPtr<Gtk::TreeSelection> lselection;
+ Gtk::TreeView ladspa_display;
+ Gtk::Button* btn_add;
+ Gtk::Button* btn_remove;
+
+ struct AddedColumns : public Gtk::TreeModel::ColumnRecord {
+ AddedColumns () {
+ add (text);
+ add (plugin);
+ }
+ Gtk::TreeModelColumn<std::string> text;
+ Gtk::TreeModelColumn<ARDOUR::PluginInfoPtr> plugin;
+ };
+ AddedColumns acols;
+ Glib::RefPtr<Gtk::ListStore> amodel;
+ Glib::RefPtr<Gtk::TreeSelection> aselection;
+ Gtk::TreeView added_list;
#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;
-
- 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;
+ struct VstColumns : public Gtk::TreeModel::ColumnRecord {
+ VstColumns () {
+ add (name);
+ add (ins);
+ add (outs);
+ add (plugin);
+ }
+ Gtk::TreeModelColumn<std::string> name;
+ Gtk::TreeModelColumn<std::string> ins;
+ Gtk::TreeModelColumn<std::string> outs;
+ Gtk::TreeModelColumn<ARDOUR::PluginInfoPtr> plugin;
+ };
+ VstColumns vcols;
+ Glib::RefPtr<Gtk::ListStore> vmodel;
+ Glib::RefPtr<Gtk::TreeSelection> vselection;
+ Gtk::TreeView vst_display;
+ static void _vst_refiller (void *);
+ void vst_refiller ();
+ void vst_display_selection_changed();
+#endif // VST_SUPPORT
+
+#ifdef HAVE_AUDIOUNIT
+ // page 3
+ struct AUColumns : public Gtk::TreeModel::ColumnRecord {
+ AUColumns () {
+ add (name);
+ add (ins);
+ add (outs);
+ add (plugin);
+ }
+ Gtk::TreeModelColumn<std::string> name;
+ Gtk::TreeModelColumn<std::string> ins;
+ Gtk::TreeModelColumn<std::string> outs;
+ Gtk::TreeModelColumn<ARDOUR::PluginInfoPtr> plugin;
+ };
+ AUColumns aucols;
+ Glib::RefPtr<Gtk::ListStore> aumodel;
+ Glib::RefPtr<Gtk::TreeSelection> auselection;
+ Gtk::TreeView au_display;
+ static void _au_refiller (void *);
+ void au_refiller ();
+ void au_display_selection_changed();
+#endif //HAVE_AUDIOUNIT
ARDOUR::PluginManager *manager;
- list<ARDOUR::PluginInfo*> 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);
+
+ static void _input_refiller (void *);
+ void input_refiller ();
+ 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 ladspa_display_selection_changed();
void btn_apply_clicked();
- void btn_cancel_clicked();
- void use_plugin (ARDOUR::PluginInfo*);
- gint wm_close(GdkEventAny* ev);
+ void use_plugin (ARDOUR::PluginInfoPtr);
+ void cleanup ();
+
+ void set_correct_focus();
};
#endif // __ardour_plugin_selector_h__
+