diff options
-rw-r--r-- | gtk2_ardour/ardour.menus.in | 2 | ||||
-rw-r--r-- | gtk2_ardour/audio_region_view.cc | 30 | ||||
-rw-r--r-- | gtk2_ardour/audio_region_view.h | 2 | ||||
-rw-r--r-- | gtk2_ardour/editor.h | 3 | ||||
-rw-r--r-- | gtk2_ardour/editor_actions.cc | 9 | ||||
-rw-r--r-- | gtk2_ardour/editor_ops.cc | 29 | ||||
-rw-r--r-- | gtk2_ardour/editor_selection.cc | 26 | ||||
-rw-r--r-- | gtk2_ardour/rc_option_editor.cc | 8 |
8 files changed, 32 insertions, 77 deletions
diff --git a/gtk2_ardour/ardour.menus.in b/gtk2_ardour/ardour.menus.in index 8a730d8948..e8283474c5 100644 --- a/gtk2_ardour/ardour.menus.in +++ b/gtk2_ardour/ardour.menus.in @@ -263,7 +263,6 @@ <menuitem action='boost-region-gain'/> <menuitem action='cut-region-gain'/> <menuitem action='reset-region-gain-envelopes'/> - <menuitem action='toggle-region-gain-envelope-visible'/> <menuitem action='toggle-region-gain-envelope-active'/> </menu> <menu action='RegionMenuPosition'> @@ -653,7 +652,6 @@ <menuitem action='boost-region-gain'/> <menuitem action='cut-region-gain'/> <menuitem action='reset-region-gain-envelopes'/> - <menuitem action='toggle-region-gain-envelope-visible'/> <menuitem action='toggle-region-gain-envelope-active'/> </menu> <menu action='RegionMenuFades'> diff --git a/gtk2_ardour/audio_region_view.cc b/gtk2_ardour/audio_region_view.cc index 4729024159..cf951e9da6 100644 --- a/gtk2_ardour/audio_region_view.cc +++ b/gtk2_ardour/audio_region_view.cc @@ -138,12 +138,6 @@ AudioRegionView::init (Gdk::Color const & basic_color, bool wfd) store_flags (); } - /* make envelope visible if it has anything interesting in it */ - boost::shared_ptr<AutomationList> env = audio_region()->envelope (); - if (env->size() > 2 || (env->size() == 2 && env->front()->value != env->back()->value)) { - _flags |= EnvelopeVisible; - } - compute_colors (basic_color); create_waves (); @@ -189,10 +183,10 @@ AudioRegionView::init (Gdk::Color const & basic_color, bool wfd) gain_line = new AudioRegionGainLine (line_name, *this, *group, audio_region()->envelope()); } - if (!(_flags & EnvelopeVisible)) { - gain_line->hide (); - } else { + if (Config->get_show_region_gain()) { gain_line->show (); + } else { + gain_line->hide (); } gain_line->reset (); @@ -489,7 +483,7 @@ AudioRegionView::set_height (gdouble height) if ((height/wcnt) < NAME_HIGHLIGHT_THRESH) { gain_line->hide (); } else { - if (_flags & EnvelopeVisible) { + if (Config->get_show_region_gain ()) { gain_line->show (); } } @@ -805,7 +799,7 @@ AudioRegionView::temporarily_hide_envelope () void AudioRegionView::unhide_envelope () { - if (gain_line && (_flags & EnvelopeVisible)) { + if (gain_line) { gain_line->show (); } } @@ -813,15 +807,12 @@ AudioRegionView::unhide_envelope () void AudioRegionView::set_envelope_visible (bool yn) { - if (gain_line && ((_flags & EnvelopeVisible) != yn)) { + if (gain_line) { if (yn) { gain_line->show (); - _flags |= EnvelopeVisible; } else { gain_line->hide (); - _flags &= ~EnvelopeVisible; } - store_flags (); } } @@ -1041,7 +1032,6 @@ AudioRegionView::store_flags() XMLNode *node = new XMLNode ("GUI"); node->add_property ("waveform-visible", (_flags & WaveformVisible) ? "yes" : "no"); - node->add_property ("envelope-visible", (_flags & EnvelopeVisible) ? "yes" : "no"); node->add_property ("waveform-rectified", (_flags & WaveformRectified) ? "yes" : "no"); node->add_property ("waveform-logscaled", (_flags & WaveformLogScaled) ? "yes" : "no"); @@ -1059,12 +1049,6 @@ AudioRegionView::set_flags (XMLNode* node) } } - if ((prop = node->property ("envelope-visible")) != 0) { - if (string_is_affirmative (prop->value())) { - _flags |= EnvelopeVisible; - } - } - if ((prop = node->property ("waveform-rectified")) != 0) { if (string_is_affirmative (prop->value())) { _flags |= WaveformRectified; @@ -1181,7 +1165,7 @@ AudioRegionView::entered (bool internal_editing) trackview.editor().set_current_trimmable (_region); trackview.editor().set_current_movable (_region); - if (gain_line && _flags & EnvelopeVisible) { + if (gain_line && Config->get_show_region_gain ()) { gain_line->show_all_control_points (); } diff --git a/gtk2_ardour/audio_region_view.h b/gtk2_ardour/audio_region_view.h index cfd64b16a4..5afa63b03b 100644 --- a/gtk2_ardour/audio_region_view.h +++ b/gtk2_ardour/audio_region_view.h @@ -87,7 +87,6 @@ class AudioRegionView : public RegionView bool waveform_rectified() const { return _flags & WaveformRectified; } bool waveform_logscaled() const { return _flags & WaveformLogScaled; } bool waveform_visible() const { return _flags & WaveformVisible; } - bool envelope_visible() const { return _flags & EnvelopeVisible; } void add_gain_point_event (ArdourCanvas::Item *item, GdkEvent *event); void remove_gain_point_event (ArdourCanvas::Item *item, GdkEvent *event); @@ -126,7 +125,6 @@ class AudioRegionView : public RegionView */ enum Flags { - EnvelopeVisible = 0x1, WaveformVisible = 0x4, WaveformRectified = 0x8, WaveformLogScaled = 0x10, diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 76544fe636..62387b535a 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -1967,7 +1967,8 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD gint left_automation_track (); void reset_canvas_action_sensitivity (bool); - void toggle_gain_envelope_visibility (); + void set_gain_envelope_visibility (bool); + void set_region_gain_visibility (RegionView*, bool); void toggle_gain_envelope_active (); void reset_region_gain_envelopes (); diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc index 2dde2b1977..03c5927c8d 100644 --- a/gtk2_ardour/editor_actions.cc +++ b/gtk2_ardour/editor_actions.cc @@ -1484,6 +1484,8 @@ Editor::parameter_changed (std::string p) tact->set_active (s); } } + } else if (p == "show-region-gain") { + set_gain_envelope_visibility (Config->get_show_region_gain ()); } } @@ -1686,13 +1688,6 @@ Editor::register_region_actions () toggle_reg_sens ( _region_actions, - "toggle-region-gain-envelope-visible", - _("Envelope Visible"), - sigc::mem_fun (*this, &Editor::toggle_gain_envelope_visibility) - ); - - toggle_reg_sens ( - _region_actions, "toggle-region-gain-envelope-active", _("Envelope Active"), sigc::mem_fun (*this, &Editor::toggle_gain_envelope_active) diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 2109b54ad2..cdad586125 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -4723,30 +4723,27 @@ Editor::reset_region_gain_envelopes () } void -Editor::toggle_gain_envelope_visibility () +Editor::set_region_gain_visibility (RegionView* rv, bool yn) { - if (_ignore_region_action) { - return; + AudioRegionView* arv = dynamic_cast<AudioRegionView*> (rv); + if (arv) { + arv->set_envelope_visible (yn); } +} - RegionSelection rs = get_regions_from_selection_and_entered (); - - if (!_session || rs.empty()) { +void +Editor::set_gain_envelope_visibility (bool yn) +{ + if (!_session) { return; } - _session->begin_reversible_command (_("region gain envelope visible")); - - for (RegionSelection::iterator i = rs.begin(); i != rs.end(); ++i) { - AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i); - if (arv) { - arv->region()->clear_changes (); - arv->set_envelope_visible (!arv->envelope_visible()); - _session->add_command (new StatefulDiffCommand (arv->region())); + for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { + AudioTimeAxisView* v = dynamic_cast<AudioTimeAxisView*>(*i); + if (v) { + v->audio_view()->foreach_regionview (sigc::bind (sigc::mem_fun (this, &Editor::set_region_gain_visibility), yn)); } } - - _session->commit_reversible_command (); } void diff --git a/gtk2_ardour/editor_selection.cc b/gtk2_ardour/editor_selection.cc index b99aa67ea5..ba85743e2d 100644 --- a/gtk2_ardour/editor_selection.cc +++ b/gtk2_ardour/editor_selection.cc @@ -1071,8 +1071,6 @@ Editor::sensitize_the_right_region_actions () bool have_opaque = false; bool have_non_opaque = false; bool have_not_at_natural_position = false; - bool have_envelope_visible = false; - bool have_envelope_invisible = false; bool have_envelope_active = false; bool have_envelope_inactive = false; bool have_non_unity_scale_amplitude = false; @@ -1127,24 +1125,6 @@ Editor::sensitize_the_right_region_actions () } if (ar) { - /* its a bit unfortunate that "envelope visible" is a view-only - property. we have to find the regionview to able to check - its current setting. - */ - - have_envelope_invisible = false; - - if (*i) { - AudioRegionView* arv = dynamic_cast<AudioRegionView*> (*i); - if (arv) { - if (arv->envelope_visible()) { - have_envelope_visible = true; - } else { - have_envelope_invisible = true; - } - } - } - if (ar->envelope_active()) { have_envelope_active = true; } else { @@ -1205,12 +1185,6 @@ Editor::sensitize_the_right_region_actions () if (have_audio) { - if (have_envelope_visible && !have_envelope_invisible) { - Glib::RefPtr<ToggleAction>::cast_dynamic (_region_actions->get_action("toggle-region-gain-envelope-visible"))->set_active (); - } else if (have_envelope_visible && have_envelope_invisible) { - // _region_actions->get_action("toggle-region-gain-envelope-visible")->set_inconsistent (); - } - if (have_envelope_active && !have_envelope_inactive) { Glib::RefPtr<ToggleAction>::cast_dynamic (_region_actions->get_action("toggle-region-gain-envelope-active"))->set_active (); } else if (have_envelope_active && have_envelope_inactive) { diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index 3b08cab69e..3a465c0b28 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -1055,6 +1055,14 @@ RCOptionEditor::RCOptionEditor () sigc::mem_fun (*_rc_config, &RCConfiguration::set_show_waveforms) )); + add_option (_("Editor"), + new BoolOption ( + "show-region-gain-envelopes", + _("Show gain envelopes in audio regions"), + sigc::mem_fun (*_rc_config, &RCConfiguration::get_show_region_gain), + sigc::mem_fun (*_rc_config, &RCConfiguration::set_show_region_gain) + )); + ComboOption<WaveformScale>* wfs = new ComboOption<WaveformScale> ( "waveform-scale", _("Waveform scale"), |