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

commits at source.squeak.org commits at source.squeak.org
Thu Aug 25 12:03:55 UTC 2022


Christoph Thiede uploaded a new version of MorphicExtras to project The Trunk:
http://source.squeak.org/trunk/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
- !



More information about the Squeak-dev mailing list