highlight send-panner

This commit is contained in:
Robin Gareus 2014-06-17 15:51:49 +02:00
parent 472d0ad2c6
commit 1f46e75ac9
9 changed files with 62 additions and 2 deletions

View file

@ -1900,6 +1900,7 @@ MixerStrip::show_send (boost::shared_ptr<Send> 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 ();

View file

@ -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);

View file

@ -75,6 +75,7 @@ Panner2d::Panner2d (boost::shared_ptr<PannerShell> 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);

View file

@ -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<ARDOUR::PannerShell> 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);

View file

@ -34,6 +34,7 @@ using namespace Gtkmm2ext;
PannerInterface::PannerInterface (boost::shared_ptr<Panner> 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)

View file

@ -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<ARDOUR::Panner> _panner;
PannerPersistentTooltip _tooltip;
bool _send_mode;
private:
virtual PannerEditor* editor () = 0;
PannerEditor* _editor;

View file

@ -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<AutomationControl> 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<AutomationControl> wac)
{

View file

@ -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<std::string,std::string>);
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;

View file

@ -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));