update panGUI connections (panner-shell vs pannable vs panner)
This commit is contained in:
parent
c46e74012e
commit
6bebe1d886
|
@ -89,9 +89,10 @@ MonoPanner::MonoPanner (boost::shared_ptr<ARDOUR::PannerShell> p)
|
|||
have_font = true;
|
||||
}
|
||||
|
||||
position_control->Changed.connect (connections, invalidator(*this), boost::bind (&MonoPanner::value_change, this), gui_context());
|
||||
position_control->Changed.connect (panvalue_connections, invalidator(*this), boost::bind (&MonoPanner::value_change, this), gui_context());
|
||||
|
||||
_panner_shell->Changed.connect (connections, invalidator (*this), boost::bind (&MonoPanner::bypass_handler, this), gui_context());
|
||||
_panner_shell->Changed.connect (panshell_connections, invalidator (*this), boost::bind (&MonoPanner::bypass_handler, this), gui_context());
|
||||
_panner_shell->PannableChanged.connect (panshell_connections, invalidator (*this), boost::bind (&MonoPanner::pannable_handler, this), gui_context());
|
||||
ColorsChanged.connect (sigc::mem_fun (*this, &MonoPanner::color_handler));
|
||||
|
||||
set_tooltip ();
|
||||
|
@ -505,7 +506,17 @@ MonoPanner::bypass_handler ()
|
|||
queue_draw ();
|
||||
}
|
||||
|
||||
PannerEditor*
|
||||
void
|
||||
MonoPanner::pannable_handler ()
|
||||
{
|
||||
panvalue_connections.drop_connections();
|
||||
position_control = _panner->pannable()->pan_azimuth_control;
|
||||
position_binder.set_controllable(position_control);
|
||||
position_control->Changed.connect (panvalue_connections, invalidator(*this), boost::bind (&MonoPanner::value_change, this), gui_context());
|
||||
queue_draw ();
|
||||
}
|
||||
|
||||
PannerEditor*
|
||||
MonoPanner::editor ()
|
||||
{
|
||||
return new MonoPannerEditor (this);
|
||||
|
|
|
@ -60,7 +60,8 @@ class MonoPanner : public PannerInterface
|
|||
boost::shared_ptr<ARDOUR::PannerShell> _panner_shell;
|
||||
|
||||
boost::shared_ptr<PBD::Controllable> position_control;
|
||||
PBD::ScopedConnectionList connections;
|
||||
PBD::ScopedConnectionList panvalue_connections;
|
||||
PBD::ScopedConnectionList panshell_connections;
|
||||
int drag_start_x;
|
||||
int last_drag_x;
|
||||
double accumulated_delta;
|
||||
|
@ -89,6 +90,7 @@ class MonoPanner : public PannerInterface
|
|||
static bool have_colors;
|
||||
void color_handler ();
|
||||
void bypass_handler ();
|
||||
void pannable_handler ();
|
||||
};
|
||||
|
||||
#endif /* __gtk_ardour_mono_panner_h__ */
|
||||
|
|
|
@ -76,9 +76,9 @@ Panner2d::Panner2d (boost::shared_ptr<PannerShell> p, int32_t h)
|
|||
, last_width (0)
|
||||
, have_elevation (false)
|
||||
{
|
||||
panner_shell->Changed.connect (connections, invalidator (*this), boost::bind (&Panner2d::handle_state_change, this), gui_context());
|
||||
panner_shell->Changed.connect (panshell_connections, invalidator (*this), boost::bind (&Panner2d::handle_state_change, this), gui_context());
|
||||
|
||||
panner_shell->panner()->SignalPositionChanged.connect (panconnect, invalidator(*this), boost::bind (&Panner2d::handle_position_change, this), gui_context());
|
||||
panner_shell->panner()->SignalPositionChanged.connect (panner_connections, invalidator(*this), boost::bind (&Panner2d::handle_position_change, this), gui_context());
|
||||
|
||||
drag_target = 0;
|
||||
set_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::POINTER_MOTION_MASK);
|
||||
|
@ -200,12 +200,12 @@ Panner2d::add_speaker (const AngularVector& a)
|
|||
void
|
||||
Panner2d::handle_state_change ()
|
||||
{
|
||||
panconnect.drop_connections();
|
||||
panner_connections.drop_connections();
|
||||
if (!panner_shell->panner()) {
|
||||
return;
|
||||
}
|
||||
|
||||
panner_shell->panner()->SignalPositionChanged.connect (panconnect, invalidator(*this), boost::bind (&Panner2d::handle_position_change, this), gui_context());
|
||||
panner_shell->panner()->SignalPositionChanged.connect (panner_connections, invalidator(*this), boost::bind (&Panner2d::handle_position_change, this), gui_context());
|
||||
|
||||
set<Evoral::Parameter> params = panner_shell->panner()->what_can_be_automated();
|
||||
set<Evoral::Parameter>::iterator p = params.find(PanElevationAutomation);
|
||||
|
@ -833,8 +833,11 @@ Panner2dWindow::Panner2dWindow (boost::shared_ptr<PannerShell> p, int32_t h, uin
|
|||
bypass_button.signal_toggled().connect (sigc::mem_fun (*this, &Panner2dWindow::bypass_toggled));
|
||||
width_spinner.signal_changed().connect (sigc::mem_fun (*this, &Panner2dWindow::width_changed));
|
||||
|
||||
p->pannable()->pan_width_control->Changed.connect (connections, invalidator(*this), boost::bind (&Panner2dWindow::set_width, this), gui_context());
|
||||
p->Changed.connect (connections, invalidator (*this), boost::bind (&Panner2dWindow::set_bypassed, this), gui_context());
|
||||
p->Changed.connect (panshell_connections, invalidator (*this), boost::bind (&Panner2dWindow::set_bypassed, this), gui_context());
|
||||
/* needed for the width-spinbox in the main window */
|
||||
p->PannableChanged.connect (panshell_connections, invalidator (*this), boost::bind (&Panner2dWindow::pannable_handler, this), gui_context());
|
||||
p->pannable()->pan_width_control->Changed.connect (panvalue_connections, invalidator(*this), boost::bind (&Panner2dWindow::set_width, this), gui_context());
|
||||
|
||||
|
||||
button_box.set_spacing (6);
|
||||
button_box.pack_start (bypass_button, false, false);
|
||||
|
@ -896,6 +899,14 @@ Panner2dWindow::width_changed ()
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
Panner2dWindow::pannable_handler ()
|
||||
{
|
||||
panvalue_connections.drop_connections();
|
||||
widget.get_panner_shell()->pannable()->pan_width_control->Changed.connect (panvalue_connections, invalidator(*this), boost::bind (&Panner2dWindow::set_width, this), gui_context());
|
||||
set_width();
|
||||
}
|
||||
|
||||
void
|
||||
Panner2dWindow::set_bypassed ()
|
||||
{
|
||||
|
|
|
@ -127,8 +127,8 @@ class Panner2d : public Gtk::DrawingArea
|
|||
void handle_position_change ();
|
||||
void label_signals ();
|
||||
|
||||
PBD::ScopedConnectionList connections;
|
||||
PBD::ScopedConnectionList panconnect;
|
||||
PBD::ScopedConnectionList panshell_connections;
|
||||
PBD::ScopedConnectionList panner_connections;
|
||||
|
||||
/* cartesian coordinates in GTK units ; adjust to same but on a circle of radius 1.0
|
||||
and centered in the middle of our area
|
||||
|
@ -156,10 +156,12 @@ class Panner2dWindow : public ArdourWindow
|
|||
Gtk::Adjustment width_adjustment;
|
||||
Gtk::SpinButton width_spinner;
|
||||
|
||||
PBD::ScopedConnectionList connections;
|
||||
PBD::ScopedConnectionList panshell_connections;
|
||||
PBD::ScopedConnectionList panvalue_connections;
|
||||
void set_bypassed();
|
||||
void set_width();
|
||||
|
||||
void pannable_handler ();
|
||||
void bypass_toggled ();
|
||||
void width_changed ();
|
||||
bool on_key_press_event (GdkEventKey*);
|
||||
|
|
|
@ -95,9 +95,10 @@ StereoPanner::StereoPanner (boost::shared_ptr<PannerShell> p)
|
|||
have_font = true;
|
||||
}
|
||||
|
||||
position_control->Changed.connect (connections, invalidator(*this), boost::bind (&StereoPanner::value_change, this), gui_context());
|
||||
width_control->Changed.connect (connections, invalidator(*this), boost::bind (&StereoPanner::value_change, this), gui_context());
|
||||
_panner_shell->Changed.connect (connections, invalidator (*this), boost::bind (&StereoPanner::bypass_handler, this), gui_context());
|
||||
position_control->Changed.connect (panvalue_connections, invalidator(*this), boost::bind (&StereoPanner::value_change, this), gui_context());
|
||||
width_control->Changed.connect (panvalue_connections, invalidator(*this), boost::bind (&StereoPanner::value_change, this), gui_context());
|
||||
|
||||
_panner_shell->Changed.connect (panshell_connections, invalidator (*this), boost::bind (&StereoPanner::bypass_handler, this), gui_context());
|
||||
|
||||
ColorsChanged.connect (sigc::mem_fun (*this, &StereoPanner::color_handler));
|
||||
|
||||
|
@ -693,6 +694,20 @@ StereoPanner::bypass_handler ()
|
|||
queue_draw ();
|
||||
}
|
||||
|
||||
void
|
||||
StereoPanner::pannable_handler ()
|
||||
{
|
||||
panvalue_connections.drop_connections();
|
||||
position_control = _panner->pannable()->pan_azimuth_control;
|
||||
width_control = _panner->pannable()->pan_width_control;
|
||||
position_binder.set_controllable(position_control);
|
||||
width_binder.set_controllable(width_control);
|
||||
|
||||
position_control->Changed.connect (panvalue_connections, invalidator(*this), boost::bind (&StereoPanner::value_change, this), gui_context());
|
||||
width_control->Changed.connect (panvalue_connections, invalidator(*this), boost::bind (&StereoPanner::value_change, this), gui_context());
|
||||
queue_draw ();
|
||||
}
|
||||
|
||||
PannerEditor*
|
||||
StereoPanner::editor ()
|
||||
{
|
||||
|
|
|
@ -64,7 +64,8 @@ class StereoPanner : public PannerInterface
|
|||
|
||||
boost::shared_ptr<PBD::Controllable> position_control;
|
||||
boost::shared_ptr<PBD::Controllable> width_control;
|
||||
PBD::ScopedConnectionList connections;
|
||||
PBD::ScopedConnectionList panvalue_connections;
|
||||
PBD::ScopedConnectionList panshell_connections;
|
||||
bool dragging;
|
||||
bool dragging_position;
|
||||
bool dragging_left;
|
||||
|
@ -103,6 +104,7 @@ class StereoPanner : public PannerInterface
|
|||
static bool have_colors;
|
||||
void color_handler ();
|
||||
void bypass_handler ();
|
||||
void pannable_handler ();
|
||||
};
|
||||
|
||||
#endif /* __gtk_ardour_stereo_panner_h__ */
|
||||
|
|
Loading…
Reference in New Issue
Block a user