    {-# LINE 2 "./Graphics/UI/Gtk/Entry/HScale.chs" #-}
    -- -*-haskell-*-
    -- GIMP Toolkit (GTK) Widget HScale
    --
    -- Author : Axel Simon
    --
    -- Created: 23 May 2001
    --
    -- Copyright (C) 1999-2005 Axel Simon
    --
    -- This library is free software; you can redistribute it and/or
    -- modify it under the terms of the GNU Lesser General Public
    -- License as published by the Free Software Foundation; either
    -- version 2.1 of the License, or (at your option) any later version.
    --
    -- This library is distributed in the hope that it will be useful,
    -- but WITHOUT ANY WARRANTY; without even the implied warranty of
    -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    -- Lesser General Public License for more details.
    --
    -- |
    -- Maintainer : gtk2hs-users@lists.sourceforge.net
    -- Stability : provisional
    -- Portability : portable (depends on GHC)
    --
    -- A horizontal slider widget for selecting a value from a range
    --
    module Graphics.UI.Gtk.Entry.HScale (
    -- * Detail
    --
    -- | The 'HScale' widget is used to allow the user to select a value using a
    -- horizontal slider. To create one, use 'hScaleNewWithRange'.
    --
    -- The position to show the current value, and the number of decimal places
    -- shown can be set using the parent 'Scale' class's functions.

    -- * Class Hierarchy
    -- |
    -- @
    -- | 'GObject'
    -- | +----'Object'
    -- | +----'Widget'
    -- | +----'Range'
    -- | +----'Scale'
    -- | +----HScale
    -- @

    -- * Types
      HScale,
      HScaleClass,
      castToHScale, gTypeHScale,
      toHScale,

    -- * Constructors
      hScaleNew,
      hScaleNewWithRange,
      ) where

    import Control.Monad (liftM)

    import System.Glib.FFI
    import Graphics.UI.Gtk.Abstract.Object (makeNewObject)
    import Graphics.UI.Gtk.Types
    {-# LINE 64 "./Graphics/UI/Gtk/Entry/HScale.chs" #-}

    {-# LINE 66 "./Graphics/UI/Gtk/Entry/HScale.chs" #-}

    --------------------
    -- Constructors

    -- | Creates a new 'HScale'.
    --
    hScaleNew ::
        Adjustment -- ^ @adjustment@ - the 'Adjustment' which sets the range of
                   -- the scale.
     -> IO HScale
    hScaleNew :: Adjustment -> IO HScale
    hScaleNew Adjustment
    adjustment =
      (ForeignPtr HScale -> HScale, FinalizerPtr HScale)
    -> IO (Ptr HScale) -> IO HScale
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewObject (ForeignPtr HScale -> HScale, FinalizerPtr HScale)
    forall {a}. (ForeignPtr HScale -> HScale, FinalizerPtr a)
    mkHScale (IO (Ptr HScale) -> IO HScale) -> IO (Ptr HScale) -> IO HScale
    forall a b. (a -> b) -> a -> b
    $
      (Ptr Widget -> Ptr HScale) -> IO (Ptr Widget) -> IO (Ptr HScale)
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM (Ptr Widget -> Ptr HScale
    forall a b. Ptr a -> Ptr b
    castPtr :: Ptr Widget -> Ptr HScale) (IO (Ptr Widget) -> IO (Ptr HScale))
    -> IO (Ptr Widget) -> IO (Ptr HScale)
    forall a b. (a -> b) -> a -> b
    $
      (\(Adjustment ForeignPtr Adjustment
    arg1) -> ForeignPtr Adjustment
    -> (Ptr Adjustment -> IO (Ptr Widget)) -> IO (Ptr Widget)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Adjustment
    arg1 ((Ptr Adjustment -> IO (Ptr Widget)) -> IO (Ptr Widget))
    -> (Ptr Adjustment -> IO (Ptr Widget)) -> IO (Ptr Widget)
    forall a b. (a -> b) -> a -> b
    $ \Ptr Adjustment
    argPtr1 ->Ptr Adjustment -> IO (Ptr Widget)
    gtk_hscale_new Ptr Adjustment
    argPtr1)
    {-# LINE 80 "./Graphics/UI/Gtk/Entry/HScale.chs" #-}
        adjustment

    -- | Creates a new horizontal scale widget that lets the user input a number
    -- between @min@ and @max@ (including @min@ and @max@) with the increment
    -- @step@. @step@ must be nonzero; it's the distance the slider moves when
    -- using the arrow keys to adjust the scale value.
    --
    -- Note that the way in which the precision is derived works best if @step@
    -- is a power of ten. If the resulting precision is not suitable for your
    -- needs, use 'Graphics.UI.Gtk.Abstract.Scale.scaleSetDigits' to correct it.
    --
    hScaleNewWithRange ::
        Double -- ^ @min@ - minimum value
     -> Double -- ^ @max@ - maximum value
     -> Double -- ^ @step@ - step increment (tick size) used with keyboard
                  -- shortcuts
     -> IO HScale
    hScaleNewWithRange :: Double -> Double -> Double -> IO HScale
    hScaleNewWithRange Double
    min Double
    max Double
    step =
      (ForeignPtr HScale -> HScale, FinalizerPtr HScale)
    -> IO (Ptr HScale) -> IO HScale
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewObject (ForeignPtr HScale -> HScale, FinalizerPtr HScale)
    forall {a}. (ForeignPtr HScale -> HScale, FinalizerPtr a)
    mkHScale (IO (Ptr HScale) -> IO HScale) -> IO (Ptr HScale) -> IO HScale
    forall a b. (a -> b) -> a -> b
    $
      (Ptr Widget -> Ptr HScale) -> IO (Ptr Widget) -> IO (Ptr HScale)
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM (Ptr Widget -> Ptr HScale
    forall a b. Ptr a -> Ptr b
    castPtr :: Ptr Widget -> Ptr HScale) (IO (Ptr Widget) -> IO (Ptr HScale))
    -> IO (Ptr Widget) -> IO (Ptr HScale)
    forall a b. (a -> b) -> a -> b
    $
      CDouble -> CDouble -> CDouble -> IO (Ptr Widget)
    gtk_hscale_new_with_range
    {-# LINE 101 "./Graphics/UI/Gtk/Entry/HScale.chs" #-}
        (realToFrac min)
        (Double -> CDouble
    forall a b. (Real a, Fractional b) => a -> b
    realToFrac Double
    max)
        (Double -> CDouble
    forall a b. (Real a, Fractional b) => a -> b
    realToFrac Double
    step)

    foreign import ccall unsafe "gtk_hscale_new"
      gtk_hscale_new :: ((Ptr Adjustment) -> (IO (Ptr Widget)))

    foreign import ccall unsafe "gtk_hscale_new_with_range"
      gtk_hscale_new_with_range :: (CDouble -> (CDouble -> (CDouble -> (IO (Ptr Widget)))))