1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-16 08:09:32 +02:00

Use an enumeration for UndoManager::PushState

This commit is contained in:
Paul Licameli 2016-02-24 12:06:29 -05:00
parent 73ced7b93f
commit cd9bd79d83
9 changed files with 44 additions and 35 deletions

View File

@ -2067,7 +2067,7 @@ void LabelTrack::OnContextMenu(wxCommandEvent & evt)
{
p->PushState(_("Modified Label"),
_("Label Edit"),
PUSH_CONSOLIDATE);
UndoPush::CONSOLIDATE);
}
break;
@ -2082,7 +2082,7 @@ void LabelTrack::OnContextMenu(wxCommandEvent & evt)
{
p->PushState(_("Modified Label"),
_("Label Edit"),
true /* consolidate */);
UndoPush::CONSOLIDATE);
}
break;
@ -2094,7 +2094,7 @@ void LabelTrack::OnContextMenu(wxCommandEvent & evt)
DeleteLabel(ndx);
p->PushState(_("Deleted Label"),
_("Label Edit"),
true /* consolidate */);
UndoPush::CONSOLIDATE);
}
break;
}

View File

@ -406,7 +406,7 @@ void MixerTrackCluster::HandleSliderGain(const bool bWantPushState /*= false*/)
mProject->RefreshTPTrack(mLeftTrack);
#endif
if (bWantPushState)
mProject->TP_PushState(_("Moved gain slider"), _("Gain"), PUSH_CONSOLIDATE );
mProject->TP_PushState(_("Moved gain slider"), _("Gain"), UndoPush::CONSOLIDATE );
}
void MixerTrackCluster::HandleSliderPan(const bool bWantPushState /*= false*/)
@ -425,7 +425,7 @@ void MixerTrackCluster::HandleSliderPan(const bool bWantPushState /*= false*/)
#endif
if (bWantPushState)
mProject->TP_PushState(_("Moved pan slider"), _("Pan"), PUSH_CONSOLIDATE );
mProject->TP_PushState(_("Moved pan slider"), _("Pan"), UndoPush::CONSOLIDATE );
}
void MixerTrackCluster::ResetMeter(const bool bResetClipping)

View File

@ -4001,12 +4001,12 @@ void AudacityProject::InitialState()
void AudacityProject::PushState(const wxString &desc, const wxString &shortDesc)
{
PushState(desc, shortDesc, PUSH_AUTOSAVE);
PushState(desc, shortDesc, UndoPush::AUTOSAVE);
}
void AudacityProject::PushState(const wxString &desc,
const wxString &shortDesc,
int flags )
UndoPush flags )
{
GetUndoManager()->PushState(mTracks, mViewInfo.selectedRegion,
desc, shortDesc, flags);
@ -4033,7 +4033,7 @@ void AudacityProject::PushState(const wxString &desc,
if (GetTracksFitVerticallyZoomed())
this->DoZoomFitV();
if( (flags & PUSH_AUTOSAVE)!= 0)
if((flags & UndoPush::AUTOSAVE) != UndoPush::MINIMAL)
AutoSave();
}
@ -4707,7 +4707,7 @@ void AudacityProject::RefreshTPTrack(Track* pTrk, bool refreshbacking /*= true*/
// TrackPanel callback method
void AudacityProject::TP_PushState(const wxString &desc, const wxString &shortDesc,
int flags)
UndoPush flags)
{
PushState(desc, shortDesc, flags);
}
@ -4973,7 +4973,7 @@ void AudacityProject::SetTrackGain(Track * track, LWSlider * slider)
if (link)
link->SetGain(newValue);
PushState(_("Adjusted gain"), _("Gain"), PUSH_CONSOLIDATE);
PushState(_("Adjusted gain"), _("Gain"), UndoPush::CONSOLIDATE);
GetTrackPanel()->RefreshTrack(track);
}
@ -4990,7 +4990,7 @@ void AudacityProject::SetTrackPan(Track * track, LWSlider * slider)
if (link)
link->SetPan(newValue);
PushState(_("Adjusted Pan"), _("Pan"), PUSH_CONSOLIDATE);
PushState(_("Adjusted Pan"), _("Pan"), UndoPush::CONSOLIDATE);
GetTrackPanel()->RefreshTrack(track);
}

View File

@ -90,6 +90,7 @@ class Regions;
class LWSlider;
class UndoManager;
enum class UndoPush;
AudacityProject *CreateNewAudacityProject();
AUDACITY_DLL_API AudacityProject *GetActiveProject();
@ -399,7 +400,7 @@ class AUDACITY_DLL_API AudacityProject: public wxFrame,
virtual ToolsToolBar * TP_GetToolsToolBar();
virtual void TP_PushState(const wxString &longDesc, const wxString &shortDesc,
int flags) override;
UndoPush flags) override;
virtual void TP_ModifyState(bool bWantsAutoSave); // if true, writes auto-save file. Should set only if you really want the state change restored after
// a crash, as it can take many seconds for large (eg. 10 track-hours) projects
virtual void TP_RedrawScrollbars();
@ -486,8 +487,8 @@ public:
static void AllProjectsDeleteLock();
static void AllProjectsDeleteUnlock();
void PushState(const wxString &desc, const wxString &shortDesc); // use PUSH_AUTOSAVE
void PushState(const wxString &desc, const wxString &shortDesc, int flags);
void PushState(const wxString &desc, const wxString &shortDesc); // use UndoPush::AUTOSAVE
void PushState(const wxString &desc, const wxString &shortDesc, UndoPush flags);
void RollbackState();
private:

View File

@ -1493,14 +1493,14 @@ void TrackPanel::OnPaint(wxPaintEvent & /* event */)
/// Makes our Parent (well, whoever is listening to us) push their state.
/// this causes application state to be preserved on a stack for undo ops.
void TrackPanel::MakeParentPushState(const wxString &desc, const wxString &shortDesc,
int flags)
UndoPush flags)
{
mListener->TP_PushState(desc, shortDesc, flags);
}
void TrackPanel::MakeParentPushState(const wxString &desc, const wxString &shortDesc)
{
MakeParentPushState(desc, shortDesc, PUSH_AUTOSAVE);
MakeParentPushState(desc, shortDesc, UndoPush::AUTOSAVE);
}
void TrackPanel::MakeParentModifyState(bool bWantsAutoSave)
@ -3306,7 +3306,7 @@ void TrackPanel::Stretch(int mouseXCoordinate, int trackLeftEdge,
break;
}
MakeParentPushState(_("Stretch Note Track"), _("Stretch"),
PUSH_CONSOLIDATE | PUSH_AUTOSAVE);
UndoPush::CONSOLIDATE | UndoPush::AUTOSAVE);
mStretched = true;
Refresh(false);
}
@ -3837,7 +3837,7 @@ void TrackPanel::HandleSlide(wxMouseEvent & event)
consolidate = true;
}
MakeParentPushState(msg, _("Time-Shift"),
consolidate ? (PUSH_CONSOLIDATE) : (PUSH_AUTOSAVE));
consolidate ? (UndoPush::CONSOLIDATE) : (UndoPush::AUTOSAVE));
}
}
@ -5176,7 +5176,7 @@ void TrackPanel::HandleSampleEditingButtonUp( wxMouseEvent & WXUNUSED(event))
mDrawingTrack=NULL; //Set this to NULL so it will catch improper drag events.
MakeParentPushState(_("Moved Samples"),
_("Sample Edit"),
PUSH_CONSOLIDATE|PUSH_AUTOSAVE);
UndoPush::CONSOLIDATE | UndoPush::AUTOSAVE);
}
@ -5426,7 +5426,7 @@ void TrackPanel::HandleSliders(wxMouseEvent &event, bool pan)
#endif
MakeParentPushState(pan ? _("Moved pan slider") : _("Moved gain slider"),
pan ? _("Pan") : _("Gain"),
PUSH_CONSOLIDATE);
UndoPush::CONSOLIDATE);
#ifdef EXPERIMENTAL_MIDI_OUT
} else {
MakeParentPushState(_("Moved velocity slider"), _("Velocity"), true);
@ -6441,7 +6441,7 @@ void TrackPanel::OnKeyDown(wxKeyEvent & event)
if (lt->OnKeyDown(mViewInfo->selectedRegion, event))
MakeParentPushState(_("Modified Label"),
_("Label Edit"),
PUSH_CONSOLIDATE);
UndoPush::CONSOLIDATE);
// Make sure caret is in view
int x;
@ -6485,7 +6485,7 @@ void TrackPanel::OnChar(wxKeyEvent & event)
if (((LabelTrack *)t)->OnChar(mViewInfo->selectedRegion, event))
MakeParentPushState(_("Modified Label"),
_("Label Edit"),
PUSH_CONSOLIDATE);
UndoPush::CONSOLIDATE);
// If selection modified, refresh
// Otherwise, refresh track display if the keystroke was handled
@ -6737,7 +6737,7 @@ bool TrackPanel::HandleTrackLocationMouseEvent(WaveTrack * track, wxRect &rect,
}
}
MakeParentPushState(_("Merged Clips"),_("Merge"), PUSH_CONSOLIDATE);
MakeParentPushState(_("Merged Clips"),_("Merge"), UndoPush::CONSOLIDATE);
handled = true;
}
}
@ -6886,7 +6886,7 @@ void TrackPanel::HandleGlyphDragRelease(LabelTrack * lTrack, wxMouseEvent & even
*mViewInfo, &mViewInfo->selectedRegion)) {
MakeParentPushState(_("Modified Label"),
_("Label Edit"),
PUSH_CONSOLIDATE);
UndoPush::CONSOLIDATE);
}
//If we are adjusting a label on a labeltrack, do not do anything

View File

@ -457,9 +457,9 @@ protected:
virtual void MakeParentRedrawScrollbars();
// AS: Pushing the state preserves state for Undo operations.
virtual void MakeParentPushState(const wxString &desc, const wxString &shortDesc); // use PUSH_AUTOSAVE
virtual void MakeParentPushState(const wxString &desc, const wxString &shortDesc); // use UndoPush::AUTOSAVE
virtual void MakeParentPushState(const wxString &desc, const wxString &shortDesc,
int flags);
UndoPush flags);
virtual void MakeParentModifyState(bool bWantsAutoSave); // if true, writes auto-save file. Should set only if you really want the state change restored after
// a crash, as it can take many seconds for large (eg. 10 track-hours) projects

View File

@ -13,6 +13,7 @@
class ToolsToolBar;
class ControlToolBar;
enum class UndoPush;
class AUDACITY_DLL_API TrackPanelListener {
@ -26,7 +27,7 @@ class AUDACITY_DLL_API TrackPanelListener {
virtual ToolsToolBar * TP_GetToolsToolBar() = 0;
virtual void TP_PushState(const wxString &shortDesc, const wxString &longDesc,
int flags) = 0;
UndoPush flags) = 0;
virtual void TP_ModifyState(bool bWantsAutoSave) = 0; // if true, writes auto-save file. Should set only if you really want the state change restored after
// a crash, as it can take many seconds for large (eg. 10 track-hours) projects
virtual void TP_RedrawScrollbars() = 0;

View File

@ -214,12 +214,12 @@ void UndoManager::PushState(TrackList * l,
const SelectedRegion &selectedRegion,
const wxString &longDescription,
const wxString &shortDescription,
int flags)
UndoPush flags)
{
unsigned int i;
// If consolidate is set to true, group up to 3 identical operations.
if (((flags&PUSH_CONSOLIDATE)!=0) && lastAction == longDescription &&
if (((flags & UndoPush::CONSOLIDATE) != UndoPush::MINIMAL) && lastAction == longDescription &&
consolidationCount < 2) {
consolidationCount++;
ModifyState(l, selectedRegion);

View File

@ -69,11 +69,18 @@ WX_DEFINE_USER_EXPORTED_ARRAY(UndoStackElem *, UndoStack, class AUDACITY_DLL_API
WX_DEFINE_USER_EXPORTED_ARRAY_DOUBLE(wxLongLong_t, SpaceArray, class AUDACITY_DLL_API);
// These flags control what extra to do on a PushState
// Default is PUSH_AUTOSAVE
// Frequent/faster actions use PUSH_CONSOLIDATE
const int PUSH_MINIMAL = 0;
const int PUSH_CONSOLIDATE = 1;
const int PUSH_AUTOSAVE = 2;
// Default is AUTOSAVE
// Frequent/faster actions use CONSOLIDATE
enum class UndoPush {
MINIMAL = 0,
CONSOLIDATE = 1 << 0,
AUTOSAVE = 1 << 1
};
inline UndoPush operator | (UndoPush a, UndoPush b)
{ return static_cast<UndoPush>(static_cast<int>(a) | static_cast<int>(b)); }
inline UndoPush operator & (UndoPush a, UndoPush b)
{ return static_cast<UndoPush>(static_cast<int>(a) & static_cast<int>(b)); }
class AUDACITY_DLL_API UndoManager {
public:
@ -83,7 +90,7 @@ class AUDACITY_DLL_API UndoManager {
void PushState(TrackList * l,
const SelectedRegion &selectedRegion,
const wxString &longDescription, const wxString &shortDescription,
int flags = PUSH_AUTOSAVE);
UndoPush flags = UndoPush::AUTOSAVE);
void ModifyState(TrackList * l,
const SelectedRegion &selectedRegion);
void ClearStates();