diff options
-rw-r--r-- | gtk2_ardour/mixer_strip.cc | 64 | ||||
-rw-r--r-- | gtk2_ardour/mixer_strip.h | 8 | ||||
-rw-r--r-- | gtk2_ardour/route_time_axis.cc | 6 | ||||
-rw-r--r-- | gtk2_ardour/route_ui.cc | 59 | ||||
-rw-r--r-- | gtk2_ardour/route_ui.h | 9 |
5 files changed, 80 insertions, 66 deletions
diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index 2f73cb9866..5066280bc5 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -141,8 +141,6 @@ MixerStrip::init () int button_table_row = 0; _entered_mixer_strip= 0; - input_selector = 0; - output_selector = 0; group_menu = 0; route_ops_menu = 0; ignore_comment_edit = false; @@ -414,9 +412,6 @@ MixerStrip::~MixerStrip () if (this ==_entered_mixer_strip) _entered_mixer_strip = NULL; - - delete input_selector; - delete output_selector; } bool @@ -484,12 +479,6 @@ MixerStrip::set_route (boost::shared_ptr<Route> rt) mute_changed (0); update_solo_display (); - delete input_selector; - input_selector = 0; - - delete output_selector; - output_selector = 0; - revert_to_default_display (); /* unpack these from the parent and stuff them into our own @@ -873,52 +862,6 @@ MixerStrip::output_press (GdkEventButton *ev) return TRUE; } -void -MixerStrip::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 -MixerStrip::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); -} - gint MixerStrip::input_press (GdkEventButton *ev) { @@ -1523,6 +1466,13 @@ MixerStrip::build_route_ops_menu () items.push_back (MenuElem (_("Color..."), sigc::mem_fun (*this, &RouteUI::choose_color))); items.push_back (MenuElem (_("Comments..."), sigc::mem_fun (*this, &RouteUI::open_comment_editor))); + + items.push_back (MenuElem (_("Inputs..."), sigc::mem_fun (*this, &RouteUI::edit_input_configuration))); + + items.push_back (MenuElem (_("Outputs..."), sigc::mem_fun (*this, &RouteUI::edit_output_configuration))); + + items.push_back (SeparatorElem()); + if (!_route->is_master()) { items.push_back (MenuElem (_("Save As Template..."), sigc::mem_fun(*this, &RouteUI::save_as_template))); } diff --git a/gtk2_ardour/mixer_strip.h b/gtk2_ardour/mixer_strip.h index 517cab0858..ba7ef6d9e3 100644 --- a/gtk2_ardour/mixer_strip.h +++ b/gtk2_ardour/mixer_strip.h @@ -69,7 +69,6 @@ namespace Gtk { } class Mixer_UI; -class IOSelectorWindow; class MotionController; class RouteGroupMenu; class ArdourWindow; @@ -220,9 +219,6 @@ class MixerStrip : public RouteUI, public Gtk::EventBox void bundle_input_chosen (boost::shared_ptr<ARDOUR::Bundle>); void bundle_output_chosen (boost::shared_ptr<ARDOUR::Bundle>); - void edit_input_configuration (); - void edit_output_configuration (); - void diskstream_changed (); void io_changed_proxy (); @@ -253,9 +249,6 @@ class MixerStrip : public RouteUI, public Gtk::EventBox bool select_route_group (GdkEventButton *); void route_group_changed (); - IOSelectorWindow *input_selector; - IOSelectorWindow *output_selector; - Gtk::Style *passthru_style; void route_color_changed (); @@ -279,7 +272,6 @@ class MixerStrip : public RouteUI, public Gtk::EventBox virtual void bus_send_display_changed (boost::shared_ptr<ARDOUR::Route>); void set_current_delivery (boost::shared_ptr<ARDOUR::Delivery>); - boost::shared_ptr<ARDOUR::Delivery> _current_delivery; void drop_send (); PBD::ScopedConnection send_gone_connection; diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc index 17fe8e7709..a1acb0749b 100644 --- a/gtk2_ardour/route_time_axis.cc +++ b/gtk2_ardour/route_time_axis.cc @@ -481,6 +481,12 @@ RouteTimeAxisView::build_display_menu () items.push_back (MenuElem (_("Comments..."), sigc::mem_fun (*this, &RouteUI::open_comment_editor))); + items.push_back (MenuElem (_("Inputs..."), sigc::mem_fun (*this, &RouteUI::edit_input_configuration))); + + items.push_back (MenuElem (_("Outputs..."), sigc::mem_fun (*this, &RouteUI::edit_output_configuration))); + + items.push_back (SeparatorElem()); + if (_size_menu) { detach_menu (*_size_menu); } 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) { diff --git a/gtk2_ardour/route_ui.h b/gtk2_ardour/route_ui.h index 9c2c6618ac..28d0f77d1b 100644 --- a/gtk2_ardour/route_ui.h +++ b/gtk2_ardour/route_ui.h @@ -51,9 +51,9 @@ namespace Gtk { class Widget; } -class BindableToggleButton; class ArdourButton; class ArdourWindow; +class IOSelectorWindow; class RouteUI : public virtual AxisView { @@ -119,6 +119,8 @@ class RouteUI : public virtual AxisView Gtk::Menu* solo_menu; Gtk::Menu* sends_menu; + boost::shared_ptr<ARDOUR::Delivery> _current_delivery; + bool mute_press(GdkEventButton*); bool mute_release(GdkEventButton*); bool solo_press(GdkEventButton*); @@ -136,6 +138,9 @@ class RouteUI : public virtual AxisView void monitoring_changed (); void update_monitoring_display (); + void edit_input_configuration (); + void edit_output_configuration (); + void step_gain_up (); void step_gain_down (); void page_gain_up (); @@ -244,6 +249,8 @@ class RouteUI : public virtual AxisView ArdourWindow* comment_window; Gtk::TextView* comment_area; + IOSelectorWindow *input_selector; + IOSelectorWindow *output_selector; PBD::ScopedConnectionList route_connections; bool self_destruct; |