module Main where import Control.Applicative import Control.Concurrent import Control.Concurrent.MVar import Control.GFunctor import Data.ReactiveValue import Graphics.UI.WX as WX import Graphics.UI.WXCore as WXCore import Graphics.UI.WX.Reactive main :: IO () main = start $ do -- View f <- frameLoadRes "test.xrc" "frame_1" [] -- Entry text txtT <- entryText =<< textCtrlRes f "text_ctrl_1" [] nBtns <- mapM (\x -> buttonRes f ("btn" ++ show x) [] >>= buttonClick) [0..9] btnDot <- buttonClick =<< buttonRes f "btnDot" [] -- Controller -- Numbers let addX :: String -> ReactiveFieldWrite IO () addX x = modRW (\s _ -> s ++ x) txtT mapM_ (\(b,n) -> b =:> addX n -- Rule ) $ zip nBtns $ map show [0..9] -- Dot let addDot :: ReactiveFieldWrite IO () addDot = modRW (\s () -> if '.' `elem` s then s else s ++ ".") txtT btnDot =:> addDot windowShow f return ()