diff --git a/extra/audio/gadget/gadget.factor b/extra/audio/gadget/gadget.factor index 6e34eff3a3..f882f952d8 100644 --- a/extra/audio/gadget/gadget.factor +++ b/extra/audio/gadget/gadget.factor @@ -1,13 +1,13 @@ -USING: accessors audio audio.engine combinators images.loader -images.viewer init kernel locals namespaces ui.gadgets -ui.gadgets.buttons ui.gadgets.panes ; +USING: accessors audio audio.engine combinators destructors +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 ; + audio audio-clip state ; 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 + audio >>audio paused >>state play-label >>play-label pause-label >>pause-label ; +M: audio-gadget graft* + [ call-next-method ] [ + dup audio>> + [ gadget-audio-engine get-global f ] dip f + >>audio-clip + drop + ] bi ; + +M: audio-gadget ungraft* + [ pause-audio-gadget ] + [ audio-clip>> dispose ] + [ call-next-method ] tri ; + : audio. ( audio -- ) gadget. ;