Add reset region gain action for selected regions

This commit is contained in:
Tim Mayberry 2017-03-04 15:20:56 +10:00
parent e8b5b4fcf3
commit ddb4b8a7c3
4 changed files with 38 additions and 0 deletions

View File

@ -343,6 +343,7 @@
<menuitem action='normalize-region'/>
<menuitem action='boost-region-gain'/>
<menuitem action='cut-region-gain'/>
<menuitem action='reset-region-gain'/>
<menuitem action='reset-region-gain-envelopes'/>
<menuitem action='toggle-region-gain-envelope-active'/>
</menu>
@ -788,6 +789,7 @@
<menuitem action='normalize-region'/>
<menuitem action='boost-region-gain'/>
<menuitem action='cut-region-gain'/>
<menuitem action='reset-region-gain'/>
<menuitem action='reset-region-gain-envelopes'/>
<menuitem action='toggle-region-gain-envelope-active'/>
</menu>

View File

@ -1267,6 +1267,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
void normalize_region ();
void reset_region_scale_amplitude ();
void adjust_region_gain (bool up);
void reset_region_gain ();
void quantize_region ();
void quantize_regions (const RegionSelection& rs);
void legatize_region (bool shrink_only);

View File

@ -1799,6 +1799,9 @@ Editor::register_region_actions ()
/* Cut selected region gain */
register_region_action (_region_actions, RegionActionTarget (SelectedRegions|EnteredRegions), "cut-region-gain", _("Cut Gain"), sigc::bind (sigc::mem_fun(*this, &Editor::adjust_region_gain), false));
/* Reset selected region gain */
register_region_action (_region_actions, RegionActionTarget (SelectedRegions|EnteredRegions), "reset-region-gain", _("Reset Gain"), sigc::mem_fun(*this, &Editor::reset_region_gain));
/* Open the pitch shift dialogue for any selected audio regions */
register_region_action (_region_actions, RegionActionTarget (SelectedRegions|EnteredRegions), "pitch-shift-region", _("Pitch Shift..."), sigc::mem_fun (*this, &Editor::pitch_shift_region));

View File

@ -5217,6 +5217,38 @@ Editor::adjust_region_gain (bool up)
}
}
void
Editor::reset_region_gain ()
{
RegionSelection rs = get_regions_from_selection_and_entered ();
if (!_session || rs.empty()) {
return;
}
bool in_command = false;
for (RegionSelection::iterator r = rs.begin(); r != rs.end(); ++r) {
AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*r);
if (!arv) {
continue;
}
arv->region()->clear_changes ();
arv->audio_region()->set_scale_amplitude (1.0f);
if (!in_command) {
begin_reversible_command ("reset region gain");
in_command = true;
}
_session->add_command (new StatefulDiffCommand (arv->region()));
}
if (in_command) {
commit_reversible_command ();
}
}
void
Editor::reverse_region ()