X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fmixer_strip.cc;h=2b1d01d913cb6bf972ab72e2e517ab6f2be73964;hb=dd72d2bf6584571b88fb383752dcb0dd892a034a;hp=935542e74ef7e4f4081ac36d81d830bdcf0b9da8;hpb=1d686ac978c6efd330f86d4d03f02112c778b2d2;p=ardour.git diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index 935542e74e..2b1d01d913 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -97,7 +97,6 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session* sess, bool in_mixer) , solo_iso_table (1, 2) , mute_solo_table (1, 2) , bottom_button_table (1, 3) - , meter_point_button (_("pre")) , monitor_section_button (0) , midi_input_enable_button (0) , _plugin_insert_cnt (0) @@ -130,9 +129,9 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session* sess, boost::shared_ptr rt , solo_iso_table (1, 2) , mute_solo_table (1, 2) , bottom_button_table (1, 3) - , meter_point_button (_("pre")) , monitor_section_button (0) , midi_input_enable_button (0) + , _plugin_insert_cnt (0) , _comment_button (_("Comments")) , trim_control (ArdourKnob::default_elements, ArdourKnob::Flags (ArdourKnob::Detent | ArdourKnob::ArcToZero)) , _visibility (X_("mixer-element-visibility")) @@ -152,7 +151,6 @@ MixerStrip::init () ignore_toggle = false; comment_area = 0; _width_owner = 0; - spacer = 0; /* the length of this string determines the width of the mixer strip when it is set to `wide' */ longest_label = "longest label"; @@ -179,13 +177,7 @@ MixerStrip::init () output_button.set_text (_("Output")); output_button.set_name ("mixer strip button"); - set_tooltip (&meter_point_button, _("Click to select metering point")); - meter_point_button.set_name ("mixer strip button"); - - bottom_button_table.attach (meter_point_button, 2, 3, 0, 1); - - meter_point_button.signal_button_press_event().connect (sigc::mem_fun (gpm, &GainMeter::meter_press), false); - meter_point_button.signal_button_release_event().connect (sigc::mem_fun (gpm, &GainMeter::meter_release), false); + bottom_button_table.attach (gpm.meter_point_button, 2, 3, 0, 1); hide_button.set_events (hide_button.get_events() & ~(Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK)); @@ -322,6 +314,24 @@ MixerStrip::init () global_vpacker.pack_start (name_button, Gtk::PACK_SHRINK); } +#ifndef MIXBUS + //add a spacer underneath the master bus; + //this fills the area that is taken up by the scrollbar on the tracks; + //and therefore keeps the faders "even" across the bottom + int scrollbar_height = 0; + { + Gtk::Window window (WINDOW_TOPLEVEL); + HScrollbar scrollbar; + window.add (scrollbar); + scrollbar.set_name ("MixerWindow"); + scrollbar.ensure_style(); + Gtk::Requisition requisition(scrollbar.size_request ()); + scrollbar_height = requisition.height; + } + spacer.set_size_request (-1, scrollbar_height); + global_vpacker.pack_end (spacer, false, false); +#endif + global_frame.add (global_vpacker); global_frame.set_shadow_type (Gtk::SHADOW_IN); global_frame.set_name ("BaseFrame"); @@ -416,6 +426,22 @@ MixerStrip::~MixerStrip () _entered_mixer_strip = NULL; } +void +MixerStrip::vca_assign (boost::shared_ptr vca) +{ + boost::shared_ptr sl = boost::dynamic_pointer_cast ( route() ); + if (sl) + sl->assign(vca, false); +} + +void +MixerStrip::vca_unassign (boost::shared_ptr vca) +{ + boost::shared_ptr sl = boost::dynamic_pointer_cast ( route() ); + if (sl) + sl->unassign(vca); +} + bool MixerStrip::mixer_strip_enter_event (GdkEventCrossing* /*ev*/) { @@ -531,9 +557,8 @@ MixerStrip::set_route (boost::shared_ptr rt) solo_button->hide (); mute_button->show (); rec_mon_table.hide (); - if (solo_iso_table.get_parent()) { - solo_iso_table.get_parent()->remove(solo_iso_table); - } + solo_iso_table.set_sensitive(false); + control_slave_ui.set_sensitive(false); if (monitor_section_button == 0) { Glib::RefPtr act = ActionManager::get_action ("Common", "ToggleMonitorSection"); _session->MonitorChanged.connect (route_connections, invalidator (*this), boost::bind (&MixerStrip::monitor_changed, this), gui_context()); @@ -554,18 +579,14 @@ MixerStrip::set_route (boost::shared_ptr rt) mute_button->show (); solo_button->show (); rec_mon_table.show (); + solo_iso_table.set_sensitive(true); + control_slave_ui.set_sensitive(true); } if (_mixer_owned && route()->is_master() ) { - - HScrollbar scrollbar; - Gtk::Requisition requisition(scrollbar.size_request ()); - int scrollbar_height = requisition.height; - - spacer = manage (new EventBox); - spacer->set_size_request (-1, scrollbar_height+2); - global_vpacker.pack_start (*spacer, false, false); - spacer->show(); + spacer.show(); + } else { + spacer.hide(); } if (is_track()) { @@ -633,7 +654,7 @@ MixerStrip::set_route (boost::shared_ptr rt) } } - meter_point_button.set_text (meter_point_string (_route->meter_point())); + gpm.meter_point_button.set_text (meter_point_string (_route->meter_point())); delete route_ops_menu; route_ops_menu = 0; @@ -701,7 +722,7 @@ MixerStrip::set_route (boost::shared_ptr rt) mute_solo_table.show(); bottom_button_table.show(); gpm.show_all (); - meter_point_button.show(); + gpm.meter_point_button.show(); input_button_box.show_all(); output_button.show(); name_button.show(); @@ -1639,7 +1660,13 @@ MixerStrip::help_count_plugins (boost::weak_ptr p) if (!processor || !processor->display_to_user()) { return; } - if (boost::dynamic_pointer_cast (processor)) { + boost::shared_ptr pi = boost::dynamic_pointer_cast (processor); +#ifdef MIXBUS + if (pi && pi->is_channelstrip ()) { + return; + } +#endif + if (pi) { ++_plugin_insert_cnt; } } @@ -1660,13 +1687,25 @@ MixerStrip::build_route_ops_menu () items.push_back (MenuElem (_("Outputs..."), sigc::mem_fun (*this, &RouteUI::edit_output_configuration))); - items.push_back (SeparatorElem()); + if (!Profile->get_mixbus()) { + items.push_back (SeparatorElem()); + } - if (!_route->is_master()) { + if (!_route->is_master() +#ifdef MIXBUS + && !_route->mixbus() +#endif + ) { + if (Profile->get_mixbus()) { + items.push_back (SeparatorElem()); + } items.push_back (MenuElem (_("Save As Template..."), sigc::mem_fun(*this, &RouteUI::save_as_template))); } - items.push_back (MenuElem (_("Rename..."), sigc::mem_fun(*this, &RouteUI::route_rename))); - rename_menu_item = &items.back(); + + if (!Profile->get_mixbus()) { + items.push_back (MenuElem (_("Rename..."), sigc::mem_fun(*this, &RouteUI::route_rename))); + rename_menu_item = &items.back(); + } items.push_back (SeparatorElem()); items.push_back (CheckMenuElem (_("Active"))); @@ -1690,6 +1729,12 @@ MixerStrip::build_route_ops_menu () items.push_back (MenuElem (_("Pin Connections..."), sigc::mem_fun (*this, &RouteUI::manage_pins))); } + if (_route->the_instrument () && _route->the_instrument ()->output_streams().n_audio() > 2) { + // TODO ..->n_audio() > 1 && separate_output_groups) hard to check here every time. + items.push_back (MenuElem (_("Fan out to Busses"), sigc::bind (sigc::mem_fun (*this, &RouteUI::fan_out), true, true))); + items.push_back (MenuElem (_("Fan out to Tracks"), sigc::bind (sigc::mem_fun (*this, &RouteUI::fan_out), false, true))); + } + items.push_back (SeparatorElem()); items.push_back (MenuElem (_("Adjust Latency..."), sigc::mem_fun (*this, &RouteUI::adjust_latency))); @@ -2061,7 +2106,7 @@ MixerStrip::monitor_changed () void MixerStrip::meter_changed () { - meter_point_button.set_text (meter_point_string (_route->meter_point())); + gpm.meter_point_button.set_text (meter_point_string (_route->meter_point())); gpm.setup_meters (); // reset peak when meter point changes gpm.reset_peak_display(); @@ -2102,7 +2147,7 @@ MixerStrip::drop_send () output_button.set_sensitive (true); group_button.set_sensitive (true); set_invert_sensitive (true); - meter_point_button.set_sensitive (true); + gpm.meter_point_button.set_sensitive (true); mute_button->set_sensitive (true); solo_button->set_sensitive (true); solo_isolated_led->set_sensitive (true); @@ -2149,7 +2194,7 @@ MixerStrip::show_send (boost::shared_ptr send) input_button.set_sensitive (false); group_button.set_sensitive (false); set_invert_sensitive (false); - meter_point_button.set_sensitive (false); + gpm.meter_point_button.set_sensitive (false); mute_button->set_sensitive (false); solo_button->set_sensitive (false); rec_enable_button->set_sensitive (false); @@ -2255,9 +2300,9 @@ MixerStrip::set_button_names () } if (_route) { - meter_point_button.set_text (meter_point_string (_route->meter_point())); + gpm.meter_point_button.set_text (meter_point_string (_route->meter_point())); } else { - meter_point_button.set_text (""); + gpm.meter_point_button.set_text (""); } }