barrie-0.4.1: demos/MultiColumnList.hs
module Main where
import Data.List
import Data.Maybe
import Barrie
import Barrie.Packing
demoWidget :: Widget
demoWidget = vbox [treeHeaderVisible True $ ui "demo list" listView
,ui "selected" (textLabel "")
]
listItems :: [(String, Int)]
listItems = [("Planes", 29), ("Trains", 5), ("Automobiles", 52)]
type DemoState = ([(String, Int)], Int)
getList :: DemoState -> [(String, Int)]
getList (items, _) = items
type DemoGadget = Gadget DemoState
demoGUI :: DemoGadget
demoGUI = sectionG "demo gui" [columnTitles ["Product", "Price"] $
chooserG' "demo list" selected set fst unpack,
displayG "selected" getSelStr]
where set sel (items, _) = (items, sel)
selected (_, sel) = sel
getSelStr (items, n) | n < 0 = ""
| otherwise = fst (items !! n)
main = gtkMain demoGUI demoWidget (listItems, 0)