{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
-}

module GI.Gtk.Objects.Range
    ( 

-- * Exported types
    Range(..)                               ,
    RangeK                                  ,
    toRange                                 ,
    noRange                                 ,


 -- * Methods
-- ** rangeGetAdjustment
    rangeGetAdjustment                      ,


-- ** rangeGetFillLevel
    rangeGetFillLevel                       ,


-- ** rangeGetFlippable
    rangeGetFlippable                       ,


-- ** rangeGetInverted
    rangeGetInverted                        ,


-- ** rangeGetLowerStepperSensitivity
    rangeGetLowerStepperSensitivity         ,


-- ** rangeGetMinSliderSize
    rangeGetMinSliderSize                   ,


-- ** rangeGetRangeRect
    rangeGetRangeRect                       ,


-- ** rangeGetRestrictToFillLevel
    rangeGetRestrictToFillLevel             ,


-- ** rangeGetRoundDigits
    rangeGetRoundDigits                     ,


-- ** rangeGetShowFillLevel
    rangeGetShowFillLevel                   ,


-- ** rangeGetSliderRange
    rangeGetSliderRange                     ,


-- ** rangeGetSliderSizeFixed
    rangeGetSliderSizeFixed                 ,


-- ** rangeGetUpperStepperSensitivity
    rangeGetUpperStepperSensitivity         ,


-- ** rangeGetValue
    rangeGetValue                           ,


-- ** rangeSetAdjustment
    rangeSetAdjustment                      ,


-- ** rangeSetFillLevel
    rangeSetFillLevel                       ,


-- ** rangeSetFlippable
    rangeSetFlippable                       ,


-- ** rangeSetIncrements
    rangeSetIncrements                      ,


-- ** rangeSetInverted
    rangeSetInverted                        ,


-- ** rangeSetLowerStepperSensitivity
    rangeSetLowerStepperSensitivity         ,


-- ** rangeSetMinSliderSize
    rangeSetMinSliderSize                   ,


-- ** rangeSetRange
    rangeSetRange                           ,


-- ** rangeSetRestrictToFillLevel
    rangeSetRestrictToFillLevel             ,


-- ** rangeSetRoundDigits
    rangeSetRoundDigits                     ,


-- ** rangeSetShowFillLevel
    rangeSetShowFillLevel                   ,


-- ** rangeSetSliderSizeFixed
    rangeSetSliderSizeFixed                 ,


-- ** rangeSetUpperStepperSensitivity
    rangeSetUpperStepperSensitivity         ,


-- ** rangeSetValue
    rangeSetValue                           ,




 -- * Properties
-- ** Adjustment
    RangeAdjustmentPropertyInfo             ,
    constructRangeAdjustment                ,
    getRangeAdjustment                      ,
    setRangeAdjustment                      ,


-- ** FillLevel
    RangeFillLevelPropertyInfo              ,
    constructRangeFillLevel                 ,
    getRangeFillLevel                       ,
    setRangeFillLevel                       ,


-- ** Inverted
    RangeInvertedPropertyInfo               ,
    constructRangeInverted                  ,
    getRangeInverted                        ,
    setRangeInverted                        ,


-- ** LowerStepperSensitivity
    RangeLowerStepperSensitivityPropertyInfo,
    constructRangeLowerStepperSensitivity   ,
    getRangeLowerStepperSensitivity         ,
    setRangeLowerStepperSensitivity         ,


-- ** RestrictToFillLevel
    RangeRestrictToFillLevelPropertyInfo    ,
    constructRangeRestrictToFillLevel       ,
    getRangeRestrictToFillLevel             ,
    setRangeRestrictToFillLevel             ,


-- ** RoundDigits
    RangeRoundDigitsPropertyInfo            ,
    constructRangeRoundDigits               ,
    getRangeRoundDigits                     ,
    setRangeRoundDigits                     ,


-- ** ShowFillLevel
    RangeShowFillLevelPropertyInfo          ,
    constructRangeShowFillLevel             ,
    getRangeShowFillLevel                   ,
    setRangeShowFillLevel                   ,


-- ** UpperStepperSensitivity
    RangeUpperStepperSensitivityPropertyInfo,
    constructRangeUpperStepperSensitivity   ,
    getRangeUpperStepperSensitivity         ,
    setRangeUpperStepperSensitivity         ,




 -- * Signals
-- ** AdjustBounds
    RangeAdjustBoundsCallback               ,
    RangeAdjustBoundsCallbackC              ,
    RangeAdjustBoundsSignalInfo             ,
    afterRangeAdjustBounds                  ,
    mkRangeAdjustBoundsCallback             ,
    noRangeAdjustBoundsCallback             ,
    onRangeAdjustBounds                     ,
    rangeAdjustBoundsCallbackWrapper        ,
    rangeAdjustBoundsClosure                ,


-- ** ChangeValue
    RangeChangeValueCallback                ,
    RangeChangeValueCallbackC               ,
    RangeChangeValueSignalInfo              ,
    afterRangeChangeValue                   ,
    mkRangeChangeValueCallback              ,
    noRangeChangeValueCallback              ,
    onRangeChangeValue                      ,
    rangeChangeValueCallbackWrapper         ,
    rangeChangeValueClosure                 ,


-- ** MoveSlider
    RangeMoveSliderCallback                 ,
    RangeMoveSliderCallbackC                ,
    RangeMoveSliderSignalInfo               ,
    afterRangeMoveSlider                    ,
    mkRangeMoveSliderCallback               ,
    noRangeMoveSliderCallback               ,
    onRangeMoveSlider                       ,
    rangeMoveSliderCallbackWrapper          ,
    rangeMoveSliderClosure                  ,


-- ** ValueChanged
    RangeValueChangedCallback               ,
    RangeValueChangedCallbackC              ,
    RangeValueChangedSignalInfo             ,
    afterRangeValueChanged                  ,
    mkRangeValueChangedCallback             ,
    noRangeValueChangedCallback             ,
    onRangeValueChanged                     ,
    rangeValueChangedCallbackWrapper        ,
    rangeValueChangedClosure                ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.Gtk.Types
import GI.Gtk.Callbacks
import qualified GI.Atk as Atk
import qualified GI.GObject as GObject
import qualified GI.Gdk as Gdk

newtype Range = Range (ForeignPtr Range)
foreign import ccall "gtk_range_get_type"
    c_gtk_range_get_type :: IO GType

type instance ParentTypes Range = RangeParentTypes
type RangeParentTypes = '[Widget, GObject.Object, Atk.ImplementorIface, Buildable, Orientable]

instance GObject Range where
    gobjectIsInitiallyUnowned _ = True
    gobjectType _ = c_gtk_range_get_type
    

class GObject o => RangeK o
instance (GObject o, IsDescendantOf Range o) => RangeK o

toRange :: RangeK o => o -> IO Range
toRange = unsafeCastTo Range

noRange :: Maybe Range
noRange = Nothing

-- signal Range::adjust-bounds
type RangeAdjustBoundsCallback =
    Double ->
    IO ()

noRangeAdjustBoundsCallback :: Maybe RangeAdjustBoundsCallback
noRangeAdjustBoundsCallback = Nothing

type RangeAdjustBoundsCallbackC =
    Ptr () ->                               -- object
    CDouble ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkRangeAdjustBoundsCallback :: RangeAdjustBoundsCallbackC -> IO (FunPtr RangeAdjustBoundsCallbackC)

rangeAdjustBoundsClosure :: RangeAdjustBoundsCallback -> IO Closure
rangeAdjustBoundsClosure cb = newCClosure =<< mkRangeAdjustBoundsCallback wrapped
    where wrapped = rangeAdjustBoundsCallbackWrapper cb

rangeAdjustBoundsCallbackWrapper ::
    RangeAdjustBoundsCallback ->
    Ptr () ->
    CDouble ->
    Ptr () ->
    IO ()
rangeAdjustBoundsCallbackWrapper _cb _ value _ = do
    let value' = realToFrac value
    _cb  value'

onRangeAdjustBounds :: (GObject a, MonadIO m) => a -> RangeAdjustBoundsCallback -> m SignalHandlerId
onRangeAdjustBounds obj cb = liftIO $ connectRangeAdjustBounds obj cb SignalConnectBefore
afterRangeAdjustBounds :: (GObject a, MonadIO m) => a -> RangeAdjustBoundsCallback -> m SignalHandlerId
afterRangeAdjustBounds obj cb = connectRangeAdjustBounds obj cb SignalConnectAfter

connectRangeAdjustBounds :: (GObject a, MonadIO m) =>
                            a -> RangeAdjustBoundsCallback -> SignalConnectMode -> m SignalHandlerId
connectRangeAdjustBounds obj cb after = liftIO $ do
    cb' <- mkRangeAdjustBoundsCallback (rangeAdjustBoundsCallbackWrapper cb)
    connectSignalFunPtr obj "adjust-bounds" cb' after

-- signal Range::change-value
type RangeChangeValueCallback =
    ScrollType ->
    Double ->
    IO Bool

noRangeChangeValueCallback :: Maybe RangeChangeValueCallback
noRangeChangeValueCallback = Nothing

type RangeChangeValueCallbackC =
    Ptr () ->                               -- object
    CUInt ->
    CDouble ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkRangeChangeValueCallback :: RangeChangeValueCallbackC -> IO (FunPtr RangeChangeValueCallbackC)

rangeChangeValueClosure :: RangeChangeValueCallback -> IO Closure
rangeChangeValueClosure cb = newCClosure =<< mkRangeChangeValueCallback wrapped
    where wrapped = rangeChangeValueCallbackWrapper cb

rangeChangeValueCallbackWrapper ::
    RangeChangeValueCallback ->
    Ptr () ->
    CUInt ->
    CDouble ->
    Ptr () ->
    IO CInt
rangeChangeValueCallbackWrapper _cb _ scroll value _ = do
    let scroll' = (toEnum . fromIntegral) scroll
    let value' = realToFrac value
    result <- _cb  scroll' value'
    let result' = (fromIntegral . fromEnum) result
    return result'

onRangeChangeValue :: (GObject a, MonadIO m) => a -> RangeChangeValueCallback -> m SignalHandlerId
onRangeChangeValue obj cb = liftIO $ connectRangeChangeValue obj cb SignalConnectBefore
afterRangeChangeValue :: (GObject a, MonadIO m) => a -> RangeChangeValueCallback -> m SignalHandlerId
afterRangeChangeValue obj cb = connectRangeChangeValue obj cb SignalConnectAfter

connectRangeChangeValue :: (GObject a, MonadIO m) =>
                           a -> RangeChangeValueCallback -> SignalConnectMode -> m SignalHandlerId
connectRangeChangeValue obj cb after = liftIO $ do
    cb' <- mkRangeChangeValueCallback (rangeChangeValueCallbackWrapper cb)
    connectSignalFunPtr obj "change-value" cb' after

-- signal Range::move-slider
type RangeMoveSliderCallback =
    ScrollType ->
    IO ()

noRangeMoveSliderCallback :: Maybe RangeMoveSliderCallback
noRangeMoveSliderCallback = Nothing

type RangeMoveSliderCallbackC =
    Ptr () ->                               -- object
    CUInt ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkRangeMoveSliderCallback :: RangeMoveSliderCallbackC -> IO (FunPtr RangeMoveSliderCallbackC)

rangeMoveSliderClosure :: RangeMoveSliderCallback -> IO Closure
rangeMoveSliderClosure cb = newCClosure =<< mkRangeMoveSliderCallback wrapped
    where wrapped = rangeMoveSliderCallbackWrapper cb

rangeMoveSliderCallbackWrapper ::
    RangeMoveSliderCallback ->
    Ptr () ->
    CUInt ->
    Ptr () ->
    IO ()
rangeMoveSliderCallbackWrapper _cb _ step _ = do
    let step' = (toEnum . fromIntegral) step
    _cb  step'

onRangeMoveSlider :: (GObject a, MonadIO m) => a -> RangeMoveSliderCallback -> m SignalHandlerId
onRangeMoveSlider obj cb = liftIO $ connectRangeMoveSlider obj cb SignalConnectBefore
afterRangeMoveSlider :: (GObject a, MonadIO m) => a -> RangeMoveSliderCallback -> m SignalHandlerId
afterRangeMoveSlider obj cb = connectRangeMoveSlider obj cb SignalConnectAfter

connectRangeMoveSlider :: (GObject a, MonadIO m) =>
                          a -> RangeMoveSliderCallback -> SignalConnectMode -> m SignalHandlerId
connectRangeMoveSlider obj cb after = liftIO $ do
    cb' <- mkRangeMoveSliderCallback (rangeMoveSliderCallbackWrapper cb)
    connectSignalFunPtr obj "move-slider" cb' after

-- signal Range::value-changed
type RangeValueChangedCallback =
    IO ()

noRangeValueChangedCallback :: Maybe RangeValueChangedCallback
noRangeValueChangedCallback = Nothing

type RangeValueChangedCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkRangeValueChangedCallback :: RangeValueChangedCallbackC -> IO (FunPtr RangeValueChangedCallbackC)

rangeValueChangedClosure :: RangeValueChangedCallback -> IO Closure
rangeValueChangedClosure cb = newCClosure =<< mkRangeValueChangedCallback wrapped
    where wrapped = rangeValueChangedCallbackWrapper cb

rangeValueChangedCallbackWrapper ::
    RangeValueChangedCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
rangeValueChangedCallbackWrapper _cb _ _ = do
    _cb 

onRangeValueChanged :: (GObject a, MonadIO m) => a -> RangeValueChangedCallback -> m SignalHandlerId
onRangeValueChanged obj cb = liftIO $ connectRangeValueChanged obj cb SignalConnectBefore
afterRangeValueChanged :: (GObject a, MonadIO m) => a -> RangeValueChangedCallback -> m SignalHandlerId
afterRangeValueChanged obj cb = connectRangeValueChanged obj cb SignalConnectAfter

connectRangeValueChanged :: (GObject a, MonadIO m) =>
                            a -> RangeValueChangedCallback -> SignalConnectMode -> m SignalHandlerId
connectRangeValueChanged obj cb after = liftIO $ do
    cb' <- mkRangeValueChangedCallback (rangeValueChangedCallbackWrapper cb)
    connectSignalFunPtr obj "value-changed" cb' after

-- VVV Prop "adjustment"
   -- Type: TInterface "Gtk" "Adjustment"
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]

getRangeAdjustment :: (MonadIO m, RangeK o) => o -> m Adjustment
getRangeAdjustment obj = liftIO $ getObjectPropertyObject obj "adjustment" Adjustment

setRangeAdjustment :: (MonadIO m, RangeK o, AdjustmentK a) => o -> a -> m ()
setRangeAdjustment obj val = liftIO $ setObjectPropertyObject obj "adjustment" val

constructRangeAdjustment :: (AdjustmentK a) => a -> IO ([Char], GValue)
constructRangeAdjustment val = constructObjectPropertyObject "adjustment" val

data RangeAdjustmentPropertyInfo
instance AttrInfo RangeAdjustmentPropertyInfo where
    type AttrAllowedOps RangeAdjustmentPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint RangeAdjustmentPropertyInfo = AdjustmentK
    type AttrBaseTypeConstraint RangeAdjustmentPropertyInfo = RangeK
    type AttrGetType RangeAdjustmentPropertyInfo = Adjustment
    type AttrLabel RangeAdjustmentPropertyInfo = "Range::adjustment"
    attrGet _ = getRangeAdjustment
    attrSet _ = setRangeAdjustment
    attrConstruct _ = constructRangeAdjustment

-- VVV Prop "fill-level"
   -- Type: TBasicType TDouble
   -- Flags: [PropertyReadable,PropertyWritable]

getRangeFillLevel :: (MonadIO m, RangeK o) => o -> m Double
getRangeFillLevel obj = liftIO $ getObjectPropertyDouble obj "fill-level"

setRangeFillLevel :: (MonadIO m, RangeK o) => o -> Double -> m ()
setRangeFillLevel obj val = liftIO $ setObjectPropertyDouble obj "fill-level" val

constructRangeFillLevel :: Double -> IO ([Char], GValue)
constructRangeFillLevel val = constructObjectPropertyDouble "fill-level" val

data RangeFillLevelPropertyInfo
instance AttrInfo RangeFillLevelPropertyInfo where
    type AttrAllowedOps RangeFillLevelPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint RangeFillLevelPropertyInfo = (~) Double
    type AttrBaseTypeConstraint RangeFillLevelPropertyInfo = RangeK
    type AttrGetType RangeFillLevelPropertyInfo = Double
    type AttrLabel RangeFillLevelPropertyInfo = "Range::fill-level"
    attrGet _ = getRangeFillLevel
    attrSet _ = setRangeFillLevel
    attrConstruct _ = constructRangeFillLevel

-- VVV Prop "inverted"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getRangeInverted :: (MonadIO m, RangeK o) => o -> m Bool
getRangeInverted obj = liftIO $ getObjectPropertyBool obj "inverted"

setRangeInverted :: (MonadIO m, RangeK o) => o -> Bool -> m ()
setRangeInverted obj val = liftIO $ setObjectPropertyBool obj "inverted" val

constructRangeInverted :: Bool -> IO ([Char], GValue)
constructRangeInverted val = constructObjectPropertyBool "inverted" val

data RangeInvertedPropertyInfo
instance AttrInfo RangeInvertedPropertyInfo where
    type AttrAllowedOps RangeInvertedPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint RangeInvertedPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint RangeInvertedPropertyInfo = RangeK
    type AttrGetType RangeInvertedPropertyInfo = Bool
    type AttrLabel RangeInvertedPropertyInfo = "Range::inverted"
    attrGet _ = getRangeInverted
    attrSet _ = setRangeInverted
    attrConstruct _ = constructRangeInverted

-- VVV Prop "lower-stepper-sensitivity"
   -- Type: TInterface "Gtk" "SensitivityType"
   -- Flags: [PropertyReadable,PropertyWritable]

getRangeLowerStepperSensitivity :: (MonadIO m, RangeK o) => o -> m SensitivityType
getRangeLowerStepperSensitivity obj = liftIO $ getObjectPropertyEnum obj "lower-stepper-sensitivity"

setRangeLowerStepperSensitivity :: (MonadIO m, RangeK o) => o -> SensitivityType -> m ()
setRangeLowerStepperSensitivity obj val = liftIO $ setObjectPropertyEnum obj "lower-stepper-sensitivity" val

constructRangeLowerStepperSensitivity :: SensitivityType -> IO ([Char], GValue)
constructRangeLowerStepperSensitivity val = constructObjectPropertyEnum "lower-stepper-sensitivity" val

data RangeLowerStepperSensitivityPropertyInfo
instance AttrInfo RangeLowerStepperSensitivityPropertyInfo where
    type AttrAllowedOps RangeLowerStepperSensitivityPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint RangeLowerStepperSensitivityPropertyInfo = (~) SensitivityType
    type AttrBaseTypeConstraint RangeLowerStepperSensitivityPropertyInfo = RangeK
    type AttrGetType RangeLowerStepperSensitivityPropertyInfo = SensitivityType
    type AttrLabel RangeLowerStepperSensitivityPropertyInfo = "Range::lower-stepper-sensitivity"
    attrGet _ = getRangeLowerStepperSensitivity
    attrSet _ = setRangeLowerStepperSensitivity
    attrConstruct _ = constructRangeLowerStepperSensitivity

-- VVV Prop "restrict-to-fill-level"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getRangeRestrictToFillLevel :: (MonadIO m, RangeK o) => o -> m Bool
getRangeRestrictToFillLevel obj = liftIO $ getObjectPropertyBool obj "restrict-to-fill-level"

setRangeRestrictToFillLevel :: (MonadIO m, RangeK o) => o -> Bool -> m ()
setRangeRestrictToFillLevel obj val = liftIO $ setObjectPropertyBool obj "restrict-to-fill-level" val

constructRangeRestrictToFillLevel :: Bool -> IO ([Char], GValue)
constructRangeRestrictToFillLevel val = constructObjectPropertyBool "restrict-to-fill-level" val

data RangeRestrictToFillLevelPropertyInfo
instance AttrInfo RangeRestrictToFillLevelPropertyInfo where
    type AttrAllowedOps RangeRestrictToFillLevelPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint RangeRestrictToFillLevelPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint RangeRestrictToFillLevelPropertyInfo = RangeK
    type AttrGetType RangeRestrictToFillLevelPropertyInfo = Bool
    type AttrLabel RangeRestrictToFillLevelPropertyInfo = "Range::restrict-to-fill-level"
    attrGet _ = getRangeRestrictToFillLevel
    attrSet _ = setRangeRestrictToFillLevel
    attrConstruct _ = constructRangeRestrictToFillLevel

-- VVV Prop "round-digits"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable,PropertyWritable]

getRangeRoundDigits :: (MonadIO m, RangeK o) => o -> m Int32
getRangeRoundDigits obj = liftIO $ getObjectPropertyCInt obj "round-digits"

setRangeRoundDigits :: (MonadIO m, RangeK o) => o -> Int32 -> m ()
setRangeRoundDigits obj val = liftIO $ setObjectPropertyCInt obj "round-digits" val

constructRangeRoundDigits :: Int32 -> IO ([Char], GValue)
constructRangeRoundDigits val = constructObjectPropertyCInt "round-digits" val

data RangeRoundDigitsPropertyInfo
instance AttrInfo RangeRoundDigitsPropertyInfo where
    type AttrAllowedOps RangeRoundDigitsPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint RangeRoundDigitsPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint RangeRoundDigitsPropertyInfo = RangeK
    type AttrGetType RangeRoundDigitsPropertyInfo = Int32
    type AttrLabel RangeRoundDigitsPropertyInfo = "Range::round-digits"
    attrGet _ = getRangeRoundDigits
    attrSet _ = setRangeRoundDigits
    attrConstruct _ = constructRangeRoundDigits

-- VVV Prop "show-fill-level"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getRangeShowFillLevel :: (MonadIO m, RangeK o) => o -> m Bool
getRangeShowFillLevel obj = liftIO $ getObjectPropertyBool obj "show-fill-level"

setRangeShowFillLevel :: (MonadIO m, RangeK o) => o -> Bool -> m ()
setRangeShowFillLevel obj val = liftIO $ setObjectPropertyBool obj "show-fill-level" val

constructRangeShowFillLevel :: Bool -> IO ([Char], GValue)
constructRangeShowFillLevel val = constructObjectPropertyBool "show-fill-level" val

data RangeShowFillLevelPropertyInfo
instance AttrInfo RangeShowFillLevelPropertyInfo where
    type AttrAllowedOps RangeShowFillLevelPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint RangeShowFillLevelPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint RangeShowFillLevelPropertyInfo = RangeK
    type AttrGetType RangeShowFillLevelPropertyInfo = Bool
    type AttrLabel RangeShowFillLevelPropertyInfo = "Range::show-fill-level"
    attrGet _ = getRangeShowFillLevel
    attrSet _ = setRangeShowFillLevel
    attrConstruct _ = constructRangeShowFillLevel

-- VVV Prop "upper-stepper-sensitivity"
   -- Type: TInterface "Gtk" "SensitivityType"
   -- Flags: [PropertyReadable,PropertyWritable]

getRangeUpperStepperSensitivity :: (MonadIO m, RangeK o) => o -> m SensitivityType
getRangeUpperStepperSensitivity obj = liftIO $ getObjectPropertyEnum obj "upper-stepper-sensitivity"

setRangeUpperStepperSensitivity :: (MonadIO m, RangeK o) => o -> SensitivityType -> m ()
setRangeUpperStepperSensitivity obj val = liftIO $ setObjectPropertyEnum obj "upper-stepper-sensitivity" val

constructRangeUpperStepperSensitivity :: SensitivityType -> IO ([Char], GValue)
constructRangeUpperStepperSensitivity val = constructObjectPropertyEnum "upper-stepper-sensitivity" val

data RangeUpperStepperSensitivityPropertyInfo
instance AttrInfo RangeUpperStepperSensitivityPropertyInfo where
    type AttrAllowedOps RangeUpperStepperSensitivityPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint RangeUpperStepperSensitivityPropertyInfo = (~) SensitivityType
    type AttrBaseTypeConstraint RangeUpperStepperSensitivityPropertyInfo = RangeK
    type AttrGetType RangeUpperStepperSensitivityPropertyInfo = SensitivityType
    type AttrLabel RangeUpperStepperSensitivityPropertyInfo = "Range::upper-stepper-sensitivity"
    attrGet _ = getRangeUpperStepperSensitivity
    attrSet _ = setRangeUpperStepperSensitivity
    attrConstruct _ = constructRangeUpperStepperSensitivity

type instance AttributeList Range = RangeAttributeList
type RangeAttributeList = ('[ '("adjustment", RangeAdjustmentPropertyInfo), '("app-paintable", WidgetAppPaintablePropertyInfo), '("can-default", WidgetCanDefaultPropertyInfo), '("can-focus", WidgetCanFocusPropertyInfo), '("composite-child", WidgetCompositeChildPropertyInfo), '("double-buffered", WidgetDoubleBufferedPropertyInfo), '("events", WidgetEventsPropertyInfo), '("expand", WidgetExpandPropertyInfo), '("fill-level", RangeFillLevelPropertyInfo), '("halign", WidgetHalignPropertyInfo), '("has-default", WidgetHasDefaultPropertyInfo), '("has-focus", WidgetHasFocusPropertyInfo), '("has-tooltip", WidgetHasTooltipPropertyInfo), '("height-request", WidgetHeightRequestPropertyInfo), '("hexpand", WidgetHexpandPropertyInfo), '("hexpand-set", WidgetHexpandSetPropertyInfo), '("inverted", RangeInvertedPropertyInfo), '("is-focus", WidgetIsFocusPropertyInfo), '("lower-stepper-sensitivity", RangeLowerStepperSensitivityPropertyInfo), '("margin", WidgetMarginPropertyInfo), '("margin-bottom", WidgetMarginBottomPropertyInfo), '("margin-end", WidgetMarginEndPropertyInfo), '("margin-left", WidgetMarginLeftPropertyInfo), '("margin-right", WidgetMarginRightPropertyInfo), '("margin-start", WidgetMarginStartPropertyInfo), '("margin-top", WidgetMarginTopPropertyInfo), '("name", WidgetNamePropertyInfo), '("no-show-all", WidgetNoShowAllPropertyInfo), '("opacity", WidgetOpacityPropertyInfo), '("orientation", OrientableOrientationPropertyInfo), '("parent", WidgetParentPropertyInfo), '("receives-default", WidgetReceivesDefaultPropertyInfo), '("restrict-to-fill-level", RangeRestrictToFillLevelPropertyInfo), '("round-digits", RangeRoundDigitsPropertyInfo), '("scale-factor", WidgetScaleFactorPropertyInfo), '("sensitive", WidgetSensitivePropertyInfo), '("show-fill-level", RangeShowFillLevelPropertyInfo), '("style", WidgetStylePropertyInfo), '("tooltip-markup", WidgetTooltipMarkupPropertyInfo), '("tooltip-text", WidgetTooltipTextPropertyInfo), '("upper-stepper-sensitivity", RangeUpperStepperSensitivityPropertyInfo), '("valign", WidgetValignPropertyInfo), '("vexpand", WidgetVexpandPropertyInfo), '("vexpand-set", WidgetVexpandSetPropertyInfo), '("visible", WidgetVisiblePropertyInfo), '("width-request", WidgetWidthRequestPropertyInfo), '("window", WidgetWindowPropertyInfo)] :: [(Symbol, *)])

data RangeAdjustBoundsSignalInfo
instance SignalInfo RangeAdjustBoundsSignalInfo where
    type HaskellCallbackType RangeAdjustBoundsSignalInfo = RangeAdjustBoundsCallback
    connectSignal _ = connectRangeAdjustBounds

data RangeChangeValueSignalInfo
instance SignalInfo RangeChangeValueSignalInfo where
    type HaskellCallbackType RangeChangeValueSignalInfo = RangeChangeValueCallback
    connectSignal _ = connectRangeChangeValue

data RangeMoveSliderSignalInfo
instance SignalInfo RangeMoveSliderSignalInfo where
    type HaskellCallbackType RangeMoveSliderSignalInfo = RangeMoveSliderCallback
    connectSignal _ = connectRangeMoveSlider

data RangeValueChangedSignalInfo
instance SignalInfo RangeValueChangedSignalInfo where
    type HaskellCallbackType RangeValueChangedSignalInfo = RangeValueChangedCallback
    connectSignal _ = connectRangeValueChanged

type instance SignalList Range = RangeSignalList
type RangeSignalList = ('[ '("accel-closures-changed", WidgetAccelClosuresChangedSignalInfo), '("adjust-bounds", RangeAdjustBoundsSignalInfo), '("button-press-event", WidgetButtonPressEventSignalInfo), '("button-release-event", WidgetButtonReleaseEventSignalInfo), '("can-activate-accel", WidgetCanActivateAccelSignalInfo), '("change-value", RangeChangeValueSignalInfo), '("child-notify", WidgetChildNotifySignalInfo), '("composited-changed", WidgetCompositedChangedSignalInfo), '("configure-event", WidgetConfigureEventSignalInfo), '("damage-event", WidgetDamageEventSignalInfo), '("delete-event", WidgetDeleteEventSignalInfo), '("destroy", WidgetDestroySignalInfo), '("destroy-event", WidgetDestroyEventSignalInfo), '("direction-changed", WidgetDirectionChangedSignalInfo), '("drag-begin", WidgetDragBeginSignalInfo), '("drag-data-delete", WidgetDragDataDeleteSignalInfo), '("drag-data-get", WidgetDragDataGetSignalInfo), '("drag-data-received", WidgetDragDataReceivedSignalInfo), '("drag-drop", WidgetDragDropSignalInfo), '("drag-end", WidgetDragEndSignalInfo), '("drag-failed", WidgetDragFailedSignalInfo), '("drag-leave", WidgetDragLeaveSignalInfo), '("drag-motion", WidgetDragMotionSignalInfo), '("draw", WidgetDrawSignalInfo), '("enter-notify-event", WidgetEnterNotifyEventSignalInfo), '("event", WidgetEventSignalInfo), '("event-after", WidgetEventAfterSignalInfo), '("focus", WidgetFocusSignalInfo), '("focus-in-event", WidgetFocusInEventSignalInfo), '("focus-out-event", WidgetFocusOutEventSignalInfo), '("grab-broken-event", WidgetGrabBrokenEventSignalInfo), '("grab-focus", WidgetGrabFocusSignalInfo), '("grab-notify", WidgetGrabNotifySignalInfo), '("hide", WidgetHideSignalInfo), '("hierarchy-changed", WidgetHierarchyChangedSignalInfo), '("key-press-event", WidgetKeyPressEventSignalInfo), '("key-release-event", WidgetKeyReleaseEventSignalInfo), '("keynav-failed", WidgetKeynavFailedSignalInfo), '("leave-notify-event", WidgetLeaveNotifyEventSignalInfo), '("map", WidgetMapSignalInfo), '("map-event", WidgetMapEventSignalInfo), '("mnemonic-activate", WidgetMnemonicActivateSignalInfo), '("motion-notify-event", WidgetMotionNotifyEventSignalInfo), '("move-focus", WidgetMoveFocusSignalInfo), '("move-slider", RangeMoveSliderSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("parent-set", WidgetParentSetSignalInfo), '("popup-menu", WidgetPopupMenuSignalInfo), '("property-notify-event", WidgetPropertyNotifyEventSignalInfo), '("proximity-in-event", WidgetProximityInEventSignalInfo), '("proximity-out-event", WidgetProximityOutEventSignalInfo), '("query-tooltip", WidgetQueryTooltipSignalInfo), '("realize", WidgetRealizeSignalInfo), '("screen-changed", WidgetScreenChangedSignalInfo), '("scroll-event", WidgetScrollEventSignalInfo), '("selection-clear-event", WidgetSelectionClearEventSignalInfo), '("selection-get", WidgetSelectionGetSignalInfo), '("selection-notify-event", WidgetSelectionNotifyEventSignalInfo), '("selection-received", WidgetSelectionReceivedSignalInfo), '("selection-request-event", WidgetSelectionRequestEventSignalInfo), '("show", WidgetShowSignalInfo), '("show-help", WidgetShowHelpSignalInfo), '("size-allocate", WidgetSizeAllocateSignalInfo), '("state-changed", WidgetStateChangedSignalInfo), '("state-flags-changed", WidgetStateFlagsChangedSignalInfo), '("style-set", WidgetStyleSetSignalInfo), '("style-updated", WidgetStyleUpdatedSignalInfo), '("touch-event", WidgetTouchEventSignalInfo), '("unmap", WidgetUnmapSignalInfo), '("unmap-event", WidgetUnmapEventSignalInfo), '("unrealize", WidgetUnrealizeSignalInfo), '("value-changed", RangeValueChangedSignalInfo), '("visibility-notify-event", WidgetVisibilityNotifyEventSignalInfo), '("window-state-event", WidgetWindowStateEventSignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method Range::get_adjustment
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "Adjustment"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_get_adjustment" gtk_range_get_adjustment :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    IO (Ptr Adjustment)


rangeGetAdjustment ::
    (MonadIO m, RangeK a) =>
    a ->                                    -- _obj
    m Adjustment
rangeGetAdjustment _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_range_get_adjustment _obj'
    checkUnexpectedReturnNULL "gtk_range_get_adjustment" result
    result' <- (newObject Adjustment) result
    touchManagedPtr _obj
    return result'

-- method Range::get_fill_level
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TDouble
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_get_fill_level" gtk_range_get_fill_level :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    IO CDouble


rangeGetFillLevel ::
    (MonadIO m, RangeK a) =>
    a ->                                    -- _obj
    m Double
rangeGetFillLevel _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_range_get_fill_level _obj'
    let result' = realToFrac result
    touchManagedPtr _obj
    return result'

-- method Range::get_flippable
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_get_flippable" gtk_range_get_flippable :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    IO CInt


rangeGetFlippable ::
    (MonadIO m, RangeK a) =>
    a ->                                    -- _obj
    m Bool
rangeGetFlippable _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_range_get_flippable _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Range::get_inverted
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_get_inverted" gtk_range_get_inverted :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    IO CInt


rangeGetInverted ::
    (MonadIO m, RangeK a) =>
    a ->                                    -- _obj
    m Bool
rangeGetInverted _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_range_get_inverted _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Range::get_lower_stepper_sensitivity
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "SensitivityType"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_get_lower_stepper_sensitivity" gtk_range_get_lower_stepper_sensitivity :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    IO CUInt


rangeGetLowerStepperSensitivity ::
    (MonadIO m, RangeK a) =>
    a ->                                    -- _obj
    m SensitivityType
rangeGetLowerStepperSensitivity _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_range_get_lower_stepper_sensitivity _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method Range::get_min_slider_size
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_get_min_slider_size" gtk_range_get_min_slider_size :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    IO Int32


rangeGetMinSliderSize ::
    (MonadIO m, RangeK a) =>
    a ->                                    -- _obj
    m Int32
rangeGetMinSliderSize _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_range_get_min_slider_size _obj'
    touchManagedPtr _obj
    return result

-- method Range::get_range_rect
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "range_rect", argType = TInterface "Gdk" "Rectangle", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_get_range_rect" gtk_range_get_range_rect :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    Ptr Gdk.Rectangle ->                    -- range_rect : TInterface "Gdk" "Rectangle"
    IO ()


rangeGetRangeRect ::
    (MonadIO m, RangeK a) =>
    a ->                                    -- _obj
    m (Gdk.Rectangle)
rangeGetRangeRect _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    range_rect <- callocBoxedBytes 16 :: IO (Ptr Gdk.Rectangle)
    gtk_range_get_range_rect _obj' range_rect
    range_rect' <- (wrapBoxed Gdk.Rectangle) range_rect
    touchManagedPtr _obj
    return range_rect'

-- method Range::get_restrict_to_fill_level
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_get_restrict_to_fill_level" gtk_range_get_restrict_to_fill_level :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    IO CInt


rangeGetRestrictToFillLevel ::
    (MonadIO m, RangeK a) =>
    a ->                                    -- _obj
    m Bool
rangeGetRestrictToFillLevel _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_range_get_restrict_to_fill_level _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Range::get_round_digits
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_get_round_digits" gtk_range_get_round_digits :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    IO Int32


rangeGetRoundDigits ::
    (MonadIO m, RangeK a) =>
    a ->                                    -- _obj
    m Int32
rangeGetRoundDigits _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_range_get_round_digits _obj'
    touchManagedPtr _obj
    return result

-- method Range::get_show_fill_level
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_get_show_fill_level" gtk_range_get_show_fill_level :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    IO CInt


rangeGetShowFillLevel ::
    (MonadIO m, RangeK a) =>
    a ->                                    -- _obj
    m Bool
rangeGetShowFillLevel _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_range_get_show_fill_level _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Range::get_slider_range
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "slider_start", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything},Arg {argName = "slider_end", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_get_slider_range" gtk_range_get_slider_range :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    Ptr Int32 ->                            -- slider_start : TBasicType TInt32
    Ptr Int32 ->                            -- slider_end : TBasicType TInt32
    IO ()


rangeGetSliderRange ::
    (MonadIO m, RangeK a) =>
    a ->                                    -- _obj
    m (Int32,Int32)
rangeGetSliderRange _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    slider_start <- allocMem :: IO (Ptr Int32)
    slider_end <- allocMem :: IO (Ptr Int32)
    gtk_range_get_slider_range _obj' slider_start slider_end
    slider_start' <- peek slider_start
    slider_end' <- peek slider_end
    touchManagedPtr _obj
    freeMem slider_start
    freeMem slider_end
    return (slider_start', slider_end')

-- method Range::get_slider_size_fixed
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_get_slider_size_fixed" gtk_range_get_slider_size_fixed :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    IO CInt


rangeGetSliderSizeFixed ::
    (MonadIO m, RangeK a) =>
    a ->                                    -- _obj
    m Bool
rangeGetSliderSizeFixed _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_range_get_slider_size_fixed _obj'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

-- method Range::get_upper_stepper_sensitivity
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "SensitivityType"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_get_upper_stepper_sensitivity" gtk_range_get_upper_stepper_sensitivity :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    IO CUInt


rangeGetUpperStepperSensitivity ::
    (MonadIO m, RangeK a) =>
    a ->                                    -- _obj
    m SensitivityType
rangeGetUpperStepperSensitivity _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_range_get_upper_stepper_sensitivity _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

-- method Range::get_value
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TDouble
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_get_value" gtk_range_get_value :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    IO CDouble


rangeGetValue ::
    (MonadIO m, RangeK a) =>
    a ->                                    -- _obj
    m Double
rangeGetValue _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_range_get_value _obj'
    let result' = realToFrac result
    touchManagedPtr _obj
    return result'

-- method Range::set_adjustment
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "adjustment", argType = TInterface "Gtk" "Adjustment", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "adjustment", argType = TInterface "Gtk" "Adjustment", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_set_adjustment" gtk_range_set_adjustment :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    Ptr Adjustment ->                       -- adjustment : TInterface "Gtk" "Adjustment"
    IO ()


rangeSetAdjustment ::
    (MonadIO m, RangeK a, AdjustmentK b) =>
    a ->                                    -- _obj
    b ->                                    -- adjustment
    m ()
rangeSetAdjustment _obj adjustment = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let adjustment' = unsafeManagedPtrCastPtr adjustment
    gtk_range_set_adjustment _obj' adjustment'
    touchManagedPtr _obj
    touchManagedPtr adjustment
    return ()

-- method Range::set_fill_level
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "fill_level", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "fill_level", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_set_fill_level" gtk_range_set_fill_level :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    CDouble ->                              -- fill_level : TBasicType TDouble
    IO ()


rangeSetFillLevel ::
    (MonadIO m, RangeK a) =>
    a ->                                    -- _obj
    Double ->                               -- fill_level
    m ()
rangeSetFillLevel _obj fill_level = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let fill_level' = realToFrac fill_level
    gtk_range_set_fill_level _obj' fill_level'
    touchManagedPtr _obj
    return ()

-- method Range::set_flippable
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "flippable", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "flippable", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_set_flippable" gtk_range_set_flippable :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    CInt ->                                 -- flippable : TBasicType TBoolean
    IO ()


rangeSetFlippable ::
    (MonadIO m, RangeK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- flippable
    m ()
rangeSetFlippable _obj flippable = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let flippable' = (fromIntegral . fromEnum) flippable
    gtk_range_set_flippable _obj' flippable'
    touchManagedPtr _obj
    return ()

-- method Range::set_increments
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "step", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "page", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "step", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "page", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_set_increments" gtk_range_set_increments :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    CDouble ->                              -- step : TBasicType TDouble
    CDouble ->                              -- page : TBasicType TDouble
    IO ()


rangeSetIncrements ::
    (MonadIO m, RangeK a) =>
    a ->                                    -- _obj
    Double ->                               -- step
    Double ->                               -- page
    m ()
rangeSetIncrements _obj step page = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let step' = realToFrac step
    let page' = realToFrac page
    gtk_range_set_increments _obj' step' page'
    touchManagedPtr _obj
    return ()

-- method Range::set_inverted
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "setting", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_set_inverted" gtk_range_set_inverted :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    CInt ->                                 -- setting : TBasicType TBoolean
    IO ()


rangeSetInverted ::
    (MonadIO m, RangeK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- setting
    m ()
rangeSetInverted _obj setting = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let setting' = (fromIntegral . fromEnum) setting
    gtk_range_set_inverted _obj' setting'
    touchManagedPtr _obj
    return ()

-- method Range::set_lower_stepper_sensitivity
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "sensitivity", argType = TInterface "Gtk" "SensitivityType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "sensitivity", argType = TInterface "Gtk" "SensitivityType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_set_lower_stepper_sensitivity" gtk_range_set_lower_stepper_sensitivity :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    CUInt ->                                -- sensitivity : TInterface "Gtk" "SensitivityType"
    IO ()


rangeSetLowerStepperSensitivity ::
    (MonadIO m, RangeK a) =>
    a ->                                    -- _obj
    SensitivityType ->                      -- sensitivity
    m ()
rangeSetLowerStepperSensitivity _obj sensitivity = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let sensitivity' = (fromIntegral . fromEnum) sensitivity
    gtk_range_set_lower_stepper_sensitivity _obj' sensitivity'
    touchManagedPtr _obj
    return ()

-- method Range::set_min_slider_size
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "min_size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "min_size", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_set_min_slider_size" gtk_range_set_min_slider_size :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    Int32 ->                                -- min_size : TBasicType TInt32
    IO ()


rangeSetMinSliderSize ::
    (MonadIO m, RangeK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- min_size
    m ()
rangeSetMinSliderSize _obj min_size = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_range_set_min_slider_size _obj' min_size
    touchManagedPtr _obj
    return ()

-- method Range::set_range
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "min", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "max", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "min", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "max", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_set_range" gtk_range_set_range :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    CDouble ->                              -- min : TBasicType TDouble
    CDouble ->                              -- max : TBasicType TDouble
    IO ()


rangeSetRange ::
    (MonadIO m, RangeK a) =>
    a ->                                    -- _obj
    Double ->                               -- min
    Double ->                               -- max
    m ()
rangeSetRange _obj min max = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let min' = realToFrac min
    let max' = realToFrac max
    gtk_range_set_range _obj' min' max'
    touchManagedPtr _obj
    return ()

-- method Range::set_restrict_to_fill_level
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "restrict_to_fill_level", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "restrict_to_fill_level", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_set_restrict_to_fill_level" gtk_range_set_restrict_to_fill_level :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    CInt ->                                 -- restrict_to_fill_level : TBasicType TBoolean
    IO ()


rangeSetRestrictToFillLevel ::
    (MonadIO m, RangeK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- restrict_to_fill_level
    m ()
rangeSetRestrictToFillLevel _obj restrict_to_fill_level = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let restrict_to_fill_level' = (fromIntegral . fromEnum) restrict_to_fill_level
    gtk_range_set_restrict_to_fill_level _obj' restrict_to_fill_level'
    touchManagedPtr _obj
    return ()

-- method Range::set_round_digits
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "round_digits", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "round_digits", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_set_round_digits" gtk_range_set_round_digits :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    Int32 ->                                -- round_digits : TBasicType TInt32
    IO ()


rangeSetRoundDigits ::
    (MonadIO m, RangeK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- round_digits
    m ()
rangeSetRoundDigits _obj round_digits = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_range_set_round_digits _obj' round_digits
    touchManagedPtr _obj
    return ()

-- method Range::set_show_fill_level
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "show_fill_level", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "show_fill_level", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_set_show_fill_level" gtk_range_set_show_fill_level :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    CInt ->                                 -- show_fill_level : TBasicType TBoolean
    IO ()


rangeSetShowFillLevel ::
    (MonadIO m, RangeK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- show_fill_level
    m ()
rangeSetShowFillLevel _obj show_fill_level = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let show_fill_level' = (fromIntegral . fromEnum) show_fill_level
    gtk_range_set_show_fill_level _obj' show_fill_level'
    touchManagedPtr _obj
    return ()

-- method Range::set_slider_size_fixed
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size_fixed", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "size_fixed", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_set_slider_size_fixed" gtk_range_set_slider_size_fixed :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    CInt ->                                 -- size_fixed : TBasicType TBoolean
    IO ()


rangeSetSliderSizeFixed ::
    (MonadIO m, RangeK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- size_fixed
    m ()
rangeSetSliderSizeFixed _obj size_fixed = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let size_fixed' = (fromIntegral . fromEnum) size_fixed
    gtk_range_set_slider_size_fixed _obj' size_fixed'
    touchManagedPtr _obj
    return ()

-- method Range::set_upper_stepper_sensitivity
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "sensitivity", argType = TInterface "Gtk" "SensitivityType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "sensitivity", argType = TInterface "Gtk" "SensitivityType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_set_upper_stepper_sensitivity" gtk_range_set_upper_stepper_sensitivity :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    CUInt ->                                -- sensitivity : TInterface "Gtk" "SensitivityType"
    IO ()


rangeSetUpperStepperSensitivity ::
    (MonadIO m, RangeK a) =>
    a ->                                    -- _obj
    SensitivityType ->                      -- sensitivity
    m ()
rangeSetUpperStepperSensitivity _obj sensitivity = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let sensitivity' = (fromIntegral . fromEnum) sensitivity
    gtk_range_set_upper_stepper_sensitivity _obj' sensitivity'
    touchManagedPtr _obj
    return ()

-- method Range::set_value
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "Range", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "value", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_range_set_value" gtk_range_set_value :: 
    Ptr Range ->                            -- _obj : TInterface "Gtk" "Range"
    CDouble ->                              -- value : TBasicType TDouble
    IO ()


rangeSetValue ::
    (MonadIO m, RangeK a) =>
    a ->                                    -- _obj
    Double ->                               -- value
    m ()
rangeSetValue _obj value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let value' = realToFrac value
    gtk_range_set_value _obj' value'
    touchManagedPtr _obj
    return ()