fix pango font style (prev commit)
[ardour.git] / gtk2_ardour / stereo_panner.cc
index e3271db2ebadffa1ef434cc70bb8cd70cbc3ebab..718d5f38ee9465d4e3cebcbc66aa60deaa590651 100644 (file)
@@ -95,9 +95,11 @@ 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());
+       _panner_shell->PannableChanged.connect (panshell_connections, invalidator (*this), boost::bind (&StereoPanner::pannable_handler, this), gui_context());
 
        ColorsChanged.connect (sigc::mem_fun (*this, &StereoPanner::color_handler));
 
@@ -206,8 +208,6 @@ StereoPanner::on_expose_event (GdkEventExpose*)
        const double left  = center - pan_spread;
        const double right = center + pan_spread;
 
-       printf("L %.2f  R %.2f  PW:%.2f\n", left, right, pan_spread);
-
        /* center line */
        context->set_line_width (1.0);
        context->move_to ((usable_width + lr_box_size)/2.0, 0);
@@ -663,23 +663,23 @@ StereoPanner::on_key_press_event (GdkEventKey* ev)
 void
 StereoPanner::set_colors ()
 {
-       colors[Normal].fill = ARDOUR_UI::config()->canvasvar_StereoPannerFill.get();
-       colors[Normal].outline = ARDOUR_UI::config()->canvasvar_StereoPannerOutline.get();
-       colors[Normal].text = ARDOUR_UI::config()->canvasvar_StereoPannerText.get();
-       colors[Normal].background = ARDOUR_UI::config()->canvasvar_StereoPannerBackground.get();
-       colors[Normal].rule = ARDOUR_UI::config()->canvasvar_StereoPannerRule.get();
-
-       colors[Mono].fill = ARDOUR_UI::config()->canvasvar_StereoPannerMonoFill.get();
-       colors[Mono].outline = ARDOUR_UI::config()->canvasvar_StereoPannerMonoOutline.get();
-       colors[Mono].text = ARDOUR_UI::config()->canvasvar_StereoPannerMonoText.get();
-       colors[Mono].background = ARDOUR_UI::config()->canvasvar_StereoPannerMonoBackground.get();
-       colors[Mono].rule = ARDOUR_UI::config()->canvasvar_StereoPannerRule.get();
-
-       colors[Inverted].fill = ARDOUR_UI::config()->canvasvar_StereoPannerInvertedFill.get();
-       colors[Inverted].outline = ARDOUR_UI::config()->canvasvar_StereoPannerInvertedOutline.get();
-       colors[Inverted].text = ARDOUR_UI::config()->canvasvar_StereoPannerInvertedText.get();
-       colors[Inverted].background = ARDOUR_UI::config()->canvasvar_StereoPannerInvertedBackground.get();
-       colors[Inverted].rule = ARDOUR_UI::config()->canvasvar_StereoPannerRule.get();
+       colors[Normal].fill = ARDOUR_UI::config()->get_canvasvar_StereoPannerFill();
+       colors[Normal].outline = ARDOUR_UI::config()->get_canvasvar_StereoPannerOutline();
+       colors[Normal].text = ARDOUR_UI::config()->get_canvasvar_StereoPannerText();
+       colors[Normal].background = ARDOUR_UI::config()->get_canvasvar_StereoPannerBackground();
+       colors[Normal].rule = ARDOUR_UI::config()->get_canvasvar_StereoPannerRule();
+
+       colors[Mono].fill = ARDOUR_UI::config()->get_canvasvar_StereoPannerMonoFill();
+       colors[Mono].outline = ARDOUR_UI::config()->get_canvasvar_StereoPannerMonoOutline();
+       colors[Mono].text = ARDOUR_UI::config()->get_canvasvar_StereoPannerMonoText();
+       colors[Mono].background = ARDOUR_UI::config()->get_canvasvar_StereoPannerMonoBackground();
+       colors[Mono].rule = ARDOUR_UI::config()->get_canvasvar_StereoPannerRule();
+
+       colors[Inverted].fill = ARDOUR_UI::config()->get_canvasvar_StereoPannerInvertedFill();
+       colors[Inverted].outline = ARDOUR_UI::config()->get_canvasvar_StereoPannerInvertedOutline();
+       colors[Inverted].text = ARDOUR_UI::config()->get_canvasvar_StereoPannerInvertedText();
+       colors[Inverted].background = ARDOUR_UI::config()->get_canvasvar_StereoPannerInvertedBackground();
+       colors[Inverted].rule = ARDOUR_UI::config()->get_canvasvar_StereoPannerRule();
 }
 
 void
@@ -695,6 +695,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 ()
 {