packages feed

fltkhs-demos-0.0.0.3: src/Examples/tree-simple.hs

module Main where
import qualified Graphics.UI.FLTK.LowLevel.FL as FL
import Graphics.UI.FLTK.LowLevel.Fl_Types
import Graphics.UI.FLTK.LowLevel.FLTKHS

treeCallback :: Ref Tree -> IO ()
treeCallback tree' = do
  (Just item') <- getCallbackItem tree'
  reason' <- getCallbackReason tree'
  label' <- getLabel item'
  case reason' of
    TreeReasonSelected -> do
      (Just path') <- itemPathname tree' item'
      print $ "TreeCallback: Item selected =" ++ label' ++ "Full pathname=" ++ path' ++ "\n"
    TreeReasonDeselected ->
      print $ "TreeCallback: Item deselected =" ++ label' ++ "\n"
    TreeReasonOpened ->
      print $ "TreeCallback: Item opened =" ++ label' ++ "\n"
    TreeReasonClosed ->
      print $ "TreeCallback: Item closed =" ++ label' ++ "\n"
    _ -> print ""
main :: IO ()
main = do
  _ <- FL.setScheme "gtk+"
  window <- windowNew (toSize (250,400)) Nothing (Just "Simple Tree")
  begin window
  windowWidth' <- getW window
  windowHeight' <- getH window
  tree <- treeNew (toRectangle (10,10,windowWidth' - 20,windowHeight' - 20)) Nothing
  setShowroot tree False
  _ <- add tree "Flintstones/Fred"
  _ <- add tree "Flintstones/Wilma"
  _ <- add tree "Flintstones/Pebbles"
  _ <- add tree "Simpsons/Homer"
  _ <- add tree "Simpsons/Marge"
  _ <- add tree "Simpsons/Bart"
  _ <- add tree "Simpsons/Lisa"
  _ <- add tree "Pathnames/\\/bin"
  _ <- add tree "Pathnames/\\/usr\\/sbin"
  _ <- add tree "Pathnames/C:\\\\Program Files"
  _ <- add tree "Pathnames/C:\\\\Documents and Settings"
  close tree (TreeItemNameLocator (TreeItemName "Simpsons"))
  close tree (TreeItemNameLocator (TreeItemName "Pathnames"))
  setCallback tree treeCallback
  end window
  showWidget window
  _ <- FL.run
  return ()