audio.gadget: printable audio play button
parent
3f9b2ef47a
commit
ff990717f8
|
@ -0,0 +1,74 @@
|
||||||
|
USING: accessors audio audio.engine combinators images.loader
|
||||||
|
images.viewer init kernel locals namespaces ui.gadgets
|
||||||
|
ui.gadgets.buttons ui.gadgets.panes ;
|
||||||
|
FROM: ui.gadgets.buttons.private => border-button-theme ;
|
||||||
|
FROM: audio.engine.private => make-engine-current ;
|
||||||
|
IN: audio.gadget
|
||||||
|
|
||||||
|
TUPLE: audio-gadget < button
|
||||||
|
play-label pause-label
|
||||||
|
audio-clip state ;
|
||||||
|
|
||||||
|
<PRIVATE
|
||||||
|
|
||||||
|
CONSTANT: play-label-image-path "vocab:audio/gadget/play.png"
|
||||||
|
CONSTANT: pause-label-image-path "vocab:audio/gadget/pause.png"
|
||||||
|
|
||||||
|
SYMBOLS: play-label-image pause-label-image gadget-audio-engine ;
|
||||||
|
|
||||||
|
[
|
||||||
|
f play-label-image set-global
|
||||||
|
f pause-label-image set-global
|
||||||
|
f gadget-audio-engine set-global
|
||||||
|
] "audio.gadget" add-startup-hook
|
||||||
|
|
||||||
|
: initialize-audio-gadgets ( -- )
|
||||||
|
gadget-audio-engine get-global [
|
||||||
|
play-label-image-path load-image
|
||||||
|
play-label-image set-global
|
||||||
|
|
||||||
|
pause-label-image-path load-image
|
||||||
|
pause-label-image set-global
|
||||||
|
|
||||||
|
<standard-audio-engine> dup start-audio*
|
||||||
|
gadget-audio-engine set-global
|
||||||
|
] unless ;
|
||||||
|
|
||||||
|
SYMBOLS: playing paused ;
|
||||||
|
|
||||||
|
: relabel-audio-gadget ( audio-gadget label -- )
|
||||||
|
[ drop clear-gadget ] [ add-gadget drop ] 2bi ;
|
||||||
|
|
||||||
|
: pause-audio-gadget ( audio-gadget -- )
|
||||||
|
[ dup play-label>> relabel-audio-gadget ]
|
||||||
|
[ paused swap state<< ]
|
||||||
|
[ audio-clip>> pause-clip ] tri ;
|
||||||
|
|
||||||
|
: play-audio-gadget ( audio-gadget -- )
|
||||||
|
[ dup pause-label>> relabel-audio-gadget ]
|
||||||
|
[ playing swap state<< ]
|
||||||
|
[ audio-clip>> play-clip ] tri ;
|
||||||
|
|
||||||
|
: click-audio-gadget ( audio-gadget -- )
|
||||||
|
gadget-audio-engine get make-engine-current
|
||||||
|
dup state>> {
|
||||||
|
{ playing [ pause-audio-gadget ] }
|
||||||
|
{ paused [ play-audio-gadget ] }
|
||||||
|
} case ;
|
||||||
|
|
||||||
|
PRIVATE>
|
||||||
|
|
||||||
|
:: <audio-gadget> ( audio -- gadget )
|
||||||
|
initialize-audio-gadgets
|
||||||
|
play-label-image get-global <image-gadget> :> play-label
|
||||||
|
pause-label-image get-global <image-gadget> :> pause-label
|
||||||
|
play-label [ click-audio-gadget ] audio-gadget new-button
|
||||||
|
border-button-theme
|
||||||
|
gadget-audio-engine get-global f audio t <static-audio-clip>
|
||||||
|
>>audio-clip
|
||||||
|
paused >>state
|
||||||
|
play-label >>play-label
|
||||||
|
pause-label >>pause-label ;
|
||||||
|
|
||||||
|
: audio. ( audio -- )
|
||||||
|
<audio-gadget> gadget. ;
|
Binary file not shown.
After Width: | Height: | Size: 957 B |
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
Loading…
Reference in New Issue