diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2010-11-30 20:22:43 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2010-11-30 20:22:43 +0000 |
commit | 1ff30dcecb7df24125bb53fbcf0129fe5f1803a0 (patch) | |
tree | aef288bb9f81efbacf030ec51a04e0d2f6d02c33 /gtk2_ardour/panner_ui.cc | |
parent | 816be28db02aebef75159858a0df3925867f0e85 (diff) |
first basic pass at a single widget stereo panner
git-svn-id: svn://localhost/ardour2/branches/3.0@8135 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/panner_ui.cc')
-rw-r--r-- | gtk2_ardour/panner_ui.cc | 68 |
1 files changed, 8 insertions, 60 deletions
diff --git a/gtk2_ardour/panner_ui.cc b/gtk2_ardour/panner_ui.cc index b038ac6f06..42d6684c94 100644 --- a/gtk2_ardour/panner_ui.cc +++ b/gtk2_ardour/panner_ui.cc @@ -31,6 +31,7 @@ #include "utils.h" #include "panner.h" #include "gui_thread.h" +#include "stereo_panner.h" #include "ardour/delivery.h" #include "ardour/session.h" @@ -46,7 +47,6 @@ using namespace Gtkmm2ext; using namespace Gtk; const int PannerUI::pan_bar_height = 20; -Glib::RefPtr<Gdk::Pixbuf> PannerUI::_poswidth_slider; PannerUI::PannerUI (Session* s) : _current_nouts (-1) @@ -56,8 +56,6 @@ PannerUI::PannerUI (Session* s) , panning_viewport(hAdjustment, vAdjustment) , panning_up_arrow (Gtk::ARROW_UP, Gtk::SHADOW_OUT) , panning_down_arrow (Gtk::ARROW_DOWN, Gtk::SHADOW_OUT) - , _position_adjustment (0.5, 0.0, 1.0, 0.01, 0.1) - , _width_adjustment (0.0, -1.0, 1.0, 0.01, 0.1) , panning_link_button (_("link")) , pan_automation_style_button ("") , pan_automation_state_button ("") @@ -70,8 +68,7 @@ PannerUI::PannerUI (Session* s) pan_astate_menu = 0; pan_astyle_menu = 0; in_pan_update = false; - _position_fader = 0; - _width_fader = 0; + _stereo_panner = 0; _ignore_width_change = false; _ignore_position_change = false; @@ -309,8 +306,7 @@ PannerUI::~PannerUI () delete pan_menu; delete pan_astyle_menu; delete pan_astate_menu; - delete _position_fader; - delete _width_fader; + delete _stereo_panner; } @@ -488,33 +484,16 @@ PannerUI::setup_pan () if (npans == 2) { /* add position and width controls */ - if (_position_fader == 0) { - _position_fader = new BarController (_position_adjustment, _panner->direction_control()); - _position_fader->set_size_request (-1, pan_bar_height/2); - _position_fader->set_name ("PanSlider"); - _position_fader->set_style (BarController::Blob); - ARDOUR_UI::instance()->set_tip (_position_fader, _("Pan Position")); - _position_adjustment.signal_value_changed().connect (sigc::mem_fun (*this, &PannerUI::position_adjusted)); - _panner->direction_control()->Changed.connect (connections, invalidator (*this), boost::bind (&PannerUI::show_position, this), gui_context()); - show_position(); - - _width_fader = new BarController (_width_adjustment, _panner->width_control()); - _width_fader->set_size_request (-1, pan_bar_height/2); - _width_fader->set_name ("PanSlider"); - _width_fader->set_style (BarController::CenterOut); - ARDOUR_UI::instance()->set_tip (_width_fader, _("Stereo Image Width")); - _width_adjustment.signal_value_changed().connect (sigc::mem_fun (*this, &PannerUI::width_adjusted)); - _panner->width_control()->Changed.connect (connections, invalidator (*this), boost::bind (&PannerUI::show_width, this), gui_context()); - show_width(); - - poswidth_box.pack_start (*_position_fader, true, true); - poswidth_box.pack_start (*_width_fader, true, true); + if (_stereo_panner == 0) { + _stereo_panner = new StereoPanner (_panner->direction_control(), + _panner->width_control()); + poswidth_box.pack_start (*_stereo_panner, true, true); } pan_vbox.pack_start (poswidth_box, false, false); poswidth_box.show_all (); cerr << "Packed poswidth and mde it visible\n"; } else { - if (_position_fader) { + if (_stereo_panner) { pan_vbox.remove (poswidth_box); cerr << "Hid poswidth\n"; } @@ -975,52 +954,21 @@ PannerUI::bar_spinner_activate (bool a) } void -PannerUI::setup_slider_pix () -{ - _poswidth_slider = ::get_icon ("fader_belt_h_thin"); - assert (_poswidth_slider); -} - -void PannerUI::show_width () { - float const value = _panner->width_control()->get_value (); - - if (_width_adjustment.get_value() != value) { - _ignore_width_change = true; - _width_adjustment.set_value (value); - _ignore_width_change = false; - } } void PannerUI::width_adjusted () { - if (_ignore_width_change) { - return; - } - - _panner->width_control()->set_value (_width_adjustment.get_value()); } void PannerUI::show_position () { - float const value = _panner->direction_control()->get_value (); - - if (_position_adjustment.get_value() != value) { - _ignore_position_change = true; - _position_adjustment.set_value (value); - _ignore_position_change = false; - } } void PannerUI::position_adjusted () { - if (_ignore_position_change) { - return; - } - - _panner->direction_control()->set_value (_position_adjustment.get_value()); } |