add toggles for region fade in/out/both active, plus toggle for region fades visibility
git-svn-id: svn://localhost/ardour2/branches/3.0@3904 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
862d8e651f
commit
c64e96b6a8
|
@ -213,6 +213,7 @@
|
||||||
<menuitem action='cut-region-gain'/>
|
<menuitem action='cut-region-gain'/>
|
||||||
<menuitem action='pitch-shift-region'/>
|
<menuitem action='pitch-shift-region'/>
|
||||||
<separator/>
|
<separator/>
|
||||||
|
<menuitem action='toggle-selected-region-fades'/>
|
||||||
<menuitem action='toggle-region-fades'/>
|
<menuitem action='toggle-region-fades'/>
|
||||||
</menu>
|
</menu>
|
||||||
|
|
||||||
|
@ -221,6 +222,7 @@
|
||||||
<menuitem action='show-editor-mixer'/>
|
<menuitem action='show-editor-mixer'/>
|
||||||
<menuitem action='ToggleMeasureVisibility'/>
|
<menuitem action='ToggleMeasureVisibility'/>
|
||||||
<menuitem action='ToggleLogoVisibility'/>
|
<menuitem action='ToggleLogoVisibility'/>
|
||||||
|
<menuitem action='toggle-region-fades-visible'/>
|
||||||
<separator/>
|
<separator/>
|
||||||
<menu action="PrimaryClockMenu">
|
<menu action="PrimaryClockMenu">
|
||||||
<menuitem action="primary-clock-bbt"/>
|
<menuitem action="primary-clock-bbt"/>
|
||||||
|
|
|
@ -228,6 +228,10 @@
|
||||||
<menuitem action='boost-region-gain'/>
|
<menuitem action='boost-region-gain'/>
|
||||||
<menuitem action='cut-region-gain'/>
|
<menuitem action='cut-region-gain'/>
|
||||||
<menuitem action='pitch-shift-region'/>
|
<menuitem action='pitch-shift-region'/>
|
||||||
|
<menuitem action='toggle-opaque-region'/>
|
||||||
|
<menuitem action='toggle-selected-region-fade-in'/>
|
||||||
|
<menuitem action='toggle-selected-region-fade-out'/>
|
||||||
|
<menuitem action='toggle-selected-region-fades'/>
|
||||||
<separator/>
|
<separator/>
|
||||||
<menuitem action='duplicate-region'/>
|
<menuitem action='duplicate-region'/>
|
||||||
<menuitem action='multi-duplicate-region'/>
|
<menuitem action='multi-duplicate-region'/>
|
||||||
|
@ -377,6 +381,7 @@
|
||||||
<menuitem action='toggle-waveform-visible'/>
|
<menuitem action='toggle-waveform-visible'/>
|
||||||
<menuitem action='ToggleWaveformsWhileRecording'/>
|
<menuitem action='ToggleWaveformsWhileRecording'/>
|
||||||
<menuitem action='SyncEditorAndMixerTrackOrder'/>
|
<menuitem action='SyncEditorAndMixerTrackOrder'/>
|
||||||
|
<menuitem action='toggle-region-fades-visible'/>
|
||||||
</menu>
|
</menu>
|
||||||
<menu name='JACK' action='JACK'>
|
<menu name='JACK' action='JACK'>
|
||||||
<menuitem action='JACKDisconnect'/>
|
<menuitem action='JACKDisconnect'/>
|
||||||
|
|
|
@ -567,7 +567,9 @@ AudioRegionView::reset_fade_in_shape_width (nframes_t width)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
fade_in_shape->show();
|
if (Config->get_show_region_fades()) {
|
||||||
|
fade_in_shape->show();
|
||||||
|
}
|
||||||
|
|
||||||
float curve[npoints];
|
float curve[npoints];
|
||||||
audio_region()->fade_in()->curve().get_vector (0, audio_region()->fade_in()->back()->when, curve, npoints);
|
audio_region()->fade_in()->curve().get_vector (0, audio_region()->fade_in()->back()->when, curve, npoints);
|
||||||
|
@ -653,7 +655,9 @@ AudioRegionView::reset_fade_out_shape_width (nframes_t width)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
fade_out_shape->show();
|
if (Config->get_show_region_fades()) {
|
||||||
|
fade_out_shape->show();
|
||||||
|
}
|
||||||
|
|
||||||
float curve[npoints];
|
float curve[npoints];
|
||||||
audio_region()->fade_out()->curve().get_vector (0, audio_region()->fade_out()->back()->when, curve, npoints);
|
audio_region()->fade_out()->curve().get_vector (0, audio_region()->fade_out()->back()->when, curve, npoints);
|
||||||
|
@ -1313,3 +1317,34 @@ AudioRegionView::set_frame_color ()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
AudioRegionView::set_fade_visibility (bool yn)
|
||||||
|
{
|
||||||
|
if (yn) {
|
||||||
|
if (fade_in_shape) {
|
||||||
|
fade_in_shape->show();
|
||||||
|
}
|
||||||
|
if (fade_out_shape) {
|
||||||
|
fade_out_shape->show ();
|
||||||
|
}
|
||||||
|
if (fade_in_handle) {
|
||||||
|
fade_in_handle->show ();
|
||||||
|
}
|
||||||
|
if (fade_out_handle) {
|
||||||
|
fade_out_handle->show ();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (fade_in_shape) {
|
||||||
|
fade_in_shape->hide();
|
||||||
|
}
|
||||||
|
if (fade_out_shape) {
|
||||||
|
fade_out_shape->hide ();
|
||||||
|
}
|
||||||
|
if (fade_in_handle) {
|
||||||
|
fade_in_handle->hide ();
|
||||||
|
}
|
||||||
|
if (fade_out_handle) {
|
||||||
|
fade_out_handle->hide ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -106,6 +106,8 @@ class AudioRegionView : public RegionView
|
||||||
void reset_fade_in_shape_width (nframes_t);
|
void reset_fade_in_shape_width (nframes_t);
|
||||||
void reset_fade_out_shape_width (nframes_t);
|
void reset_fade_out_shape_width (nframes_t);
|
||||||
|
|
||||||
|
void set_fade_visibility (bool);
|
||||||
|
|
||||||
virtual void entered ();
|
virtual void entered ();
|
||||||
virtual void exited ();
|
virtual void exited ();
|
||||||
|
|
||||||
|
|
|
@ -755,6 +755,28 @@ AudioStreamView::update_rec_regions ()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
AudioStreamView::show_all_fades ()
|
||||||
|
{
|
||||||
|
for (list<RegionView*>::iterator i = region_views.begin(); i != region_views.end(); ++i) {
|
||||||
|
AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i);
|
||||||
|
if (arv) {
|
||||||
|
arv->set_fade_visibility (true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
AudioStreamView::hide_all_fades ()
|
||||||
|
{
|
||||||
|
for (list<RegionView*>::iterator i = region_views.begin(); i != region_views.end(); ++i) {
|
||||||
|
AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i);
|
||||||
|
if (arv) {
|
||||||
|
arv->set_fade_visibility (false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
AudioStreamView::show_all_xfades ()
|
AudioStreamView::show_all_xfades ()
|
||||||
{
|
{
|
||||||
|
|
|
@ -72,6 +72,9 @@ class AudioStreamView : public StreamView
|
||||||
|
|
||||||
void foreach_crossfadeview (void (CrossfadeView::*pmf)(void));
|
void foreach_crossfadeview (void (CrossfadeView::*pmf)(void));
|
||||||
|
|
||||||
|
void show_all_fades ();
|
||||||
|
void hide_all_fades ();
|
||||||
|
|
||||||
void show_all_xfades ();
|
void show_all_xfades ();
|
||||||
void hide_all_xfades ();
|
void hide_all_xfades ();
|
||||||
void hide_xfades_involving (AudioRegionView&);
|
void hide_xfades_involving (AudioRegionView&);
|
||||||
|
|
|
@ -339,6 +339,10 @@ class Editor : public PublicEditor
|
||||||
/* fades/xfades */
|
/* fades/xfades */
|
||||||
|
|
||||||
void toggle_region_fades ();
|
void toggle_region_fades ();
|
||||||
|
void toggle_region_fades_visible ();
|
||||||
|
void toggle_selected_region_fades (int dir);
|
||||||
|
void update_region_fade_visibility ();
|
||||||
|
|
||||||
void toggle_auto_xfade ();
|
void toggle_auto_xfade ();
|
||||||
void toggle_xfades_active ();
|
void toggle_xfades_active ();
|
||||||
void toggle_xfade_visibility ();
|
void toggle_xfade_visibility ();
|
||||||
|
|
|
@ -118,7 +118,16 @@ Editor::register_actions ()
|
||||||
ActionManager::session_sensitive_actions.push_back (act);
|
ActionManager::session_sensitive_actions.push_back (act);
|
||||||
act = ActionManager::register_toggle_action (editor_actions, "toggle-auto-xfades", _("Created Automatically"), mem_fun(*this, &Editor::toggle_auto_xfade));
|
act = ActionManager::register_toggle_action (editor_actions, "toggle-auto-xfades", _("Created Automatically"), mem_fun(*this, &Editor::toggle_auto_xfade));
|
||||||
ActionManager::session_sensitive_actions.push_back (act);
|
ActionManager::session_sensitive_actions.push_back (act);
|
||||||
act = ActionManager::register_toggle_action (editor_actions, "toggle-region-fades", _("Active Region Fades"), mem_fun(*this, &Editor::toggle_region_fades));
|
|
||||||
|
act = ActionManager::register_toggle_action (editor_actions, "toggle-region-fades", _("Use Region Fades (global)"), mem_fun(*this, &Editor::toggle_region_fades));
|
||||||
|
ActionManager::session_sensitive_actions.push_back (act);
|
||||||
|
act = ActionManager::register_toggle_action (editor_actions, "toggle-region-fades-visible", _("Show Region Fades"), mem_fun(*this, &Editor::toggle_region_fades_visible));
|
||||||
|
ActionManager::session_sensitive_actions.push_back (act);
|
||||||
|
act = ActionManager::register_action (editor_actions, "toggle-selected-region-fade-in", _("Toggle Region Fade In"), bind (mem_fun(*this, &Editor::toggle_selected_region_fades), 1));;
|
||||||
|
ActionManager::session_sensitive_actions.push_back (act);
|
||||||
|
act = ActionManager::register_action (editor_actions, "toggle-selected-region-fade-out", _("Toggle Region Fade Out"), bind (mem_fun(*this, &Editor::toggle_selected_region_fades), -1));;
|
||||||
|
ActionManager::session_sensitive_actions.push_back (act);
|
||||||
|
act = ActionManager::register_action (editor_actions, "toggle-selected-region-fades", _("Toggle Region Fades"), bind (mem_fun(*this, &Editor::toggle_selected_region_fades), 0));
|
||||||
ActionManager::session_sensitive_actions.push_back (act);
|
ActionManager::session_sensitive_actions.push_back (act);
|
||||||
|
|
||||||
act = ActionManager::register_action (editor_actions, "playhead-to-next-region-boundary", _("Playhead to Next Region Boundary"), bind (mem_fun(*this, &Editor::cursor_to_next_region_boundary), playhead_cursor));
|
act = ActionManager::register_action (editor_actions, "playhead-to-next-region-boundary", _("Playhead to Next Region Boundary"), bind (mem_fun(*this, &Editor::cursor_to_next_region_boundary), playhead_cursor));
|
||||||
|
@ -1664,6 +1673,12 @@ Editor::toggle_region_fades ()
|
||||||
ActionManager::toggle_config_state ("Editor", "toggle-region-fades", &Configuration::set_use_region_fades, &Configuration::get_use_region_fades);
|
ActionManager::toggle_config_state ("Editor", "toggle-region-fades", &Configuration::set_use_region_fades, &Configuration::get_use_region_fades);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Editor::toggle_region_fades_visible ()
|
||||||
|
{
|
||||||
|
ActionManager::toggle_config_state ("Editor", "toggle-region-fades-visible", &Configuration::set_show_region_fades, &Configuration::get_show_region_fades);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Editor::toggle_auto_xfade ()
|
Editor::toggle_auto_xfade ()
|
||||||
{
|
{
|
||||||
|
@ -1716,6 +1731,9 @@ Editor::parameter_changed (const char* parameter_name)
|
||||||
} else if (PARAM_IS ("xfades-visible")) {
|
} else if (PARAM_IS ("xfades-visible")) {
|
||||||
ActionManager::map_some_state ("Editor", "toggle-xfades-visible", &Configuration::get_xfades_visible);
|
ActionManager::map_some_state ("Editor", "toggle-xfades-visible", &Configuration::get_xfades_visible);
|
||||||
update_xfade_visibility ();
|
update_xfade_visibility ();
|
||||||
|
} else if (PARAM_IS ("show-region-fades")) {
|
||||||
|
ActionManager::map_some_state ("Editor", "toggle-region-fades-visible", &Configuration::get_show_region_fades);
|
||||||
|
update_region_fade_visibility ();
|
||||||
} else if (PARAM_IS ("use-region-fades")) {
|
} else if (PARAM_IS ("use-region-fades")) {
|
||||||
ActionManager::map_some_state ("Editor", "toggle-region-fades", &Configuration::get_use_region_fades);
|
ActionManager::map_some_state ("Editor", "toggle-region-fades", &Configuration::get_use_region_fades);
|
||||||
} else if (PARAM_IS ("auto-xfade")) {
|
} else if (PARAM_IS ("auto-xfade")) {
|
||||||
|
@ -1754,3 +1772,4 @@ Editor::reset_canvas_action_sensitivity (bool onoff)
|
||||||
(*x)->set_sensitive (onoff);
|
(*x)->set_sensitive (onoff);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -375,7 +375,7 @@ Editor::controls_layout_size_request (Requisition* req)
|
||||||
if (!screen) {
|
if (!screen) {
|
||||||
screen = Gdk::Screen::get_default();
|
screen = Gdk::Screen::get_default();
|
||||||
}
|
}
|
||||||
gint height = min ( (gint) pos, (screen->get_height() - 400));
|
gint height = min ( (gint) pos, (screen->get_height() - 600));
|
||||||
gint width = max (edit_controls_vbox.get_width(), controls_layout.get_width());
|
gint width = max (edit_controls_vbox.get_width(), controls_layout.get_width());
|
||||||
|
|
||||||
/* don't get too big. the fudge factors here are just guesses */
|
/* don't get too big. the fudge factors here are just guesses */
|
||||||
|
|
|
@ -64,6 +64,7 @@
|
||||||
#include "audio_time_axis.h"
|
#include "audio_time_axis.h"
|
||||||
#include "automation_time_axis.h"
|
#include "automation_time_axis.h"
|
||||||
#include "streamview.h"
|
#include "streamview.h"
|
||||||
|
#include "audio_streamview.h"
|
||||||
#include "audio_region_view.h"
|
#include "audio_region_view.h"
|
||||||
#include "midi_region_view.h"
|
#include "midi_region_view.h"
|
||||||
#include "rgb_macros.h"
|
#include "rgb_macros.h"
|
||||||
|
@ -4997,6 +4998,69 @@ Editor::set_fade_out_active (bool yn)
|
||||||
commit_reversible_command ();
|
commit_reversible_command ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Editor::toggle_selected_region_fades (int dir)
|
||||||
|
{
|
||||||
|
RegionSelection rs;
|
||||||
|
RegionSelection::iterator i;
|
||||||
|
boost::shared_ptr<AudioRegion> ar;
|
||||||
|
bool yn;
|
||||||
|
|
||||||
|
get_regions_for_action (rs);
|
||||||
|
|
||||||
|
if (rs.empty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = rs.begin(); i != rs.end(); ++i) {
|
||||||
|
if ((ar = boost::dynamic_pointer_cast<AudioRegion>((*i)->region())) != 0) {
|
||||||
|
if (dir == -1) {
|
||||||
|
yn = ar->fade_out_active ();
|
||||||
|
} else {
|
||||||
|
yn = ar->fade_in_active ();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i == rs.end()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* XXX should this undo-able? */
|
||||||
|
|
||||||
|
for (RegionSelection::iterator i = rs.begin(); i != rs.end(); ++i) {
|
||||||
|
if ((ar = boost::dynamic_pointer_cast<AudioRegion>((*i)->region())) == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (dir == 1 || dir == 0) {
|
||||||
|
ar->set_fade_in_active (!yn);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dir == -1 || dir == 0) {
|
||||||
|
ar->set_fade_out_active (!yn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Update region fade visibility after its configuration has been changed */
|
||||||
|
void
|
||||||
|
Editor::update_region_fade_visibility ()
|
||||||
|
{
|
||||||
|
bool _fade_visibility = Config->get_show_region_fades ();
|
||||||
|
|
||||||
|
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) {
|
||||||
|
AudioTimeAxisView* v = dynamic_cast<AudioTimeAxisView*>(*i);
|
||||||
|
if (v) {
|
||||||
|
if (_fade_visibility) {
|
||||||
|
v->audio_view()->show_all_fades ();
|
||||||
|
} else {
|
||||||
|
v->audio_view()->hide_all_fades ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** Update crossfade visibility after its configuration has been changed */
|
/** Update crossfade visibility after its configuration has been changed */
|
||||||
void
|
void
|
||||||
|
@ -6120,3 +6184,4 @@ Editor::end_visual_state_op (uint32_t n)
|
||||||
|
|
||||||
return false; // do not call again
|
return false; // do not call again
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user