From ff990717f8b843e43a95f04bdc128cad4f2443b3 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Mon, 20 Feb 2012 23:49:01 -0800 Subject: [PATCH] audio.gadget: printable audio play button --- extra/audio/gadget/gadget.factor | 74 +++++++++++++++++++++++++++++++ extra/audio/gadget/pause.png | Bin 0 -> 957 bytes extra/audio/gadget/play.png | Bin 0 -> 1078 bytes 3 files changed, 74 insertions(+) create mode 100644 extra/audio/gadget/gadget.factor create mode 100644 extra/audio/gadget/pause.png create mode 100644 extra/audio/gadget/play.png diff --git a/extra/audio/gadget/gadget.factor b/extra/audio/gadget/gadget.factor new file mode 100644 index 0000000000..28d4d75290 --- /dev/null +++ b/extra/audio/gadget/gadget.factor @@ -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 ; + + 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 ) + initialize-audio-gadgets + play-label-image get-global :> play-label + pause-label-image get-global :> pause-label + play-label [ click-audio-gadget ] audio-gadget new-button + border-button-theme + gadget-audio-engine get-global f audio t + >>audio-clip + paused >>state + play-label >>play-label + pause-label >>pause-label ; + +: audio. ( audio -- ) + gadget. ; diff --git a/extra/audio/gadget/pause.png b/extra/audio/gadget/pause.png new file mode 100644 index 0000000000000000000000000000000000000000..aa51155314ff9dfa9f378b64a69820a4ab5ad5a5 GIT binary patch literal 957 zcmaJ=zi-n(7CmAWV6I@3HU?GK?BWJC?a{M$ILC48z-hK<%Xq9>#1+gK zBSfyx*c_M3N4{zGF$Hbhbv%v#_WBJE99!d0(grmA67D%i;{YFzYfWq1x3V^$e+Y7s z$^=|YO%SLz0pVkqk#3 zHKU{#?kyB_99n_nQ-^pURy5mWKsBB@y-LCLm$F_sFB2=67@59^1Q@5Z02;>sp{~0` zhqQsO{r*!pY>s>^HgHG=fyFMavloZ*)lz^>N`fXKXNxM=s>ckqj*rN-s zea%g+}+WyxYiA2KB|CmhRmpePT lr`ze%*7n*^uh*0j%%)0CD4z9X8qwbm`vM%gGWX;apbtj#<)6CT! zC1jOIg`yY#2_u5&DI%0os5f6C4Dvx=dJE~X!0xE4J+uwnxj#7PeCPY_cUMM72EC0} z8!3wNrjlZs%uViSI7j~1e;&$YYQgE$d%qvLu%Pz+6=q6!PRCljq%E~0fAP*-rBS!ytyG{d5jnUbV#7d?Bi&}Edf@5r>b+ z7Iblbt}_@8hdV%k(Iazu6o9eSLM2mpqnJJ2rX>}ssk3%!BN7zR^3aus@@4# zt?ngKmCFz_jC-wrU32A#^p3kcZCbK9ZF^{tUbje7zkB~-pFD^cDKVaLzUF@)9`@F@ zl~)!LeXnXdzI)cz)|SevH=0T{2hVq2PxQ8ZuDe^#d6s{box1IfW>9F|qSWjTb