Home - accursoft/binding GitHub Wiki
GUI Data Binding for Haskell
Bind mutable data and lists to IO
objects, such as Gtk2Hs or WxHaskell widgets.
Demo programs, HUnit, and QuickCheck tests (via HTF) are included.
data Person = Person {name::String, age::Int, active::Bool} deriving (Read, Show)
main = do --load data into a binding list
bl <- toBindingList $ read f :: IO (BindingList IORef Person)
--create widgits
name' <- entryNew
age' <- spinButtonNewWithRange 0 120 1
active' <- checkButtonNew
--bind them
nav <- navigation bl $ Person "" 0 False
bindControl bl name name' entryText (\p n -> p {name = n})
bindControl bl (fromIntegral . age) age' spinButtonValue (\p a -> p {age = round a})
bindControl bl active active' toggleButtonActive (\p a -> p {active = a})
(from binding-gtk/demo/lists.hs)