don't prompt to save on exit if there's no undo info
This commit is contained in:
@@ -621,7 +621,6 @@ ScreenEdit::ScreenEdit( CString sName ) : ScreenWithMenuElements( sName )
|
|||||||
void ScreenEdit::Init()
|
void ScreenEdit::Init()
|
||||||
{
|
{
|
||||||
EDIT_MODE.Load(m_sName,"EditMode");
|
EDIT_MODE.Load(m_sName,"EditMode");
|
||||||
|
|
||||||
ScreenWithMenuElements::Init();
|
ScreenWithMenuElements::Init();
|
||||||
|
|
||||||
InitEditMappings();
|
InitEditMappings();
|
||||||
@@ -1371,11 +1370,14 @@ void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB )
|
|||||||
GAMESTATE->m_pCurSteps[PLAYER_1].Set( pSteps );
|
GAMESTATE->m_pCurSteps[PLAYER_1].Set( pSteps );
|
||||||
m_pSteps = pSteps;
|
m_pSteps = pSteps;
|
||||||
pSteps->GetNoteData( m_NoteDataEdit );
|
pSteps->GetNoteData( m_NoteDataEdit );
|
||||||
SCREENMAN->SystemMessage( ssprintf(
|
CString s = ssprintf(
|
||||||
"Switched to %s %s '%s'",
|
"Switched to %s %s '%s' (%d of %d)",
|
||||||
GAMEMAN->StepsTypeToString( pSteps->m_StepsType ).c_str(),
|
GAMEMAN->StepsTypeToString( pSteps->m_StepsType ).c_str(),
|
||||||
DifficultyToString( pSteps->GetDifficulty() ).c_str(),
|
DifficultyToString( pSteps->GetDifficulty() ).c_str(),
|
||||||
pSteps->GetDescription().c_str() ) );
|
pSteps->GetDescription().c_str(),
|
||||||
|
it - vSteps.begin(),
|
||||||
|
vSteps.size() );
|
||||||
|
SCREENMAN->SystemMessage( s );
|
||||||
m_soundSwitch.Play();
|
m_soundSwitch.Play();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -2551,14 +2553,18 @@ void ScreenEdit::HandleMainMenuChoice( MainMenuChoice c, const vector<int> &iAns
|
|||||||
|
|
||||||
pSteps->SetSavedToDisk( true );
|
pSteps->SetSavedToDisk( true );
|
||||||
CopyToLastSave();
|
CopyToLastSave();
|
||||||
|
ClearUndo();
|
||||||
|
|
||||||
NotesWriterSM w;
|
NotesWriterSM w;
|
||||||
w.WriteEditFileToMachine( pSong, pSteps );
|
w.WriteEditFileToMachine( pSong, pSteps );
|
||||||
|
|
||||||
SCREENMAN->ZeroNextUpdate();
|
SCREENMAN->ZeroNextUpdate();
|
||||||
|
|
||||||
/* FIXME
|
// TODO: make localizable
|
||||||
|
CString s = ssprintf( "Saved \"%s\"", Basename(pSteps->GetFilename()).c_str() );
|
||||||
|
ScreenPrompt::Prompt( SM_None, s );
|
||||||
|
|
||||||
|
/* FIXME
|
||||||
CString s;
|
CString s;
|
||||||
switch( c )
|
switch( c )
|
||||||
{
|
{
|
||||||
@@ -2670,10 +2676,17 @@ void ScreenEdit::HandleMainMenuChoice( MainMenuChoice c, const vector<int> &iAns
|
|||||||
{
|
{
|
||||||
case EDIT_MODE_FULL:
|
case EDIT_MODE_FULL:
|
||||||
case EDIT_MODE_HOME:
|
case EDIT_MODE_HOME:
|
||||||
|
if( m_bHasUndo )
|
||||||
|
{
|
||||||
ScreenPrompt::Prompt(
|
ScreenPrompt::Prompt(
|
||||||
SM_DoSaveAndExit,
|
SM_DoSaveAndExit,
|
||||||
"Do you want to save changes before exiting?",
|
"Do you want to save changes before exiting?",
|
||||||
PROMPT_YES_NO_CANCEL, ANSWER_CANCEL );
|
PROMPT_YES_NO_CANCEL, ANSWER_CANCEL );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SCREENMAN->SendMessageToTopScreen( SM_DoExit );
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case EDIT_MODE_PRACTICE:
|
case EDIT_MODE_PRACTICE:
|
||||||
SCREENMAN->SendMessageToTopScreen( SM_DoExit );
|
SCREENMAN->SendMessageToTopScreen( SM_DoExit );
|
||||||
@@ -3234,9 +3247,11 @@ void ScreenEdit::Undo()
|
|||||||
{
|
{
|
||||||
if( m_bHasUndo )
|
if( m_bHasUndo )
|
||||||
{
|
{
|
||||||
|
// swap
|
||||||
NoteData temp( m_NoteDataEdit );
|
NoteData temp( m_NoteDataEdit );
|
||||||
m_NoteDataEdit.CopyAll( m_Undo );
|
m_NoteDataEdit.CopyAll( m_Undo );
|
||||||
m_Undo.CopyAll( temp );
|
m_Undo.CopyAll( temp );
|
||||||
|
|
||||||
SCREENMAN->SystemMessage( "Undo" );
|
SCREENMAN->SystemMessage( "Undo" );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -3246,6 +3261,11 @@ void ScreenEdit::Undo()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ScreenEdit::ClearUndo()
|
||||||
|
{
|
||||||
|
m_bHasUndo = false;
|
||||||
|
}
|
||||||
|
|
||||||
void ScreenEdit::CheckNumberOfNotesAndUndo()
|
void ScreenEdit::CheckNumberOfNotesAndUndo()
|
||||||
{
|
{
|
||||||
for( int row=0; row<=m_NoteDataEdit.GetLastRow(); row+=ROWS_PER_MEASURE )
|
for( int row=0; row<=m_NoteDataEdit.GetLastRow(); row+=ROWS_PER_MEASURE )
|
||||||
|
|||||||
@@ -172,6 +172,7 @@ protected:
|
|||||||
void SaveUndo();
|
void SaveUndo();
|
||||||
// Revert m_NoteDataEdit using m_Undo.
|
// Revert m_NoteDataEdit using m_Undo.
|
||||||
void Undo();
|
void Undo();
|
||||||
|
void ClearUndo();
|
||||||
// Call this after modifying m_NoteDataEdit. It will Undo() if
|
// Call this after modifying m_NoteDataEdit. It will Undo() if
|
||||||
// MAX_NOTES_PER_MEASURE was exceeded.
|
// MAX_NOTES_PER_MEASURE was exceeded.
|
||||||
void CheckNumberOfNotesAndUndo();
|
void CheckNumberOfNotesAndUndo();
|
||||||
|
|||||||
Reference in New Issue
Block a user