From 1f46e75ac96cafffda4f7e6aed0c007c5e8975b1 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 17 Jun 2014 15:51:49 +0200 Subject: highlight send-panner --- gtk2_ardour/mixer_strip.cc | 2 ++ gtk2_ardour/mono_panner.cc | 4 ++++ gtk2_ardour/panner2d.cc | 20 ++++++++++++++++++-- gtk2_ardour/panner2d.h | 2 ++ gtk2_ardour/panner_interface.cc | 9 +++++++++ gtk2_ardour/panner_interface.h | 3 +++ gtk2_ardour/panner_ui.cc | 17 +++++++++++++++++ gtk2_ardour/panner_ui.h | 2 ++ gtk2_ardour/stereo_panner.cc | 5 +++++ 9 files changed, 62 insertions(+), 2 deletions(-) diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index 8b25e6f41e..bfaf12439c 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -1900,6 +1900,7 @@ MixerStrip::show_send (boost::shared_ptr send) panner_ui().set_panner (_current_delivery->panner_shell(), _current_delivery->panner()); panner_ui().set_available_panners(PannerManager::instance().PannerManager::get_available_panners(in, out)); panner_ui().setup_pan (); + panner_ui().set_send_drawing_mode (true); panner_ui().show_all (); input_button.set_sensitive (false); @@ -1935,6 +1936,7 @@ MixerStrip::revert_to_default_display () panner_ui().set_panner (_route->main_outs()->panner_shell(), _route->main_outs()->panner()); update_panner_choices(); panner_ui().setup_pan (); + panner_ui().set_send_drawing_mode (false); if (has_audio_outputs ()) { panners.show_all (); diff --git a/gtk2_ardour/mono_panner.cc b/gtk2_ardour/mono_panner.cc index e136c05153..7f1c98a0cb 100644 --- a/gtk2_ardour/mono_panner.cc +++ b/gtk2_ardour/mono_panner.cc @@ -158,6 +158,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); diff --git a/gtk2_ardour/panner2d.cc b/gtk2_ardour/panner2d.cc index a3befff5cf..35f573bcf1 100644 --- a/gtk2_ardour/panner2d.cc +++ b/gtk2_ardour/panner2d.cc @@ -75,6 +75,7 @@ Panner2d::Panner2d (boost::shared_ptr p, int32_t h) , height (h) , last_width (0) , have_elevation (false) + , _send_mode (false) { panner_shell->Changed.connect (panshell_connections, invalidator (*this), boost::bind (&Panner2d::handle_state_change, this), gui_context()); @@ -378,6 +379,15 @@ Panner2d::find_closest_object (gdouble x, gdouble y, bool& is_signal) return closest; } +void +Panner2d::set_send_drawing_mode (bool onoff) +{ + if (_send_mode != onoff) { + _send_mode = onoff; + queue_draw (); + } +} + bool Panner2d::on_motion_notify_event (GdkEventMotion *ev) { @@ -412,10 +422,16 @@ Panner2d::on_expose_event (GdkEventExpose *event) /* background */ cairo_rectangle (cr, event->area.x, event->area.y, event->area.width, event->area.height); + + float r, g, b; + r = g = b = 0.1; + if (_send_mode) { + rgba_p_from_style("SendStripBase", &r, &g, &b, "fg"); + } if (!panner_shell->bypassed()) { - cairo_set_source_rgba (cr, 0.1, 0.1, 0.1, 1.0); + cairo_set_source_rgba (cr, r, g, b, 1.0); } else { - cairo_set_source_rgba (cr, 0.1, 0.1, 0.1, 0.2); + cairo_set_source_rgba (cr, r, g, b , 0.2); } cairo_fill_preserve (cr); cairo_clip (cr); diff --git a/gtk2_ardour/panner2d.h b/gtk2_ardour/panner2d.h index fdd4748f8f..0897eddab0 100644 --- a/gtk2_ardour/panner2d.h +++ b/gtk2_ardour/panner2d.h @@ -63,6 +63,7 @@ class Panner2d : public Gtk::DrawingArea int add_signal (const char* text, const PBD::AngularVector&); void move_signal (int which, const PBD::AngularVector&); void reset (uint32_t n_inputs); + void set_send_drawing_mode (bool); boost::shared_ptr get_panner_shell() const { return panner_shell; } @@ -117,6 +118,7 @@ class Panner2d : public Gtk::DrawingArea double last_width; bool did_move; bool have_elevation; + bool _send_mode; Target *find_closest_object (gdouble x, gdouble y, bool& is_signal); diff --git a/gtk2_ardour/panner_interface.cc b/gtk2_ardour/panner_interface.cc index 09cf29dfd6..0fcba4cd1c 100644 --- a/gtk2_ardour/panner_interface.cc +++ b/gtk2_ardour/panner_interface.cc @@ -34,6 +34,7 @@ using namespace Gtkmm2ext; PannerInterface::PannerInterface (boost::shared_ptr p) : _panner (p) , _tooltip (this) + , _send_mode (false) , _editor (0) { set_flags (Gtk::CAN_FOCUS); @@ -109,6 +110,14 @@ PannerInterface::edit () _editor->show (); } +void +PannerInterface::set_send_drawing_mode(bool onoff) { + if (_send_mode != onoff) { + _send_mode = onoff; + queue_draw (); + } +} + PannerPersistentTooltip::PannerPersistentTooltip (Gtk::Widget* w) : PersistentTooltip (w) , _dragging (false) diff --git a/gtk2_ardour/panner_interface.h b/gtk2_ardour/panner_interface.h index 02f4e210bd..a18c083528 100644 --- a/gtk2_ardour/panner_interface.h +++ b/gtk2_ardour/panner_interface.h @@ -59,6 +59,7 @@ public: } void edit (); + void set_send_drawing_mode (bool); protected: virtual void set_tooltip () = 0; @@ -74,6 +75,8 @@ protected: boost::shared_ptr _panner; PannerPersistentTooltip _tooltip; + bool _send_mode; + private: virtual PannerEditor* editor () = 0; PannerEditor* _editor; diff --git a/gtk2_ardour/panner_ui.cc b/gtk2_ardour/panner_ui.cc index d20d719b14..d15f8efc3a 100644 --- a/gtk2_ardour/panner_ui.cc +++ b/gtk2_ardour/panner_ui.cc @@ -50,6 +50,7 @@ PannerUI::PannerUI (Session* s) : _current_nouts (-1) , _current_nins (-1) , _current_uri ("") + , _send_mode (false) , pan_automation_style_button ("") , pan_automation_state_button ("") , _panner_list() @@ -251,6 +252,7 @@ PannerUI::setup_pan () _stereo_panner = new StereoPanner (_panshell); _stereo_panner->set_size_request (-1, pan_bar_height); + _stereo_panner->set_send_drawing_mode (_send_mode); pan_vbox.pack_start (*_stereo_panner, false, false); boost::shared_ptr ac; @@ -286,6 +288,7 @@ PannerUI::setup_pan () _mono_panner->signal_button_release_event().connect (sigc::mem_fun(*this, &PannerUI::pan_button_event)); _mono_panner->set_size_request (-1, pan_bar_height); + _mono_panner->set_send_drawing_mode (_send_mode); update_pan_sensitive (); pan_vbox.pack_start (*_mono_panner, false, false); @@ -305,6 +308,7 @@ PannerUI::setup_pan () big_window->reset (nins); } twod_panner->set_size_request (-1, 61); + twod_panner->set_send_drawing_mode (_send_mode); /* and finally, add it to the panner frame */ @@ -323,6 +327,19 @@ PannerUI::setup_pan () pan_vbox.show_all (); } +void +PannerUI::set_send_drawing_mode (bool onoff) +{ + if (_stereo_panner) { + _stereo_panner->set_send_drawing_mode (onoff); + } else if (_mono_panner) { + _mono_panner->set_send_drawing_mode (onoff); + } else if (twod_panner) { + twod_panner->set_send_drawing_mode (onoff); + } + _send_mode = onoff; +} + void PannerUI::start_touch (boost::weak_ptr wac) { diff --git a/gtk2_ardour/panner_ui.h b/gtk2_ardour/panner_ui.h index 8bf448c7ea..600a9d145c 100644 --- a/gtk2_ardour/panner_ui.h +++ b/gtk2_ardour/panner_ui.h @@ -74,6 +74,7 @@ class PannerUI : public Gtk::HBox, public ARDOUR::SessionHandlePtr void set_width (Width); void setup_pan (); void set_available_panners(std::map); + void set_send_drawing_mode (bool); void effective_pan_display (); @@ -97,6 +98,7 @@ class PannerUI : public Gtk::HBox, public ARDOUR::SessionHandlePtr int _current_nouts; int _current_nins; std::string _current_uri; + bool _send_mode; static const int pan_bar_height; diff --git a/gtk2_ardour/stereo_panner.cc b/gtk2_ardour/stereo_panner.cc index 718d5f38ee..00000e7071 100644 --- a/gtk2_ardour/stereo_panner.cc +++ b/gtk2_ardour/stereo_panner.cc @@ -178,6 +178,11 @@ StereoPanner::on_expose_event (GdkEventExpose*) r = 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)); -- cgit v1.2.3