summaryrefslogtreecommitdiff
path: root/gtk2_ardour/route_ui.cc
diff options
context:
space:
mode:
authorBen Loftis <ben@harrisonconsoles.com>2014-08-01 13:48:33 -0500
committerBen Loftis <ben@harrisonconsoles.com>2014-08-01 13:48:47 -0500
commit39610179219928e9b5c39e0955c0566c3e655cbf (patch)
tree26596bf800a188d81d027c3b69f1b1ba04c0395e /gtk2_ardour/route_ui.cc
parent7cd7927f0a9ab8591ec82cd756187536fe782346 (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.cc59
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)
{