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