{-# 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