wrap MiniMenu input

fixed Transforms AreaMenu action
This commit is contained in:
Chris Danford
2003-02-22 00:48:38 +00:00
parent 7253dca8e4
commit 52756e7eaa
3 changed files with 40 additions and 18 deletions
+25 -14
View File
@@ -136,14 +136,15 @@ MiniMenuDefinition g_AreaMenu =
"Area Menu", "Area Menu",
ScreenEdit::NUM_AREA_MENU_CHOICES, ScreenEdit::NUM_AREA_MENU_CHOICES,
{ {
{ "Cut", true, 1, 0, {""} }, { "Cut", true, 1, 0, {""} },
{ "Copy", true, 1, 0, {""} }, { "Copy", true, 1, 0, {""} },
{ "Paste", true, 1, 0, {""} }, { "Paste at current beat", true, 1, 0, {""} },
{ "Clear", true, 1, 0, {""} }, { "Paste at begin marker", true, 1, 0, {""} },
{ "Quantize", true, NUM_NOTE_TYPES, 0, {"4TH","8TH","12TH","16TH","24TH","32ND"} }, { "Clear", true, 1, 0, {""} },
{ "Transform", true, ScreenEdit::NUM_TRANSFORM_TYPES, 0, {"Little","Wide","Big","Quick","Left","Right","Mirror","Shuffle","Super Shuffle","Backwards","Swap Sides"} }, { "Quantize", true, NUM_NOTE_TYPES, 0, {"4TH","8TH","12TH","16TH","24TH","32ND"} },
{ "Play selection", true, 1, 0, {""} }, { "Transform", true, ScreenEdit::NUM_TRANSFORM_TYPES, 0, {"Little","Wide","Big","Quick","Left","Right","Mirror","Shuffle","Super Shuffle","Backwards","Swap Sides"} },
{ "Record in selection",true, 1, 0, {""} }, { "Play selection", true, 1, 0, {""} },
{ "Record in selection", true, 1, 0, {""} },
{ "Insert blank beat and shift down", true, 1, 0, {""} }, { "Insert blank beat and shift down", true, 1, 0, {""} },
{ "Delete blank beat and shift up", true, 1, 0, {""} }, { "Delete blank beat and shift up", true, 1, 0, {""} },
} }
@@ -755,7 +756,8 @@ void ScreenEdit::InputEdit( const DeviceInput& DeviceI, const InputEventType typ
bool bAreaSelected = m_NoteFieldEdit.m_fBeginMarker!=-1 && m_NoteFieldEdit.m_fEndMarker!=-1; bool bAreaSelected = m_NoteFieldEdit.m_fBeginMarker!=-1 && m_NoteFieldEdit.m_fEndMarker!=-1;
g_AreaMenu.lines[cut].bEnabled = bAreaSelected; g_AreaMenu.lines[cut].bEnabled = bAreaSelected;
g_AreaMenu.lines[copy].bEnabled = bAreaSelected; g_AreaMenu.lines[copy].bEnabled = bAreaSelected;
g_AreaMenu.lines[paste].bEnabled = this->m_Clipboard.GetLastBeat() != 0; g_AreaMenu.lines[paste_at_current_beat].bEnabled = this->m_Clipboard.GetLastBeat() != 0;
g_AreaMenu.lines[paste_at_begin_marker].bEnabled = this->m_Clipboard.GetLastBeat() != 0 && m_NoteFieldEdit.m_fBeginMarker!=-1;
g_AreaMenu.lines[clear].bEnabled = bAreaSelected; g_AreaMenu.lines[clear].bEnabled = bAreaSelected;
g_AreaMenu.lines[quantize].bEnabled = bAreaSelected; g_AreaMenu.lines[quantize].bEnabled = bAreaSelected;
g_AreaMenu.lines[transform].bEnabled = bAreaSelected; g_AreaMenu.lines[transform].bEnabled = bAreaSelected;
@@ -1224,8 +1226,8 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, int* iAnswers )
{ {
case cut: case cut:
{ {
HandleAreaMenuChoice( copy, iAnswers ); HandleAreaMenuChoice( copy, NULL );
HandleAreaMenuChoice( clear, iAnswers ); HandleAreaMenuChoice( clear, NULL );
} }
break; break;
case copy: case copy:
@@ -1237,7 +1239,7 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, int* iAnswers )
m_Clipboard.CopyRange( &m_NoteFieldEdit, iFirstRow, iLastRow ); m_Clipboard.CopyRange( &m_NoteFieldEdit, iFirstRow, iLastRow );
} }
break; break;
case paste: case paste_at_current_beat:
{ {
int iSrcFirstRow = 0; int iSrcFirstRow = 0;
int iSrcLastRow = BeatToNoteRow( m_Clipboard.GetLastBeat() ); int iSrcLastRow = BeatToNoteRow( m_Clipboard.GetLastBeat() );
@@ -1245,6 +1247,15 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, int* iAnswers )
m_NoteFieldEdit.CopyRange( &m_Clipboard, iSrcFirstRow, iSrcLastRow, iDestFirstRow ); m_NoteFieldEdit.CopyRange( &m_Clipboard, iSrcFirstRow, iSrcLastRow, iDestFirstRow );
} }
break; break;
case paste_at_begin_marker:
{
ASSERT( m_NoteFieldEdit.m_fBeginMarker!=-1 );
int iSrcFirstRow = 0;
int iSrcLastRow = BeatToNoteRow( m_Clipboard.GetLastBeat() );
int iDestFirstRow = BeatToNoteRow( m_NoteFieldEdit.m_fBeginMarker );
m_NoteFieldEdit.CopyRange( &m_Clipboard, iSrcFirstRow, iSrcLastRow, iDestFirstRow );
}
break;
case clear: case clear:
{ {
ASSERT( m_NoteFieldEdit.m_fBeginMarker!=-1 && m_NoteFieldEdit.m_fEndMarker!=-1 ); ASSERT( m_NoteFieldEdit.m_fBeginMarker!=-1 && m_NoteFieldEdit.m_fEndMarker!=-1 );
@@ -1261,7 +1272,7 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, int* iAnswers )
break; break;
case transform: case transform:
{ {
HandleAreaMenuChoice( cut, iAnswers ); HandleAreaMenuChoice( cut, NULL );
TransformType tt = (TransformType)iAnswers[c]; TransformType tt = (TransformType)iAnswers[c];
switch( tt ) switch( tt )
@@ -1280,7 +1291,7 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, int* iAnswers )
default: ASSERT(0); default: ASSERT(0);
} }
HandleAreaMenuChoice( paste, iAnswers ); HandleAreaMenuChoice( paste_at_begin_marker, NULL );
} }
break; break;
case play: case play:
+2 -1
View File
@@ -123,7 +123,8 @@ public:
enum AreaMenuChoice { enum AreaMenuChoice {
cut, cut,
copy, copy,
paste, paste_at_current_beat,
paste_at_begin_marker,
clear, clear,
quantize, quantize,
transform, transform,
+12 -2
View File
@@ -250,7 +250,12 @@ void ScreenMiniMenu::AfterAnswerChanged()
int ScreenMiniMenu::GetGoUpSpot() int ScreenMiniMenu::GetGoUpSpot()
{ {
for( int i=m_iCurLine-1; i>=0; i-- ) int i;
for( i=m_iCurLine-1; i>=0; i-- )
if( m_Def.lines[i].bEnabled )
return i;
// wrap
for( i=m_Def.iNumLines-1; i>=0; i-- )
if( m_Def.lines[i].bEnabled ) if( m_Def.lines[i].bEnabled )
return i; return i;
return -1; return -1;
@@ -258,7 +263,12 @@ int ScreenMiniMenu::GetGoUpSpot()
int ScreenMiniMenu::GetGoDownSpot() int ScreenMiniMenu::GetGoDownSpot()
{ {
for( int i=m_iCurLine+1; i<m_Def.iNumLines; i++ ) int i;
for( i=m_iCurLine+1; i<m_Def.iNumLines; i++ )
if( m_Def.lines[i].bEnabled )
return i;
// wrap
for( i=0; i<m_Def.iNumLines; i++ )
if( m_Def.lines[i].bEnabled ) if( m_Def.lines[i].bEnabled )
return i; return i;
return -1; return -1;