{-# LANGUAGE ImplicitParams, OverloadedStrings, AllowAmbiguousTypes, GADTs, CPP, ExistentialQuantification, TypeSynonymInstances, FlexibleInstances, MultiParamTypeClasses, FlexibleContexts, ScopedTypeVariables, UndecidableInstances #-} module Graphics.UI.FLTK.Theme.Light.Tree ( treeNew ) where import Graphics.UI.FLTK.LowLevel.Fl_Enumerations import Graphics.UI.FLTK.LowLevel.Fl_Types import Graphics.UI.FLTK.LowLevel.Dispatch import Graphics.UI.FLTK.Theme.Light.Common import qualified Data.Text as T import qualified Graphics.UI.FLTK.LowLevel.FLTKHS as LowLevel import Graphics.UI.FLTK.Theme.Light.Assets treeNew :: (?assets :: Assets) => Rectangle -> Maybe T.Text -> IO (Ref LowLevel.Tree) treeNew rectangle l' = do let customDraw :: Ref LowLevel.Tree -> IO () customDraw t = do (color :: Color) <- LowLevel.getColor t let slightlyDarker = colorAverage color blackColor 0.85 withCustomBoxDraw BorderBox (\rect _ -> do LowLevel.flcRectfWithColor rect color LowLevel.flcRectWithColor rect slightlyDarker) (LowLevel.drawTreeBase (safeCast t)) t <- LowLevel.treeCustom rectangle l' (Just customDraw) Nothing LowLevel.setBox t BorderBox LowLevel.setColor t lightBackground LowLevel.setLabelfont t commonFont LowLevel.setLabelsize t commonFontSize LowLevel.setItemLabelfont t commonFont LowLevel.setItemLabelsize t commonFontSize sc <- commonSelectionColor LowLevel.setSelectionColor t sc LowLevel.setScrollbarSize t 10 LowLevel.setConnectorstyle t TreeConnectorSolid return t