fltkhs-demos-0.0.0.3: src/Examples/pack.hs
module Main where
import qualified Graphics.UI.FLTK.LowLevel.FL as FL
import Graphics.UI.FLTK.LowLevel.Fl_Enumerations
import Graphics.UI.FLTK.LowLevel.Fl_Types
import Graphics.UI.FLTK.LowLevel.FLTKHS
type_cb :: Ref Scrolled -> Ref Pack -> PackType -> Ref LightButton -> IO ()
type_cb scrolled pack packType _ = do
cs <- getArray pack
mapM_ (\c -> resize c (toRectangle (0,0,25,25))) cs
rect <- getRectangle scrolled
resize pack rect
getParent pack >>=
maybe (return ())
(\p' -> redraw p' >> setType pack packType >> redraw pack)
spacing_cb :: Ref Scrolled -> Ref Pack -> Ref HorValueSlider -> IO ()
spacing_cb scrolled pack slider = do
spacing <- getValue slider
setSpacing pack (truncate spacing)
redraw scrolled
main :: IO ()
main = do
w <- doubleWindowNew (Size (Width 360) (Height 370)) Nothing Nothing
scrolled <- scrolledNew (toRectangle (10,10,340,285)) Nothing
begin scrolled
pack <- packNew (toRectangle $ (10,10,340,285)) Nothing
setBox pack DownFrame
begin pack
_ <- buttonNew (toRectangle (35, 35, 25, 25)) (Just "b1")
_ <- buttonNew (toRectangle (45, 45, 25, 25)) (Just "b2")
_ <- buttonNew (toRectangle (55, 55, 25, 25)) (Just "b3")
_ <- buttonNew (toRectangle (65, 65, 25, 25)) (Just "b4")
_ <- buttonNew (toRectangle (75, 75, 25, 25)) (Just "b5")
_ <- buttonNew (toRectangle (85, 85, 25, 25)) (Just "b6")
_ <- buttonNew (toRectangle (95, 95, 25, 25)) (Just "b7")
_ <- buttonNew (toRectangle (105, 105, 25, 25)) (Just "b8")
_ <- buttonNew (toRectangle (115, 115, 25, 25)) (Just "b9")
_ <- buttonNew (toRectangle (125, 125, 25, 25)) (Just "b10")
_ <- buttonNew (toRectangle (135, 135, 25, 25)) (Just "b11")
_ <- buttonNew (toRectangle (145, 145, 25, 25)) (Just "b12")
_ <- buttonNew (toRectangle (155, 155, 25, 25)) (Just "b13")
_ <- buttonNew (toRectangle (165, 165, 25, 25)) (Just "b14")
_ <- buttonNew (toRectangle (175, 175, 25, 25)) (Just "b15")
_ <- buttonNew (toRectangle (185, 185, 25, 25)) (Just "b16")
_ <- buttonNew (toRectangle (195, 195, 25, 25)) (Just "b17")
_ <- buttonNew (toRectangle (205, 205, 25, 25)) (Just "b18")
_ <- buttonNew (toRectangle (215, 215, 25, 25)) (Just "b19")
_ <- buttonNew (toRectangle (225, 225, 25, 25)) (Just "b20")
_ <- buttonNew (toRectangle (235, 235, 25, 25)) (Just "b21")
_ <- buttonNew (toRectangle (245, 245, 25, 25)) (Just "b22")
_ <- buttonNew (toRectangle (255, 255, 25, 25)) (Just "b23")
_ <- buttonNew (toRectangle (265, 265, 25, 25)) (Just "b24")
end pack
setResizable w (Just w)
end scrolled
lb1 <- lightButtonNew (toRectangle (10, 305, 165, 25)) (Just "HORIZONTAL")
setType lb1 RadioButtonType
setCallback lb1 (type_cb scrolled pack PackHorizontal)
lb2 <- lightButtonNew (toRectangle(185, 305, 165, 25)) (Just "VERTICAL")
setType lb2 RadioButtonType
_ <- setValue lb2 True
setCallback lb2 (type_cb scrolled pack PackVertical)
vs <- horValueSliderNew (toRectangle (100, 335, 250, 25)) (Just "Spacing: ")
setAlign vs (Alignments [AlignTypeLeft])
range vs 0 30
setStep vs 1
setCallback vs (spacing_cb scrolled pack)
end w
showWidget w
_ <- FL.run
return ()