diff options
author | Nick Mainsbridge <beatroute@iprimus.com.au> | 2006-05-17 12:07:16 +0000 |
---|---|---|
committer | Nick Mainsbridge <beatroute@iprimus.com.au> | 2006-05-17 12:07:16 +0000 |
commit | b3b383faa5ca4e2a101314612d69b05184edc422 (patch) | |
tree | 709e456eb51260ae12b1d646c89e857e6fb997c0 /gtk2_ardour/mixer_strip.cc | |
parent | 1242d9595c198bd5cb351271002b1c910ec7864b (diff) |
Remove CannotRecordNoInput signal (allowing recording without input connections), provide visual indication of phase reverse, change e.g. 'gain automation' to 'fader automation', enforce mouse button 1 use in mixer strip, make button labels more consistent in mixer strip, disable io change/record enable when disconnected from jack on mixer strip, remove duplicated signal connections and typo in audio_time_axis.cc.
git-svn-id: svn://localhost/trunk/ardour2@505 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/mixer_strip.cc')
-rw-r--r-- | gtk2_ardour/mixer_strip.cc | 242 |
1 files changed, 143 insertions, 99 deletions
diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index 11a9702b01..edc2e56216 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -82,7 +82,7 @@ speed_printer (char buf[32], Gtk::Adjustment& adj, void* arg) MixerStrip::MixerStrip (Mixer_UI& mx, Session& sess, Route& rt, bool in_mixer) : AxisView(sess), - RouteUI (rt, sess, _("mute"), _("solo"), _("RECORD")), + RouteUI (rt, sess, _("Mute"), _("Solo"), _("Record")), _mixer(mx), pre_redirect_box (PreFader, sess, rt, mx.plugin_selector(), mx.selection(), in_mixer), post_redirect_box (PostFader, sess, rt, mx.plugin_selector(), mx.selection(), in_mixer), @@ -116,13 +116,12 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session& sess, Route& rt, bool in_mixer) width_button.add (*(manage (new Gtk::Image (get_xpm("lr.xpm"))))); hide_button.add (*(manage (new Gtk::Image (get_xpm("small_x.xpm"))))); - - input_label.set_text (_("INPUT")); + input_label.set_text (_("Input")); input_button.add (input_label); input_button.set_name ("MixerIOButton"); input_label.set_name ("MixerIOButtonLabel"); - output_label.set_text (_("OUTPUT")); + output_label.set_text (_("Output")); output_button.add (output_label); output_button.set_name ("MixerIOButton"); output_label.set_name ("MixerIOButtonLabel"); @@ -138,10 +137,10 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session& sess, Route& rt, bool in_mixer) pan_automation_state_button.set_name ("MixerAutomationPlaybackButton"); ARDOUR_UI::instance()->tooltips().set_tip (pan_automation_state_button, _("Pan automation mode")); - ARDOUR_UI::instance()->tooltips().set_tip (gain_automation_state_button, _("Gain automation mode")); + ARDOUR_UI::instance()->tooltips().set_tip (gain_automation_state_button, _("Fader automation mode")); ARDOUR_UI::instance()->tooltips().set_tip (pan_automation_style_button, _("Pan automation type")); - ARDOUR_UI::instance()->tooltips().set_tip (gain_automation_style_button, _("Gain automation type")); + ARDOUR_UI::instance()->tooltips().set_tip (gain_automation_style_button, _("Fader automation type")); hide_button.set_events (hide_button.get_events() & ~(Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK)); @@ -171,39 +170,39 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session& sess, Route& rt, bool in_mixer) using namespace Menu_Helpers; - gain_astate_menu.items().push_back (MenuElem (_("off"), + gain_astate_menu.items().push_back (MenuElem (_("Isolate"), bind (mem_fun (_route, &IO::set_gain_automation_state), (AutoState) Off))); - gain_astate_menu.items().push_back (MenuElem (_("play"), + gain_astate_menu.items().push_back (MenuElem (_("Play"), bind (mem_fun (_route, &IO::set_gain_automation_state), (AutoState) Play))); - gain_astate_menu.items().push_back (MenuElem (_("write"), + gain_astate_menu.items().push_back (MenuElem (_("Write"), bind (mem_fun (_route, &IO::set_gain_automation_state), (AutoState) Write))); - gain_astate_menu.items().push_back (MenuElem (_("touch"), + gain_astate_menu.items().push_back (MenuElem (_("Touch"), bind (mem_fun (_route, &IO::set_gain_automation_state), (AutoState) Touch))); - gain_astyle_menu.items().push_back (MenuElem (_("trim"))); - gain_astyle_menu.items().push_back (MenuElem (_("abs"))); + gain_astyle_menu.items().push_back (MenuElem (_("Trim"))); + gain_astyle_menu.items().push_back (MenuElem (_("Abs"))); - pan_astate_menu.items().push_back (MenuElem (_("off"), + pan_astate_menu.items().push_back (MenuElem (_("Isolate"), bind (mem_fun (_route.panner(), &Panner::set_automation_state), (AutoState) Off))); - pan_astate_menu.items().push_back (MenuElem (_("play"), + pan_astate_menu.items().push_back (MenuElem (_("Play"), bind (mem_fun (_route.panner(), &Panner::set_automation_state), (AutoState) Play))); - pan_astate_menu.items().push_back (MenuElem (_("write"), + pan_astate_menu.items().push_back (MenuElem (_("Write"), bind (mem_fun (_route.panner(), &Panner::set_automation_state), (AutoState) Write))); - pan_astate_menu.items().push_back (MenuElem (_("touch"), + pan_astate_menu.items().push_back (MenuElem (_("Touch"), bind (mem_fun (_route.panner(), &Panner::set_automation_state), (AutoState) Touch))); - pan_astyle_menu.items().push_back (MenuElem (_("trim"))); - pan_astyle_menu.items().push_back (MenuElem (_("abs"))); + pan_astyle_menu.items().push_back (MenuElem (_("Trim"))); + pan_astyle_menu.items().push_back (MenuElem (_("Abs"))); gain_astate_menu.set_name ("ArdourContextMenu"); gain_astyle_menu.set_name ("ArdourContextMenu"); pan_astate_menu.set_name ("ArdourContextMenu"); pan_astyle_menu.set_name ("ArdourContextMenu"); - ARDOUR_UI::instance()->tooltips().set_tip (gain_automation_style_button, _("gain automation mode")); - ARDOUR_UI::instance()->tooltips().set_tip (pan_automation_style_button, _("pan automation mode")); - ARDOUR_UI::instance()->tooltips().set_tip (gain_automation_state_button, _("gain automation state")); - ARDOUR_UI::instance()->tooltips().set_tip (pan_automation_state_button, _("pan automation state")); + ARDOUR_UI::instance()->tooltips().set_tip (gain_automation_style_button, _("Fader automation mode")); + ARDOUR_UI::instance()->tooltips().set_tip (pan_automation_style_button, _("Pan automation mode")); + ARDOUR_UI::instance()->tooltips().set_tip (gain_automation_state_button, _("Fader automation state")); + ARDOUR_UI::instance()->tooltips().set_tip (pan_automation_state_button, _("Pan automation state")); if (is_audio_track()) { @@ -220,7 +219,7 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session& sess, Route& rt, bool in_mixer) speed_spinner.set_print_func (speed_printer, 0); - ARDOUR_UI::instance()->tooltips().set_tip (speed_spinner, _("varispeed")); + ARDOUR_UI::instance()->tooltips().set_tip (speed_spinner, _("Varispeed")); button_table.attach (speed_frame, 0, 2, 5, 6); #endif /* VARISPEED_IN_MIXER_STRIP */ @@ -233,7 +232,11 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session& sess, Route& rt, bool in_mixer) Gtkmm2ext::set_size_request_to_display_given_text (name_button, "longest label", 2, 2); name_label.set_name ("MixerNameButtonLabel"); - name_label.set_text (_route.name()); + if (_route.phase_invert()) { + name_label.set_text (X_("Ø ") + name_label.get_text()); + } else { + name_label.set_text (_route.name()); + } group_button.add (group_label); group_button.set_name ("MixerGroupButton"); @@ -286,6 +289,8 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session& sess, Route& rt, bool in_mixer) _packed = false; _embedded = false; + _session.engine().Stopped.connect (mem_fun(*this, &MixerStrip::engine_stopped)); + _session.engine().Running.connect (mem_fun(*this, &MixerStrip::engine_running)); _route.input_changed.connect (mem_fun(*this, &MixerStrip::input_changed)); _route.output_changed.connect (mem_fun(*this, &MixerStrip::output_changed)); _route.mute_changed.connect (mem_fun(*this, &RouteUI::mute_changed)); @@ -315,9 +320,8 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session& sess, Route& rt, bool in_mixer) mute_button->signal_button_release_event().connect (mem_fun(*this, &RouteUI::mute_release), false); gain_automation_style_button.signal_button_press_event().connect (mem_fun(*this, &MixerStrip::gain_automation_style_button_event), false); - gain_automation_style_button.signal_button_release_event().connect (mem_fun(*this, &MixerStrip::gain_automation_style_button_event), false); + pan_automation_style_button.signal_button_press_event().connect (mem_fun(*this, &MixerStrip::pan_automation_style_button_event), false); - pan_automation_style_button.signal_button_release_event().connect (mem_fun(*this, &MixerStrip::pan_automation_style_button_event), false); gain_automation_state_button.signal_button_press_event().connect (mem_fun(*this, &MixerStrip::gain_automation_state_button_event), false); pan_automation_state_button.signal_button_press_event().connect (mem_fun(*this, &MixerStrip::pan_automation_state_button_event), false); @@ -431,9 +435,9 @@ MixerStrip::set_width (Width w) set_size_request (-1, -1); xml_node->add_property ("strip_width", "wide"); - rec_enable_button->set_label (_("RECORD")); - mute_button->set_label (_("mute")); - solo_button->set_label (_("solo")); + rec_enable_button->set_label (_("Record")); + mute_button->set_label (_("Mute")); + solo_button->set_label (_("Solo")); if (_route.comment() == "") { comment_button.set_label (_("Comments")); @@ -441,10 +445,10 @@ MixerStrip::set_width (Width w) comment_button.set_label (_("*Comments*")); } - gain_automation_style_button.set_label (astyle_string(_route.gain_automation_curve().automation_style())); - gain_automation_state_button.set_label (astate_string(_route.gain_automation_curve().automation_state())); - pan_automation_style_button.set_label (astyle_string(_route.panner().automation_style())); - pan_automation_state_button.set_label (astate_string(_route.panner().automation_state())); + gain_automation_style_button.set_label (_("F:") + astyle_string(_route.gain_automation_curve().automation_style())); + gain_automation_state_button.set_label (_("F:") + astate_string(_route.gain_automation_curve().automation_state())); + pan_automation_style_button.set_label (_("P:") + astyle_string(_route.panner().automation_style())); + pan_automation_state_button.set_label (_("P:") + astate_string(_route.panner().automation_state())); Gtkmm2ext::set_size_request_to_display_given_text (name_button, "long", 2, 2); break; @@ -452,9 +456,9 @@ MixerStrip::set_width (Width w) set_size_request (50, -1); xml_node->add_property ("strip_width", "narrow"); - rec_enable_button->set_label (_("REC")); - mute_button->set_label (_("m")); - solo_button->set_label (_("s")); + rec_enable_button->set_label (_("Rec")); + mute_button->set_label (_("M")); + solo_button->set_label (_("S")); if (_route.comment() == "") { comment_button.set_label (_("Cmt")); @@ -462,10 +466,10 @@ MixerStrip::set_width (Width w) comment_button.set_label (_("*Cmt*")); } - gain_automation_style_button.set_label (short_astyle_string(_route.gain_automation_curve().automation_style())); - gain_automation_state_button.set_label (short_astate_string(_route.gain_automation_curve().automation_state())); - pan_automation_style_button.set_label (short_astyle_string(_route.panner().automation_style())); - pan_automation_state_button.set_label (short_astate_string(_route.panner().automation_state())); + gain_automation_style_button.set_label (_("F:") + short_astyle_string(_route.gain_automation_curve().automation_style())); + gain_automation_state_button.set_label (_("F:") + short_astate_string(_route.gain_automation_curve().automation_state())); + pan_automation_style_button.set_label (_("P:") + short_astyle_string(_route.panner().automation_style())); + pan_automation_state_button.set_label (_("P:") + short_astate_string(_route.panner().automation_state())); Gtkmm2ext::set_size_request_to_display_given_text (name_button, "longest label", 2, 2); break; } @@ -495,27 +499,33 @@ MixerStrip::set_packed (bool yn) gint MixerStrip::output_press (GdkEventButton *ev) { - using namespace Menu_Helpers; - + using namespace Menu_Helpers; if (!_session.engine().connected()) { - MessageDialog msg (_("Not connected to JACK - no I/O changes are possible")); + MessageDialog msg (_("Not connected to JACK - no I/O changes are possible")); msg.run (); return true; } MenuList& citems = output_menu.items(); - output_menu.set_name ("ArdourContextMenu"); - citems.clear(); - - citems.push_back (MenuElem (_("Edit"), mem_fun(*this, &MixerStrip::edit_output_configuration))); - citems.push_back (SeparatorElem()); - citems.push_back (MenuElem (_("Disconnect"), mem_fun (*(static_cast<RouteUI*>(this)), &RouteUI::disconnect_output))); - citems.push_back (SeparatorElem()); - - _session.foreach_connection (this, &MixerStrip::add_connection_to_output_menu); - - output_menu.popup (1, ev->time); + switch (ev->button) { + case 1: + output_menu.set_name ("ArdourContextMenu"); + citems.clear(); + + citems.push_back (MenuElem (_("Edit"), mem_fun(*this, &MixerStrip::edit_output_configuration))); + citems.push_back (SeparatorElem()); + citems.push_back (MenuElem (_("Disconnect"), mem_fun (*(static_cast<RouteUI*>(this)), &RouteUI::disconnect_output))); + citems.push_back (SeparatorElem()); + + _session.foreach_connection (this, &MixerStrip::add_connection_to_output_menu); + + output_menu.popup (1, ev->time); + break; + + default: + break; + } return TRUE; } @@ -555,26 +565,34 @@ MixerStrip::input_press (GdkEventButton *ev) MenuList& citems = input_menu.items(); input_menu.set_name ("ArdourContextMenu"); citems.clear(); - + if (!_session.engine().connected()) { - MessageDialog msg (_("Not connected to JACK - no I/O changes are possible")); + MessageDialog msg (_("Not connected to JACK - no I/O changes are possible")); msg.run (); return true; } + + switch (ev->button) { + + case 1: #if ADVANCED_ROUTE_DISKSTREAM_CONNECTIVITY - if (is_audio_track()) { - citems.push_back (MenuElem (_("Track"), mem_fun(*this, &MixerStrip::select_stream_input))); - } + if (is_audio_track()) { + citems.push_back (MenuElem (_("Track"), mem_fun(*this, &MixerStrip::select_stream_input))); + } #endif - citems.push_back (MenuElem (_("Edit"), mem_fun(*this, &MixerStrip::edit_input_configuration))); - citems.push_back (SeparatorElem()); - citems.push_back (MenuElem (_("Disconnect"), mem_fun (*(static_cast<RouteUI*>(this)), &RouteUI::disconnect_input))); - citems.push_back (SeparatorElem()); - - _session.foreach_connection (this, &MixerStrip::add_connection_to_input_menu); - input_menu.popup (1, ev->time); - + citems.push_back (MenuElem (_("Edit"), mem_fun(*this, &MixerStrip::edit_input_configuration))); + citems.push_back (SeparatorElem()); + citems.push_back (MenuElem (_("Disconnect"), mem_fun (*(static_cast<RouteUI*>(this)), &RouteUI::disconnect_input))); + citems.push_back (SeparatorElem()); + + _session.foreach_connection (this, &MixerStrip::add_connection_to_input_menu); + input_menu.popup (1, ev->time); + break; + + default: + break; + } return TRUE; } @@ -747,14 +765,13 @@ MixerStrip::update_input_display () } else { switch (_width) { case Wide: - input_label.set_text (_("INPUT")); + input_label.set_text (_(" Input")); break; case Narrow: - input_label.set_text (_("IN")); + input_label.set_text (_("I")); break; } } - panners.setup_pan (); } @@ -768,14 +785,13 @@ MixerStrip::update_output_display () } else { switch (_width) { case Wide: - output_label.set_text (_("OUTPUT")); + output_label.set_text (_("Output")); break; case Narrow: - output_label.set_text (_("OUT")); + output_label.set_text (_("O")); break; } } - gpm.setup_meters (); panners.setup_pan (); } @@ -794,14 +810,11 @@ MixerStrip::gain_automation_state_button_event (GdkEventButton *ev) } switch (ev->button) { - case 1: - switch (ev->button) { case 1: gain_astate_menu.popup (1, ev->time); break; default: break; - } } return TRUE; @@ -810,7 +823,7 @@ MixerStrip::gain_automation_state_button_event (GdkEventButton *ev) gint MixerStrip::gain_automation_style_button_event (GdkEventButton *ev) { - if (ev->type == GDK_BUTTON_PRESS || ev->type == GDK_2BUTTON_PRESS) { + if (ev->type == GDK_BUTTON_RELEASE) { return TRUE; } @@ -847,6 +860,10 @@ MixerStrip::pan_automation_state_button_event (GdkEventButton *ev) gint MixerStrip::pan_automation_style_button_event (GdkEventButton *ev) { + if (ev->type == GDK_BUTTON_RELEASE) { + return TRUE; + } + switch (ev->button) { case 1: pan_astyle_menu.popup (1, ev->time); @@ -876,16 +893,16 @@ MixerStrip::_astate_string (AutoState state, bool shrt) switch (state) { case Off: - sstr = (shrt ? "--" : _("off")); + sstr = (shrt ? "I" : _("Iso")); break; case Play: - sstr = (shrt ? "P" : _("aplay")); + sstr = (shrt ? "P" : _("Ply")); break; case Touch: - sstr = (shrt ? "T" : _("touch")); + sstr = (shrt ? "T" : _("Tch")); break; case Write: - sstr = (shrt ? "W" : _("awrite")); + sstr = (shrt ? "W" : _("Wri")); break; } @@ -908,11 +925,11 @@ string MixerStrip::_astyle_string (AutoStyle style, bool shrt) { if (style & Trim) { - return _("trim"); + return _("Trim"); } else { /* XXX it might different in different languages */ - return (shrt ? _("abs") : _("abs")); + return (shrt ? _("Abs") : _("Abs")); } } @@ -927,10 +944,10 @@ MixerStrip::gain_automation_style_changed () { switch (_width) { case Wide: - gain_automation_style_button.set_label (astyle_string(_route.gain_automation_curve().automation_style())); + gain_automation_style_button.set_label (_("F:") + astyle_string(_route.gain_automation_curve().automation_style())); break; case Narrow: - gain_automation_style_button.set_label (short_astyle_string(_route.gain_automation_curve().automation_style())); + gain_automation_style_button.set_label (_("F:") + short_astyle_string(_route.gain_automation_curve().automation_style())); break; } } @@ -944,10 +961,10 @@ MixerStrip::gain_automation_state_changed () switch (_width) { case Wide: - gain_automation_state_button.set_label (astate_string(_route.gain_automation_curve().automation_state())); + gain_automation_state_button.set_label (_("F:") + astate_string(_route.gain_automation_curve().automation_state())); break; case Narrow: - gain_automation_state_button.set_label (short_astate_string(_route.gain_automation_curve().automation_state())); + gain_automation_state_button.set_label (_("F:") + short_astate_string(_route.gain_automation_curve().automation_state())); break; } @@ -977,10 +994,10 @@ MixerStrip::pan_automation_style_changed () switch (_width) { case Wide: - pan_automation_style_button.set_label (astyle_string(_route.panner().automation_style())); + pan_automation_style_button.set_label (_("P:") + astyle_string(_route.panner().automation_style())); break; case Narrow: - pan_automation_style_button.set_label (short_astyle_string(_route.panner().automation_style())); + pan_automation_style_button.set_label (_("P:") + short_astyle_string(_route.panner().automation_style())); break; } } @@ -994,10 +1011,10 @@ MixerStrip::pan_automation_state_changed () switch (_width) { case Wide: - pan_automation_state_button.set_label (astate_string(_route.panner().automation_state())); + pan_automation_state_button.set_label (_("P:") + astate_string(_route.panner().automation_state())); break; case Narrow: - pan_automation_state_button.set_label (short_astate_string(_route.panner().automation_state())); + pan_automation_state_button.set_label (_("P:") + short_astate_string(_route.panner().automation_state())); break; } @@ -1156,19 +1173,27 @@ MixerStrip::select_mix_group (GdkEventButton *ev) using namespace Menu_Helpers; if (group_menu == 0) { - group_menu = new Menu; + group_menu = new Menu; } group_menu->set_name ("ArdourContextMenu"); MenuList& items = group_menu->items(); RadioMenuItem::Group group; - items.clear (); - items.push_back (RadioMenuElem (group, _("no group"), bind (mem_fun(*this, &MixerStrip::set_mix_group), (RouteGroup *) 0))); + switch (ev->button) { + case 1: - _session.foreach_mix_group (bind (mem_fun (*this, &MixerStrip::add_mix_group_to_menu), &group)); - - group_menu->popup (1, ev->time); + items.clear (); + items.push_back (RadioMenuElem (group, _("No group"), bind (mem_fun(*this, &MixerStrip::set_mix_group), (RouteGroup *) 0))); + + _session.foreach_mix_group (bind (mem_fun (*this, &MixerStrip::add_mix_group_to_menu), &group)); + group_menu->popup (1, ev->time); + break; + + default: + break; + } + return true; } @@ -1184,7 +1209,7 @@ MixerStrip::mix_group_changed (void *ignored) } else { switch (_width) { case Wide: - group_label.set_text (_("no group")); + group_label.set_text (_("No group")); break; case Narrow: group_label.set_text (_("~G")); @@ -1327,9 +1352,12 @@ MixerStrip::name_changed (void *src) RouteUI::name_changed (src); break; case Narrow: - name_label.set_text (PBD::short_version (_route.name(), 5)); + name_label.set_text (PBD::short_version (_route.name(), 5)); break; } + if (_route.phase_invert()) { + name_label.set_text (X_("Ø ") + name_label.get_text()); + } } void @@ -1426,3 +1454,19 @@ MixerStrip::mix_group() const { return _route.mix_group(); } + +void +MixerStrip::engine_stopped () +{ + input_button.set_sensitive (false); + rec_enable_button->set_sensitive (false); + output_button.set_sensitive (false); +} + +void +MixerStrip::engine_running () +{ + input_button.set_sensitive (true); + rec_enable_button->set_sensitive (true); + output_button.set_sensitive (true); +} |