[squeak-dev] The Trunk: MorphicExtras-kfr.234.mcz
commits at source.squeak.org
commits at source.squeak.org
Tue May 1 10:18:18 UTC 2018
Karl Ramberg uploaded a new version of MorphicExtras to project The Trunk:
http://source.squeak.org/trunk/MorphicExtras-kfr.234.mcz
==================== Summary ====================
Name: MorphicExtras-kfr.234
Author: kfr
Time: 1 May 2018, 12:17:55.1564 pm
UUID: daa73559-d68f-7c4d-a1a3-2a3ad97af5bc
Ancestors: MorphicExtras-kfr.233
Adds menu button to EnvelopeEditorMorph.
Fixes the layout of the morph a little.
Changes lable of ScorePlayerMorph menu button to Menu
=============== Diff against MorphicExtras-kfr.233 ===============
Item was removed:
- ----- Method: EnvelopeEditorMorph>>addControls (in category 'construction') -----
- addControls
- | chooser |
- chooser := PopUpChoiceMorph new extent: 110 at 14;
- contentsClipped: 'Editing: ' , envelope name;
- target: self;
- actionSelector: #chooseFrom:envelopeItem:;
- getItemsSelector: #curveChoices.
- chooser arguments: (Array with: chooser).
- self addMorph: chooser.
- chooser align: chooser bounds topLeft with: graphArea bounds bottomLeft + (0 at 5).
-
- chooser := PopUpChoiceMorph new extent: 130 at 14;
- contentsClipped: 'Timbre: ' , soundName;
- target: self;
- actionSelector: #chooseFrom:soundItem:;
- getItemsSelector: #soundChoices.
- chooser arguments: (Array with: chooser).
- self addMorph: chooser.
- chooser align: chooser bounds topRight with: graphArea bounds bottomRight + (-50 at 5).
- !
Item was removed:
- ----- Method: EnvelopeEditorMorph>>addCustomMenuItems:hand: (in category 'menu') -----
- addCustomMenuItems: menu hand: aHandMorph
- super addCustomMenuItems: menu hand: aHandMorph.
- menu addLine.
- envelope updateSelector = #ratio: ifTrue:
- [menu add: 'choose denominator...' translated action: #chooseDenominator:].
- menu add: 'adjust scale...' translated action: #adjustScale:.
- SoundPlayer isReverbOn
- ifTrue: [menu add: 'turn reverb off' translated target: SoundPlayer selector: #stopReverb]
- ifFalse: [menu add: 'turn reverb on' translated target: SoundPlayer selector: #startReverb].
- menu addLine.
- menu add: 'get sound from lib' translated action: #chooseSound:.
- menu add: 'put sound in lib' translated action: #saveSound:.
- menu add: 'read sound from disk...' translated action: #readFromDisk:.
- menu add: 'save sound on disk...' translated action: #saveToDisk:.
- menu add: 'save library on disk...' translated action: #saveLibToDisk:.
- !
Item was changed:
----- Method: EnvelopeEditorMorph>>buildGraphAreaIn: (in category 'construction') -----
buildGraphAreaIn: frame
| r y |
graphArea := RectangleMorph
+ newBounds: ((frame left + 15) @ (frame top + 15)
+ corner: (frame right+1) @ (frame bottom - 70))
- newBounds: ((frame left + 40) @ (frame top + 40)
- corner: (frame right+1) @ (frame bottom - 60))
color: Color lightGreen lighter lighter.
graphArea borderWidth: 1.
self addMorph: graphArea.
(envelope updateSelector = #pitch: and: [envelope scale <= 2.0]) ifTrue:
["Show half-steps"
r := graphArea innerBounds.
0.0 to: 1.0 by: 1.0/12.0/envelope scale do:
[:val |
y := self yFromValue: val.
graphArea addMorph: ((RectangleMorph
newBounds: (r left at y extent: r width at 1)
color: Color veryLightGray)
borderWidth: 0)]].
(envelope updateSelector = #ratio: and: [denominator ~= 9999]) ifTrue:
["Show denominator gridding"
r := graphArea innerBounds.
(0.0 to: 1.0 by: 1.0/denominator/envelope scale) do:
[:v |
y := self yFromValue: v.
graphArea addMorph: ((RectangleMorph
newBounds: (r left at y extent: r width at 1)
color: Color veryLightGray)
borderWidth: 0)]].
!
Item was changed:
----- Method: EnvelopeEditorMorph>>buildScalesIn: (in category 'editing') -----
buildScalesIn: frame
| env |
env := envelope.
pixPerTick := graphArea width // (self maxTime//10) max: 1.
"hminortick := ( 1 + ( self maxTime // 800 ) ) * 10.
hmajortick := ( 1 + ( self maxTime // 800 ) ) * 100."
hScale := (Morph newBounds: ((graphArea left)@(frame top) corner: (self xFromMs: self maxTime)@(graphArea top - 1))) color: Color lightGreen.
" hScale := (ScaleMorph newBounds: ((graphArea left)@(frame top) corner: (self xFromMs: self maxTime)@(graphArea top - 1)))
start: 0 stop: self maxTime
minorTick: hminortick minorTickLength: 3
majorTick: hmajortick majorTickLength: 10
caption: 'milliseconds' tickPrintBlock: [:v | v printString].
"
self addMorph: hScale.
vScale := (Morph newBounds: (0 at 0 extent: (graphArea height)@(graphArea left - frame left))) color: Color lightGreen.
"vScale := ScaleMorph newBounds: (0 at 0 extent: (graphArea height)@(graphArea left - frame left))."
"env name = 'pitch'
ifTrue:
[env scale >= 2.0
ifTrue:
[vScale start: 0 stop: env scale
minorTick: env scale / 24 minorTickLength: 3
majorTick: env scale / 2.0 majorTickLength: 10
caption: 'pitch (octaves)'
tickPrintBlock: [:v | (v-(env scale/2)) asInteger printString]]
ifFalse:
[vScale start: 0 stop: env scale
minorTick: 1.0/48.0 minorTickLength: 3
majorTick: 1.0/12.0 majorTickLength: 10
caption: 'pitch (half-steps)'
tickPrintBlock: [:v | (v-(env scale/2)*12) rounded printString]]]
ifFalse: [
env name = 'random pitch:'
ifTrue: [
vScale start: 0.9 stop: 1.1
minorTick: 0.2 / 50.0 minorTickLength: 3
majorTick: 0.2 / 5.0 majorTickLength: 10
caption: env name
tickPrintBlock: [:v | v printString]]
ifFalse: [
vScale start: 0 stop: env scale
minorTick: env scale / 50.0 minorTickLength: 3
majorTick: env scale / 5.0 majorTickLength: 10
caption: env name
tickPrintBlock: [:v | v printString]].
]."
vScale := TransformationMorph new asFlexOf: vScale.
vScale angle: Float pi / 2.0.
self addMorph: vScale.
+ vScale position: (frame left + 1)@(graphArea top-1) - (3 at 1).
- vScale position: (frame left)@(graphArea top-1) - (3 at 1).
!
Item was changed:
----- Method: EnvelopeEditorMorph>>buildView (in category 'construction') -----
buildView
| frame |
self color: Color lightGreen.
self removeAllMorphs.
frame := self innerBounds.
self buildGraphAreaIn: frame.
self buildScalesIn: frame.
self addHandlesIn: frame.
self addCurves.
line addHandles.
+ self addMorph: self makeControls.
- self addControls.
self addKeyboard!
Item was added:
+ ----- Method: EnvelopeEditorMorph>>invokeMenu (in category 'menu') -----
+ invokeMenu
+ "Invoke a menu of additonal functions for this ScorePlayer."
+ | menu |
+ menu := MenuMorph new defaultTarget: self.
+
+ envelope updateSelector = #ratio: ifTrue:
+ [menu add: 'choose denominator...' translated action: #chooseDenominator:].
+ menu add: 'adjust scale...' translated action: #adjustScale:.
+ SoundPlayer isReverbOn
+ ifTrue: [menu add: 'turn reverb off' translated target: SoundPlayer selector: #stopReverb]
+ ifFalse: [menu add: 'turn reverb on' translated target: SoundPlayer selector: #startReverb].
+ menu addLine.
+ menu add: 'get sound from lib' translated action: #chooseSound:.
+ menu add: 'put sound in lib' translated action: #saveSound:.
+ menu add: 'read sound from disk...' translated action: #readFromDisk:.
+ menu add: 'save sound on disk...' translated action: #saveToDisk:.
+ menu add: 'save library on disk...' translated action: #saveLibToDisk:.
+ menu popUpInWorld: self world!
Item was added:
+ ----- Method: EnvelopeEditorMorph>>makeControls (in category 'construction') -----
+ makeControls
+ | chooser button row |
+ row := AlignmentMorph newRow color: color; borderWidth: 0.
+ row align: row bounds topLeft with: graphArea bounds bottomLeft + (0 at 5).
+ button := SimpleButtonMorph new target: self; borderColor: Color black;
+ borderWidth: 2; color: color.
+ row addMorphBack: (button label: 'Menu' translated; actWhen: #buttonDown;
+ actionSelector: #invokeMenu).
+ row addMorphBack: (Morph new extent:10 at 1; color: Color transparent).
+ chooser := PopUpChoiceMorph new extent: 120 at 14;
+ contentsClipped: 'Editing: ' , envelope name;
+ target: self;
+ actionSelector: #chooseFrom:envelopeItem:;
+ getItemsSelector: #curveChoices.
+ chooser arguments: (Array with: chooser).
+ row addMorphBack: chooser.
+
+ chooser := PopUpChoiceMorph new extent: 130 at 14;
+ contentsClipped: 'Timbre: ' , soundName;
+ target: self;
+ actionSelector: #chooseFrom:soundItem:;
+ getItemsSelector: #soundChoices.
+ chooser arguments: (Array with: chooser).
+ row addMorphBack: chooser.
+
+ ^row!
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 at 5.
bb := SimpleButtonMorph new target: self; borderColor: #raised;
borderWidth: 2; color: color.
+ r addMorphBack: (bb label: 'Menu' translated; actWhen: #buttonDown;
- r addMorphBack: (bb label: '<>'; actWhen: #buttonDown;
actionSelector: #invokeMenu).
bb := SimpleButtonMorph new target: self; borderColor: #raised;
borderWidth: 2; color: color.
r addMorphBack: (bb label: 'Piano Roll' translated; actionSelector: #makePianoRoll).
bb := SimpleButtonMorph new target: self; borderColor: #raised;
borderWidth: 2; color: color.
r addMorphBack: (bb label: 'Rewind' translated; actionSelector: #rewind).
bb := SimpleButtonMorph new target: scorePlayer; borderColor: #raised;
borderWidth: 2; color: color.
r addMorphBack: (bb label: 'Play' translated; actionSelector: #resumePlaying).
bb := SimpleButtonMorph new target: scorePlayer; borderColor: #raised;
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;
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;
label: 'Repeat' translated;
actionSelector: #repeat:;
target: scorePlayer;
setSwitchState: scorePlayer repeat.
r addMorphBack: repeatSwitch].
^ r
!
More information about the Squeak-dev
mailing list
|