#include "i18n.h"
using namespace ARDOUR;
+using namespace PBD;
using namespace Gtk;
PluginSelector::PluginSelector (PluginManager *mgr)
lmodel = Gtk::ListStore::create(lcols);
ladspa_display.set_model (lmodel);
- ladspa_display.append_column (_("Available LADSPA plugins"), lcols.name);
+ ladspa_display.append_column (_("Available LADSPA Plugins"), lcols.name);
ladspa_display.append_column (_("Type"), lcols.type);
ladspa_display.append_column (_("# Inputs"),lcols.ins);
ladspa_display.append_column (_("# Outputs"), lcols.outs);
amodel = Gtk::ListStore::create(acols);
added_list.set_model (amodel);
- added_list.append_column (_("To be added"), acols.text);
+ added_list.append_column (_("Plugins to be Connected to Insert"), acols.text);
added_list.set_headers_visible (true);
added_list.set_reorderable (false);
vscroller.add(vst_display);
for (int i = 0; i <=2; i++) {
- column = vst_display.get_column(i);
+ Gtk::TreeView::Column* column = vst_display.get_column(i);
column->set_sort_column(i);
}
#endif
-
- Gtk::Button *btn_add = manage(new Gtk::Button(_("Add")));
+ ascroller.set_border_width(10);
+ ascroller.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
+ ascroller.add(added_list);
+ btn_add = manage(new Gtk::Button(Stock::ADD));
ARDOUR_UI::instance()->tooltips().set_tip(*btn_add, _("Add a plugin to the effect list"));
- Gtk::Button *btn_remove = manage(new Gtk::Button(_("Remove")));
+ btn_add->set_sensitive (false);
+ btn_remove = manage(new Gtk::Button(Stock::REMOVE));
+ btn_remove->set_sensitive (false);
ARDOUR_UI::instance()->tooltips().set_tip(*btn_remove, _("Remove a plugin from the effect list"));
- Gtk::Button *btn_update = manage(new Gtk::Button(_("Update")));
+ Gtk::Button *btn_update = manage(new Gtk::Button(Stock::REFRESH));
ARDOUR_UI::instance()->tooltips().set_tip(*btn_update, _("Update available plugins"));
btn_add->set_name("PluginSelectorButton");
table->attach(*btn_remove, 3, 4, 5, 6, Gtk::FILL, Gtk::FILL, 5, 5);
table->attach(*btn_update, 5, 6, 5, 6, Gtk::FILL, Gtk::FILL, 5, 5);
- table->attach(added_list, 0, 7, 7, 9);
+ table->attach(ascroller, 0, 7, 7, 9);
- add_button (Stock::OK, RESPONSE_ACCEPT);
add_button (Stock::CANCEL, RESPONSE_CANCEL);
-
+ add_button (Stock::CONNECT, RESPONSE_APPLY);
+ set_default_response (RESPONSE_APPLY);
+ set_response_sensitive (RESPONSE_APPLY, false);
get_vbox()->pack_start (*table);
using namespace Gtk::Notebook_Helpers;
#endif
table->set_name("PluginSelectorTable");
- //ladspa_display.set_name("PluginSelectorDisplay");
- ladspa_display.set_name("PluginSelectorList");
+ ladspa_display.set_name("PluginSelectorDisplay");
+ //ladspa_display.set_name("PluginSelectorList");
added_list.set_name("PluginSelectorList");
ladspa_display.signal_button_press_event().connect_notify (mem_fun(*this, &PluginSelector::row_clicked));
#ifdef VST_SUPPORT
if (Config->get_use_vst()) {
vst_display.signal_button_press_event().connect_notify (mem_fun(*this, &PluginSelector::row_clicked));
+ vst_display.get_selection()->signal_changed().connect (mem_fun(*this, &PluginSelector::vst_display_selection_changed));
}
#endif
btn_update->signal_clicked().connect (mem_fun(*this, &PluginSelector::btn_update_clicked));
btn_add->signal_clicked().connect(mem_fun(*this, &PluginSelector::btn_add_clicked));
btn_remove->signal_clicked().connect(mem_fun(*this, &PluginSelector::btn_remove_clicked));
+ ladspa_display.get_selection()->signal_changed().connect (mem_fun(*this, &PluginSelector::ladspa_display_selection_changed));
+ added_list.get_selection()->signal_changed().connect (mem_fun(*this, &PluginSelector::added_list_selection_changed));
input_refiller ();
+#ifdef VST_SUPPORT
+ vst_refiller ();
+#endif
}
void
void
PluginSelector::_input_refiller (void *arg)
{
-
((PluginSelector *) arg)->input_refiller ();
}
newrow[vcols.name] = (*i)->name.c_str();
newrow[vcols.ins] = ibuf;
newrow[vcols.outs] = obuf;
- newrow[vcols.plugin] = i;
+ newrow[vcols.plugin] = *i;
}
vmodel->set_sort_column (0, Gtk::SORT_ASCENDING);
}
return;
}
- Plugin *plugin = manager->load (*session, pi);
+ boost::shared_ptr<Plugin> plugin = manager->load (*session, pi);
if (plugin) {
PluginCreated (plugin);
}
newrow[acols.text] = name;
newrow[acols.plugin] = pi;
+
+ if (!amodel->children().empty()) {
+ set_response_sensitive (RESPONSE_APPLY, true);
+ }
}
void
added_plugins.erase(i);
amodel->erase(iter);
+ if (amodel->children().empty()) {
+ set_response_sensitive (RESPONSE_APPLY, false);
+ }
+
+
}
void
{
manager->refresh ();
input_refiller ();
+#ifdef VST_SUPPORT
+ vst_refiller ();
+#endif
+}
+
+#ifdef VST_SUPPORT
+void
+PluginSelector::vst_display_selection_changed()
+{
+ if (vst_display.get_selection()->count_selected_rows() != 0) {
+ btn_add->set_sensitive (true);
+ } else {
+ btn_add->set_sensitive (false);
+ }
+}
+#endif
+
+void
+PluginSelector::ladspa_display_selection_changed()
+{
+ if (ladspa_display.get_selection()->count_selected_rows() != 0) {
+ btn_add->set_sensitive (true);
+ } else {
+ btn_add->set_sensitive (false);
+ }
+}
+
+void
+PluginSelector::added_list_selection_changed()
+{
+ if (added_list.get_selection()->count_selected_rows() != 0) {
+ btn_remove->set_sensitive (true);
+ } else {
+ btn_remove->set_sensitive (false);
+ }
}
int
r = (ResponseType) Dialog::run ();
switch (r) {
- case RESPONSE_ACCEPT:
+ case RESPONSE_APPLY:
for (i = added_plugins.begin(); i != added_plugins.end(); ++i){
use_plugin (*i);
}
{
hide();
added_plugins.clear();
+ amodel->clear();
}