enable the EditMenu to be themed more extensively.

This commit is contained in:
AJ Kelly
2010-12-13 02:28:01 -06:00
parent c0715f20fc
commit 9d264adfdf
4 changed files with 107 additions and 65 deletions
+13
View File
@@ -13,6 +13,19 @@ _____________________________________________________________________________
--------
* [MusicWheelItem] Gave NormalPart/ColorPart names, so metrics can be used to
manipulate them. [freem]
* [EditMenu] Converted old non-specific metrics to more specific metrics. [freem]
{Metric Changes}
SongBannerWidth,SongBannerHeight -> SongBannerOnCommand
GroupBannerWidth,GroupBannerHeight -> GroupBannerOnCommand
RowLabelsX -> Label#X
RowLabelOnCommand -> Label#OnCommand
RowValue#X -> Value#X
RowValueOnCommand -> Row#OnCommand
{Metric Additions}
SongBannerChangeCommand/GroupBannerChangeCommand - runs when song/group
banner is changed.
Label#GainFocus/LoseFocusCommand and Value#GainFocus/LoseFocusCommand - runs
when the Label and Value gain/lose focus.
================================================================================
sm-ssc v1.1 | 20101120
+70 -19
View File
@@ -3336,37 +3336,30 @@ Line4="gamecommand;screen,ScreenOptionsManageCourses;name,Edit Courses"
[EditMenu]
EditMode="EditMode_Full"
TextBannerType="TextBannerEditMode"
ShowGroups=true
Arrows1X=SCREEN_CENTER_X-130
Arrows2X=SCREEN_CENTER_X+270
ArrowsEnabledCommand=diffuse,color("1,1,1,1");shadowlengthy,1;shadowcolor,color("#002740");
ArrowsDisabledCommand=diffuse,color("0.45,0.45,0.45,1");shadowlengthy,1;shadowcolor,color("#002740");
SongBannerX=SCREEN_CENTER_X+170
SongBannerY=SCREEN_CENTER_Y-90
SongBannerWidth=128
SongBannerHeight=40
SongTextBannerX=SCREEN_CENTER_X-64
SongTextBannerY=SCREEN_CENTER_Y-90
GroupBannerX=SCREEN_CENTER_X+170
GroupBannerY=SCREEN_CENTER_Y-140
GroupBannerWidth=128
GroupBannerHeight=40
GroupBannerOnCommand=scaletoclipped,128,40
SongBannerX=SCREEN_CENTER_X+170
SongBannerY=SCREEN_CENTER_Y-90
SongBannerOnCommand=scaletoclipped,128,40
TextBannerType="TextBannerEditMode"
SongTextBannerX=SCREEN_CENTER_X-64
SongTextBannerY=SCREEN_CENTER_Y-90
StepsDisplayX=SCREEN_CENTER_X+170
StepsDisplayY=SCREEN_CENTER_Y-0
StepsDisplaySourceX=SCREEN_CENTER_X+170
StepsDisplaySourceY=SCREEN_CENTER_Y+80
RowLabelsX=SCREEN_CENTER_X-250
RowLabelOnCommand=shadowlength,1;zoom,0.75
RowValue1X=SCREEN_CENTER_X
RowValue2X=SCREEN_CENTER_X+60
RowValue3X=SCREEN_CENTER_X+60
RowValue4X=SCREEN_CENTER_X
RowValue5X=SCREEN_CENTER_X+60
RowValue6X=SCREEN_CENTER_X
RowValue7X=SCREEN_CENTER_X+60
RowValueOnCommand=shadowlength,1;zoom,0.75;maxwidth,SCREEN_CENTER_X*0.65
Row1Y=SCREEN_CENTER_Y-140
Row2Y=SCREEN_CENTER_Y-90
Row3Y=SCREEN_CENTER_Y-40
@@ -3375,6 +3368,64 @@ Row5Y=SCREEN_CENTER_Y+40
Row6Y=SCREEN_CENTER_Y+80
Row7Y=SCREEN_CENTER_Y+120
Label1X=SCREEN_CENTER_X-250
Label1Y=THEME:GetMetric("EditMode","Row1Y")
Label1OnCommand=shadowlength,1;zoom,0.75
Label1OffCommand=
Label2X=SCREEN_CENTER_X-250
Label2Y=THEME:GetMetric("EditMode","Row2Y")
Label2OnCommand=shadowlength,1;zoom,0.75
Label2OffCommand=
Label3X=SCREEN_CENTER_X-250
Label3Y=THEME:GetMetric("EditMode","Row3Y")
Label3OnCommand=shadowlength,1;zoom,0.75
Label3OffCommand=
Label4X=SCREEN_CENTER_X-250
Label4Y=THEME:GetMetric("EditMode","Row4Y")
Label4OnCommand=shadowlength,1;zoom,0.75
Label4OffCommand=
Label5X=SCREEN_CENTER_X-250
Label5Y=THEME:GetMetric("EditMode","Row5Y")
Label5OnCommand=shadowlength,1;zoom,0.75
Label5OffCommand=
Label6X=SCREEN_CENTER_X-250
Label6Y=THEME:GetMetric("EditMode","Row6Y")
Label6OnCommand=shadowlength,1;zoom,0.75
Label6OffCommand=
Label7X=SCREEN_CENTER_X-250
Label7Y=THEME:GetMetric("EditMode","Row7Y")
Label7OnCommand=shadowlength,1;zoom,0.75
Label7OffCommand=
Value1X=SCREEN_CENTER_X
Value1Y=THEME:GetMetric("EditMode","Row1Y")
Value1OnCommand=shadowlength,1;zoom,0.75;maxwidth,SCREEN_CENTER_X*0.65
Value1OffCommand=
Value2X=SCREEN_CENTER_X+60
Value2Y=THEME:GetMetric("EditMode","Row2Y")
Value2OnCommand=shadowlength,1;zoom,0.75;maxwidth,SCREEN_CENTER_X*0.65
Value2OffCommand=
Value3X=SCREEN_CENTER_X+60
Value3Y=THEME:GetMetric("EditMode","Row3Y")
Value3OnCommand=shadowlength,1;zoom,0.75;maxwidth,SCREEN_CENTER_X*0.65
Value3OffCommand=
Value4X=SCREEN_CENTER_X
Value4Y=THEME:GetMetric("EditMode","Row4Y")
Value4OnCommand=shadowlength,1;zoom,0.75;maxwidth,SCREEN_CENTER_X*0.65
Value4OffCommand=
Value5X=SCREEN_CENTER_X+60
Value5Y=THEME:GetMetric("EditMode","Row5Y")
Value5OnCommand=shadowlength,1;zoom,0.75;maxwidth,SCREEN_CENTER_X*0.65
Value5OffCommand=
Value6X=SCREEN_CENTER_X
Value6Y=THEME:GetMetric("EditMode","Row6Y")
Value6OnCommand=shadowlength,1;zoom,0.75;maxwidth,SCREEN_CENTER_X*0.65
Value6OffCommand=
Value7X=SCREEN_CENTER_X+60
Value7Y=THEME:GetMetric("EditMode","Row7Y")
Value7OnCommand=shadowlength,1;zoom,0.75;maxwidth,SCREEN_CENTER_X*0.65
Value7OffCommand=
[TextBannerEditMode]
Fallback="TextBanner"
+24 -35
View File
@@ -14,7 +14,6 @@
#include "UnlockManager.h"
#include "SongUtil.h"
static const char *EditMenuRowNames[] = {
"Group",
"Song",
@@ -38,10 +37,8 @@ XToLocalizedString( EditMenuAction );
StringToX( EditMenuAction );
static RString ARROWS_X_NAME( size_t i ) { return ssprintf("Arrows%dX",int(i+1)); }
static RString ROW_VALUE_X_NAME( size_t i ) { return ssprintf("RowValue%dX",int(i+1)); }
static RString ROW_Y_NAME( size_t i ) { return ssprintf("Row%dY",int(i+1)); }
void EditMenu::StripLockedStepsAndDifficulty( vector<StepsAndDifficulty> &v )
{
const Song *pSong = GetSelectedSong();
@@ -110,14 +107,6 @@ void EditMenu::Load( const RString &sType )
ARROWS_X.Load(sType,ARROWS_X_NAME,NUM_ARROWS);
ARROWS_ENABLED_COMMAND.Load(sType,"ArrowsEnabledCommand");
ARROWS_DISABLED_COMMAND.Load(sType,"ArrowsDisabledCommand");
SONG_BANNER_WIDTH.Load(sType,"SongBannerWidth");
SONG_BANNER_HEIGHT.Load(sType,"SongBannerHeight");
GROUP_BANNER_WIDTH.Load(sType,"GroupBannerWidth");
GROUP_BANNER_HEIGHT.Load(sType,"GroupBannerHeight");
ROW_LABELS_X.Load(sType,"RowLabelsX");
ROW_LABEL_ON_COMMAND.Load(sType,"RowLabelOnCommand");
ROW_VALUE_X.Load(sType,ROW_VALUE_X_NAME,NUM_EditMenuRow);
ROW_VALUE_ON_COMMAND.Load(sType,"RowValueOnCommand");
ROW_Y.Load(sType,ROW_Y_NAME,NUM_EditMenuRow);
EDIT_MODE.Load(sType,"EditMode");
TEXT_BANNER_TYPE.Load( m_sName, "TextBannerType" );
@@ -133,39 +122,39 @@ void EditMenu::Load( const RString &sType )
ZERO( m_iSelection );
FOREACH_EditMenuRow( r )
{
m_textLabel[r].SetName(ssprintf("Label%i",r+1));
m_textLabel[r].LoadFromFont( THEME->GetPathF(sType,"title") );
m_textLabel[r].SetXY( ROW_LABELS_X, ROW_Y.GetValue(r) );
m_textLabel[r].SetText( EditMenuRowToLocalizedString(r) );
m_textLabel[r].RunCommands( ROW_LABEL_ON_COMMAND );
m_textLabel[r].SetHorizAlign( align_left );
ActorUtil::LoadAllCommandsAndSetXY( m_textLabel[r], sType );
//m_textLabel[r].SetHorizAlign( align_left );
this->AddChild( &m_textLabel[r] );
m_textValue[r].SetName(ssprintf("Value%i",r+1));
m_textValue[r].LoadFromFont( THEME->GetPathF(sType,"value") );
m_textValue[r].SetXY( ROW_VALUE_X.GetValue(r), ROW_Y.GetValue(r) );
m_textValue[r].SetText( "blah" );
m_textValue[r].RunCommands( ROW_VALUE_ON_COMMAND );
ActorUtil::LoadAllCommandsAndSetXY( m_textValue[r], sType );
this->AddChild( &m_textValue[r] );
}
m_textLabel[ROW_GROUP].SetVisible( SHOW_GROUPS.GetValue() );
m_textValue[ROW_GROUP].SetVisible( SHOW_GROUPS.GetValue() );
/* Load low-res banners, if needed. */
// Load low-res banners, if needed.
BANNERCACHE->Demand();
if( SHOW_GROUPS.GetValue() )
{
m_GroupBanner.SetName( "GroupBanner" );
ActorUtil::SetXY( m_GroupBanner, sType );
ActorUtil::LoadAllCommands( m_GroupBanner, sType );
this->AddChild( &m_GroupBanner );
}
m_SongBanner.SetName( "SongBanner" );
ActorUtil::SetXY( m_SongBanner, sType );
ActorUtil::LoadAllCommands( m_SongBanner, sType );
this->AddChild( &m_SongBanner );
m_SongTextBanner.SetName( "SongTextBanner" );
@@ -173,12 +162,12 @@ void EditMenu::Load( const RString &sType )
ActorUtil::SetXY( m_SongTextBanner, sType );
ActorUtil::LoadAllCommands( m_SongTextBanner, sType );
this->AddChild( &m_SongTextBanner );
m_StepsDisplay.SetName( "StepsDisplay" );
m_StepsDisplay.Load( "StepsDisplayEdit", NULL );
ActorUtil::SetXY( m_StepsDisplay, sType );
this->AddChild( &m_StepsDisplay );
m_StepsDisplaySource.SetName( "StepsDisplaySource" );
m_StepsDisplaySource.Load( "StepsDisplayEdit", NULL );
ActorUtil::SetXY( m_StepsDisplaySource, sType );
@@ -187,13 +176,10 @@ void EditMenu::Load( const RString &sType )
m_soundChangeRow.Load( THEME->GetPathS(sType,"row"), true );
m_soundChangeValue.Load( THEME->GetPathS(sType,"value"), true );
//
// fill in data structures
//
GetGroupsToShow( m_sGroups );
m_StepsTypes = CommonMetrics::STEPS_TYPES_TO_SHOW.GetValue();
RefreshAll();
}
@@ -253,7 +239,7 @@ bool EditMenu::CanGoDown()
bool EditMenu::CanGoLeft()
{
if( m_SelectedRow == ROW_SONG || m_SelectedRow == ROW_GROUP )
return true; /* wraps */
return true; // wraps
return m_iSelection[m_SelectedRow] != 0;
}
@@ -261,12 +247,12 @@ int EditMenu::GetRowSize( EditMenuRow er ) const
{
switch( er )
{
case ROW_GROUP: return m_sGroups.size();
case ROW_GROUP: return m_sGroups.size();
case ROW_SONG: return m_pSongs.size();
case ROW_STEPS_TYPE: return m_StepsTypes.size();
case ROW_STEPS: return m_vpSteps.size();
case ROW_STEPS_TYPE: return m_StepsTypes.size();
case ROW_STEPS: return m_vpSteps.size();
case ROW_SOURCE_STEPS_TYPE: return m_StepsTypes.size();
case ROW_SOURCE_STEPS: return m_vpSourceSteps.size();
case ROW_SOURCE_STEPS: return m_vpSourceSteps.size();
case ROW_ACTION: return m_Actions.size();
default: FAIL_M( ssprintf("%i", er) );
}
@@ -276,7 +262,7 @@ int EditMenu::GetRowSize( EditMenuRow er ) const
bool EditMenu::CanGoRight()
{
if( m_SelectedRow == ROW_SONG || m_SelectedRow == ROW_GROUP )
return true; /* wraps */
return true; // wraps
return m_iSelection[m_SelectedRow] != GetRowSize(m_SelectedRow)-1;
}
@@ -344,9 +330,13 @@ void EditMenu::Right()
}
}
void EditMenu::ChangeToRow( EditMenuRow newRow )
{
m_textLabel[newRow].PlayCommand("GainFocus");
m_textValue[newRow].PlayCommand("GainFocus");
m_textLabel[m_SelectedRow].PlayCommand("LoseFocus");
m_textValue[m_SelectedRow].PlayCommand("LoseFocus");
m_SelectedRow = newRow;
for( int i=0; i<2; i++ )
@@ -374,7 +364,7 @@ void EditMenu::OnRowValueChanged( EditMenuRow row )
if( SHOW_GROUPS.GetValue() )
{
m_GroupBanner.LoadFromSongGroup( GetSelectedGroup() );
m_GroupBanner.ScaleToClipped( GROUP_BANNER_WIDTH, GROUP_BANNER_HEIGHT );
m_GroupBanner.PlayCommand("Changed");
}
m_pSongs.clear();
GetSongsToShowForGroup( GetSelectedGroup(), m_pSongs );
@@ -383,7 +373,7 @@ void EditMenu::OnRowValueChanged( EditMenuRow row )
case ROW_SONG:
m_textValue[ROW_SONG].SetText( "" );
m_SongBanner.LoadFromSong( GetSelectedSong() );
m_SongBanner.ScaleToClipped( SONG_BANNER_WIDTH, SONG_BANNER_HEIGHT );
m_SongBanner.PlayCommand("Changed");
m_SongTextBanner.SetFromSong( GetSelectedSong() );
// fall through
@@ -461,7 +451,7 @@ void EditMenu::OnRowValueChanged( EditMenuRow row )
}
}
StripLockedStepsAndDifficulty( m_vpSteps );
FOREACH( StepsAndDifficulty, m_vpSteps, s )
{
if( s->dc == dcOld )
@@ -572,7 +562,6 @@ void EditMenu::OnRowValueChanged( EditMenuRow row )
}
}
/*
* (c) 2001-2004 Chris Danford
* All rights reserved.
-11
View File
@@ -97,7 +97,6 @@ private:
StepsDisplay m_StepsDisplay;
StepsDisplay m_StepsDisplaySource;
struct StepsAndDifficulty
{
StepsAndDifficulty( Steps *s, Difficulty d ) { pSteps = s; dc = d; }
@@ -122,16 +121,6 @@ private:
ThemeMetric1D<float> ARROWS_X;
ThemeMetric<apActorCommands> ARROWS_ENABLED_COMMAND;
ThemeMetric<apActorCommands> ARROWS_DISABLED_COMMAND;
// todo: remove these next 4 metrics in favor of commands -aj
ThemeMetric<float> SONG_BANNER_WIDTH;
ThemeMetric<float> SONG_BANNER_HEIGHT;
ThemeMetric<float> GROUP_BANNER_WIDTH;
ThemeMetric<float> GROUP_BANNER_HEIGHT;
// </todo>
ThemeMetric<float> ROW_LABELS_X;
ThemeMetric<apActorCommands> ROW_LABEL_ON_COMMAND;
ThemeMetric1D<float> ROW_VALUE_X;
ThemeMetric<apActorCommands> ROW_VALUE_ON_COMMAND;
ThemeMetric1D<float> ROW_Y;
public:
ThemeMetric<EditMode> EDIT_MODE;