'From etoys2.2 of 24 September 2007 [latest update: #1685] on 4 October 2007 at 10:45:18 pm'! "Change Set: scorePlayer-kfr Date: 19 September 2007 Author: Karl Ramberg Use latest etoy fonts in Score Player. Integrated into olpc image, with some layout fixups, 4 October 2007, Scott Wallace."! !ScorePlayerMorph methodsFor: 'layout' stamp: 'kfr 9/17/2007 22:04'! buttonName: aString action: aSymbol "Create a button with the given label and action selector, and answer it." ^ SimpleButtonMorph new target: self; label: aString font: ScriptingSystem fontForEToyButtons; actionSelector: aSymbol! ! !ScorePlayerMorph methodsFor: 'layout' stamp: 'kfr 9/19/2007 23:52'! makeControls | reverbSwitch repeatSwitch aWrapper aButton | aWrapper := AlignmentMorph newRow vResizing: #shrinkWrap; color: Color transparent. aButton := self buttonName: 'Menu' translated action: #invokeMenu. aButton setBalloonText: 'Open a menu' translated. aWrapper addMorphBack: aButton. aWrapper addTransparentSpacerOfSize: 4 @ 1. aButton := self buttonName: 'PianoRoll' translated action: #makePianoRoll. aButton setBalloonText: 'Open a PianoRoll' translated. aWrapper addMorphBack: aButton. aWrapper addTransparentSpacerOfSize: 4 @ 1. aButton := self buttonName: 'Rewind' translated action: #rewind. aButton setBalloonText: 'Rewind to score start' translated. aWrapper addMorphBack: aButton. aWrapper addTransparentSpacerOfSize: 4 @ 1. aButton := self buttonName: 'Play' translated action: #resumePlaying. aButton target: scorePlayer. aButton setBalloonText: 'Play the score' translated. aWrapper addMorphBack: aButton. aWrapper addTransparentSpacerOfSize: 4 @ 1. aButton := self buttonName: 'Pause' translated action: #pause. aButton target: scorePlayer. aButton setBalloonText: 'Pause playback' translated. aWrapper addMorphBack: aButton. aWrapper addTransparentSpacerOfSize: 4 @ 1. reverbSwitch := SimpleSwitchMorph new offColor: color; onColor: (Color r: 1.0 g: 0.6 b: 0.6); borderWidth: 2; label: 'Reverb Disable' translated font: Preferences standardEToysButtonFont; actionSelector: #disableReverb:; target: scorePlayer; setSwitchState: SoundPlayer isReverbOn not. reverbSwitch setBalloonText: 'Disable sound reverb' translated. aWrapper addMorphBack: reverbSwitch. aWrapper addTransparentSpacerOfSize: 4 @ 1. scorePlayer ifNotNil: [repeatSwitch := SimpleSwitchMorph new offColor: color; onColor: (Color r: 1.0 g: 0.6 b: 0.6); borderWidth: 2; label: 'Repeat' translated font: Preferences standardEToysButtonFont; actionSelector: #repeat:; target: scorePlayer; setSwitchState: scorePlayer repeat. repeatSwitch setBalloonText: 'Playback jumps back to start and continue playing' translated. aWrapper addMorphBack: repeatSwitch]. ^ aWrapper! ! !ScorePlayerMorph methodsFor: 'layout' stamp: 'kfr 9/16/2007 23:07'! panAndVolControlsFor: trackIndex | volSlider panSlider c r middleLine pianoRollColor | pianoRollColor _ (Color wheel: scorePlayer score tracks size) at: trackIndex. volSlider _ SimpleSliderMorph new color: color; sliderColor: pianoRollColor; extent: 101@10; target: scorePlayer; arguments: (Array with: trackIndex); actionSelector: #volumeForTrack:put:; minVal: 0.0; maxVal: 1.0; adjustToValue: (scorePlayer volumeForTrack: trackIndex). panSlider _ SimpleSliderMorph new color: color; sliderColor: pianoRollColor; extent: 101@10; target: scorePlayer; arguments: (Array with: trackIndex); actionSelector: #panForTrack:put:; minVal: 0.0; maxVal: 1.0; adjustToValue: (scorePlayer panForTrack: trackIndex). c _ AlignmentMorph newColumn color: color; layoutInset: 0; wrapCentering: #center; cellPositioning: #topCenter; hResizing: #spaceFill; vResizing: #shrinkWrap. middleLine _ Morph new "center indicator for pan slider" color: (Color r: 0.4 g: 0.4 b: 0.4); extent: 1@(panSlider height - 4); position: panSlider center x@(panSlider top + 2). panSlider addMorphBack: middleLine. r _ self makeRow. r addMorphBack: (StringMorph contents: '0' font: Preferences standardEToysButtonFont). r addMorphBack: volSlider. r addMorphBack: (StringMorph contents: '10' font: Preferences standardEToysButtonFont). c addMorphBack: r. r _ self makeRow. r addMorphBack: (StringMorph contents: 'L' translated font: Preferences standardEToysButtonFont). r addMorphBack: panSlider. r addMorphBack: (StringMorph contents: 'R' translated font: Preferences standardEToysButtonFont). c addMorphBack: r. ^ c ! ! !ScorePlayerMorph methodsFor: 'layout' stamp: 'kfr 9/17/2007 22:38'! rateControl | rateSlider middleLine r | rateSlider _ SimpleSliderMorph new color: color; sliderColor: Color gray; extent: 180@10; target: self; actionSelector: #setLogRate:; minVal: -1.0; maxVal: 1.0; adjustToValue: 0.0. middleLine _ Morph new "center indicator for pan slider" color: (Color r: 0.4 g: 0.4 b: 0.4); extent: 1@(rateSlider height - 4); position: rateSlider center x@(rateSlider top + 2). rateSlider addMorphBack: middleLine. r _ self makeRow hResizing: #shrinkWrap; vResizing: #rigid; height: 24. r addMorphBack: (StringMorph contents: 'slow ' translated font: Preferences standardEToysButtonFont). r addMorphBack: rateSlider. r addMorphBack: (StringMorph contents: ' fast' translated font: Preferences standardEToysButtonFont). r setBalloonText: 'Playback speed' translated. ^ r ! ! !ScorePlayerMorph methodsFor: 'layout' stamp: 'kfr 9/17/2007 22:35'! scrollControl | r | scrollSlider _ SimpleSliderMorph new color: color; sliderColor: Color gray; extent: 360@10; target: scorePlayer; actionSelector: #positionInScore:; adjustToValue: scorePlayer positionInScore. r _ self makeRow hResizing: #shrinkWrap; vResizing: #rigid; height: 24. r addMorphBack: (StringMorph contents: 'start ' translated font: Preferences standardEToysButtonFont). r addMorphBack: scrollSlider. r addMorphBack: (StringMorph contents: ' end' translated font: Preferences standardEToysButtonFont). r setBalloonText: 'Shows current position in the score' translated. ^ r ! ! !ScorePlayerMorph methodsFor: 'layout' stamp: 'sw 10/4/2007 01:45'! trackControlsFor: trackIndex "Answer a row-morph to represent the given track index." | r | r _ self makeRow hResizing: #spaceFill; vResizing: #shrinkWrap. r addMorphBack: (self trackNumAndMuteButtonFor: trackIndex). r addTransparentSpacerOfSize: 12@0. r addMorphBack: (self panAndVolControlsFor: trackIndex). ^ r ! ! !ScorePlayerMorph methodsFor: 'layout' stamp: 'sw 10/4/2007 01:54'! trackNumAndMuteButtonFor: trackIndex | muteButton instSelector pianoRollColor r aWrapper aStringMorph | muteButton _ SimpleSwitchMorph new onColor: (Color r: 1.0 g: 0.6 b: 0.6); offColor: color; color: color; label: 'Mute' translated font: Preferences standardEToysButtonFont; target: scorePlayer; actionSelector: #mutedForTrack:put:; arguments: (Array with: trackIndex). instSelector _ PopUpChoiceMorph new contentsClipped: 'oboe1'; font: Preferences standardEToysButtonFont; target: self; actionSelector: #atTrack:from:selectInstrument:; getItemsSelector: #instrumentChoicesForTrack:; getItemsArgs: (Array with: trackIndex). instSelector arguments: (Array with: trackIndex with: instSelector). instSelector extent: 160@18. instrumentSelector at: trackIndex put: instSelector. "select track color using same color list as PianoRollScoreMorph" pianoRollColor _ (Color wheel: scorePlayer score tracks size) at: trackIndex. r _ self makeRow hResizing: #spaceFill; vResizing: #spaceFill; extent: 200@24. aWrapper := Morph new beTransparent extent: 40@24. aStringMorph := StringMorph contents: trackIndex printString font: Preferences standardEToysButtonFont. aStringMorph color: pianoRollColor. aWrapper addMorphBack: aStringMorph. aStringMorph center: aWrapper center; left: aWrapper left. r addMorphBack: aWrapper. aWrapper := Morph new beTransparent extent: 164@24. aStringMorph := StringMorph new contentsClipped: (scorePlayer infoForTrack: trackIndex); font: Preferences standardEToysButtonFont. aWrapper clipSubmorphs: true. aWrapper addMorphBack: aStringMorph. aStringMorph center: aWrapper center; left: aWrapper left. r addMorphBack: aWrapper. r addMorphBack: (Morph new color: color; extent: 8@8). "spacer" r addMorphBack: instSelector. r addMorphBack: (AlignmentMorph newRow color: color). "spacer" r addMorphBack: muteButton. ^ r ! ! !ScorePlayerMorph methodsFor: 'layout' stamp: 'kfr 9/17/2007 22:34'! volumeControl | volumeSlider r | volumeSlider _ SimpleSliderMorph new color: color; sliderColor: Color gray; extent: 80@10; target: scorePlayer; actionSelector: #overallVolume:; adjustToValue: scorePlayer overallVolume. r _ self makeRow hResizing: #shrinkWrap; vResizing: #rigid; height: 24. r addMorphBack: (StringMorph contents: 'soft ' translated font: Preferences standardEToysButtonFont). r addMorphBack: volumeSlider. r addMorphBack: (StringMorph contents: ' loud' translated font: Preferences standardEToysButtonFont). r setBalloonText: 'Volume slider' translated. ^ r ! !