, _plugin_selector (0)
, _strip_width (UIConfiguration::instance().get_default_narrow_ms() ? Narrow : Wide)
, ignore_reorder (false)
- , _in_group_rebuild_or_clear (false)
- , _route_deletion_in_progress (false)
+ , _in_group_rebuild_or_clear (false)
+ , _route_deletion_in_progress (false)
, _maximised (false)
, _show_mixer_list (true)
, myactions (X_("mixer"))
for (ri = rows.begin(); ri != rows.end(); ++ri) {
if ((*ri)[stripable_columns.strip] == vms) {
- PBD::Unwinder<bool> uw (_route_deletion_in_progress, true);
+ PBD::Unwinder<bool> uw (_route_deletion_in_progress, true);
track_model->erase (ri);
break;
}
for (ri = rows.begin(); ri != rows.end(); ++ri) {
if ((*ri)[stripable_columns.strip] == strip) {
- PBD::Unwinder<bool> uw (_route_deletion_in_progress, true);
+ PBD::Unwinder<bool> uw (_route_deletion_in_progress, true);
track_model->erase (ri);
break;
}
gint
Mixer_UI::start_updating ()
{
- fast_screen_update_connection = Timers::super_rapid_connect (sigc::mem_fun(*this, &Mixer_UI::fast_update_strips));
- return 0;
+ fast_screen_update_connection = Timers::super_rapid_connect (sigc::mem_fun(*this, &Mixer_UI::fast_update_strips));
+ return 0;
}
gint
Mixer_UI::stop_updating ()
{
- fast_screen_update_connection.disconnect();
- return 0;
+ fast_screen_update_connection.disconnect();
+ return 0;
}
void
DEBUG_TRACE (DEBUG::OrderKeys, "mixer UI treeview row deleted\n");
sync_presentation_info_from_treeview ();
- if (_route_deletion_in_progress) {
- redisplay_track_list ();
- }
+ if (_route_deletion_in_progress) {
+ redisplay_track_list ();
+ }
}
void
control_action (&Stripable::rec_enable_control);
}
-void
-Mixer_UI::step_gain_up_action ()
+AutomationControlSet
+Mixer_UI::selected_gaincontrols ()
{
set_axis_targets_for_operation ();
-
+ AutomationControlSet rv;
BOOST_FOREACH(AxisView* r, _axis_targets) {
MixerStrip* ms = dynamic_cast<MixerStrip*> (r);
if (ms) {
- ms->step_gain_up ();
+ boost::shared_ptr<GainControl> ac (ms->route()->gain_control());
+ ControlList cl (ac->grouped_controls());
+ for (ControlList::const_iterator c = cl.begin(); c != cl.end (); ++c) {
+ rv.insert (*c);
+ }
+ rv.insert (ac);
}
}
+ return rv;
}
void
-Mixer_UI::step_gain_down_action ()
+Mixer_UI::step_gain_up_action ()
{
- set_axis_targets_for_operation ();
+ AutomationControlSet acs = selected_gaincontrols ();
+ for (AutomationControlSet::const_iterator i = acs.begin(); i != acs.end (); ++i) {
+ boost::shared_ptr<GainControl> ac = boost::dynamic_pointer_cast<GainControl> (*i);
+ assert (ac);
+ ac->set_value (dB_to_coefficient (accurate_coefficient_to_dB (ac->get_value()) + 0.1), Controllable::NoGroup);
+ }
+}
- BOOST_FOREACH(AxisView* r, _axis_targets) {
- MixerStrip* ms = dynamic_cast<MixerStrip*> (r);
- if (ms) {
- ms->step_gain_down ();
- }
+void
+Mixer_UI::step_gain_down_action ()
+{
+ AutomationControlSet acs = selected_gaincontrols ();
+ for (AutomationControlSet::const_iterator i = acs.begin(); i != acs.end (); ++i) {
+ boost::shared_ptr<GainControl> ac = boost::dynamic_pointer_cast<GainControl> (*i);
+ assert (ac);
+ ac->set_value (dB_to_coefficient (accurate_coefficient_to_dB (ac->get_value()) - 0.1), Controllable::NoGroup);
}
}