synchronize preferences and monitor-section
[ardour.git] / gtk2_ardour / mono_panner.cc
index 1a2b685aebd1f57362d974072cfb3d73722fc196..1a137538d6522a92daa9776d692bb18fd13dc8a5 100644 (file)
@@ -50,6 +50,7 @@
 using namespace std;
 using namespace Gtk;
 using namespace Gtkmm2ext;
+using namespace ARDOUR_UI_UTILS;
 
 static const int pos_box_size = 9;
 static const int lr_box_size = 15;
@@ -80,18 +81,17 @@ MonoPanner::MonoPanner (boost::shared_ptr<ARDOUR::PannerShell> p)
        if (!have_font) {
                Pango::FontDescription font;
                Pango::AttrFontDesc* font_attr;
-               font = Pango::FontDescription ("ArdourMono");
-               font.set_weight (Pango::WEIGHT_BOLD);
-               font.set_size(9 * PANGO_SCALE);
+               font = Pango::FontDescription (ARDOUR_UI::config()->get_SmallBoldMonospaceFont());
                font_attr = new Pango::AttrFontDesc (Pango::Attribute::create_attr_font_desc (font));
                panner_font_attributes.change(*font_attr);
                delete font_attr;
                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 ();
@@ -157,6 +157,10 @@ MonoPanner::on_expose_event (GdkEventExpose*)
                t  = 0x606060ff;
        }
 
+       if (_send_mode) {
+               b = rgba_from_style("SendStripBase",
+                               UINT_RGBA_R(b), UINT_RGBA_G(b), UINT_RGBA_B(b), 255, "fg");
+       }
        /* background */
        context->set_source_rgba (UINT_RGBA_R_FLT(b), UINT_RGBA_G_FLT(b), UINT_RGBA_B_FLT(b), UINT_RGBA_A_FLT(b));
        context->rectangle (0, 0, width, height);
@@ -484,12 +488,12 @@ MonoPanner::on_key_press_event (GdkEventKey* ev)
 void
 MonoPanner::set_colors ()
 {
-        colors.fill = ARDOUR_UI::config()->get_canvasvar_MonoPannerFill();
-        colors.outline = ARDOUR_UI::config()->get_canvasvar_MonoPannerOutline();
-        colors.text = ARDOUR_UI::config()->get_canvasvar_MonoPannerText();
-        colors.background = ARDOUR_UI::config()->get_canvasvar_MonoPannerBackground();
-        colors.pos_outline = ARDOUR_UI::config()->get_canvasvar_MonoPannerPositionOutline();
-        colors.pos_fill = ARDOUR_UI::config()->get_canvasvar_MonoPannerPositionFill();
+        colors.fill = ARDOUR_UI::config()->get_MonoPannerFill();
+        colors.outline = ARDOUR_UI::config()->get_MonoPannerOutline();
+        colors.text = ARDOUR_UI::config()->get_MonoPannerText();
+        colors.background = ARDOUR_UI::config()->get_MonoPannerBackground();
+        colors.pos_outline = ARDOUR_UI::config()->get_MonoPannerPositionOutline();
+        colors.pos_fill = ARDOUR_UI::config()->get_MonoPannerPositionFill();
 }
 
 void
@@ -505,6 +509,16 @@ MonoPanner::bypass_handler ()
        queue_draw ();
 }
 
+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 ()
 {