mirror of
https://github.com/cookiengineer/audacity
synced 2025-06-15 15:49:36 +02:00
Use an enumeration for UndoManager::PushState
This commit is contained in:
parent
73ced7b93f
commit
cd9bd79d83
@ -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;
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user