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)