[squeak-dev] The Inbox: MorphicExtras-ct.323.mcz

karl ramberg karlramberg at gmail.com
Tue Aug 23 17:43:40 UTC 2022


Nice,
And maybe do something like this as well, to show that the instruments are
changeable.

[image: bild.png]
Best,
Karl


On Tue, Aug 23, 2022 at 12:10 PM Thiede, Christoph <
Christoph.Thiede at student.hpi.uni-potsdam.de> wrote:

> Before:
>
>
>
> After:
>
>
> ------------------------------
> *Von:* Squeak-dev <squeak-dev-bounces at lists.squeakfoundation.org> im
> Auftrag von commits at source.squeak.org <commits at source.squeak.org>
> *Gesendet:* Dienstag, 23. August 2022 12:09:41
> *An:* squeak-dev at lists.squeakfoundation.org
> *Betreff:* [squeak-dev] The Inbox: MorphicExtras-ct.323.mcz
>
> A new version of MorphicExtras was added to project The Inbox:
> http://source.squeak.org/inbox/MorphicExtras-ct.323.mcz
>
> ==================== Summary ====================
>
> Name: MorphicExtras-ct.323
> Author: ct
> Time: 23 August 2022, 12:09:37.941308 pm
> UUID: ab99afa5-a3f1-d94f-a74e-c525589f0ec0
> Ancestors: MorphicExtras-eem.322
>
> Adds high-dpi support for ScorePlayerMorph.
>
> Implementation detail: Explicitly specify orientation of sliders to avoid
> auto-orientation as vertical during first layout run.
>
> =============== Diff against MorphicExtras-eem.322 ===============
>
> Item was changed:
>   ----- Method: ScorePlayerMorph>>defaultBorderWidth (in category
> 'initialization') -----
>   defaultBorderWidth
>          "answer the default border width for the receiver"
> +        ^ 2 px!
> -        ^ 2!
>
> Item was changed:
>   ----- Method: ScorePlayerMorph>>initialize (in category
> 'initialization') -----
>   initialize
>          "initialize the state of the receiver"
>          super initialize.
>          ""
>          self listDirection: #topToBottom;
>                   wrapCentering: #center;
>                   cellPositioning: #topCenter;
>                   hResizing: #shrinkWrap;
>                   vResizing: #shrinkWrap;
>                   layoutInset: 3;
>                   onScorePlayer: ScorePlayer new initialize;
> +                 extent: 20 px @ 20 px.!
> -                 extent: 20 @ 20 !
>
> Item was changed:
>   ----- Method: ScorePlayerMorph>>makeControls (in category 'layout') -----
>   makeControls
>
>          | bb r reverbSwitch repeatSwitch |
>          r := AlignmentMorph newRow.
>          r color: color; borderWidth: 0; layoutInset: 0.
> +        r hResizing: #shrinkWrap; vResizing: #shrinkWrap; extent: 5 px @
> 5 px.
> -        r hResizing: #shrinkWrap; vResizing: #shrinkWrap; extent: 5 at 5.
>          bb := SimpleButtonMorph new target: self; borderColor: #raised;
> +                        borderWidth: 2 px; color: color.
> -                        borderWidth: 2; color: color.
>          r addMorphBack: (bb label: 'Menu' translated; actWhen:
> #buttonDown;
>
> actionSelector: #invokeMenu).
>          bb := SimpleButtonMorph new target: self; borderColor: #raised;
> +                        borderWidth: 2 px; color: color.
> -                        borderWidth: 2; color: color.
>          r addMorphBack: (bb label: 'Piano Roll' translated;
> actionSelector: #makePianoRoll).
>          bb := SimpleButtonMorph new target: self; borderColor: #raised;
> +                        borderWidth: 2 px; color: color.
> -                        borderWidth: 2; color: color.
>          r addMorphBack: (bb label: 'Rewind' translated;
> actionSelector: #rewind).
>          bb := SimpleButtonMorph new target: scorePlayer; borderColor:
> #raised;
> +                        borderWidth: 2 px; color: color.
> -                        borderWidth: 2; color: color.
>          r addMorphBack: (bb label: 'Play' translated;
> actionSelector: #resumePlaying).
>          bb := SimpleButtonMorph new target: scorePlayer; borderColor:
> #raised;
> +                        borderWidth: 2 px; color: color.
> -                        borderWidth: 2; color: color.
>          r addMorphBack: (bb label: 'Pause' translated;
> actionSelector: #pause).
>          reverbSwitch := SimpleSwitchMorph new
>                  offColor: color;
>                  onColor: (Color r: 1.0 g: 0.6 b: 0.6);
> +                borderWidth: 2 px;
> -                borderWidth: 2;
>                  label: 'Reverb Disable' translated;
>                  actionSelector: #disableReverb:;
>                  target: scorePlayer;
>                  setSwitchState: SoundPlayer isReverbOn not.
>          r addMorphBack: reverbSwitch.
>          scorePlayer ifNotNil:
>                  [repeatSwitch := SimpleSwitchMorph new
>                          offColor: color;
>                          onColor: (Color r: 1.0 g: 0.6 b: 0.6);
> +                        borderWidth: 2 px;
> -                        borderWidth: 2;
>                          label: 'Repeat' translated;
>                          actionSelector: #repeat:;
>                          target: scorePlayer;
>                          setSwitchState: scorePlayer repeat.
>                  r addMorphBack: repeatSwitch].
> +        ^ r!
> -        ^ r
> - !
>
> 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;
>                  vResizing: #shrinkWrap.
>          r addMorphBack: self rateControl;
> +                addMorphBack: (Morph newBounds: (0 @ 0 extent: 20 px @ 0)
> color: Color transparent);
> -                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 px @ 1 px;
> -                        extent: 10 at 1;
>                          layoutInset: 0;
> +                        borderStyle: (BorderStyle raised width: 1 px);
> -                        borderStyle: (BorderStyle raised width: 1);
>                          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].!
> -                scorePlayer openMIDIPort: LastMIDIPort].
> - !
>
> Item was changed:
>   ----- Method: ScorePlayerMorph>>panAndVolControlsFor: (in category
> 'layout') -----
>   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 px @ 6 px;
> -                extent: 101 at 6;
>                  target: scorePlayer;
>                  arguments: (Array with: trackIndex);
>                  actionSelector: #volumeForTrack:put:;
> +                orientation: #horizontal;
>                  minVal: 0.0;
>                  maxVal: 1.0;
>                  adjustToValue: (scorePlayer volumeForTrack: trackIndex).
>          panSlider := SimpleSliderMorph new
>                  color: color;
>                  sliderColor: pianoRollColor;
> +                extent: 101 px @ 6 px;
> -                extent: 101 at 6;
>                  target: scorePlayer;
>                  arguments: (Array with: trackIndex);
>                  actionSelector: #panForTrack:put:;
> +                orientation: #horizontal;
>                  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 px @ (panSlider height - 4 px);
> +                position: panSlider center x @ (panSlider top + 2 px).
> -                extent: 1@(panSlider height - 4);
> -                position: panSlider center x@(panSlider top + 2).
>          panSlider addMorphBack: middleLine.
>          r := self makeRow.
>          r addMorphBack: (StringMorph contents: '0').
>          r addMorphBack: volSlider.
>          r addMorphBack: (StringMorph contents: '10').
>          c addMorphBack: r.
>          r := self makeRow.
>          r addMorphBack: (StringMorph contents: 'L' translated).
>          r addMorphBack: panSlider.
>          r addMorphBack: (StringMorph contents: 'R' translated).
>          c addMorphBack: r.
> +        ^ c!
> -        ^ c
> - !
>
> Item was changed:
>   ----- Method: ScorePlayerMorph>>rateControl (in category 'layout') -----
>   rateControl
>
>          | rateSlider middleLine r |
>          rateSlider := SimpleSliderMorph new
>                  color: color;
>                  sliderColor: Color gray;
> +                extent: 180 px @ 12 px;
> -                extent: 180 at 12;
>                  target: self;
>                  actionSelector: #setLogRate:;
> +                orientation: #horizontal;
>                  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 px @ (rateSlider height - 4 px);
> +                position: rateSlider center x @ (rateSlider top + 2 px).
> -                extent: 1@(rateSlider height - 4);
> -                position: rateSlider center x@(rateSlider top + 2).
>          rateSlider addMorphBack: middleLine.
>          r := self makeRow
>                  hResizing: #spaceFill;
>                  vResizing: #rigid;
> +                height: 24 px.
> -                height: 24.
>          r addMorphBack: (StringMorph contents: 'slow ' translated).
>          r addMorphBack: rateSlider.
>          r addMorphBack: (StringMorph contents: ' fast' translated).
> +        ^ r!
> -        ^ r
> - !
>
> Item was changed:
>   ----- Method: ScorePlayerMorph>>scrollControl (in category 'layout')
> -----
>   scrollControl
>
>          | r |
>          scrollSlider := SimpleSliderMorph new
>                  color: color;
>                  sliderColor: Color gray;
> +                extent: 360 px @ 12 px;
> -                extent: 360 at 12;
>                  target: scorePlayer;
> +                orientation: #horizontal;
>                  actionSelector: #positionInScore:;
>                  adjustToValue: scorePlayer positionInScore.
>          r := self makeRow
>                  hResizing: #spaceFill;
>                  vResizing: #rigid;
> +                height: 24 px.
> -                height: 24.
>          r addMorphBack: (StringMorph contents: 'start ' translated).
>          r addMorphBack: scrollSlider.
>          r addMorphBack: (StringMorph contents: ' end' translated).
> +        ^ r!
> -        ^ r
> - !
>
> Item was changed:
>   ----- Method: ScorePlayerMorph>>trackControlsFor: (in category 'layout')
> -----
>   trackControlsFor: trackIndex
>
>          | r |
>          r := self makeRow
>                  hResizing: #spaceFill;
>                  vResizing: #shrinkWrap.
>          r addMorphBack: (self trackNumAndMuteButtonFor: trackIndex).
> +        r addMorphBack: (Morph new extent: 10 px @ 5 px; color: color).
> "spacer"
> -        r addMorphBack: (Morph new extent: 10 at 5; color: color).  "spacer"
>          r addMorphBack: (self panAndVolControlsFor: trackIndex).
> +        ^ r!
> -        ^ 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 px @ 14 px;
> -                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.
> -        pianoRollColor := (Color wheel: scorePlayer score tracks size)
> at: trackIndex.
>
>          r := self makeRow
>                  hResizing: #spaceFill;
>                  vResizing: #spaceFill;
> +                extent: 70 px @ 10 px.
> -                extent: 70 at 10.
>          r addMorphBack:
>                  ((StringMorph
>                          contents: trackIndex printString
> +                        font: (TextStyle defaultFont asPointSize:
> TextStyle defaultFont pointSize * 1.57)) color: pianoRollColor).
> -                        font: (TextStyle default fontOfSize: 24)) color:
> pianoRollColor).
>          trackIndex < 10
> +                ifTrue: [r addMorphBack: (Morph new color: color; extent:
> 19 px @ 8 px)]  "spacer"
> +                ifFalse: [r addMorphBack: (Morph new color: color;
> extent: 8 px @ 8 px)].  "spacer"
> -                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 px @ 14 px;
> -                        extent: 80 at 14;
>                          contentsClipped: (scorePlayer infoForTrack:
> trackIndex)).
> +        r addMorphBack: (Morph new color: color; extent: 8 px @ 8 px).
> "spacer"
> -        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!
> -        ^ r
> - !
>
> Item was changed:
>   ----- Method: ScorePlayerMorph>>volumeControl (in category 'layout')
> -----
>   volumeControl
>
>          | volumeSlider r |
>          volumeSlider := SimpleSliderMorph new
>                  color: color;
>                  sliderColor: Color gray;
> +                extent: 80 px @ 12 px;
> -                extent: 80 at 12;
>                  target: scorePlayer;
> +                orientation: #horizontal;
>                  actionSelector: #overallVolume:;
>                  adjustToValue: scorePlayer overallVolume.
>          r := self makeRow
>                  hResizing: #spaceFill;
>                  vResizing: #rigid;
> +                height: 24 px.
> -                height: 24.
>          r addMorphBack: (StringMorph contents: 'soft  ' translated).
>          r addMorphBack: volumeSlider.
>          r addMorphBack: (StringMorph contents: ' loud' translated).
> +        ^ r!
> -        ^ r
> - !
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20220823/0d07add5/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pastedImage.png
Type: image/png
Size: 60550 bytes
Desc: not available
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20220823/0d07add5/attachment-0003.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pastedImage.png
Type: image/png
Size: 88935 bytes
Desc: not available
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20220823/0d07add5/attachment-0004.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: bild.png
Type: image/png
Size: 23907 bytes
Desc: not available
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20220823/0d07add5/attachment-0005.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ScorePlayerMorph-trackNumAndMuteButtonFor.st
Type: application/octet-stream
Size: 1963 bytes
Desc: not available
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20220823/0d07add5/attachment-0001.obj>


More information about the Squeak-dev mailing list