    {-# LINE 2 "./Graphics/UI/Gtk/Display/ProgressBar.chs" #-}
    -- -*-haskell-*-
    -- GIMP Toolkit (GTK) Widget ProgressBar
    --
    -- 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 widget which indicates progress visually
    --
    module Graphics.UI.Gtk.Display.ProgressBar (
    -- * Detail
    --
    -- | The 'ProgressBar' is typically used to display the progress of a long
    -- running operation. It provides a visual clue that processing is underway.
    -- The 'ProgressBar' can be used in two different modes: percentage mode and
    -- activity mode.
    --
    -- When an application can determine how much work needs to take place (e.g.
    -- read a fixed number of bytes from a file) and can monitor its progress, it
    -- can use the 'ProgressBar' in percentage mode and the user sees a growing bar
    -- indicating the percentage of the work that has been completed. In this mode,
    -- the application is required to call 'progressBarSetFraction' periodically to
    -- update the progress bar.
    --
    -- When an application has no accurate way of knowing the amount of work to
    -- do, it can use the 'ProgressBar' in activity mode, which shows activity by a
    -- block moving back and forth within the progress area. In this mode, the
    -- application is required to call 'progressBarPulse' periodically to update the
    -- progress bar.
    --
    -- There is quite a bit of flexibility provided to control the appearance of
    -- the 'ProgressBar'. Functions are provided to control the orientation of the
    -- bar, optional text can be displayed along with the bar, and the step size
    -- used in activity mode can be set.

    -- * Class Hierarchy
    -- |
    -- @
    -- | 'GObject'
    -- | +----'Object'
    -- | +----'Widget'
    -- | +----ProgressBar
    -- @

    -- * Types
      ProgressBar,
      ProgressBarClass,
      castToProgressBar, gTypeProgressBar,
      toProgressBar,

    -- * Constructors
      progressBarNew,

    -- * Methods
      progressBarPulse,
      progressBarSetText,
      progressBarSetFraction,
      progressBarSetPulseStep,
      progressBarGetFraction,
      progressBarGetPulseStep,
      progressBarGetText,

      progressBarSetEllipsize,
      progressBarGetEllipsize,

    -- * Attributes

      progressBarDiscreteBlocks,
      progressBarFraction,
      progressBarPulseStep,
      progressBarText,

      progressBarEllipsize,

      ) where

    import Control.Monad (liftM)

    import System.Glib.FFI
    import System.Glib.UTFString
    import System.Glib.Attributes
    import System.Glib.Properties
    import Graphics.UI.Gtk.Abstract.Object (makeNewObject)
    import Graphics.UI.Gtk.Types
    {-# LINE 111 "./Graphics/UI/Gtk/Display/ProgressBar.chs" #-}

    import Graphics.Rendering.Pango.Enums (EllipsizeMode(..))

    {-# LINE 119 "./Graphics/UI/Gtk/Display/ProgressBar.chs" #-}

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

    -- | Creates a new 'ProgressBar'.
    --
    progressBarNew :: IO ProgressBar
    progressBarNew :: IO ProgressBar
    progressBarNew =
      (ForeignPtr ProgressBar -> ProgressBar, FinalizerPtr ProgressBar)
    -> IO (Ptr ProgressBar) -> IO ProgressBar
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewObject (ForeignPtr ProgressBar -> ProgressBar, FinalizerPtr ProgressBar)
    forall {a}. (ForeignPtr ProgressBar -> ProgressBar, FinalizerPtr a)
    mkProgressBar (IO (Ptr ProgressBar) -> IO ProgressBar)
    -> IO (Ptr ProgressBar) -> IO ProgressBar
    forall a b. (a -> b) -> a -> b
    $
      (Ptr Widget -> Ptr ProgressBar)
    -> IO (Ptr Widget) -> IO (Ptr ProgressBar)
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM (Ptr Widget -> Ptr ProgressBar
    forall a b. Ptr a -> Ptr b
    castPtr :: Ptr Widget -> Ptr ProgressBar) (IO (Ptr Widget) -> IO (Ptr ProgressBar))
    -> IO (Ptr Widget) -> IO (Ptr ProgressBar)
    forall a b. (a -> b) -> a -> b
    $
      IO (Ptr Widget)
    gtk_progress_bar_new
    {-# LINE 130 "./Graphics/UI/Gtk/Display/ProgressBar.chs" #-}

    --------------------
    -- Methods

    -- | Indicates that some progress is made, but you don't know how much. Causes
    -- the progress bar to enter \"activity mode\", where a block bounces back and
    -- forth. Each call to 'progressBarPulse' causes the block to move by a little
    -- bit (the amount of movement per pulse is determined by
    -- 'progressBarSetPulseStep').
    --
    progressBarPulse :: ProgressBarClass self => self -> IO ()
    progressBarPulse :: forall self. ProgressBarClass self => self -> IO ()
    progressBarPulse self
    self =
      (\(ProgressBar ForeignPtr ProgressBar
    arg1) -> ForeignPtr ProgressBar -> (Ptr ProgressBar -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ProgressBar
    arg1 ((Ptr ProgressBar -> IO ()) -> IO ())
    -> (Ptr ProgressBar -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr ProgressBar
    argPtr1 ->Ptr ProgressBar -> IO ()
    gtk_progress_bar_pulse Ptr ProgressBar
    argPtr1)
    {-# LINE 143 "./Graphics/UI/Gtk/Display/ProgressBar.chs" #-}
        (toProgressBar self)

    -- | Causes the given @text@ to appear superimposed on the progress bar.
    --
    progressBarSetText :: (ProgressBarClass self, GlibString string) => self -> string -> IO ()
    progressBarSetText :: forall self string.
    (ProgressBarClass self, GlibString string) =>
    self -> string -> IO ()
    progressBarSetText self
    self string
    text =
      string -> (CString -> IO ()) -> IO ()
    forall a. string -> (CString -> IO a) -> IO a
    forall s a. GlibString s => s -> (CString -> IO a) -> IO a
    withUTFString string
    text ((CString -> IO ()) -> IO ()) -> (CString -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \CString
    textPtr ->
      (\(ProgressBar ForeignPtr ProgressBar
    arg1) CString
    arg2 -> ForeignPtr ProgressBar -> (Ptr ProgressBar -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ProgressBar
    arg1 ((Ptr ProgressBar -> IO ()) -> IO ())
    -> (Ptr ProgressBar -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr ProgressBar
    argPtr1 ->Ptr ProgressBar -> CString -> IO ()
    gtk_progress_bar_set_text Ptr ProgressBar
    argPtr1 CString
    arg2)
    {-# LINE 151 "./Graphics/UI/Gtk/Display/ProgressBar.chs" #-}
        (toProgressBar self)
        CString
    textPtr

    -- | Causes the progress bar to \"fill in\" the given fraction of the bar. The
    -- fraction should be between 0.0 and 1.0, inclusive.
    --
    progressBarSetFraction :: ProgressBarClass self => self
     -> Double -- ^ @fraction@ - fraction of the task that's been completed
     -> IO ()
    progressBarSetFraction :: forall self. ProgressBarClass self => self -> Double -> IO ()
    progressBarSetFraction self
    self Double
    fraction =
      (\(ProgressBar ForeignPtr ProgressBar
    arg1) CDouble
    arg2 -> ForeignPtr ProgressBar -> (Ptr ProgressBar -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ProgressBar
    arg1 ((Ptr ProgressBar -> IO ()) -> IO ())
    -> (Ptr ProgressBar -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr ProgressBar
    argPtr1 ->Ptr ProgressBar -> CDouble -> IO ()
    gtk_progress_bar_set_fraction Ptr ProgressBar
    argPtr1 CDouble
    arg2)
    {-# LINE 162 "./Graphics/UI/Gtk/Display/ProgressBar.chs" #-}
        (toProgressBar self)
        (Double -> CDouble
    forall a b. (Real a, Fractional b) => a -> b
    realToFrac Double
    fraction)

    -- | Sets the fraction of total progress bar length to move the bouncing block
    -- for each call to 'progressBarPulse'.
    --
    progressBarSetPulseStep :: ProgressBarClass self => self
     -> Double -- ^ @fraction@ - fraction between 0.0 and 1.0
     -> IO ()
    progressBarSetPulseStep :: forall self. ProgressBarClass self => self -> Double -> IO ()
    progressBarSetPulseStep self
    self Double
    fraction =
      (\(ProgressBar ForeignPtr ProgressBar
    arg1) CDouble
    arg2 -> ForeignPtr ProgressBar -> (Ptr ProgressBar -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ProgressBar
    arg1 ((Ptr ProgressBar -> IO ()) -> IO ())
    -> (Ptr ProgressBar -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr ProgressBar
    argPtr1 ->Ptr ProgressBar -> CDouble -> IO ()
    gtk_progress_bar_set_pulse_step Ptr ProgressBar
    argPtr1 CDouble
    arg2)
    {-# LINE 173 "./Graphics/UI/Gtk/Display/ProgressBar.chs" #-}
        (toProgressBar self)
        (Double -> CDouble
    forall a b. (Real a, Fractional b) => a -> b
    realToFrac Double
    fraction)

    -- | Returns the current fraction of the task that's been completed.
    --
    progressBarGetFraction :: ProgressBarClass self => self
     -> IO Double -- ^ returns a fraction from 0.0 to 1.0
    progressBarGetFraction :: forall self. ProgressBarClass self => self -> IO Double
    progressBarGetFraction self
    self =
      (CDouble -> Double) -> IO CDouble -> IO Double
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CDouble -> Double
    forall a b. (Real a, Fractional b) => a -> b
    realToFrac (IO CDouble -> IO Double) -> IO CDouble -> IO Double
    forall a b. (a -> b) -> a -> b
    $
      (\(ProgressBar ForeignPtr ProgressBar
    arg1) -> ForeignPtr ProgressBar
    -> (Ptr ProgressBar -> IO CDouble) -> IO CDouble
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ProgressBar
    arg1 ((Ptr ProgressBar -> IO CDouble) -> IO CDouble)
    -> (Ptr ProgressBar -> IO CDouble) -> IO CDouble
    forall a b. (a -> b) -> a -> b
    $ \Ptr ProgressBar
    argPtr1 ->Ptr ProgressBar -> IO CDouble
    gtk_progress_bar_get_fraction Ptr ProgressBar
    argPtr1)
    {-# LINE 183 "./Graphics/UI/Gtk/Display/ProgressBar.chs" #-}
        (toProgressBar self)

    -- | Retrieves the pulse step set with 'progressBarSetPulseStep'
    --
    progressBarGetPulseStep :: ProgressBarClass self => self
     -> IO Double -- ^ returns a fraction from 0.0 to 1.0
    progressBarGetPulseStep :: forall self. ProgressBarClass self => self -> IO Double
    progressBarGetPulseStep self
    self =
      (CDouble -> Double) -> IO CDouble -> IO Double
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CDouble -> Double
    forall a b. (Real a, Fractional b) => a -> b
    realToFrac (IO CDouble -> IO Double) -> IO CDouble -> IO Double
    forall a b. (a -> b) -> a -> b
    $
      (\(ProgressBar ForeignPtr ProgressBar
    arg1) -> ForeignPtr ProgressBar
    -> (Ptr ProgressBar -> IO CDouble) -> IO CDouble
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ProgressBar
    arg1 ((Ptr ProgressBar -> IO CDouble) -> IO CDouble)
    -> (Ptr ProgressBar -> IO CDouble) -> IO CDouble
    forall a b. (a -> b) -> a -> b
    $ \Ptr ProgressBar
    argPtr1 ->Ptr ProgressBar -> IO CDouble
    gtk_progress_bar_get_pulse_step Ptr ProgressBar
    argPtr1)
    {-# LINE 192 "./Graphics/UI/Gtk/Display/ProgressBar.chs" #-}
        (toProgressBar self)

    -- | Retrieves the text displayed superimposed on the progress bar, if any,
    -- otherwise @Nothing@.
    --
    progressBarGetText :: (ProgressBarClass self, GlibString string) => self
     -> IO (Maybe string) -- ^ returns text, or @Nothing@
    progressBarGetText :: forall self string.
    (ProgressBarClass self, GlibString string) =>
    self -> IO (Maybe string)
    progressBarGetText self
    self =
      (\(ProgressBar ForeignPtr ProgressBar
    arg1) -> ForeignPtr ProgressBar
    -> (Ptr ProgressBar -> IO CString) -> IO CString
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ProgressBar
    arg1 ((Ptr ProgressBar -> IO CString) -> IO CString)
    -> (Ptr ProgressBar -> IO CString) -> IO CString
    forall a b. (a -> b) -> a -> b
    $ \Ptr ProgressBar
    argPtr1 ->Ptr ProgressBar -> IO CString
    gtk_progress_bar_get_text Ptr ProgressBar
    argPtr1)
    {-# LINE 201 "./Graphics/UI/Gtk/Display/ProgressBar.chs" #-}
        (toProgressBar self)
      IO CString -> (CString -> IO (Maybe string)) -> IO (Maybe string)
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= (CString -> IO string) -> CString -> IO (Maybe string)
    forall a b. (Ptr a -> IO b) -> Ptr a -> IO (Maybe b)
    maybePeek CString -> IO string
    forall s. GlibString s => CString -> IO s
    peekUTFString
    {-# LINE 224 "./Graphics/UI/Gtk/Display/ProgressBar.chs" #-}
    -- | Sets the mode used to ellipsize (add an ellipsis: \"...\") the text if
    -- there is not enough space to render the entire string.
    --
    -- * Available since Gtk+ version 2.6
    --
    progressBarSetEllipsize :: ProgressBarClass self => self -> EllipsizeMode -> IO ()
    progressBarSetEllipsize :: forall self.
    ProgressBarClass self =>
    self -> EllipsizeMode -> IO ()
    progressBarSetEllipsize self
    self EllipsizeMode
    mode =
      (\(ProgressBar ForeignPtr ProgressBar
    arg1) CInt
    arg2 -> ForeignPtr ProgressBar -> (Ptr ProgressBar -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ProgressBar
    arg1 ((Ptr ProgressBar -> IO ()) -> IO ())
    -> (Ptr ProgressBar -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr ProgressBar
    argPtr1 ->Ptr ProgressBar -> CInt -> IO ()
    gtk_progress_bar_set_ellipsize Ptr ProgressBar
    argPtr1 CInt
    arg2)
    {-# LINE 232 "./Graphics/UI/Gtk/Display/ProgressBar.chs" #-}
        (toProgressBar self)
        ((Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (Int -> CInt) -> (EllipsizeMode -> Int) -> EllipsizeMode -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . EllipsizeMode -> Int
    forall a. Enum a => a -> Int
    fromEnum) EllipsizeMode
    mode)

    -- | Returns the ellipsizing position of the progressbar. See
    -- 'progressBarSetEllipsize'.
    --
    -- * Available since Gtk+ version 2.6
    --
    progressBarGetEllipsize :: ProgressBarClass self => self -> IO EllipsizeMode
    progressBarGetEllipsize :: forall self. ProgressBarClass self => self -> IO EllipsizeMode
    progressBarGetEllipsize self
    self =
      (CInt -> EllipsizeMode) -> IO CInt -> IO EllipsizeMode
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM (Int -> EllipsizeMode
    forall a. Enum a => Int -> a
    toEnum (Int -> EllipsizeMode) -> (CInt -> Int) -> CInt -> EllipsizeMode
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . CInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral) (IO CInt -> IO EllipsizeMode) -> IO CInt -> IO EllipsizeMode
    forall a b. (a -> b) -> a -> b
    $
      (\(ProgressBar ForeignPtr ProgressBar
    arg1) -> ForeignPtr ProgressBar -> (Ptr ProgressBar -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr ProgressBar
    arg1 ((Ptr ProgressBar -> IO CInt) -> IO CInt)
    -> (Ptr ProgressBar -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr ProgressBar
    argPtr1 ->Ptr ProgressBar -> IO CInt
    gtk_progress_bar_get_ellipsize Ptr ProgressBar
    argPtr1)
    {-# LINE 244 "./Graphics/UI/Gtk/Display/ProgressBar.chs" #-}
        (toProgressBar self)

    --------------------
    -- Attributes
    {-# LINE 261 "./Graphics/UI/Gtk/Display/ProgressBar.chs" #-}
    -- | The number of discrete blocks in a progress bar (when shown in the
    -- discrete style).
    --
    -- Allowed values: >= 2
    --
    -- Default value: 10
    --
    progressBarDiscreteBlocks :: ProgressBarClass self => Attr self Int
    progressBarDiscreteBlocks :: forall self. ProgressBarClass self => Attr self Int
    progressBarDiscreteBlocks = String -> Attr self Int
    forall gobj. GObjectClass gobj => String -> Attr gobj Int
    newAttrFromUIntProperty String
    "discrete-blocks"

    -- | The fraction of total work that has been completed.
    --
    -- Allowed values: [0,1]
    --
    -- Default value: 0
    --
    progressBarFraction :: ProgressBarClass self => Attr self Double
    progressBarFraction :: forall self. ProgressBarClass self => Attr self Double
    progressBarFraction = (self -> IO Double)
    -> (self -> Double -> IO ()) -> ReadWriteAttr self Double Double
    forall o a b.
    (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
    newAttr
      self -> IO Double
    forall self. ProgressBarClass self => self -> IO Double
    progressBarGetFraction
      self -> Double -> IO ()
    forall self. ProgressBarClass self => self -> Double -> IO ()
    progressBarSetFraction

    -- | The fraction of total progress to move the bouncing block when pulsed.
    --
    -- Allowed values: [0,1]
    --
    -- Default value: 0.1
    --
    progressBarPulseStep :: ProgressBarClass self => Attr self Double
    progressBarPulseStep :: forall self. ProgressBarClass self => Attr self Double
    progressBarPulseStep = (self -> IO Double)
    -> (self -> Double -> IO ()) -> ReadWriteAttr self Double Double
    forall o a b.
    (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
    newAttr
      self -> IO Double
    forall self. ProgressBarClass self => self -> IO Double
    progressBarGetPulseStep
      self -> Double -> IO ()
    forall self. ProgressBarClass self => self -> Double -> IO ()
    progressBarSetPulseStep

    -- | Text to be displayed in the progress bar.
    --
    -- Default value: \"%P %%\"
    --
    progressBarText :: (ProgressBarClass self, GlibString string) => ReadWriteAttr self (Maybe string) string
    progressBarText :: forall self string.
    (ProgressBarClass self, GlibString string) =>
    ReadWriteAttr self (Maybe string) string
    progressBarText = (self -> IO (Maybe string))
    -> (self -> string -> IO ())
    -> ReadWriteAttr self (Maybe string) string
    forall o a b.
    (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
    newAttr
      self -> IO (Maybe string)
    forall self string.
    (ProgressBarClass self, GlibString string) =>
    self -> IO (Maybe string)
    progressBarGetText
      self -> string -> IO ()
    forall self string.
    (ProgressBarClass self, GlibString string) =>
    self -> string -> IO ()
    progressBarSetText

    -- | The preferred place to ellipsize the string, if the progressbar does not
    -- have enough room to display the entire string, specified as a
    -- 'EllipsizeMode'.
    --
    -- Note that setting this property to a value other than 'EllipsizeNone' has
    -- the side-effect that the progressbar requests only enough space to display
    -- the ellipsis \"...\". Another means to set a progressbar's width is
    -- 'Graphics.UI.Gtk.Abstract.Widget.widgetSetSizeRequest'.
    --
    -- Default value: 'EllipsizeNone'
    --
    progressBarEllipsize :: ProgressBarClass self => Attr self EllipsizeMode
    progressBarEllipsize :: forall self. ProgressBarClass self => Attr self EllipsizeMode
    progressBarEllipsize = (self -> IO EllipsizeMode)
    -> (self -> EllipsizeMode -> IO ())
    -> ReadWriteAttr self EllipsizeMode EllipsizeMode
    forall o a b.
    (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
    newAttr
      self -> IO EllipsizeMode
    forall self. ProgressBarClass self => self -> IO EllipsizeMode
    progressBarGetEllipsize
      self -> EllipsizeMode -> IO ()
    forall self.
    ProgressBarClass self =>
    self -> EllipsizeMode -> IO ()
    progressBarSetEllipsize

    foreign import ccall unsafe "gtk_progress_bar_new"
      gtk_progress_bar_new :: (IO (Ptr Widget))

    foreign import ccall unsafe "gtk_progress_bar_pulse"
      gtk_progress_bar_pulse :: ((Ptr ProgressBar) -> (IO ()))

    foreign import ccall unsafe "gtk_progress_bar_set_text"
      gtk_progress_bar_set_text :: ((Ptr ProgressBar) -> ((Ptr CChar) -> (IO ())))

    foreign import ccall unsafe "gtk_progress_bar_set_fraction"
      gtk_progress_bar_set_fraction :: ((Ptr ProgressBar) -> (CDouble -> (IO ())))

    foreign import ccall unsafe "gtk_progress_bar_set_pulse_step"
      gtk_progress_bar_set_pulse_step :: ((Ptr ProgressBar) -> (CDouble -> (IO ())))

    foreign import ccall unsafe "gtk_progress_bar_get_fraction"
      gtk_progress_bar_get_fraction :: ((Ptr ProgressBar) -> (IO CDouble))

    foreign import ccall unsafe "gtk_progress_bar_get_pulse_step"
      gtk_progress_bar_get_pulse_step :: ((Ptr ProgressBar) -> (IO CDouble))

    foreign import ccall unsafe "gtk_progress_bar_get_text"
      gtk_progress_bar_get_text :: ((Ptr ProgressBar) -> (IO (Ptr CChar)))

    foreign import ccall safe "gtk_progress_bar_set_ellipsize"
      gtk_progress_bar_set_ellipsize :: ((Ptr ProgressBar) -> (CInt -> (IO ())))

    foreign import ccall safe "gtk_progress_bar_get_ellipsize"
      gtk_progress_bar_get_ellipsize :: ((Ptr ProgressBar) -> (IO CInt))