summaryrefslogtreecommitdiff
path: root/gtk2_ardour/mixer_ui.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2016-07-06 13:37:30 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2016-07-06 13:39:10 -0400
commitda7d7f950233f109f82f7e7ea5c62f81ef3d7bbb (patch)
tree14fdd5b6d40af1b3807067058aef2b22460dba30 /gtk2_ardour/mixer_ui.cc
parent2047ee527c688ed2c2bedea79a7e01088da58d72 (diff)
many changes associated with rationalizing selection flow
Diffstat (limited to 'gtk2_ardour/mixer_ui.cc')
-rw-r--r--gtk2_ardour/mixer_ui.cc60
1 files changed, 39 insertions, 21 deletions
diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc
index ca0320eb6f..af621daae3 100644
--- a/gtk2_ardour/mixer_ui.cc
+++ b/gtk2_ardour/mixer_ui.cc
@@ -816,11 +816,11 @@ Mixer_UI::follow_editor_selection ()
_selection.clear_routes ();
for (TrackViewList::iterator i = s.begin(); i != s.end(); ++i) {
- RouteTimeAxisView* rtav = dynamic_cast<RouteTimeAxisView*> (*i);
- if (rtav) {
- MixerStrip* ms = strip_by_route (rtav->route());
- if (ms) {
- _selection.add (ms);
+ TimeAxisView* tav = dynamic_cast<TimeAxisView*> (*i);
+ if (tav) {
+ AxisView* axis = axis_by_stripable (tav->stripable());
+ if (axis) {
+ _selection.add (axis);
}
}
}
@@ -831,9 +831,9 @@ Mixer_UI::follow_editor_selection ()
MixerStrip*
-Mixer_UI::strip_by_route (boost::shared_ptr<Route> r)
+Mixer_UI::strip_by_route (boost::shared_ptr<Route> r) const
{
- for (list<MixerStrip *>::iterator i = strips.begin(); i != strips.end(); ++i) {
+ for (list<MixerStrip *>::const_iterator i = strips.begin(); i != strips.end(); ++i) {
if ((*i)->route() == r) {
return (*i);
}
@@ -842,6 +842,18 @@ Mixer_UI::strip_by_route (boost::shared_ptr<Route> r)
return 0;
}
+AxisView*
+Mixer_UI::axis_by_stripable (boost::shared_ptr<Stripable> s) const
+{
+ for (list<MixerStrip *>::const_iterator i = strips.begin(); i != strips.end(); ++i) {
+ if ((*i)->stripable() == s) {
+ return (*i);
+ }
+ }
+
+ return 0;
+}
+
bool
Mixer_UI::strip_button_release_event (GdkEventButton *ev, MixerStrip *strip)
{
@@ -850,7 +862,7 @@ Mixer_UI::strip_button_release_event (GdkEventButton *ev, MixerStrip *strip)
/* primary-click: toggle selection state of strip */
if (Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
_selection.remove (strip);
- } else if (_selection.routes.size() > 1) {
+ } else if (_selection.axes.size() > 1) {
/* de-select others */
_selection.set (strip);
}
@@ -2220,12 +2232,12 @@ Mixer_UI::strip_by_x (int x)
}
void
-Mixer_UI::set_route_targets_for_operation ()
+Mixer_UI::set_axis_targets_for_operation ()
{
- _route_targets.clear ();
+ _axis_targets.clear ();
if (!_selection.empty()) {
- _route_targets = _selection.routes;
+ _axis_targets = _selection.axes;
return;
}
@@ -2251,13 +2263,13 @@ Mixer_UI::toggle_midi_input_active (bool flip_others)
boost::shared_ptr<RouteList> rl (new RouteList);
bool onoff = false;
- set_route_targets_for_operation ();
+ set_axis_targets_for_operation ();
- for (RouteUISelection::iterator r = _route_targets.begin(); r != _route_targets.end(); ++r) {
- boost::shared_ptr<MidiTrack> mt = (*r)->midi_track();
+ for (AxisViewSelection::iterator r = _axis_targets.begin(); r != _axis_targets.end(); ++r) {
+ boost::shared_ptr<MidiTrack> mt = boost::dynamic_pointer_cast<MidiTrack> ((*r)->stripable());
if (mt) {
- rl->push_back ((*r)->route());
+ rl->push_back (mt);
onoff = !mt->input_active();
}
}
@@ -2458,7 +2470,7 @@ Mixer_UI::popup_note_context_menu (GdkEventButton *ev)
Gtk::Menu* m = manage (new Menu);
MenuList& items = m->items ();
- if (_selection.routes.empty()) {
+ if (_selection.axes.empty()) {
items.push_back (MenuElem (_("No Track/Bus is selected.")));
} else {
items.push_back (MenuElem (_("Add at the top"),
@@ -2575,17 +2587,23 @@ Mixer_UI::plugin_row_activated (const TreeModel::Path& path, TreeViewColumn* col
void
Mixer_UI::add_favorite_processor (ARDOUR::PluginPresetPtr ppp, ProcessorPosition pos)
{
- if (!_session || _selection.routes.empty()) {
+ if (!_session || _selection.axes.empty()) {
return;
}
PluginInfoPtr pip = ppp->_pip;
- for (RouteUISelection::iterator i = _selection.routes.begin(); i != _selection.routes.end(); ++i) {
- boost::shared_ptr<ARDOUR::Route> rt = (*i)->route();
- if (!rt) { continue; }
+ for (AxisViewSelection::iterator i = _selection.axes.begin(); i != _selection.axes.end(); ++i) {
+ boost::shared_ptr<ARDOUR::Route> rt = boost::dynamic_pointer_cast<ARDOUR::Route> ((*i)->stripable());
+
+ if (!rt) {
+ continue;
+ }
PluginPtr p = pip->load (*_session);
- if (!p) { continue; }
+
+ if (!p) {
+ continue;
+ }
if (ppp->_preset.valid) {
p->load_preset (ppp->_preset);