add presets to mixer plugin-sidebar
This commit is contained in:
parent
e762fe36be
commit
5417af4877
@ -194,7 +194,7 @@ Mixer_UI::Mixer_UI ()
|
|||||||
group_display_frame.set_shadow_type (Gtk::SHADOW_IN);
|
group_display_frame.set_shadow_type (Gtk::SHADOW_IN);
|
||||||
group_display_frame.add (group_display_vbox);
|
group_display_frame.add (group_display_vbox);
|
||||||
|
|
||||||
favorite_plugins_model = ListStore::create (favorite_plugins_columns);
|
favorite_plugins_model = PluginTreeStore::create (favorite_plugins_columns);
|
||||||
favorite_plugins_display.set_model (favorite_plugins_model);
|
favorite_plugins_display.set_model (favorite_plugins_model);
|
||||||
favorite_plugins_display.append_column (_("Favorite Plugins"), favorite_plugins_columns.name);
|
favorite_plugins_display.append_column (_("Favorite Plugins"), favorite_plugins_columns.name);
|
||||||
favorite_plugins_display.set_name ("EditGroupList");
|
favorite_plugins_display.set_name ("EditGroupList");
|
||||||
@ -203,7 +203,7 @@ Mixer_UI::Mixer_UI ()
|
|||||||
favorite_plugins_display.set_headers_visible (true);
|
favorite_plugins_display.set_headers_visible (true);
|
||||||
favorite_plugins_display.set_rules_hint (true);
|
favorite_plugins_display.set_rules_hint (true);
|
||||||
favorite_plugins_display.set_can_focus (false);
|
favorite_plugins_display.set_can_focus (false);
|
||||||
favorite_plugins_display.add_object_drag (favorite_plugins_columns.plugin.index(), "PluginInfoPtr");
|
favorite_plugins_display.add_object_drag (favorite_plugins_columns.plugin.index(), "PluginPresetPtr");
|
||||||
favorite_plugins_display.set_drag_column (favorite_plugins_columns.name.index());
|
favorite_plugins_display.set_drag_column (favorite_plugins_columns.name.index());
|
||||||
|
|
||||||
favorite_plugins_scroller.add (favorite_plugins_display);
|
favorite_plugins_scroller.add (favorite_plugins_display);
|
||||||
@ -288,7 +288,6 @@ Mixer_UI::Mixer_UI ()
|
|||||||
#endif
|
#endif
|
||||||
PluginManager::instance ().PluginListChanged.connect (*this, invalidator (*this), boost::bind (&Mixer_UI::refill_favorite_plugins, this), gui_context());
|
PluginManager::instance ().PluginListChanged.connect (*this, invalidator (*this), boost::bind (&Mixer_UI::refill_favorite_plugins, this), gui_context());
|
||||||
PluginManager::instance ().PluginStatusesChanged.connect (*this, invalidator (*this), boost::bind (&Mixer_UI::refill_favorite_plugins, this), gui_context());
|
PluginManager::instance ().PluginStatusesChanged.connect (*this, invalidator (*this), boost::bind (&Mixer_UI::refill_favorite_plugins, this), gui_context());
|
||||||
refill_favorite_plugins();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Mixer_UI::~Mixer_UI ()
|
Mixer_UI::~Mixer_UI ()
|
||||||
@ -825,6 +824,7 @@ Mixer_UI::set_session (Session* sess)
|
|||||||
show_window();
|
show_window();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
refill_favorite_plugins();
|
||||||
start_updating ();
|
start_updating ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2229,7 +2229,8 @@ Mixer_UI::store_current_favorite_order ()
|
|||||||
for(type_children::iterator iter = children.begin(); iter != children.end(); ++iter)
|
for(type_children::iterator iter = children.begin(); iter != children.end(); ++iter)
|
||||||
{
|
{
|
||||||
Gtk::TreeModel::Row row = *iter;
|
Gtk::TreeModel::Row row = *iter;
|
||||||
favorite_order.push_back (row[favorite_plugins_columns.plugin]);
|
ARDOUR::PluginPresetPtr ppp = row[favorite_plugins_columns.plugin];
|
||||||
|
favorite_order.push_back (ppp->_pip);
|
||||||
std::string name = row[favorite_plugins_columns.name];
|
std::string name = row[favorite_plugins_columns.name];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2303,8 +2304,39 @@ Mixer_UI::sync_treeview_from_favorite_order ()
|
|||||||
{
|
{
|
||||||
favorite_plugins_model->clear ();
|
favorite_plugins_model->clear ();
|
||||||
for (PluginInfoList::const_iterator i = favorite_order.begin(); i != favorite_order.end(); ++i) {
|
for (PluginInfoList::const_iterator i = favorite_order.begin(); i != favorite_order.end(); ++i) {
|
||||||
|
PluginInfoPtr pip = (*i);
|
||||||
|
|
||||||
TreeModel::Row newrow = *(favorite_plugins_model->append());
|
TreeModel::Row newrow = *(favorite_plugins_model->append());
|
||||||
newrow[favorite_plugins_columns.name] = (*i)->name;
|
newrow[favorite_plugins_columns.name] = (*i)->name;
|
||||||
newrow[favorite_plugins_columns.plugin] = *i;
|
newrow[favorite_plugins_columns.plugin] = PluginPresetPtr (new PluginPreset(pip));
|
||||||
|
if (!_session) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
PluginPtr plugin = (*i)->load (*_session);
|
||||||
|
|
||||||
|
// TODO subscribe to PresetAdded, PresetRemoved, update the list
|
||||||
|
// currently plugin->PresetAdded is *per* plugin-instance, and thus useless here
|
||||||
|
|
||||||
|
vector<ARDOUR::Plugin::PresetRecord> presets = plugin->get_presets();
|
||||||
|
for (vector<ARDOUR::Plugin::PresetRecord>::const_iterator j = presets.begin(); j != presets.end(); ++j) {
|
||||||
|
Gtk::TreeModel::Row child_row = *(favorite_plugins_model->append (newrow.children()));
|
||||||
|
child_row[favorite_plugins_columns.name] = (*j).label;
|
||||||
|
child_row[favorite_plugins_columns.plugin] = PluginPresetPtr (new PluginPreset(pip, &(*j)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
PluginTreeStore::row_drop_possible_vfunc(const Gtk::TreeModel::Path& dest, const Gtk::SelectionData& data) const
|
||||||
|
{
|
||||||
|
if (data.get_target() != "GTK_TREE_MODEL_ROW") {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
Gtk::TreeModel::Path _dest = dest; // un const
|
||||||
|
const bool is_child = _dest.up (); // explicit bool for clang
|
||||||
|
if (!is_child || _dest.empty ()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
@ -59,6 +59,19 @@ class PluginSelector;
|
|||||||
class MixerGroupTabs;
|
class MixerGroupTabs;
|
||||||
class MonitorSection;
|
class MonitorSection;
|
||||||
|
|
||||||
|
class PluginTreeStore : public Gtk::TreeStore
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static Glib::RefPtr<PluginTreeStore> create(const Gtk::TreeModelColumnRecord& columns) {
|
||||||
|
return Glib::RefPtr<PluginTreeStore> (new PluginTreeStore (columns));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
PluginTreeStore (const Gtk::TreeModelColumnRecord& columns) : Gtk::TreeStore (columns) {}
|
||||||
|
virtual bool row_draggable_vfunc (const Gtk::TreeModel::Path&) const { return true; }
|
||||||
|
virtual bool row_drop_possible_vfunc (const Gtk::TreeModel::Path&, const Gtk::SelectionData&) const;
|
||||||
|
};
|
||||||
|
|
||||||
class Mixer_UI : public Gtk::Window, public PBD::ScopedConnectionList, public ARDOUR::SessionHandlePtr, public MixerActor, public Gtkmm2ext::VisibilityTracker
|
class Mixer_UI : public Gtk::Window, public PBD::ScopedConnectionList, public ARDOUR::SessionHandlePtr, public MixerActor, public Gtkmm2ext::VisibilityTracker
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -259,7 +272,7 @@ class Mixer_UI : public Gtk::Window, public PBD::ScopedConnectionList, public AR
|
|||||||
add (plugin);
|
add (plugin);
|
||||||
}
|
}
|
||||||
Gtk::TreeModelColumn<std::string> name;
|
Gtk::TreeModelColumn<std::string> name;
|
||||||
Gtk::TreeModelColumn<ARDOUR::PluginInfoPtr> plugin;
|
Gtk::TreeModelColumn<ARDOUR::PluginPresetPtr> plugin;
|
||||||
};
|
};
|
||||||
|
|
||||||
ARDOUR::PluginInfoList favorite_order;
|
ARDOUR::PluginInfoList favorite_order;
|
||||||
@ -270,11 +283,11 @@ class Mixer_UI : public Gtk::Window, public PBD::ScopedConnectionList, public AR
|
|||||||
|
|
||||||
Gtk::TreeView track_display;
|
Gtk::TreeView track_display;
|
||||||
Gtk::TreeView group_display;
|
Gtk::TreeView group_display;
|
||||||
Gtkmm2ext::DnDTreeView<ARDOUR::PluginInfoPtr> favorite_plugins_display;
|
Gtkmm2ext::DnDTreeView<ARDOUR::PluginPresetPtr> favorite_plugins_display;
|
||||||
|
|
||||||
Glib::RefPtr<Gtk::ListStore> track_model;
|
Glib::RefPtr<Gtk::ListStore> track_model;
|
||||||
Glib::RefPtr<Gtk::ListStore> group_model;
|
Glib::RefPtr<Gtk::ListStore> group_model;
|
||||||
Glib::RefPtr<Gtk::ListStore> favorite_plugins_model;
|
Glib::RefPtr<PluginTreeStore> favorite_plugins_model;
|
||||||
|
|
||||||
bool group_display_button_press (GdkEventButton*);
|
bool group_display_button_press (GdkEventButton*);
|
||||||
void group_display_selection_changed ();
|
void group_display_selection_changed ();
|
||||||
|
Loading…
Reference in New Issue
Block a user