[squeak-dev] The Trunk: Morphic-kfr.1418.mcz
karl ramberg
karlramberg at gmail.com
Sun Apr 22 09:50:59 UTC 2018
Hm,
Bogus ancestry for this commit :-(
Can it be deleted ?
Best,
Karl
On Sun, Apr 22, 2018 at 11:31 AM, <commits at source.squeak.org> wrote:
> Karl Ramberg uploaded a new version of Morphic to project The Trunk:
> http://source.squeak.org/trunk/Morphic-kfr.1418.mcz
>
> ==================== Summary ====================
>
> Name: Morphic-kfr.1418
> Author: kfr
> Time: 22 April 2018, 11:30:41.518937 am
> UUID: d6dd46c1-fa46-5043-bf0d-8b4542cf733d
> Ancestors: Morphic-kfr.1416, Morphic-cmm.1417
>
> Some maintenance to ScorePlayerMorph.
> Fixing some layout issues.
> Add menu options to make a new score and add tracks to the score.
>
> =============== Diff against Morphic-kfr.1416 ===============
>
> Item was changed:
> ----- Method: ProportionalSplitterMorph>>balanceOffsets (in category
> 'layout') -----
> balanceOffsets
> + (self valueOfProperty: #fullDelta) ifNil: [self setProperty:
> #fullDelta toValue: (0 at 0)] .
>
> self layoutFrame hasFixedHeight ifTrue: [
> | otop obot ctop cbot topf |
>
> otop := (owner submorphs detect: [:m |
> m layoutFrame topFraction isZero]
> ifNone: [^ self]) in: [:tm |
> tm top - (tm layoutFrame
> topOffset ifNil: [0])].
>
> obot := (owner submorphs detect: [:m |
> m layoutFrame bottomFraction = 1]
> ifNone: [^ self]) in: [:tm |
> tm bottom - (tm
> layoutFrame bottomOffset ifNil: [0])].
>
> ctop := (self layoutFrame topFraction * (obot - otop))
> rounded
> + otop + (self layoutFrame
> topOffset ifNil: [0]).
> cbot := (self layoutFrame bottomFraction * (obot - otop))
> rounded
> + otop + (self layoutFrame
> bottomOffset ifNil: [0]).
>
> topf := self layoutFrame topFraction.
> self layoutFrame topFraction: ((ctop + cbot) * 0.5 -
> otop) / (obot - otop) asFloat.
> self layoutFrame bottomFraction: self layoutFrame
> topFraction.
> self layoutFrame topOffset: ctop -
> (self layoutFrame topFraction * (obot - otop) +
> otop) rounded.
> self layoutFrame bottomOffset: cbot -
> (self layoutFrame bottomFraction * (obot - otop) +
> otop) rounded..
>
> (leftOrTop copy union: rightOrBottom) do: [:m |
> (m layoutFrame topFraction closeTo: topf) ifTrue: [
> m layoutFrame topFraction: self
> layoutFrame topFraction.
> m layoutFrame topOffset:
> m layoutFrame topOffset - (self
> valueOfProperty: #fullDelta) y].
> (m layoutFrame bottomFraction closeTo: topf)
> ifTrue: [
> m layoutFrame bottomFraction: self
> layoutFrame topFraction.
> m layoutFrame bottomOffset:
> m layoutFrame bottomOffset - (self
> valueOfProperty: #fullDelta) y.]]] .
>
> self layoutFrame hasFixedWidth ifTrue: [
> | oleft oright cleft cright leftf |
>
> oleft := (owner submorphs detect: [:m |
> m layoutFrame leftFraction isZero] ifNone: [^
> self]) in: [:tm |
> tm left - (tm layoutFrame leftOffset
> ifNil: [0])].
>
> oright := (owner submorphs detect: [:m |
> m layoutFrame rightFraction = 1] ifNone: [^ self])
> in: [:tm |
> tm right - (tm layoutFrame rightOffset
> ifNil: [0])].
>
> cleft := (self layoutFrame leftFraction * (oright -
> oleft)) rounded
> + oleft + (self layoutFrame
> leftOffset ifNil: [0]).
> cright := (self layoutFrame rightFraction * (oright -
> oleft)) rounded
> + oleft + (self layoutFrame
> rightOffset ifNil: [0]).
>
> leftf := self layoutFrame leftFraction.
> self layoutFrame leftFraction: ((cleft + cright) * 0.5 -
> oleft) / (oright - oleft) asFloat.
> self layoutFrame rightFraction: self layoutFrame
> leftFraction.
>
> self layoutFrame leftOffset: cleft -
> (self layoutFrame leftFraction * (oright - oleft)
> + oleft) rounded.
> self layoutFrame rightOffset: cright -
> (self layoutFrame rightFraction * (oright - oleft)
> + oleft) rounded.
>
> (leftOrTop copy union: rightOrBottom) do: [:m |
> (m layoutFrame leftFraction closeTo: leftf)
> ifTrue: [
> m layoutFrame leftFraction: self
> layoutFrame leftFraction.
> m layoutFrame leftOffset:
> m layoutFrame leftOffset - (self
> valueOfProperty: #fullDelta) x].
> (m layoutFrame rightFraction closeTo: leftf)
> ifTrue: [
> m layoutFrame rightFraction: self
> layoutFrame leftFraction.
> m layoutFrame rightOffset:
> m layoutFrame rightOffset - (self
> valueOfProperty: #fullDelta) x.]]] .
>
> self removeProperty: #fullDelta.
> owner layoutChanged
> !
>
> Item was changed:
> ----- Method: ProportionalSplitterMorph>>step (in category 'events')
> -----
> step
> splitsTopAndBottom
> ifTrue: [ self reduceTopBottomImbalance ]
> ifFalse:
> [ self reduceLeftRightImbalance abs > 1 ifTrue:
> [ self splittersLeftDo:
> [ : splitter | splitter
> reduceLeftRightImbalance ].
> self splittersRightDo:
> + [ : splitter | splitter
> reduceLeftRightImbalance ] ] ].
> + self balanceOffsets!
> - [ : splitter | splitter
> reduceLeftRightImbalance ] ] ]!
>
> Item was added:
> + ----- Method: ScorePlayerMorph>>addNewScore (in category 'menu') -----
> + addNewScore
> + "Open a MIDI score and re-init controls..."
> + | score player |
> +
> + score := MIDIScore new.
> + score tracks: (Array with: Array new).
> + score trackInfo: #('Instrument').
> + player := ScorePlayer onScore: score.
> + ^self onScorePlayer: player title: 'new'!
>
> Item was added:
> + ----- Method: ScorePlayerMorph>>addTrackToScore (in category 'menu')
> -----
> + addTrackToScore
> + "add a instrument track to the current score"
> + | score tracks trackInfo player |
> + score := scorePlayer score.
> + tracks := score tracks copyWith:#().
> + score tracks: tracks.
> + trackInfo := score trackInfo copyWith: 'Instrument'.
> + score trackInfo: trackInfo.
> + player := ScorePlayer onScore: score.
> + ^self onScorePlayer: player title: 'new'!
>
> Item was changed:
> ----- Method: ScorePlayerMorph>>invokeMenu (in category 'menu') -----
> invokeMenu
> "Invoke a menu of additonal functions for this ScorePlayer."
> -
> | aMenu |
> aMenu := MenuMorph new defaultTarget: self.
> + aMenu add: 'add a new score' translated action: #addNewScore.
> + aMenu add: 'add a new track to score' translated action:
> #addTrackToScore.
> aMenu add: 'open a MIDI file' translated action: #openMIDIFile.
> + aMenu addList: {#-. {'save as AIFF file' translated. #saveAsAIFF}.
> {'save as WAV file' translated. #saveAsWAV}. {'save as Sun AU file'
> translated. #saveAsSunAudio}. #-}.
> + aMenu
> + add: 'reload instruments' translated
> + target: AbstractSound
> + selector: #updateScorePlayers.
> - aMenu addList: {
> - #-.
> - {'save as AIFF file' translated. #saveAsAIFF}.
> - {'save as WAV file' translated. #saveAsWAV}.
> - {'save as Sun AU file' translated. #saveAsSunAudio}.
> - #-}.
> - aMenu add: 'reload instruments' translated target: AbstractSound
> selector: #updateScorePlayers.
> aMenu addLine.
> scorePlayer midiPort
> + ifNil: [aMenu add: 'play via MIDI' translated action:
> #openMIDIPort]
> + ifNotNil: [aMenu add: 'play via built in synth' translated
> action: #closeMIDIPort.
> - ifNil: [
> - aMenu add: 'play via MIDI' translated action:
> #openMIDIPort]
> - ifNotNil: [
> - aMenu add: 'play via built in synth' translated
> action: #closeMIDIPort.
> aMenu add: 'new MIDI controller' translated
> action: #makeMIDIController:].
> aMenu addLine.
> aMenu add: 'make a pause marker' translated action:
> #makeAPauseEvent:.
> + aMenu popUpInWorld: self world!
> -
> - aMenu popUpInWorld: self world.
> - !
>
> Item was changed:
> ----- Method: ScorePlayerMorph>>onScorePlayer:title: (in category
> 'initialization') -----
> onScorePlayer: aScorePlayer title: scoreName
> | divider col r |
> scorePlayer := aScorePlayer.
> scorePlayer ifNotNil:
> [scorePlayer reset.
> instrumentSelector := Array new: scorePlayer score tracks
> size].
>
> self removeAllMorphs.
> self addMorphBack: self makeControls.
> scorePlayer ifNil: [^ self].
>
> r := self makeRow
> + hResizing: #spaceFill;
> - hResizing: #shrinkWrap;
> vResizing: #shrinkWrap.
> r addMorphBack: self rateControl;
> addMorphBack: (Morph newBounds: (0 at 0 extent: 20 at 0) color:
> Color transparent);
> addMorphBack: self volumeControl.
> self addMorphBack: r.
> self addMorphBack: self scrollControl.
>
> col := AlignmentMorph newColumn color: color; layoutInset: 0.
> self addMorphBack: col.
> 1 to: scorePlayer trackCount do: [:trackIndex |
> divider := AlignmentMorph new
> extent: 10 at 1;
> borderWidth: 1;
> layoutInset: 0;
> borderColor: #raised;
> color: color;
> hResizing: #spaceFill;
> vResizing: #rigid.
> col addMorphBack: divider.
> col addMorphBack: (self trackControlsFor: trackIndex)].
>
> LastMIDIPort ifNotNil: [
> "use the most recently set MIDI port"
> scorePlayer openMIDIPort: LastMIDIPort].
> !
>
> Item was changed:
> ----- Method: ScorePlayerMorph>>rateControl (in category 'layout') -----
> rateControl
>
> | rateSlider middleLine r |
> rateSlider := SimpleSliderMorph new
> color: color;
> sliderColor: Color gray;
> + extent: 180 at 12;
> - extent: 180 at 6;
> 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: #spaceFill;
> - hResizing: #shrinkWrap;
> vResizing: #rigid;
> height: 24.
> r addMorphBack: (StringMorph contents: 'slow ' translated).
> r addMorphBack: rateSlider.
> r addMorphBack: (StringMorph contents: ' fast' translated).
> ^ r
> !
>
> Item was changed:
> ----- Method: ScorePlayerMorph>>scrollControl (in category 'layout')
> -----
> scrollControl
>
> | r |
> scrollSlider := SimpleSliderMorph new
> color: color;
> sliderColor: Color gray;
> + extent: 360 at 12;
> - extent: 360 at 6;
> target: scorePlayer;
> actionSelector: #positionInScore:;
> adjustToValue: scorePlayer positionInScore.
> r := self makeRow
> + hResizing: #spaceFill;
> - hResizing: #shrinkWrap;
> vResizing: #rigid;
> height: 24.
> r addMorphBack: (StringMorph contents: 'start ' translated).
> r addMorphBack: scrollSlider.
> r addMorphBack: (StringMorph contents: ' end' translated).
> ^ r
> !
>
> Item was changed:
> ----- Method: ScorePlayerMorph>>trackNumAndMuteButtonFor: (in category
> 'layout') -----
> trackNumAndMuteButtonFor: trackIndex
>
> | muteButton instSelector pianoRollColor r |
> muteButton := SimpleSwitchMorph new
> onColor: (Color r: 1.0 g: 0.6 b: 0.6);
> offColor: color;
> color: color;
> label: 'Mute' translated;
> target: scorePlayer;
> actionSelector: #mutedForTrack:put:;
> arguments: (Array with: trackIndex).
> instSelector := PopUpChoiceMorph new
> extent: 95 at 14;
> contentsClipped: 'oboe1';
> target: self;
> actionSelector: #atTrack:from:selectInstrument:;
> getItemsSelector: #instrumentChoicesForTrack:;
> getItemsArgs: (Array with: trackIndex).
> instSelector arguments:
> (Array with: trackIndex with: instSelector).
> 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: 70 at 10.
> r addMorphBack:
> ((StringMorph
> contents: trackIndex printString
> font: (TextStyle default fontOfSize: 24)) color:
> pianoRollColor).
> trackIndex < 10
> ifTrue: [r addMorphBack: (Morph new color: color; extent:
> 19 at 8)] "spacer"
> ifFalse: [r addMorphBack: (Morph new color: color; extent:
> 8 at 8)]. "spacer"
> r addMorphBack:
> (StringMorph new
> + extent: 80 at 14;
> - extent: 140 at 14;
> contentsClipped: (scorePlayer infoForTrack:
> trackIndex)).
> r addMorphBack: (Morph new color: color; extent: 8 at 8). "spacer"
> r addMorphBack: instSelector.
> r addMorphBack: (AlignmentMorph newRow color: color). "spacer"
> r addMorphBack: muteButton.
> ^ r
> !
>
> Item was changed:
> ----- Method: ScorePlayerMorph>>volumeControl (in category 'layout')
> -----
> volumeControl
>
> | volumeSlider r |
> volumeSlider := SimpleSliderMorph new
> color: color;
> sliderColor: Color gray;
> + extent: 80 at 12;
> - extent: 80 at 6;
> target: scorePlayer;
> actionSelector: #overallVolume:;
> adjustToValue: scorePlayer overallVolume.
> r := self makeRow
> + hResizing: #spaceFill;
> - hResizing: #shrinkWrap;
> vResizing: #rigid;
> height: 24.
> r addMorphBack: (StringMorph contents: 'soft ' translated).
> r addMorphBack: volumeSlider.
> r addMorphBack: (StringMorph contents: ' loud' translated).
> ^ r
> !
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20180422/5451d388/attachment.html>
More information about the Squeak-dev
mailing list
|