<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'>
<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'>
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 ();
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 ();
if ((height/wcnt) < NAME_HIGHLIGHT_THRESH) {
gain_line->hide ();
} else {
- if (_flags & EnvelopeVisible) {
+ if (Config->get_show_region_gain ()) {
gain_line->show ();
}
}
void
AudioRegionView::unhide_envelope ()
{
- if (gain_line && (_flags & EnvelopeVisible)) {
+ if (gain_line) {
gain_line->show ();
}
}
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 ();
}
}
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");
}
}
- 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;
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 ();
}
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);
*/
enum Flags {
- EnvelopeVisible = 0x1,
WaveformVisible = 0x4,
WaveformRectified = 0x8,
WaveformLogScaled = 0x10,
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 ();
tact->set_active (s);
}
}
+ } else if (p == "show-region-gain") {
+ set_gain_envelope_visibility (Config->get_show_region_gain ());
}
}
reg_sens (_region_actions, "reset-region-scale-amplitude", _("Reset Gain"), sigc::mem_fun (*this, &Editor::reset_region_scale_amplitude));
- 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",
}
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
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;
}
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 {
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) {
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"),