{-# LANGUAGE RecursiveDo #-}
module Main where
import Reflex
import Reflex.Gloss.Scene
import Reflex.Monad.Time
import Reflex.Animation
import Reflex.Monad
import Graphics.Gloss
import Widgets
pictureButton :: Reflex t => Behavior t Picture -> Scene t (Event t (Behavior t Picture))
pictureButton picture = do
translation (0, -30) $ render picture
click <- translation (0, 30) $ button (pure "Select") (pure (80, 30))
return (picture <$ click)
channels :: Reflex t => Scene t (Event t (Behavior t Picture))
channels = do
time <- getTime
translation (-100, 0) $ pictureButton (square <$> pure green)
translation (0, 0) $ pictureButton (square <$> pure green)
translation (100, 0) $ pictureButton (square <$> pure green)
where
square c = color c $ rectangleSolid 40 40
widget :: Reflex t => Scene t ()
widget = do
channels
return ()
main = playSceneGraph display background frequency widget
where
display = InWindow "Animations example" (600, 600) (0, 0)
background = white
frequency = 30