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:
parent
73ced7b93f
commit
cd9bd79d83
@ -2067,7 +2067,7 @@ void LabelTrack::OnContextMenu(wxCommandEvent & evt)
|
|||||||
{
|
{
|
||||||
p->PushState(_("Modified Label"),
|
p->PushState(_("Modified Label"),
|
||||||
_("Label Edit"),
|
_("Label Edit"),
|
||||||
PUSH_CONSOLIDATE);
|
UndoPush::CONSOLIDATE);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -2082,7 +2082,7 @@ void LabelTrack::OnContextMenu(wxCommandEvent & evt)
|
|||||||
{
|
{
|
||||||
p->PushState(_("Modified Label"),
|
p->PushState(_("Modified Label"),
|
||||||
_("Label Edit"),
|
_("Label Edit"),
|
||||||
true /* consolidate */);
|
UndoPush::CONSOLIDATE);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -2094,7 +2094,7 @@ void LabelTrack::OnContextMenu(wxCommandEvent & evt)
|
|||||||
DeleteLabel(ndx);
|
DeleteLabel(ndx);
|
||||||
p->PushState(_("Deleted Label"),
|
p->PushState(_("Deleted Label"),
|
||||||
_("Label Edit"),
|
_("Label Edit"),
|
||||||
true /* consolidate */);
|
UndoPush::CONSOLIDATE);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -406,7 +406,7 @@ void MixerTrackCluster::HandleSliderGain(const bool bWantPushState /*= false*/)
|
|||||||
mProject->RefreshTPTrack(mLeftTrack);
|
mProject->RefreshTPTrack(mLeftTrack);
|
||||||
#endif
|
#endif
|
||||||
if (bWantPushState)
|
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*/)
|
void MixerTrackCluster::HandleSliderPan(const bool bWantPushState /*= false*/)
|
||||||
@ -425,7 +425,7 @@ void MixerTrackCluster::HandleSliderPan(const bool bWantPushState /*= false*/)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (bWantPushState)
|
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)
|
void MixerTrackCluster::ResetMeter(const bool bResetClipping)
|
||||||
|
@ -4001,12 +4001,12 @@ void AudacityProject::InitialState()
|
|||||||
|
|
||||||
void AudacityProject::PushState(const wxString &desc, const wxString &shortDesc)
|
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,
|
void AudacityProject::PushState(const wxString &desc,
|
||||||
const wxString &shortDesc,
|
const wxString &shortDesc,
|
||||||
int flags )
|
UndoPush flags )
|
||||||
{
|
{
|
||||||
GetUndoManager()->PushState(mTracks, mViewInfo.selectedRegion,
|
GetUndoManager()->PushState(mTracks, mViewInfo.selectedRegion,
|
||||||
desc, shortDesc, flags);
|
desc, shortDesc, flags);
|
||||||
@ -4033,7 +4033,7 @@ void AudacityProject::PushState(const wxString &desc,
|
|||||||
|
|
||||||
if (GetTracksFitVerticallyZoomed())
|
if (GetTracksFitVerticallyZoomed())
|
||||||
this->DoZoomFitV();
|
this->DoZoomFitV();
|
||||||
if( (flags & PUSH_AUTOSAVE)!= 0)
|
if((flags & UndoPush::AUTOSAVE) != UndoPush::MINIMAL)
|
||||||
AutoSave();
|
AutoSave();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4707,7 +4707,7 @@ void AudacityProject::RefreshTPTrack(Track* pTrk, bool refreshbacking /*= true*/
|
|||||||
|
|
||||||
// TrackPanel callback method
|
// TrackPanel callback method
|
||||||
void AudacityProject::TP_PushState(const wxString &desc, const wxString &shortDesc,
|
void AudacityProject::TP_PushState(const wxString &desc, const wxString &shortDesc,
|
||||||
int flags)
|
UndoPush flags)
|
||||||
{
|
{
|
||||||
PushState(desc, shortDesc, flags);
|
PushState(desc, shortDesc, flags);
|
||||||
}
|
}
|
||||||
@ -4973,7 +4973,7 @@ void AudacityProject::SetTrackGain(Track * track, LWSlider * slider)
|
|||||||
if (link)
|
if (link)
|
||||||
link->SetGain(newValue);
|
link->SetGain(newValue);
|
||||||
|
|
||||||
PushState(_("Adjusted gain"), _("Gain"), PUSH_CONSOLIDATE);
|
PushState(_("Adjusted gain"), _("Gain"), UndoPush::CONSOLIDATE);
|
||||||
|
|
||||||
GetTrackPanel()->RefreshTrack(track);
|
GetTrackPanel()->RefreshTrack(track);
|
||||||
}
|
}
|
||||||
@ -4990,7 +4990,7 @@ void AudacityProject::SetTrackPan(Track * track, LWSlider * slider)
|
|||||||
if (link)
|
if (link)
|
||||||
link->SetPan(newValue);
|
link->SetPan(newValue);
|
||||||
|
|
||||||
PushState(_("Adjusted Pan"), _("Pan"), PUSH_CONSOLIDATE);
|
PushState(_("Adjusted Pan"), _("Pan"), UndoPush::CONSOLIDATE);
|
||||||
|
|
||||||
GetTrackPanel()->RefreshTrack(track);
|
GetTrackPanel()->RefreshTrack(track);
|
||||||
}
|
}
|
||||||
|
@ -90,6 +90,7 @@ class Regions;
|
|||||||
|
|
||||||
class LWSlider;
|
class LWSlider;
|
||||||
class UndoManager;
|
class UndoManager;
|
||||||
|
enum class UndoPush;
|
||||||
|
|
||||||
AudacityProject *CreateNewAudacityProject();
|
AudacityProject *CreateNewAudacityProject();
|
||||||
AUDACITY_DLL_API AudacityProject *GetActiveProject();
|
AUDACITY_DLL_API AudacityProject *GetActiveProject();
|
||||||
@ -399,7 +400,7 @@ class AUDACITY_DLL_API AudacityProject: public wxFrame,
|
|||||||
virtual ToolsToolBar * TP_GetToolsToolBar();
|
virtual ToolsToolBar * TP_GetToolsToolBar();
|
||||||
|
|
||||||
virtual void TP_PushState(const wxString &longDesc, const wxString &shortDesc,
|
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
|
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
|
// a crash, as it can take many seconds for large (eg. 10 track-hours) projects
|
||||||
virtual void TP_RedrawScrollbars();
|
virtual void TP_RedrawScrollbars();
|
||||||
@ -486,8 +487,8 @@ public:
|
|||||||
static void AllProjectsDeleteLock();
|
static void AllProjectsDeleteLock();
|
||||||
static void AllProjectsDeleteUnlock();
|
static void AllProjectsDeleteUnlock();
|
||||||
|
|
||||||
void PushState(const wxString &desc, const wxString &shortDesc); // use PUSH_AUTOSAVE
|
void PushState(const wxString &desc, const wxString &shortDesc); // use UndoPush::AUTOSAVE
|
||||||
void PushState(const wxString &desc, const wxString &shortDesc, int flags);
|
void PushState(const wxString &desc, const wxString &shortDesc, UndoPush flags);
|
||||||
void RollbackState();
|
void RollbackState();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -1493,14 +1493,14 @@ void TrackPanel::OnPaint(wxPaintEvent & /* event */)
|
|||||||
/// Makes our Parent (well, whoever is listening to us) push their state.
|
/// 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.
|
/// this causes application state to be preserved on a stack for undo ops.
|
||||||
void TrackPanel::MakeParentPushState(const wxString &desc, const wxString &shortDesc,
|
void TrackPanel::MakeParentPushState(const wxString &desc, const wxString &shortDesc,
|
||||||
int flags)
|
UndoPush flags)
|
||||||
{
|
{
|
||||||
mListener->TP_PushState(desc, shortDesc, flags);
|
mListener->TP_PushState(desc, shortDesc, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackPanel::MakeParentPushState(const wxString &desc, const wxString &shortDesc)
|
void TrackPanel::MakeParentPushState(const wxString &desc, const wxString &shortDesc)
|
||||||
{
|
{
|
||||||
MakeParentPushState(desc, shortDesc, PUSH_AUTOSAVE);
|
MakeParentPushState(desc, shortDesc, UndoPush::AUTOSAVE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackPanel::MakeParentModifyState(bool bWantsAutoSave)
|
void TrackPanel::MakeParentModifyState(bool bWantsAutoSave)
|
||||||
@ -3306,7 +3306,7 @@ void TrackPanel::Stretch(int mouseXCoordinate, int trackLeftEdge,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
MakeParentPushState(_("Stretch Note Track"), _("Stretch"),
|
MakeParentPushState(_("Stretch Note Track"), _("Stretch"),
|
||||||
PUSH_CONSOLIDATE | PUSH_AUTOSAVE);
|
UndoPush::CONSOLIDATE | UndoPush::AUTOSAVE);
|
||||||
mStretched = true;
|
mStretched = true;
|
||||||
Refresh(false);
|
Refresh(false);
|
||||||
}
|
}
|
||||||
@ -3837,7 +3837,7 @@ void TrackPanel::HandleSlide(wxMouseEvent & event)
|
|||||||
consolidate = true;
|
consolidate = true;
|
||||||
}
|
}
|
||||||
MakeParentPushState(msg, _("Time-Shift"),
|
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.
|
mDrawingTrack=NULL; //Set this to NULL so it will catch improper drag events.
|
||||||
MakeParentPushState(_("Moved Samples"),
|
MakeParentPushState(_("Moved Samples"),
|
||||||
_("Sample Edit"),
|
_("Sample Edit"),
|
||||||
PUSH_CONSOLIDATE|PUSH_AUTOSAVE);
|
UndoPush::CONSOLIDATE | UndoPush::AUTOSAVE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -5426,7 +5426,7 @@ void TrackPanel::HandleSliders(wxMouseEvent &event, bool pan)
|
|||||||
#endif
|
#endif
|
||||||
MakeParentPushState(pan ? _("Moved pan slider") : _("Moved gain slider"),
|
MakeParentPushState(pan ? _("Moved pan slider") : _("Moved gain slider"),
|
||||||
pan ? _("Pan") : _("Gain"),
|
pan ? _("Pan") : _("Gain"),
|
||||||
PUSH_CONSOLIDATE);
|
UndoPush::CONSOLIDATE);
|
||||||
#ifdef EXPERIMENTAL_MIDI_OUT
|
#ifdef EXPERIMENTAL_MIDI_OUT
|
||||||
} else {
|
} else {
|
||||||
MakeParentPushState(_("Moved velocity slider"), _("Velocity"), true);
|
MakeParentPushState(_("Moved velocity slider"), _("Velocity"), true);
|
||||||
@ -6441,7 +6441,7 @@ void TrackPanel::OnKeyDown(wxKeyEvent & event)
|
|||||||
if (lt->OnKeyDown(mViewInfo->selectedRegion, event))
|
if (lt->OnKeyDown(mViewInfo->selectedRegion, event))
|
||||||
MakeParentPushState(_("Modified Label"),
|
MakeParentPushState(_("Modified Label"),
|
||||||
_("Label Edit"),
|
_("Label Edit"),
|
||||||
PUSH_CONSOLIDATE);
|
UndoPush::CONSOLIDATE);
|
||||||
|
|
||||||
// Make sure caret is in view
|
// Make sure caret is in view
|
||||||
int x;
|
int x;
|
||||||
@ -6485,7 +6485,7 @@ void TrackPanel::OnChar(wxKeyEvent & event)
|
|||||||
if (((LabelTrack *)t)->OnChar(mViewInfo->selectedRegion, event))
|
if (((LabelTrack *)t)->OnChar(mViewInfo->selectedRegion, event))
|
||||||
MakeParentPushState(_("Modified Label"),
|
MakeParentPushState(_("Modified Label"),
|
||||||
_("Label Edit"),
|
_("Label Edit"),
|
||||||
PUSH_CONSOLIDATE);
|
UndoPush::CONSOLIDATE);
|
||||||
|
|
||||||
// If selection modified, refresh
|
// If selection modified, refresh
|
||||||
// Otherwise, refresh track display if the keystroke was handled
|
// 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;
|
handled = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -6886,7 +6886,7 @@ void TrackPanel::HandleGlyphDragRelease(LabelTrack * lTrack, wxMouseEvent & even
|
|||||||
*mViewInfo, &mViewInfo->selectedRegion)) {
|
*mViewInfo, &mViewInfo->selectedRegion)) {
|
||||||
MakeParentPushState(_("Modified Label"),
|
MakeParentPushState(_("Modified Label"),
|
||||||
_("Label Edit"),
|
_("Label Edit"),
|
||||||
PUSH_CONSOLIDATE);
|
UndoPush::CONSOLIDATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
//If we are adjusting a label on a labeltrack, do not do anything
|
//If we are adjusting a label on a labeltrack, do not do anything
|
||||||
|
@ -457,9 +457,9 @@ protected:
|
|||||||
virtual void MakeParentRedrawScrollbars();
|
virtual void MakeParentRedrawScrollbars();
|
||||||
|
|
||||||
// AS: Pushing the state preserves state for Undo operations.
|
// 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,
|
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
|
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
|
// a crash, as it can take many seconds for large (eg. 10 track-hours) projects
|
||||||
|
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
class ToolsToolBar;
|
class ToolsToolBar;
|
||||||
class ControlToolBar;
|
class ControlToolBar;
|
||||||
|
enum class UndoPush;
|
||||||
|
|
||||||
class AUDACITY_DLL_API TrackPanelListener {
|
class AUDACITY_DLL_API TrackPanelListener {
|
||||||
|
|
||||||
@ -26,7 +27,7 @@ class AUDACITY_DLL_API TrackPanelListener {
|
|||||||
virtual ToolsToolBar * TP_GetToolsToolBar() = 0;
|
virtual ToolsToolBar * TP_GetToolsToolBar() = 0;
|
||||||
|
|
||||||
virtual void TP_PushState(const wxString &shortDesc, const wxString &longDesc,
|
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
|
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
|
// a crash, as it can take many seconds for large (eg. 10 track-hours) projects
|
||||||
virtual void TP_RedrawScrollbars() = 0;
|
virtual void TP_RedrawScrollbars() = 0;
|
||||||
|
@ -214,12 +214,12 @@ void UndoManager::PushState(TrackList * l,
|
|||||||
const SelectedRegion &selectedRegion,
|
const SelectedRegion &selectedRegion,
|
||||||
const wxString &longDescription,
|
const wxString &longDescription,
|
||||||
const wxString &shortDescription,
|
const wxString &shortDescription,
|
||||||
int flags)
|
UndoPush flags)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
// If consolidate is set to true, group up to 3 identical operations.
|
// 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 < 2) {
|
||||||
consolidationCount++;
|
consolidationCount++;
|
||||||
ModifyState(l, selectedRegion);
|
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);
|
WX_DEFINE_USER_EXPORTED_ARRAY_DOUBLE(wxLongLong_t, SpaceArray, class AUDACITY_DLL_API);
|
||||||
|
|
||||||
// These flags control what extra to do on a PushState
|
// These flags control what extra to do on a PushState
|
||||||
// Default is PUSH_AUTOSAVE
|
// Default is AUTOSAVE
|
||||||
// Frequent/faster actions use PUSH_CONSOLIDATE
|
// Frequent/faster actions use CONSOLIDATE
|
||||||
const int PUSH_MINIMAL = 0;
|
enum class UndoPush {
|
||||||
const int PUSH_CONSOLIDATE = 1;
|
MINIMAL = 0,
|
||||||
const int PUSH_AUTOSAVE = 2;
|
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 {
|
class AUDACITY_DLL_API UndoManager {
|
||||||
public:
|
public:
|
||||||
@ -83,7 +90,7 @@ class AUDACITY_DLL_API UndoManager {
|
|||||||
void PushState(TrackList * l,
|
void PushState(TrackList * l,
|
||||||
const SelectedRegion &selectedRegion,
|
const SelectedRegion &selectedRegion,
|
||||||
const wxString &longDescription, const wxString &shortDescription,
|
const wxString &longDescription, const wxString &shortDescription,
|
||||||
int flags = PUSH_AUTOSAVE);
|
UndoPush flags = UndoPush::AUTOSAVE);
|
||||||
void ModifyState(TrackList * l,
|
void ModifyState(TrackList * l,
|
||||||
const SelectedRegion &selectedRegion);
|
const SelectedRegion &selectedRegion);
|
||||||
void ClearStates();
|
void ClearStates();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user