audio.gadget: create/dispose clip on graft/ungraft

db4
Joe Groff 2012-02-22 15:46:45 -08:00
parent 273b5115bf
commit 9ee314b906
1 changed files with 18 additions and 6 deletions

View File

@ -1,13 +1,13 @@
USING: accessors audio audio.engine combinators images.loader USING: accessors audio audio.engine combinators destructors
images.viewer init kernel locals namespaces ui.gadgets images.loader images.viewer init kernel locals namespaces
ui.gadgets.buttons ui.gadgets.panes ; ui.gadgets ui.gadgets.buttons ui.gadgets.panes ;
FROM: ui.gadgets.buttons.private => border-button-theme ; FROM: ui.gadgets.buttons.private => border-button-theme ;
FROM: audio.engine.private => make-engine-current ; FROM: audio.engine.private => make-engine-current ;
IN: audio.gadget IN: audio.gadget
TUPLE: audio-gadget < button TUPLE: audio-gadget < button
play-label pause-label play-label pause-label
audio-clip state ; audio audio-clip state ;
<PRIVATE <PRIVATE
@ -64,12 +64,24 @@ PRIVATE>
pause-label-image get-global <image-gadget> :> pause-label pause-label-image get-global <image-gadget> :> pause-label
play-label [ click-audio-gadget ] audio-gadget new-button play-label [ click-audio-gadget ] audio-gadget new-button
border-button-theme border-button-theme
gadget-audio-engine get-global f audio t <static-audio-clip> audio >>audio
>>audio-clip
paused >>state paused >>state
play-label >>play-label play-label >>play-label
pause-label >>pause-label ; pause-label >>pause-label ;
M: audio-gadget graft*
[ call-next-method ] [
dup audio>>
[ gadget-audio-engine get-global f ] dip f <static-audio-clip>
>>audio-clip
drop
] bi ;
M: audio-gadget ungraft*
[ pause-audio-gadget ]
[ audio-clip>> dispose ]
[ call-next-method ] tri ;
: audio. ( audio -- ) : audio. ( audio -- )
<audio-gadget> gadget. ; <audio-gadget> gadget. ;