[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