//Tutorial Window interface example
//***********************************************************************************************


//*********************************
//Variables definition
//*********************************
[VarDef,Init,0]
[VarDef,track(5),""]
[VarDef,powerRed,127]
[VarDef,powerGreen,127]
[VarDef,powerBlue,127]
[VarDef,displayRed,127]
[VarDef,displayGreen,127]
[VarDef,displayBlue,127]
[VarDef,vol,50]
[VarDef,displayText,""]
[VarDef,x,0]


//*********************************************************************************************
//***Routines*****************************************************************************


[RoutineDef,Initialize,
	//load data if the file exists
[If,[FileExists,"PlayList.zvr"],
	[VarLoad,track,"PlayList.zvr"]
,//else initialize playlist
	[VarSet,track(0),"Every brush you make..."]
	[VarSet,track(1),"In the Mood for ZBrushin'"]
	[VarSet,track(2),"Baby, don't Drop Me"]
	[VarSet,track(3),"She's a Model Woman"]
	[VarSet,track(4),"Brush around the Clock"]
]
//set display colors
	[If,Init = 0,
		[If,[MemGetSize,MC_playList],			
			[VarSet,vol,[MVarGet,MC_playList,1]]
			[If,[MVarGet,MC_playList,2],//power is on
				[VarSet,powerRed,0]
				[VarSet,powerGreen,255]
				[VarSet,powerBlue,0]				
				[VarSet,displayRed,[MVarGet,MC_playList,0]]
				[VarSet,displayGreen,255]
				[VarSet,displayBlue,127]
				[VarSet,displayText,[Var,track(0)]]				
				,//else power is off
				[VarSet,powerRed,127]
				[VarSet,powerGreen,127]
				[VarSet,powerBlue,127]
				[VarSet,displayRed,127]
				[VarSet,displayGreen,127]
				[VarSet,displayBlue,127]
				[VarSet,displayText,""]				
			]
		,//else create memory & store settings
			[MVarDef,MC_playList,4,0]
			[MVarSet,MC_playList,0,127]//displayRed color
			[MVarSet,MC_playList,1,50]//Volume value
			[MVarSet,MC_playList,2,0]//Power on/off
			[MVarSet,MC_playList,3,0]//Tray open/closed
		]
		[VarSet,Init,1]
	]//end If
]

//Update and save playlist
[RoutineDef,SavePlayList,
	[VarDef,tmpTrack(5),""]
	[Loop,5,
		[VarSet,tmpTrack(n),[Var,track(n)]]		
	,n]
	[Loop,1,
		[If,number=0,[LoopExit]]
		[If,number=1,
			[VarSet,track(0),[Var,tmpTrack(1)]]
			[VarSet,track(1),[Var,tmpTrack(0)]]
			[VarSet,track(2),[Var,tmpTrack(2)]]
			[VarSet,track(3),[Var,tmpTrack(3)]]
			[VarSet,track(4),[Var,tmpTrack(4)]]
			[LoopExit]
		]
		[If,number=2,
			[VarSet,track(0),[Var,tmpTrack(2)]]
			[VarSet,track(1),[Var,tmpTrack(0)]]
			[VarSet,track(2),[Var,tmpTrack(1)]]
			[VarSet,track(3),[Var,tmpTrack(3)]]
			[VarSet,track(4),[Var,tmpTrack(4)]]
			[LoopExit]
		]
		[If,number=3,
			[VarSet,track(0),[Var,tmpTrack(3)]]
			[VarSet,track(1),[Var,tmpTrack(0)]]
			[VarSet,track(2),[Var,tmpTrack(1)]]
			[VarSet,track(3),[Var,tmpTrack(2)]]
			[VarSet,track(4),[Var,tmpTrack(4)]]
			[LoopExit]
		]
		[If,number=4,
			[VarSet,track(0),[Var,tmpTrack(4)]]
			[VarSet,track(1),[Var,tmpTrack(0)]]
			[VarSet,track(2),[Var,tmpTrack(1)]]
			[VarSet,track(3),[Var,tmpTrack(2)]]
			[VarSet,track(4),[Var,tmpTrack(3)]]
			[LoopExit]
		]
	]
	[VarSave,track,"PlayList.zvr"]
,number]

//Each script load call this routine to intialize interface colors & display:
[RoutineCall,Initialize]


// ********************************
// Interface
// ********************************

[PenMoveLeft]
[Image,"Backplate.psd",1]//***backplate image, align left
[PenMoveLeft]
[PenMove,30,11]
//The display backlight:
[PaintRect,300,26,displayRed,displayGreen,displayBlue]
[PenMoveLeft]
[PenMove,30,1]
//The display text:
[PropertySet,Caption,0,2]//font size
[PropertySet,Caption,1,1]//alignment
[PropertySet,Caption,2,.7]//intensity
[PropertySet,Caption,3,[RGB,5,5,5]]//font color
[PropertySet,Caption,6,-1]//gradient (-1, no gradient)
[Caption,[Var,displayText]]

[PenMoveLeft]
[PenMove,420,10]
// power light
[PaintRect,6,8,powerRed,powerGreen,powerBlue]
[PenMove,6,-6]

[IButton,"Power","On/off",//power button
	[If,[MVarGet,MC_playList,2],
		[MVarSet,MC_playList,2,0]//store power button off
		//close the playlist
		[MVarSet,MC_playList,3,0]
		[IUnPress,3]
	,
		[MVarSet,MC_playList,2,1]//store power button on
	]
	
	//reload zscript to update interface:
	[IPress,ZScript:reload]	
 ,,46,,,22]//***end of Power button

[PenMoveLeft]
[PenMove,25,26]

[ISlider,"Volume",#vol,1,0,100,"Adjust Volume",
	[MVarSet,MC_playList,1,[IGet,0]]//gets this slider value and saves to memory block
	[If,[MVarGet,MC_playList,2],//if power ON, do this:
		//Moving slider changes the display colors		
		[VarSet,displayRed,255-(INT(255*([IGet,0]/100)))]
		[MVarSet,MC_playList,0,[Val,displayRed]]
		//this ensures the color display updates:
		[IPress,ZScript:reload]	
	]
,,100]


[PenMove,220,0]

[IButton,"Shuffle","Make random selection from playlist",
	//makes a random pick from the playlist:
	[Loop,10,//loop to ensure x > 1
		[VarSet,x,INT(RAND(5))]//set x to random number between 0 & 5
		[If,x>1,[LoopExit]
		]
	]
	[RoutineCall,SavePlayList,x]
	//reload to update interface:
	[IPress,zscript:reload]
,,,,,22]//end switch



[PenMove,10,3]

[FontSetSizeLarge]
[SectionBegin,"      ",[MVarGet,MC_playList,3],"Open/Close Play List",
	//open the playlist
	[If,[MVarGet,MC_playList,2]==1,//if the power is on
		[IPress,1]
	]
,
	//close the playlist
	[IUnPress,1]
]
[SectionEnd]


[PenMoveLeft]
[PenMove,0,30]
[FontSetSizeSmall]
//The section contains the playlist
[SectionBegin,"   "
	,[MVarGet,MC_playList,3],"Play List",
		[MVarSet,MC_playList,3,1]
	,
		[MVarSet,MC_playList,3,0]
]//end main section


[PenMoveLeft]
[PenMove,100,10]
[SectionBegin,[StrMerge,"1. ",#track(0)],1,"This Track now playing",,
//First track selected: do nothing, playlist stays same
,1 //disabled
]//end section
[SectionEnd]
[PD]
[PenMoveLeft]
[PenMove,100,5]
[SectionBegin,[StrMerge,"2. ",#track(1)],1,"Click to load this Track",,
[RoutineCall,SavePlayList,1]
[IPress,zscript:reload]
]//end section
[SectionEnd]
[PD]
[PenMoveLeft]
[PenMove,100,5]
[SectionBegin,[StrMerge,"3. ",#track(2)],1,"Click to load this Track",,
[RoutineCall,SavePlayList,2]
[IPress,zscript:reload]
]//end section
[SectionEnd]
[PD]
[PenMoveLeft]
[PenMove,100,5]
[SectionBegin,[StrMerge,"4. ",#track(3)],1,"Click to load this Track",,
[RoutineCall,SavePlayList,3]
[IPress,zscript:reload]
]//end section
[SectionEnd]
[PD]
[PenMoveLeft]
[PenMove,100,5]
[SectionBegin,[StrMerge,"5. ",#track(4)],1,"Click to load this Track",,
[RoutineCall,SavePlayList,4]
[IPress,zscript:reload]
]//end section
[SectionEnd]

[SectionEnd]

