packages feed

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)