Allow to un/link foldback send panners

This commit is contained in:
Robin Gareus 2021-08-17 18:58:54 +02:00
parent db8262bd7b
commit 5834728e2f
No known key found for this signature in database
GPG key ID: A090BCE02CF57F04
3 changed files with 28 additions and 5 deletions

View file

@ -95,16 +95,14 @@ FoldbackSend::FoldbackSend (boost::shared_ptr<Send> snd, boost::shared_ptr<ARDOU
if (_foldback_route->input ()->n_ports ().n_audio () == 2) {
_button.set_layout_ellipsize_width (PX_SCALE (_width - 19) * PANGO_SCALE);
boost::shared_ptr<Pannable> pannable = _send_del->panner ()->pannable ();
boost::shared_ptr<AutomationControl> ac;
ac = pannable->pan_azimuth_control;
boost::shared_ptr<Pannable> pannable = _send->panner ()->pannable ();
_pan_control.set_size_request (PX_SCALE (19), PX_SCALE (19));
_pan_control.set_tooltip_prefix (_("Pan: "));
_pan_control.set_name ("trim knob");
_pan_control.set_no_show_all (true);
snd_but_pan->pack_start (_pan_control, false, false);
_pan_control.show ();
_pan_control.set_controllable (ac);
_pan_control.set_controllable (pannable->pan_azimuth_control);
_pan_control.set_name (_send->panner_linked_to_route () ? "trim knob" : "pan knob");
}
boost::shared_ptr<AutomationControl> lc;
lc = _send->gain_control ();
@ -123,7 +121,9 @@ FoldbackSend::FoldbackSend (boost::shared_ptr<Send> snd, boost::shared_ptr<ARDOU
_send_proc->ActiveChanged.connect (_connections, invalidator (*this), boost::bind (&FoldbackSend::send_state_changed, this), gui_context ());
_button.signal_button_press_event ().connect (sigc::mem_fun (*this, &FoldbackSend::button_press));
_button.signal_button_release_event ().connect (sigc::mem_fun (*this, &FoldbackSend::button_release));
_pan_control.signal_button_press_event().connect (sigc::mem_fun (*this, &FoldbackSend::pan_knob_press));
_send_route->PropertyChanged.connect (_connections, invalidator (*this), boost::bind (&FoldbackSend::route_property_changed, this, _1), gui_context ());
_send->panner_shell()->PannableChanged.connect (_connections, invalidator (*this), boost::bind (&FoldbackSend::send_pan_changed, this), gui_context ());
show ();
}
@ -169,6 +169,17 @@ FoldbackSend::led_clicked (GdkEventButton* ev)
}
}
bool
FoldbackSend::pan_knob_press (GdkEventButton* ev)
{
if (Keyboard::is_context_menu_event (ev)) {
_send->set_panner_linked_to_route (!_send->panner_linked_to_route ());
_pan_control.set_name (_send->panner_linked_to_route () ? "trim knob" : "pan knob");
return true;
}
return false;
}
bool
FoldbackSend::button_press (GdkEventButton* ev)
{
@ -207,6 +218,13 @@ FoldbackSend::send_state_changed ()
_button.set_active (_send_proc->enabled ());
}
void
FoldbackSend::send_pan_changed ()
{
boost::shared_ptr<Pannable> pannable = _send->panner ()->pannable ();
_pan_control.set_controllable (pannable->pan_azimuth_control);
}
void
FoldbackSend::level_adjusted ()
{

View file

@ -83,6 +83,7 @@ public:
private:
void led_clicked (GdkEventButton*);
bool pan_knob_press (GdkEventButton*);
bool button_press (GdkEventButton*);
bool button_release (GdkEventButton*);
void set_gain (float new_gain);
@ -91,6 +92,7 @@ private:
void route_property_changed (const PBD::PropertyChange&);
void name_changed ();
void send_state_changed ();
void send_pan_changed ();
void level_adjusted ();
void level_changed ();
void set_tooltip ();

View file

@ -458,6 +458,9 @@
<ColorAlias name="trim knob" alias="widget:bg"/>
<ColorAlias name="trim knob: arc end" alias="widget:blue"/>
<ColorAlias name="trim knob: arc start" alias="widget:blue"/>
<ColorAlias name="pan knob" alias="widget:bg"/>
<ColorAlias name="pan knob: arc end" alias="widget:orange"/>
<ColorAlias name="pan knob: arc start" alias="widget:orange"/>
<ColorAlias name="vca assign button: fill" alias="widget:bg"/>
<ColorAlias name="verbose canvas cursor" alias="theme:contrasting clock"/>
<ColorAlias name="video timeline bar" alias="neutral:background2"/>