diff options
author | Ben Loftis <ben@harrisonconsoles.com> | 2014-08-01 13:48:33 -0500 |
---|---|---|
committer | Ben Loftis <ben@harrisonconsoles.com> | 2014-08-01 13:48:47 -0500 |
commit | 39610179219928e9b5c39e0955c0566c3e655cbf (patch) | |
tree | 26596bf800a188d81d027c3b69f1b1ba04c0395e /gtk2_ardour/route_ui.cc | |
parent | 7cd7927f0a9ab8591ec82cd756187536fe782346 (diff) |
allow track headers to select io from right-click menu
Diffstat (limited to 'gtk2_ardour/route_ui.cc')
-rw-r--r-- | gtk2_ardour/route_ui.cc | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/gtk2_ardour/route_ui.cc b/gtk2_ardour/route_ui.cc index 3998ea3717..f8d2e07f58 100644 --- a/gtk2_ardour/route_ui.cc +++ b/gtk2_ardour/route_ui.cc @@ -51,6 +51,8 @@ #include "ardour/audioengine.h" #include "ardour/filename_extensions.h" #include "ardour/midi_track.h" +#include "ardour/internal_send.h" +#include "ardour/send.h" #include "ardour/route.h" #include "ardour/session.h" #include "ardour/template_utils.h" @@ -91,6 +93,8 @@ RouteUI::~RouteUI() delete record_menu; delete _invert_menu; delete comment_window; + delete input_selector; + delete output_selector; } void @@ -118,6 +122,9 @@ RouteUI::init () multiple_solo_change = false; _i_am_the_modifier = 0; + input_selector = 0; + output_selector = 0; + setup_invert_buttons (); mute_button = manage (new ArdourButton); @@ -215,6 +222,12 @@ RouteUI::set_route (boost::shared_ptr<Route> rp) rp->DropReferences.connect (route_connections, invalidator (*this), boost::bind (&RouteUI::self_delete, this), gui_context()); } + delete input_selector; + input_selector = 0; + + delete output_selector; + output_selector = 0; + mute_button->set_controllable (_route->mute_control()); solo_button->set_controllable (_route->solo_control()); @@ -416,6 +429,52 @@ RouteUI::mute_release (GdkEventButton*) return true; } +void +RouteUI::edit_output_configuration () +{ + if (output_selector == 0) { + + boost::shared_ptr<Send> send; + boost::shared_ptr<IO> output; + + if ((send = boost::dynamic_pointer_cast<Send>(_current_delivery)) != 0) { + if (!boost::dynamic_pointer_cast<InternalSend>(send)) { + output = send->output(); + } else { + output = _route->output (); + } + } else { + output = _route->output (); + } + + output_selector = new IOSelectorWindow (_session, output); + } + + if (output_selector->is_visible()) { + output_selector->get_toplevel()->get_window()->raise(); + } else { + output_selector->present (); + } + + output_selector->set_keep_above (true); +} + +void +RouteUI::edit_input_configuration () +{ + if (input_selector == 0) { + input_selector = new IOSelectorWindow (_session, _route->input()); + } + + if (input_selector->is_visible()) { + input_selector->get_toplevel()->get_window()->raise(); + } else { + input_selector->present (); + } + + input_selector->set_keep_above (true); +} + bool RouteUI::solo_press(GdkEventButton* ev) { |