packages feed

AutoForms-0.4.0: src/Graphics/UI/AF/General/Misc.hs

module Graphics.UI.AF.General.Misc
    ( enabledWhen, enabledWhen2
    , affect
    )
where

import Graphics.UI.AF.General.AutoForm

enabledWhen
    :: AutoForm action comH builder satCxt com =>
       comH b 
    -> (b -> Bool)
    -> comH a
    -> builder (comH a)
enabledWhen source ableFun target
    = do let setEnabled' = getValue source >>= setEnabled target . ableFun
         addListener setEnabled' source
         postponeAction setEnabled'
         return target

enabledWhen2
    :: AutoForm action comH builder satCxt com =>
       comH b 
    -> comH c
    -> (b -> c -> Bool)
    -> comH a
    -> builder (comH a)
enabledWhen2 source1 source2 ableFun target
    = do let setEnabled' = do source1' <- getValue source1
                              source2' <- getValue source2
                              setEnabled target $ ableFun source1' source2'
         addListener setEnabled' source1
         addListener setEnabled' source2
         postponeAction setEnabled'
         return target

affect
    :: AutoForm action comH builder satCxt com =>
       (a -> b)
    -> comH a
    -> comH b
    -> builder ()
affect f source target
    = do let affectTarget = getValue source >>= setValue target . f
         addListener affectTarget source
         postponeAction affectTarget