{-# LANGUAGE ForeignFunctionInterface #-}

module Graphics.UI.FLTK.WidgetMisc (Progress, newProgress, maxValue, minValue,
		   Pack, newPack, spacing) where

import Graphics.UI.FLTK.Widget
import Graphics.UI.FLTK.Group
import Foreign

-- | Type for progress bars.
newtype Progress = Progress (Ptr Progress)
instance Widget_C Progress where _widget (Progress p) = castPtr p

foreign import ccall "fl_Progress_new" _newProgress :: Int->Int->Int->Int->IO Progress
-- | New progress bar.
newProgress :: Int->Int->Int->Int->[Prop Progress]->IO Progress
newProgress x y w h l = do { w <- _newProgress x y w h; set w l; return w }


foreign import ccall "fl_Progress_maximum_AG" fl_Progress_maximum_AG :: Progress -> IO Float
foreign import ccall "fl_Progress_maximum_AS" fl_Progress_maximum_AS :: Progress -> Float -> IO ()
-- | Maximum value for the progress bar.
maxValue:: Attr Progress Float
maxValue = Attr fl_Progress_maximum_AG fl_Progress_maximum_AS
foreign import ccall "fl_Progress_minimum_AG" fl_Progress_minimum_AG :: Progress -> IO Float
foreign import ccall "fl_Progress_minimum_AS" fl_Progress_minimum_AS :: Progress -> Float -> IO ()
-- | Minumum value for the progress bar.
minValue:: Attr Progress Float
minValue = Attr fl_Progress_minimum_AG fl_Progress_minimum_AS
foreign import ccall "fl_Progress_value_AG" fl_Progress_value_AG :: Progress -> IO Float
foreign import ccall "fl_Progress_value_AS" fl_Progress_value_AS :: Progress -> Float -> IO ()
-- | Current value for the progress bar.
instance Value_FC Progress Float where
    value = Attr fl_Progress_value_AG fl_Progress_value_AS

-- | Pack multiple widgets with layout.
newtype Pack = Pack (Ptr Pack)
instance Widget_C Pack where _widget (Pack p) = castPtr p
instance Group_C  Pack where _group  (Pack p) = castPtr p

foreign import ccall "fl_Pack_new" _newPack :: Int->Int->Int->Int->IO Pack
-- | new Pack for managing multiple widgets with layout.
newPack :: Int->Int->Int->Int->[Prop Pack]->IO Pack
newPack x y w h l = do { w <- _newPack x y w h; set w l; return w }

foreign import ccall "fl_Pack_spacing_AG" fl_Pack_spacing_AG :: Pack -> IO Int
foreign import ccall "fl_Pack_spacing_AS" fl_Pack_spacing_AS :: Pack -> Int -> IO ()
-- | Spacing between widgets in a Pack.
spacing :: Attr Pack Int
spacing = Attr fl_Pack_spacing_AG fl_Pack_spacing_AS