#ifndef __ardour_plugin_selector_h__
#define __ardour_plugin_selector_h__
-#include <gtk--.h>
-#include <gtk--/ctree.h>
-#include <gtkmmext/selector.h>
-
-#include <ardour_dialog.h>
+#include <gtkmm/dialog.h>
+#include <gtkmm/notebook.h>
+#include <gtkmm/treeview.h>
+#include <gtkmm2ext/selector.h>
namespace ARDOUR {
class Session;
class PluginManager;
class Plugin;
+ class PluginInfo;
}
-class PluginSelector : public ArdourDialog
+class PluginSelector : public ArdourDialog
{
public:
PluginSelector (ARDOUR::PluginManager *);
- SigC::Signal1<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;
+ Gtk::ScrolledWindow vscroller;
+ Gtk::ScrolledWindow ascroller;
// page 1
- Gtkmmext::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::PluginInfo *> 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::PluginInfo *> plugin;
+ };
+ AddedColumns acols;
+ Glib::RefPtr<Gtk::ListStore> amodel;
+ Glib::RefPtr<Gtk::TreeSelection> aselection;
+ Gtk::TreeView added_list;
#ifdef VST_SUPPORT
// page 2
- Gtkmmext::Selector vst_display;
- static void _vst_refiller (Gtk::CList &, void *);
- void vst_refiller (Gtk::CList &);
-#endif
- Gtkmmext::Selector o_selector;
+ 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::PluginInfo *> 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_COREAUDIO
+ // 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::PluginInfo *> 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_COREAUDIO
ARDOUR::PluginInfo* i_selected_plug;
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 (Gtkmmext::Selector *selector,
- Gtkmmext::SelectionResult *res);
- void i_plugin_chosen (Gtkmmext::Selector *selector,
- Gtkmmext::SelectionResult *res);
- void o_plugin_selected (Gtkmmext::Selector *selector,
- Gtkmmext::SelectionResult *res);
- void o_plugin_chosen (Gtkmmext::Selector *selector,
- Gtkmmext::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 cleanup ();
};
#endif // __ardour_plugin_selector_h__
+