    {-# LINE 2 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}
    -- -*-haskell-*-
    -- GIMP Toolkit (GTK) Widget Assistant
    --
    -- Author : Andy Stewart
    --
    -- Created: 22 Mar 2010
    --
    -- Copyright (C) 2010 Andy Stewart
    --
    -- 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 used to guide users through multi-step operations
    --
    -- * Module available since Gtk+ version 2.10
    --
    module Graphics.UI.Gtk.Windows.Assistant (

    -- * Detail
    --
    -- | A 'Assistant' is a widget used to represent a generally complex operation
    -- split in several steps, guiding the user through its pages and
    -- controlling the page flow to collect the necessary data.

    -- ** GtkAssistant as GtkBuildable
    --
    -- | The 'Assistant' implementation of the 'Buildable' interface exposes the
    -- @actionArea@ as internal children with the name \"action_area\".
    --
    -- To add pages to an assistant in 'Builder', simply add it as a \<child> to
    -- the 'Assistant' object, and set its child properties as necessary.

    -- * Class Hierarchy
    --
    -- |
    -- @
    -- | 'GObject'
    -- | +----'Object'
    -- | +----'Widget'
    -- | +----'Container'
    -- | +----'Bin'
    -- | +----'Window'
    -- | +----Assistant
    -- @

    -- * Types
      Assistant,
      AssistantClass,
      castToAssistant,
      toAssistant,

    -- * Enums.
      AssistantPageType(..),

    -- * Constructors
      assistantNew,

    -- * Methods
      assistantGetNPages,
      assistantGetNthPage,
      assistantPrependPage,
      assistantAppendPage,
      assistantInsertPage,
      assistantSetForwardPageFunc,
      assistantAddActionWidget,
      assistantRemoveActionWidget,
      assistantUpdateButtonsState,
      assistantSetPageType,
      assistantGetPageType,
      assistantSetPageTitle,
      assistantGetPageTitle,
      assistantSetPageHeaderImage,
      assistantGetPageHeaderImage,
      assistantSetPageSideImage,
      assistantGetPageSideImage,
      assistantSetPageComplete,
      assistantGetPageComplete,

      assistantCommit,

    -- * Attributes
      assistantCurrentPage,

    -- * Child Attributes
      assistantChildPageType,
      assistantChildTitle,
      assistantChildHeaderImage,
      assistantChildSidebarImage,
      assistantChildComplete,

    -- * Signals
      assistantCancel,
      assistantPrepare,
      assistantApply,
      assistantClose,

      ) 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 122 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}
    import Graphics.UI.Gtk.Signals
    {-# LINE 123 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}

    {-# LINE 125 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}

    --------------------
    -- Enum
    data AssistantPageType = AssistantPageContent
                           | AssistantPageIntro
                           | AssistantPageConfirm
                           | AssistantPageSummary
                           | AssistantPageProgress
                           | AssistantPageCustom
                           deriving (Int -> AssistantPageType
    AssistantPageType -> Int
    AssistantPageType -> [AssistantPageType]
    AssistantPageType -> AssistantPageType
    AssistantPageType -> AssistantPageType -> [AssistantPageType]
    AssistantPageType
    -> AssistantPageType -> AssistantPageType -> [AssistantPageType]
    (AssistantPageType -> AssistantPageType)
    -> (AssistantPageType -> AssistantPageType)
    -> (Int -> AssistantPageType)
    -> (AssistantPageType -> Int)
    -> (AssistantPageType -> [AssistantPageType])
    -> (AssistantPageType -> AssistantPageType -> [AssistantPageType])
    -> (AssistantPageType -> AssistantPageType -> [AssistantPageType])
    -> (AssistantPageType
        -> AssistantPageType -> AssistantPageType -> [AssistantPageType])
    -> Enum AssistantPageType
    forall a.
    (a -> a)
    -> (a -> a)
    -> (Int -> a)
    -> (a -> Int)
    -> (a -> [a])
    -> (a -> a -> [a])
    -> (a -> a -> [a])
    -> (a -> a -> a -> [a])
    -> Enum a
    $csucc :: AssistantPageType -> AssistantPageType
    succ :: AssistantPageType -> AssistantPageType
    $cpred :: AssistantPageType -> AssistantPageType
    pred :: AssistantPageType -> AssistantPageType
    $ctoEnum :: Int -> AssistantPageType
    toEnum :: Int -> AssistantPageType
    $cfromEnum :: AssistantPageType -> Int
    fromEnum :: AssistantPageType -> Int
    $cenumFrom :: AssistantPageType -> [AssistantPageType]
    enumFrom :: AssistantPageType -> [AssistantPageType]
    $cenumFromThen :: AssistantPageType -> AssistantPageType -> [AssistantPageType]
    enumFromThen :: AssistantPageType -> AssistantPageType -> [AssistantPageType]
    $cenumFromTo :: AssistantPageType -> AssistantPageType -> [AssistantPageType]
    enumFromTo :: AssistantPageType -> AssistantPageType -> [AssistantPageType]
    $cenumFromThenTo :: AssistantPageType
    -> AssistantPageType -> AssistantPageType -> [AssistantPageType]
    enumFromThenTo :: AssistantPageType
    -> AssistantPageType -> AssistantPageType -> [AssistantPageType]
    Enum,AssistantPageType
    AssistantPageType -> AssistantPageType -> Bounded AssistantPageType
    forall a. a -> a -> Bounded a
    $cminBound :: AssistantPageType
    minBound :: AssistantPageType
    $cmaxBound :: AssistantPageType
    maxBound :: AssistantPageType
    Bounded,AssistantPageType -> AssistantPageType -> Bool
    (AssistantPageType -> AssistantPageType -> Bool)
    -> (AssistantPageType -> AssistantPageType -> Bool)
    -> Eq AssistantPageType
    forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
    $c== :: AssistantPageType -> AssistantPageType -> Bool
    == :: AssistantPageType -> AssistantPageType -> Bool
    $c/= :: AssistantPageType -> AssistantPageType -> Bool
    /= :: AssistantPageType -> AssistantPageType -> Bool
    Eq,Int -> AssistantPageType -> ShowS
    [AssistantPageType] -> ShowS
    AssistantPageType -> String
    (Int -> AssistantPageType -> ShowS)
    -> (AssistantPageType -> String)
    -> ([AssistantPageType] -> ShowS)
    -> Show AssistantPageType
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: Int -> AssistantPageType -> ShowS
    showsPrec :: Int -> AssistantPageType -> ShowS
    $cshow :: AssistantPageType -> String
    show :: AssistantPageType -> String
    $cshowList :: [AssistantPageType] -> ShowS
    showList :: [AssistantPageType] -> ShowS
    Show)

    {-# LINE 130 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}

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

    -- | Creates a new 'Assistant'.
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantNew :: IO Assistant
    assistantNew :: IO Assistant
    assistantNew =
      (ForeignPtr Assistant -> Assistant, FinalizerPtr Assistant)
    -> IO (Ptr Assistant) -> IO Assistant
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewObject (ForeignPtr Assistant -> Assistant, FinalizerPtr Assistant)
    forall {a}. (ForeignPtr Assistant -> Assistant, FinalizerPtr a)
    mkAssistant (IO (Ptr Assistant) -> IO Assistant)
    -> IO (Ptr Assistant) -> IO Assistant
    forall a b. (a -> b) -> a -> b
    $
      (Ptr Widget -> Ptr Assistant)
    -> IO (Ptr Widget) -> IO (Ptr Assistant)
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM (Ptr Widget -> Ptr Assistant
    forall a b. Ptr a -> Ptr b
    castPtr :: Ptr Widget -> Ptr Assistant) (IO (Ptr Widget) -> IO (Ptr Assistant))
    -> IO (Ptr Widget) -> IO (Ptr Assistant)
    forall a b. (a -> b) -> a -> b
    $
      IO (Ptr Widget)
    gtk_assistant_new
    {-# LINE 143 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}

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

    -- | Returns the page number of the current page
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantGetCurrentPage :: AssistantClass self => self
     -> IO Int -- ^ returns The index (starting from 0) of the current page in the
               -- @assistant@, if the @assistant@ has no pages, -1 will be returned
    assistantGetCurrentPage :: forall self. AssistantClass self => self -> IO Int
    assistantGetCurrentPage self
    self =
      (CInt -> Int) -> IO CInt -> IO Int
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (IO CInt -> IO Int) -> IO CInt -> IO Int
    forall a b. (a -> b) -> a -> b
    $
      (\(Assistant ForeignPtr Assistant
    arg1) -> ForeignPtr Assistant -> (Ptr Assistant -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Assistant
    arg1 ((Ptr Assistant -> IO CInt) -> IO CInt)
    -> (Ptr Assistant -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr Assistant
    argPtr1 ->Ptr Assistant -> IO CInt
    gtk_assistant_get_current_page Ptr Assistant
    argPtr1)
    {-# LINE 157 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}
        (toAssistant self)

    -- | Switches the page to @pageNum@. Note that this will only be necessary in custom buttons, as the
    -- assistant flow can be set with 'assistantSetForwardPageFunc'.
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantSetCurrentPage :: AssistantClass self => self
     -> Int -- ^ @pageNum@ - index of the page to switch to, starting from 0. If
            -- negative, the last page will be used. If greater than the number of
            -- pages in the @assistant@, nothing will be done.
     -> IO ()
    assistantSetCurrentPage :: forall self. AssistantClass self => self -> Int -> IO ()
    assistantSetCurrentPage self
    self Int
    pageNum =
      (\(Assistant ForeignPtr Assistant
    arg1) CInt
    arg2 -> ForeignPtr Assistant -> (Ptr Assistant -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Assistant
    arg1 ((Ptr Assistant -> IO ()) -> IO ())
    -> (Ptr Assistant -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Assistant
    argPtr1 ->Ptr Assistant -> CInt -> IO ()
    gtk_assistant_set_current_page Ptr Assistant
    argPtr1 CInt
    arg2)
    {-# LINE 171 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}
        (toAssistant self)
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    pageNum)

    -- | Returns the number of pages in the @assistant@
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantGetNPages :: AssistantClass self => self
     -> IO Int -- ^ returns The number of pages in the @assistant@.
    assistantGetNPages :: forall self. AssistantClass self => self -> IO Int
    assistantGetNPages self
    self =
      (CInt -> Int) -> IO CInt -> IO Int
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (IO CInt -> IO Int) -> IO CInt -> IO Int
    forall a b. (a -> b) -> a -> b
    $
      (\(Assistant ForeignPtr Assistant
    arg1) -> ForeignPtr Assistant -> (Ptr Assistant -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Assistant
    arg1 ((Ptr Assistant -> IO CInt) -> IO CInt)
    -> (Ptr Assistant -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr Assistant
    argPtr1 ->Ptr Assistant -> IO CInt
    gtk_assistant_get_n_pages Ptr Assistant
    argPtr1)
    {-# LINE 184 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}
        (toAssistant self)

    -- | Returns the child widget contained in page number @pageNum@.
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantGetNthPage :: AssistantClass self => self
     -> Int -- ^ @pageNum@ - The index of a page in the @assistant@, or -1
                  -- to get the last page;
     -> IO (Maybe Widget) -- ^ returns The child widget, or 'Nothing' if @pageNum@ is out of bounds.
    assistantGetNthPage :: forall self.
    AssistantClass self =>
    self -> Int -> IO (Maybe Widget)
    assistantGetNthPage self
    self Int
    pageNum =
      (IO (Ptr Widget) -> IO Widget)
    -> IO (Ptr Widget) -> IO (Maybe Widget)
    forall a. (IO (Ptr a) -> IO a) -> IO (Ptr a) -> IO (Maybe a)
    maybeNull ((ForeignPtr Widget -> Widget, FinalizerPtr Widget)
    -> IO (Ptr Widget) -> IO Widget
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewObject (ForeignPtr Widget -> Widget, FinalizerPtr Widget)
    forall {a}. (ForeignPtr Widget -> Widget, FinalizerPtr a)
    mkWidget) (IO (Ptr Widget) -> IO (Maybe Widget))
    -> IO (Ptr Widget) -> IO (Maybe Widget)
    forall a b. (a -> b) -> a -> b
    $
      (\(Assistant ForeignPtr Assistant
    arg1) CInt
    arg2 -> ForeignPtr Assistant
    -> (Ptr Assistant -> IO (Ptr Widget)) -> IO (Ptr Widget)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Assistant
    arg1 ((Ptr Assistant -> IO (Ptr Widget)) -> IO (Ptr Widget))
    -> (Ptr Assistant -> IO (Ptr Widget)) -> IO (Ptr Widget)
    forall a b. (a -> b) -> a -> b
    $ \Ptr Assistant
    argPtr1 ->Ptr Assistant -> CInt -> IO (Ptr Widget)
    gtk_assistant_get_nth_page Ptr Assistant
    argPtr1 CInt
    arg2)
    {-# LINE 198 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}
        (toAssistant self)
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    pageNum)

    -- | Prepends a page to the @assistant@.
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantPrependPage :: (AssistantClass self, WidgetClass page) => self
     -> page -- ^ @page@ - a 'Widget'
     -> IO Int -- ^ returns the index (starting at 0) of the inserted page
    assistantPrependPage :: forall self page.
    (AssistantClass self, WidgetClass page) =>
    self -> page -> IO Int
    assistantPrependPage self
    self page
    page =
      (CInt -> Int) -> IO CInt -> IO Int
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (IO CInt -> IO Int) -> IO CInt -> IO Int
    forall a b. (a -> b) -> a -> b
    $
      (\(Assistant ForeignPtr Assistant
    arg1) (Widget ForeignPtr Widget
    arg2) -> ForeignPtr Assistant -> (Ptr Assistant -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Assistant
    arg1 ((Ptr Assistant -> IO CInt) -> IO CInt)
    -> (Ptr Assistant -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr Assistant
    argPtr1 ->ForeignPtr Widget -> (Ptr Widget -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Widget
    arg2 ((Ptr Widget -> IO CInt) -> IO CInt)
    -> (Ptr Widget -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr Widget
    argPtr2 ->Ptr Assistant -> Ptr Widget -> IO CInt
    gtk_assistant_prepend_page Ptr Assistant
    argPtr1 Ptr Widget
    argPtr2)
    {-# LINE 212 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}
        (toAssistant self)
        (page -> Widget
    forall o. WidgetClass o => o -> Widget
    toWidget page
    page)

    -- | Appends a page to the @assistant@.
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantAppendPage :: (AssistantClass self, WidgetClass page) => self
     -> page -- ^ @page@ - a 'Widget'
     -> IO Int -- ^ returns the index (starting at 0) of the inserted page
    assistantAppendPage :: forall self page.
    (AssistantClass self, WidgetClass page) =>
    self -> page -> IO Int
    assistantAppendPage self
    self page
    page =
      (CInt -> Int) -> IO CInt -> IO Int
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (IO CInt -> IO Int) -> IO CInt -> IO Int
    forall a b. (a -> b) -> a -> b
    $
      (\(Assistant ForeignPtr Assistant
    arg1) (Widget ForeignPtr Widget
    arg2) -> ForeignPtr Assistant -> (Ptr Assistant -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Assistant
    arg1 ((Ptr Assistant -> IO CInt) -> IO CInt)
    -> (Ptr Assistant -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr Assistant
    argPtr1 ->ForeignPtr Widget -> (Ptr Widget -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Widget
    arg2 ((Ptr Widget -> IO CInt) -> IO CInt)
    -> (Ptr Widget -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr Widget
    argPtr2 ->Ptr Assistant -> Ptr Widget -> IO CInt
    gtk_assistant_append_page Ptr Assistant
    argPtr1 Ptr Widget
    argPtr2)
    {-# LINE 226 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}
        (toAssistant self)
        (page -> Widget
    forall o. WidgetClass o => o -> Widget
    toWidget page
    page)

    -- | Inserts a page in the @assistant@ at a given position.
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantInsertPage :: (AssistantClass self, WidgetClass page) => self
     -> page -- ^ @page@ - a 'Widget'
     -> Int -- ^ @position@ - the index (starting at 0) at which to insert the
               -- page, or -1 to append the page to the @assistant@
     -> IO Int -- ^ returns the index (starting from 0) of the inserted page
    assistantInsertPage :: forall self page.
    (AssistantClass self, WidgetClass page) =>
    self -> page -> Int -> IO Int
    assistantInsertPage self
    self page
    page Int
    position =
      (CInt -> Int) -> IO CInt -> IO Int
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (IO CInt -> IO Int) -> IO CInt -> IO Int
    forall a b. (a -> b) -> a -> b
    $
      (\(Assistant ForeignPtr Assistant
    arg1) (Widget ForeignPtr Widget
    arg2) CInt
    arg3 -> ForeignPtr Assistant -> (Ptr Assistant -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Assistant
    arg1 ((Ptr Assistant -> IO CInt) -> IO CInt)
    -> (Ptr Assistant -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr Assistant
    argPtr1 ->ForeignPtr Widget -> (Ptr Widget -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Widget
    arg2 ((Ptr Widget -> IO CInt) -> IO CInt)
    -> (Ptr Widget -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr Widget
    argPtr2 ->Ptr Assistant -> Ptr Widget -> CInt -> IO CInt
    gtk_assistant_insert_page Ptr Assistant
    argPtr1 Ptr Widget
    argPtr2 CInt
    arg3)
    {-# LINE 242 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}
        (toAssistant self)
        (page -> Widget
    forall o. WidgetClass o => o -> Widget
    toWidget page
    page)
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    position)

    -- | Sets the page forwarding function to be @pageFunc@, this function will be
    -- used to determine what will be the next page when the user presses the
    -- forward button. Setting @pageFunc@ to 'Nothing' will make the assistant to use the
    -- default forward function, which just goes to the next visible page.
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantSetForwardPageFunc :: AssistantClass self => self
     -> Maybe (Int -> IO Int) -- ^ @pageFunc@ - the 'AssistantPage', or 'Nothing' to use the default one.
     -> IO ()
    assistantSetForwardPageFunc :: forall self.
    AssistantClass self =>
    self -> Maybe (Int -> IO Int) -> IO ()
    assistantSetForwardPageFunc self
    self Maybe (Int -> IO Int)
    Nothing = do
      (\(Assistant ForeignPtr Assistant
    arg1) FunPtr (CInt -> Ptr () -> IO CInt)
    arg2 Ptr ()
    arg3 FunPtr (Ptr () -> IO ())
    arg4 -> ForeignPtr Assistant -> (Ptr Assistant -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Assistant
    arg1 ((Ptr Assistant -> IO ()) -> IO ())
    -> (Ptr Assistant -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Assistant
    argPtr1 ->Ptr Assistant
    -> FunPtr (CInt -> Ptr () -> IO CInt)
    -> Ptr ()
    -> FunPtr (Ptr () -> IO ())
    -> IO ()
    gtk_assistant_set_forward_page_func Ptr Assistant
    argPtr1 FunPtr (CInt -> Ptr () -> IO CInt)
    arg2 Ptr ()
    arg3 FunPtr (Ptr () -> IO ())
    arg4)
    {-# LINE 259 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}
        (toAssistant self)
        FunPtr (CInt -> Ptr () -> IO CInt)
    forall a. FunPtr a
    nullFunPtr
        (FunPtr (ZonkAny 0) -> Ptr ()
    forall a b. FunPtr a -> Ptr b
    castFunPtrToPtr FunPtr (ZonkAny 0)
    forall a. FunPtr a
    nullFunPtr)
        FunPtr (Ptr () -> IO ())
    destroyFunPtr

    assistantSetForwardPageFunc self
    self (Just Int -> IO Int
    pageFunc) = do
      pfPtr <- (CInt -> Ptr () -> IO CInt)
    -> IO (FunPtr (CInt -> Ptr () -> IO CInt))
    mkAssistantPageFunc ((CInt -> Ptr () -> IO CInt)
     -> IO (FunPtr (CInt -> Ptr () -> IO CInt)))
    -> (CInt -> Ptr () -> IO CInt)
    -> IO (FunPtr (CInt -> Ptr () -> IO CInt))
    forall a b. (a -> b) -> a -> b
    $ \ CInt
    c Ptr ()
    _ -> do
                result <- Int -> IO Int
    pageFunc (CInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral CInt
    c)
                return $ fromIntegral result
      (\(Assistant ForeignPtr Assistant
    arg1) FunPtr (CInt -> Ptr () -> IO CInt)
    arg2 Ptr ()
    arg3 FunPtr (Ptr () -> IO ())
    arg4 -> ForeignPtr Assistant -> (Ptr Assistant -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Assistant
    arg1 ((Ptr Assistant -> IO ()) -> IO ())
    -> (Ptr Assistant -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Assistant
    argPtr1 ->Ptr Assistant
    -> FunPtr (CInt -> Ptr () -> IO CInt)
    -> Ptr ()
    -> FunPtr (Ptr () -> IO ())
    -> IO ()
    gtk_assistant_set_forward_page_func Ptr Assistant
    argPtr1 FunPtr (CInt -> Ptr () -> IO CInt)
    arg2 Ptr ()
    arg3 FunPtr (Ptr () -> IO ())
    arg4)
    {-# LINE 269 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}
        (toAssistant self)
        pfPtr
        (castFunPtrToPtr pfPtr)
        destroyFunPtr

    type AssistantPageFunc = FunPtr ((CInt -> ((Ptr ()) -> (IO CInt))))
    {-# LINE 275 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}

    foreign import ccall "wrapper" mkAssistantPageFunc ::
      ((CInt) -> Ptr () -> IO (CInt))
      -> IO AssistantPageFunc

    -- | Sets the page type for @page@. The page type determines the page behavior
    -- in the @assistant@.
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantSetPageType :: (AssistantClass self, WidgetClass page) => self
     -> page -- ^ @page@ - a page of @assistant@
     -> AssistantPageType -- ^ @type@ - the new type for @page@
     -> IO ()
    assistantSetPageType :: forall self page.
    (AssistantClass self, WidgetClass page) =>
    self -> page -> AssistantPageType -> IO ()
    assistantSetPageType self
    self page
    page AssistantPageType
    type_ =
      (\(Assistant ForeignPtr Assistant
    arg1) (Widget ForeignPtr Widget
    arg2) CInt
    arg3 -> ForeignPtr Assistant -> (Ptr Assistant -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Assistant
    arg1 ((Ptr Assistant -> IO ()) -> IO ())
    -> (Ptr Assistant -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Assistant
    argPtr1 ->ForeignPtr Widget -> (Ptr Widget -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Widget
    arg2 ((Ptr Widget -> IO ()) -> IO ()) -> (Ptr Widget -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Widget
    argPtr2 ->Ptr Assistant -> Ptr Widget -> CInt -> IO ()
    gtk_assistant_set_page_type Ptr Assistant
    argPtr1 Ptr Widget
    argPtr2 CInt
    arg3)
    {-# LINE 292 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}
        (toAssistant self)
        (page -> Widget
    forall o. WidgetClass o => o -> Widget
    toWidget page
    page)
        ((Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (Int -> CInt)
    -> (AssistantPageType -> Int) -> AssistantPageType -> CInt
    forall b c a. (b -> c) -> (a -> b) -> a -> c
    . AssistantPageType -> Int
    forall a. Enum a => a -> Int
    fromEnum) AssistantPageType
    type_)

    -- | Gets the page type of @page@.
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantGetPageType :: (AssistantClass self, WidgetClass page) => self
     -> page -- ^ @page@ - a page of @assistant@
     -> IO AssistantPageType -- ^ returns the page type of @page@.
    assistantGetPageType :: forall self page.
    (AssistantClass self, WidgetClass page) =>
    self -> page -> IO AssistantPageType
    assistantGetPageType self
    self page
    page =
      (CInt -> AssistantPageType) -> IO CInt -> IO AssistantPageType
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM (Int -> AssistantPageType
    forall a. Enum a => Int -> a
    toEnum (Int -> AssistantPageType)
    -> (CInt -> Int) -> CInt -> AssistantPageType
    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 AssistantPageType)
    -> IO CInt -> IO AssistantPageType
    forall a b. (a -> b) -> a -> b
    $
      (\(Assistant ForeignPtr Assistant
    arg1) (Widget ForeignPtr Widget
    arg2) -> ForeignPtr Assistant -> (Ptr Assistant -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Assistant
    arg1 ((Ptr Assistant -> IO CInt) -> IO CInt)
    -> (Ptr Assistant -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr Assistant
    argPtr1 ->ForeignPtr Widget -> (Ptr Widget -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Widget
    arg2 ((Ptr Widget -> IO CInt) -> IO CInt)
    -> (Ptr Widget -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr Widget
    argPtr2 ->Ptr Assistant -> Ptr Widget -> IO CInt
    gtk_assistant_get_page_type Ptr Assistant
    argPtr1 Ptr Widget
    argPtr2)
    {-# LINE 307 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}
        (toAssistant self)
        (page -> Widget
    forall o. WidgetClass o => o -> Widget
    toWidget page
    page)

    -- | Sets a title for @page@. The title is displayed in the header area of the
    -- assistant when @page@ is the current page.
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantSetPageTitle :: (AssistantClass self, WidgetClass page, GlibString string) => self
     -> page -- ^ @page@ - a page of @assistant@
     -> string -- ^ @title@ - the new title for @page@
     -> IO ()
    assistantSetPageTitle :: forall self page string.
    (AssistantClass self, WidgetClass page, GlibString string) =>
    self -> page -> string -> IO ()
    assistantSetPageTitle self
    self page
    page string
    title =
      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
    title ((CString -> IO ()) -> IO ()) -> (CString -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \CString
    titlePtr ->
      (\(Assistant ForeignPtr Assistant
    arg1) (Widget ForeignPtr Widget
    arg2) CString
    arg3 -> ForeignPtr Assistant -> (Ptr Assistant -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Assistant
    arg1 ((Ptr Assistant -> IO ()) -> IO ())
    -> (Ptr Assistant -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Assistant
    argPtr1 ->ForeignPtr Widget -> (Ptr Widget -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Widget
    arg2 ((Ptr Widget -> IO ()) -> IO ()) -> (Ptr Widget -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Widget
    argPtr2 ->Ptr Assistant -> Ptr Widget -> CString -> IO ()
    gtk_assistant_set_page_title Ptr Assistant
    argPtr1 Ptr Widget
    argPtr2 CString
    arg3)
    {-# LINE 323 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}
        (toAssistant self)
        (page -> Widget
    forall o. WidgetClass o => o -> Widget
    toWidget page
    page)
        CString
    titlePtr

    -- | Gets the title for @page@.
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantGetPageTitle :: (AssistantClass self, WidgetClass page, GlibString string) => self
     -> page -- ^ @page@ - a page of @assistant@
     -> IO string -- ^ returns the title for @page@.
    assistantGetPageTitle :: forall self page string.
    (AssistantClass self, WidgetClass page, GlibString string) =>
    self -> page -> IO string
    assistantGetPageTitle self
    self page
    page =
      (\(Assistant ForeignPtr Assistant
    arg1) (Widget ForeignPtr Widget
    arg2) -> ForeignPtr Assistant -> (Ptr Assistant -> IO CString) -> IO CString
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Assistant
    arg1 ((Ptr Assistant -> IO CString) -> IO CString)
    -> (Ptr Assistant -> IO CString) -> IO CString
    forall a b. (a -> b) -> a -> b
    $ \Ptr Assistant
    argPtr1 ->ForeignPtr Widget -> (Ptr Widget -> IO CString) -> IO CString
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Widget
    arg2 ((Ptr Widget -> IO CString) -> IO CString)
    -> (Ptr Widget -> IO CString) -> IO CString
    forall a b. (a -> b) -> a -> b
    $ \Ptr Widget
    argPtr2 ->Ptr Assistant -> Ptr Widget -> IO CString
    gtk_assistant_get_page_title Ptr Assistant
    argPtr1 Ptr Widget
    argPtr2)
    {-# LINE 337 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}
        (toAssistant self)
        (page -> Widget
    forall o. WidgetClass o => o -> Widget
    toWidget page
    page)
      IO CString -> (CString -> IO string) -> IO 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
    forall s. GlibString s => CString -> IO s
    peekUTFString

    -- | Sets a header image for @page@. This image is displayed in the header
    -- area of the assistant when @page@ is the current page.
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantSetPageHeaderImage :: (AssistantClass self, WidgetClass page) => self
     -> page -- ^ @page@ - a page of @assistant@
     -> Pixbuf -- ^ @pixbuf@ - the new header image @page@
     -> IO ()
    assistantSetPageHeaderImage :: forall self page.
    (AssistantClass self, WidgetClass page) =>
    self -> page -> Pixbuf -> IO ()
    assistantSetPageHeaderImage self
    self page
    page Pixbuf
    pixbuf =
      (\(Assistant ForeignPtr Assistant
    arg1) (Widget ForeignPtr Widget
    arg2) (Pixbuf ForeignPtr Pixbuf
    arg3) -> ForeignPtr Assistant -> (Ptr Assistant -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Assistant
    arg1 ((Ptr Assistant -> IO ()) -> IO ())
    -> (Ptr Assistant -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Assistant
    argPtr1 ->ForeignPtr Widget -> (Ptr Widget -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Widget
    arg2 ((Ptr Widget -> IO ()) -> IO ()) -> (Ptr Widget -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Widget
    argPtr2 ->ForeignPtr Pixbuf -> (Ptr Pixbuf -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Pixbuf
    arg3 ((Ptr Pixbuf -> IO ()) -> IO ()) -> (Ptr Pixbuf -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Pixbuf
    argPtr3 ->Ptr Assistant -> Ptr Widget -> Ptr Pixbuf -> IO ()
    gtk_assistant_set_page_header_image Ptr Assistant
    argPtr1 Ptr Widget
    argPtr2 Ptr Pixbuf
    argPtr3)
    {-# LINE 353 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}
        (toAssistant self)
        (page -> Widget
    forall o. WidgetClass o => o -> Widget
    toWidget page
    page)
        Pixbuf
    pixbuf

    -- | Gets the header image for @page@.
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantGetPageHeaderImage :: (AssistantClass self, WidgetClass page) => self
     -> page -- ^ @page@ - a page of @assistant@
     -> IO (Maybe Pixbuf) -- ^ returns the header image for @page@, or 'Nothing' if there's no header image for the page.
    assistantGetPageHeaderImage :: forall self page.
    (AssistantClass self, WidgetClass page) =>
    self -> page -> IO (Maybe Pixbuf)
    assistantGetPageHeaderImage self
    self page
    page =
      (IO (Ptr Pixbuf) -> IO Pixbuf)
    -> IO (Ptr Pixbuf) -> IO (Maybe Pixbuf)
    forall a. (IO (Ptr a) -> IO a) -> IO (Ptr a) -> IO (Maybe a)
    maybeNull ((ForeignPtr Pixbuf -> Pixbuf, FinalizerPtr Pixbuf)
    -> IO (Ptr Pixbuf) -> IO Pixbuf
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewGObject (ForeignPtr Pixbuf -> Pixbuf, FinalizerPtr Pixbuf)
    forall {a}. (ForeignPtr Pixbuf -> Pixbuf, FinalizerPtr a)
    mkPixbuf) (IO (Ptr Pixbuf) -> IO (Maybe Pixbuf))
    -> IO (Ptr Pixbuf) -> IO (Maybe Pixbuf)
    forall a b. (a -> b) -> a -> b
    $
      (\(Assistant ForeignPtr Assistant
    arg1) (Widget ForeignPtr Widget
    arg2) -> ForeignPtr Assistant
    -> (Ptr Assistant -> IO (Ptr Pixbuf)) -> IO (Ptr Pixbuf)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Assistant
    arg1 ((Ptr Assistant -> IO (Ptr Pixbuf)) -> IO (Ptr Pixbuf))
    -> (Ptr Assistant -> IO (Ptr Pixbuf)) -> IO (Ptr Pixbuf)
    forall a b. (a -> b) -> a -> b
    $ \Ptr Assistant
    argPtr1 ->ForeignPtr Widget
    -> (Ptr Widget -> IO (Ptr Pixbuf)) -> IO (Ptr Pixbuf)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Widget
    arg2 ((Ptr Widget -> IO (Ptr Pixbuf)) -> IO (Ptr Pixbuf))
    -> (Ptr Widget -> IO (Ptr Pixbuf)) -> IO (Ptr Pixbuf)
    forall a b. (a -> b) -> a -> b
    $ \Ptr Widget
    argPtr2 ->Ptr Assistant -> Ptr Widget -> IO (Ptr Pixbuf)
    gtk_assistant_get_page_header_image Ptr Assistant
    argPtr1 Ptr Widget
    argPtr2)
    {-# LINE 368 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}
        (toAssistant self)
        (page -> Widget
    forall o. WidgetClass o => o -> Widget
    toWidget page
    page)

    -- | Sets a header image for @page@. This image is displayed in the side area
    -- of the assistant when @page@ is the current page.
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantSetPageSideImage :: (AssistantClass self, WidgetClass page) => self
     -> page -- ^ @page@ - a page of @assistant@
     -> Pixbuf -- ^ @pixbuf@ - the new header image @page@
     -> IO ()
    assistantSetPageSideImage :: forall self page.
    (AssistantClass self, WidgetClass page) =>
    self -> page -> Pixbuf -> IO ()
    assistantSetPageSideImage self
    self page
    page Pixbuf
    pixbuf =
      (\(Assistant ForeignPtr Assistant
    arg1) (Widget ForeignPtr Widget
    arg2) (Pixbuf ForeignPtr Pixbuf
    arg3) -> ForeignPtr Assistant -> (Ptr Assistant -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Assistant
    arg1 ((Ptr Assistant -> IO ()) -> IO ())
    -> (Ptr Assistant -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Assistant
    argPtr1 ->ForeignPtr Widget -> (Ptr Widget -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Widget
    arg2 ((Ptr Widget -> IO ()) -> IO ()) -> (Ptr Widget -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Widget
    argPtr2 ->ForeignPtr Pixbuf -> (Ptr Pixbuf -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Pixbuf
    arg3 ((Ptr Pixbuf -> IO ()) -> IO ()) -> (Ptr Pixbuf -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Pixbuf
    argPtr3 ->Ptr Assistant -> Ptr Widget -> Ptr Pixbuf -> IO ()
    gtk_assistant_set_page_side_image Ptr Assistant
    argPtr1 Ptr Widget
    argPtr2 Ptr Pixbuf
    argPtr3)
    {-# LINE 383 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}
        (toAssistant self)
        (page -> Widget
    forall o. WidgetClass o => o -> Widget
    toWidget page
    page)
        Pixbuf
    pixbuf

    -- | Gets the header image for @page@.
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantGetPageSideImage :: (AssistantClass self, WidgetClass page) => self
     -> page -- ^ @page@ - a page of @assistant@
     -> IO (Maybe Pixbuf) -- ^ returns the side image for @page@, or 'Nothing' if there's no side image for the page.
    assistantGetPageSideImage :: forall self page.
    (AssistantClass self, WidgetClass page) =>
    self -> page -> IO (Maybe Pixbuf)
    assistantGetPageSideImage self
    self page
    page =
      (IO (Ptr Pixbuf) -> IO Pixbuf)
    -> IO (Ptr Pixbuf) -> IO (Maybe Pixbuf)
    forall a. (IO (Ptr a) -> IO a) -> IO (Ptr a) -> IO (Maybe a)
    maybeNull ((ForeignPtr Pixbuf -> Pixbuf, FinalizerPtr Pixbuf)
    -> IO (Ptr Pixbuf) -> IO Pixbuf
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewGObject (ForeignPtr Pixbuf -> Pixbuf, FinalizerPtr Pixbuf)
    forall {a}. (ForeignPtr Pixbuf -> Pixbuf, FinalizerPtr a)
    mkPixbuf) (IO (Ptr Pixbuf) -> IO (Maybe Pixbuf))
    -> IO (Ptr Pixbuf) -> IO (Maybe Pixbuf)
    forall a b. (a -> b) -> a -> b
    $
      (\(Assistant ForeignPtr Assistant
    arg1) (Widget ForeignPtr Widget
    arg2) -> ForeignPtr Assistant
    -> (Ptr Assistant -> IO (Ptr Pixbuf)) -> IO (Ptr Pixbuf)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Assistant
    arg1 ((Ptr Assistant -> IO (Ptr Pixbuf)) -> IO (Ptr Pixbuf))
    -> (Ptr Assistant -> IO (Ptr Pixbuf)) -> IO (Ptr Pixbuf)
    forall a b. (a -> b) -> a -> b
    $ \Ptr Assistant
    argPtr1 ->ForeignPtr Widget
    -> (Ptr Widget -> IO (Ptr Pixbuf)) -> IO (Ptr Pixbuf)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Widget
    arg2 ((Ptr Widget -> IO (Ptr Pixbuf)) -> IO (Ptr Pixbuf))
    -> (Ptr Widget -> IO (Ptr Pixbuf)) -> IO (Ptr Pixbuf)
    forall a b. (a -> b) -> a -> b
    $ \Ptr Widget
    argPtr2 ->Ptr Assistant -> Ptr Widget -> IO (Ptr Pixbuf)
    gtk_assistant_get_page_side_image Ptr Assistant
    argPtr1 Ptr Widget
    argPtr2)
    {-# LINE 398 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}
        (toAssistant self)
        (page -> Widget
    forall o. WidgetClass o => o -> Widget
    toWidget page
    page)

    -- | Sets whether @page@ contents are complete. This will make @assistant@
    -- update the buttons state to be able to continue the task.
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantSetPageComplete :: (AssistantClass self, WidgetClass page) => self
     -> page -- ^ @page@ - a page of @assistant@
     -> Bool -- ^ @complete@ - the completeness status of the page
     -> IO ()
    assistantSetPageComplete :: forall self page.
    (AssistantClass self, WidgetClass page) =>
    self -> page -> Bool -> IO ()
    assistantSetPageComplete self
    self page
    page Bool
    complete =
      (\(Assistant ForeignPtr Assistant
    arg1) (Widget ForeignPtr Widget
    arg2) CInt
    arg3 -> ForeignPtr Assistant -> (Ptr Assistant -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Assistant
    arg1 ((Ptr Assistant -> IO ()) -> IO ())
    -> (Ptr Assistant -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Assistant
    argPtr1 ->ForeignPtr Widget -> (Ptr Widget -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Widget
    arg2 ((Ptr Widget -> IO ()) -> IO ()) -> (Ptr Widget -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Widget
    argPtr2 ->Ptr Assistant -> Ptr Widget -> CInt -> IO ()
    gtk_assistant_set_page_complete Ptr Assistant
    argPtr1 Ptr Widget
    argPtr2 CInt
    arg3)
    {-# LINE 413 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}
        (toAssistant self)
        (page -> Widget
    forall o. WidgetClass o => o -> Widget
    toWidget page
    page)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    complete)

    -- | Gets whether @page@ is complete.
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantGetPageComplete :: (AssistantClass self, WidgetClass page) => self
     -> page -- ^ @page@ - a page of @assistant@
     -> IO Bool -- ^ returns @True@ if @page@ is complete.
    assistantGetPageComplete :: forall self page.
    (AssistantClass self, WidgetClass page) =>
    self -> page -> IO Bool
    assistantGetPageComplete self
    self page
    page =
      (CInt -> Bool) -> IO CInt -> IO Bool
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Bool
    forall a. (Eq a, Num a) => a -> Bool
    toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
    forall a b. (a -> b) -> a -> b
    $
      (\(Assistant ForeignPtr Assistant
    arg1) (Widget ForeignPtr Widget
    arg2) -> ForeignPtr Assistant -> (Ptr Assistant -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Assistant
    arg1 ((Ptr Assistant -> IO CInt) -> IO CInt)
    -> (Ptr Assistant -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr Assistant
    argPtr1 ->ForeignPtr Widget -> (Ptr Widget -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Widget
    arg2 ((Ptr Widget -> IO CInt) -> IO CInt)
    -> (Ptr Widget -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr Widget
    argPtr2 ->Ptr Assistant -> Ptr Widget -> IO CInt
    gtk_assistant_get_page_complete Ptr Assistant
    argPtr1 Ptr Widget
    argPtr2)
    {-# LINE 428 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}
        (toAssistant self)
        (page -> Widget
    forall o. WidgetClass o => o -> Widget
    toWidget page
    page)

    -- | Erases the visited page history so the back button is not shown on the current page, and removes the
    -- cancel button from subsequent pages.
    --
    -- Use this when the information provided up to the current page is hereafter deemed permanent and
    -- cannot be modified or undone. For example, showing a progress page to track a long-running,
    -- unreversible operation after the user has clicked apply on a confirmation page.
    --
    -- * Available since Gtk+ version 2.22
    --
    assistantCommit :: AssistantClass self => self -> IO ()
    assistantCommit :: forall self. AssistantClass self => self -> IO ()
    assistantCommit self
    self =
      (\(Assistant ForeignPtr Assistant
    arg1) -> ForeignPtr Assistant -> (Ptr Assistant -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Assistant
    arg1 ((Ptr Assistant -> IO ()) -> IO ())
    -> (Ptr Assistant -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Assistant
    argPtr1 ->Ptr Assistant -> IO ()
    gtk_assistant_commit Ptr Assistant
    argPtr1) (self -> Assistant
    forall o. AssistantClass o => o -> Assistant
    toAssistant self
    self)

    -- | Adds a widget to the action area of a 'Assistant'.
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantAddActionWidget :: (AssistantClass self, WidgetClass child) => self
     -> child -- ^ @child@ - a 'Widget'
     -> IO ()
    assistantAddActionWidget :: forall self child.
    (AssistantClass self, WidgetClass child) =>
    self -> child -> IO ()
    assistantAddActionWidget self
    self child
    child =
      (\(Assistant ForeignPtr Assistant
    arg1) (Widget ForeignPtr Widget
    arg2) -> ForeignPtr Assistant -> (Ptr Assistant -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Assistant
    arg1 ((Ptr Assistant -> IO ()) -> IO ())
    -> (Ptr Assistant -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Assistant
    argPtr1 ->ForeignPtr Widget -> (Ptr Widget -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Widget
    arg2 ((Ptr Widget -> IO ()) -> IO ()) -> (Ptr Widget -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Widget
    argPtr2 ->Ptr Assistant -> Ptr Widget -> IO ()
    gtk_assistant_add_action_widget Ptr Assistant
    argPtr1 Ptr Widget
    argPtr2)
    {-# LINE 456 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}
        (toAssistant self)
        (child -> Widget
    forall o. WidgetClass o => o -> Widget
    toWidget child
    child)

    -- | Removes a widget from the action area of a 'Assistant'.
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantRemoveActionWidget :: (AssistantClass self, WidgetClass child) => self
     -> child -- ^ @child@ - a 'Widget'
     -> IO ()
    assistantRemoveActionWidget :: forall self child.
    (AssistantClass self, WidgetClass child) =>
    self -> child -> IO ()
    assistantRemoveActionWidget self
    self child
    child =
      (\(Assistant ForeignPtr Assistant
    arg1) (Widget ForeignPtr Widget
    arg2) -> ForeignPtr Assistant -> (Ptr Assistant -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Assistant
    arg1 ((Ptr Assistant -> IO ()) -> IO ())
    -> (Ptr Assistant -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Assistant
    argPtr1 ->ForeignPtr Widget -> (Ptr Widget -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Widget
    arg2 ((Ptr Widget -> IO ()) -> IO ()) -> (Ptr Widget -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Widget
    argPtr2 ->Ptr Assistant -> Ptr Widget -> IO ()
    gtk_assistant_remove_action_widget Ptr Assistant
    argPtr1 Ptr Widget
    argPtr2)
    {-# LINE 469 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}
        (toAssistant self)
        (child -> Widget
    forall o. WidgetClass o => o -> Widget
    toWidget child
    child)

    -- | Forces @assistant@ to recompute the buttons state.
    --
    -- Gtk+ automatically takes care of this in most situations, e.g. when the
    -- user goes to a different page, or when the visibility or completeness of a
    -- page changes.
    --
    -- One situation where it can be necessary to call this function is when
    -- changing a value on the current page affects the future page flow of the
    -- assistant.
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantUpdateButtonsState :: AssistantClass self => self -> IO ()
    assistantUpdateButtonsState :: forall self. AssistantClass self => self -> IO ()
    assistantUpdateButtonsState self
    self =
      (\(Assistant ForeignPtr Assistant
    arg1) -> ForeignPtr Assistant -> (Ptr Assistant -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Assistant
    arg1 ((Ptr Assistant -> IO ()) -> IO ())
    -> (Ptr Assistant -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Assistant
    argPtr1 ->Ptr Assistant -> IO ()
    gtk_assistant_update_buttons_state Ptr Assistant
    argPtr1)
    {-# LINE 488 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}
        (toAssistant self)

    --------------------
    -- Attributes

    -- | Switches the page to @pageNum@. Note that this will only be necessary in
    -- custom buttons, as the @assistant@ flow can be set with
    -- 'assistantSetForwardPageFunc'.
    --
    -- Returns the page number of the current page
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantCurrentPage :: AssistantClass self => Attr self Int
    assistantCurrentPage :: forall self. AssistantClass self => Attr self Int
    assistantCurrentPage = (self -> IO Int)
    -> (self -> Int -> IO ()) -> ReadWriteAttr self Int Int
    forall o a b.
    (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
    newAttr
      self -> IO Int
    forall self. AssistantClass self => self -> IO Int
    assistantGetCurrentPage
      self -> Int -> IO ()
    forall self. AssistantClass self => self -> Int -> IO ()
    assistantSetCurrentPage

    --------------------
    -- Child Attributes

    -- | The type of the assistant page.
    --
    -- Default value: 'AssistantPageContent'
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantChildPageType :: AssistantClass self => Attr self AssistantPageType
    assistantChildPageType :: forall self. AssistantClass self => Attr self AssistantPageType
    assistantChildPageType =
        String -> GType -> Attr self AssistantPageType
    forall gobj enum.
    (GObjectClass gobj, Enum enum) =>
    String -> GType -> Attr gobj enum
    newAttrFromEnumProperty String
    "page-type" GType
    gtk_assistant_page_type_get_type
    {-# LINE 520 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}

    -- | The title that is displayed in the page header.
    --
    -- If title and header-image are both, no header is displayed.
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantChildTitle :: (AssistantClass self, GlibString string) => Attr self string
    assistantChildTitle :: forall self string.
    (AssistantClass self, GlibString string) =>
    Attr self string
    assistantChildTitle = String -> Attr self string
    forall gobj string.
    (GObjectClass gobj, GlibString string) =>
    String -> Attr gobj string
    newAttrFromStringProperty String
    "title"

    -- | The image that is displayed next to the page.
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantChildHeaderImage :: AssistantClass self => Attr self Pixbuf
    assistantChildHeaderImage :: forall self. AssistantClass self => Attr self Pixbuf
    assistantChildHeaderImage = String -> GType -> ReadWriteAttr self Pixbuf Pixbuf
    forall gobj gobj' gobj''.
    (GObjectClass gobj, GObjectClass gobj', GObjectClass gobj'') =>
    String -> GType -> ReadWriteAttr gobj gobj' gobj''
    newAttrFromObjectProperty String
    "header-image"
                                  GType
    gdk_pixbuf_get_type
    {-# LINE 539 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}

    -- | Sidebar image for the assistant page.
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantChildSidebarImage :: AssistantClass self => Attr self Pixbuf
    assistantChildSidebarImage :: forall self. AssistantClass self => Attr self Pixbuf
    assistantChildSidebarImage = String -> GType -> ReadWriteAttr self Pixbuf Pixbuf
    forall gobj gobj' gobj''.
    (GObjectClass gobj, GObjectClass gobj', GObjectClass gobj'') =>
    String -> GType -> ReadWriteAttr gobj gobj' gobj''
    newAttrFromObjectProperty String
    "sidebar-image"
                                   GType
    gdk_pixbuf_get_type
    {-# LINE 548 "./Graphics/UI/Gtk/Windows/Assistant.chs" #-}

    -- | Setting the \"complete\" child property to @True@ marks a page as
    -- complete (i.e.: all the required fields are filled out). Gtk+ uses this
    -- information to control the sensitivity of the navigation buttons.
    --
    -- Default value: @False@
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantChildComplete :: AssistantClass self => Attr self Bool
    assistantChildComplete :: forall self. AssistantClass self => Attr self Bool
    assistantChildComplete = String -> Attr self Bool
    forall gobj. GObjectClass gobj => String -> Attr gobj Bool
    newAttrFromBoolProperty String
    "complete"

    --------------------
    -- Signals

    -- | The ::assistantCancel signal is emitted when then the assistantCancel button is clicked.
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantCancel :: AssistantClass self => Signal self (IO ())
    assistantCancel :: forall self. AssistantClass self => Signal self (IO ())
    assistantCancel = (Bool -> self -> IO () -> IO (ConnectId self))
    -> Signal self (IO ())
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal (String -> Bool -> self -> IO () -> IO (ConnectId self)
    forall obj.
    GObjectClass obj =>
    String -> Bool -> obj -> IO () -> IO (ConnectId obj)
    connect_NONE__NONE String
    "cancel")

    -- | The ::assistantPrepare signal is emitted when a new page is set as the assistant's
    -- current page, before making the new page visible. A handler for this signal
    -- can do any preparation which are necessary before showing @page@.
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantPrepare :: AssistantClass self => Signal self (Widget -> IO ())
    assistantPrepare :: forall self. AssistantClass self => Signal self (Widget -> IO ())
    assistantPrepare = (Bool -> self -> (Widget -> IO ()) -> IO (ConnectId self))
    -> Signal self (Widget -> IO ())
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal (String -> Bool -> self -> (Widget -> IO ()) -> IO (ConnectId self)
    forall a' obj.
    (GObjectClass a', GObjectClass obj) =>
    String -> Bool -> obj -> (a' -> IO ()) -> IO (ConnectId obj)
    connect_OBJECT__NONE String
    "prepare")

    -- | The ::assistantApply signal is emitted when the assistantApply button is clicked. The
    -- default behavior of the 'Assistant' is to switch to the page after the
    -- current page, unless the current page is the last one.
    --
    -- A handler for the ::assistantApply signal should carry out the actions for which
    -- the wizard has collected data. If the action takes a long time to complete,
    -- you might consider to put a page of type 'AssistantPageProgress' after the
    -- confirmation page and handle this operation within the 'assistantPrepare' signal of the progress page.
    --
    --
    -- * Available since Gtk+ version 2.10
    --
    assistantApply :: AssistantClass self => Signal self (IO ())
    assistantApply :: forall self. AssistantClass self => Signal self (IO ())
    assistantApply = (Bool -> self -> IO () -> IO (ConnectId self))
    -> Signal self (IO ())
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal (String -> Bool -> self -> IO () -> IO (ConnectId self)
    forall obj.
    GObjectClass obj =>
    String -> Bool -> obj -> IO () -> IO (ConnectId obj)
    connect_NONE__NONE String
    "apply")

    -- | The ::assistantClose signal is emitted either when the assistantClose button of a summary
    -- page is clicked, or when the apply button in the last page in the flow (of
    -- type 'AssistantPageConfirm') is clicked.
    --
    assistantClose :: AssistantClass self => Signal self (IO ())
    assistantClose :: forall self. AssistantClass self => Signal self (IO ())
    assistantClose = (Bool -> self -> IO () -> IO (ConnectId self))
    -> Signal self (IO ())
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal (String -> Bool -> self -> IO () -> IO (ConnectId self)
    forall obj.
    GObjectClass obj =>
    String -> Bool -> obj -> IO () -> IO (ConnectId obj)
    connect_NONE__NONE String
    "close")

    foreign import ccall safe "gtk_assistant_new"
      gtk_assistant_new :: (IO (Ptr Widget))

    foreign import ccall safe "gtk_assistant_get_current_page"
      gtk_assistant_get_current_page :: ((Ptr Assistant) -> (IO CInt))

    foreign import ccall safe "gtk_assistant_set_current_page"
      gtk_assistant_set_current_page :: ((Ptr Assistant) -> (CInt -> (IO ())))

    foreign import ccall safe "gtk_assistant_get_n_pages"
      gtk_assistant_get_n_pages :: ((Ptr Assistant) -> (IO CInt))

    foreign import ccall safe "gtk_assistant_get_nth_page"
      gtk_assistant_get_nth_page :: ((Ptr Assistant) -> (CInt -> (IO (Ptr Widget))))

    foreign import ccall safe "gtk_assistant_prepend_page"
      gtk_assistant_prepend_page :: ((Ptr Assistant) -> ((Ptr Widget) -> (IO CInt)))

    foreign import ccall safe "gtk_assistant_append_page"
      gtk_assistant_append_page :: ((Ptr Assistant) -> ((Ptr Widget) -> (IO CInt)))

    foreign import ccall safe "gtk_assistant_insert_page"
      gtk_assistant_insert_page :: ((Ptr Assistant) -> ((Ptr Widget) -> (CInt -> (IO CInt))))

    foreign import ccall safe "gtk_assistant_set_forward_page_func"
      gtk_assistant_set_forward_page_func :: ((Ptr Assistant) -> ((FunPtr (CInt -> ((Ptr ()) -> (IO CInt)))) -> ((Ptr ()) -> ((FunPtr ((Ptr ()) -> (IO ()))) -> (IO ())))))

    foreign import ccall safe "gtk_assistant_set_page_type"
      gtk_assistant_set_page_type :: ((Ptr Assistant) -> ((Ptr Widget) -> (CInt -> (IO ()))))

    foreign import ccall safe "gtk_assistant_get_page_type"
      gtk_assistant_get_page_type :: ((Ptr Assistant) -> ((Ptr Widget) -> (IO CInt)))

    foreign import ccall safe "gtk_assistant_set_page_title"
      gtk_assistant_set_page_title :: ((Ptr Assistant) -> ((Ptr Widget) -> ((Ptr CChar) -> (IO ()))))

    foreign import ccall safe "gtk_assistant_get_page_title"
      gtk_assistant_get_page_title :: ((Ptr Assistant) -> ((Ptr Widget) -> (IO (Ptr CChar))))

    foreign import ccall safe "gtk_assistant_set_page_header_image"
      gtk_assistant_set_page_header_image :: ((Ptr Assistant) -> ((Ptr Widget) -> ((Ptr Pixbuf) -> (IO ()))))

    foreign import ccall safe "gtk_assistant_get_page_header_image"
      gtk_assistant_get_page_header_image :: ((Ptr Assistant) -> ((Ptr Widget) -> (IO (Ptr Pixbuf))))

    foreign import ccall safe "gtk_assistant_set_page_side_image"
      gtk_assistant_set_page_side_image :: ((Ptr Assistant) -> ((Ptr Widget) -> ((Ptr Pixbuf) -> (IO ()))))

    foreign import ccall safe "gtk_assistant_get_page_side_image"
      gtk_assistant_get_page_side_image :: ((Ptr Assistant) -> ((Ptr Widget) -> (IO (Ptr Pixbuf))))

    foreign import ccall safe "gtk_assistant_set_page_complete"
      gtk_assistant_set_page_complete :: ((Ptr Assistant) -> ((Ptr Widget) -> (CInt -> (IO ()))))

    foreign import ccall safe "gtk_assistant_get_page_complete"
      gtk_assistant_get_page_complete :: ((Ptr Assistant) -> ((Ptr Widget) -> (IO CInt)))

    foreign import ccall safe "gtk_assistant_commit"
      gtk_assistant_commit :: ((Ptr Assistant) -> (IO ()))

    foreign import ccall safe "gtk_assistant_add_action_widget"
      gtk_assistant_add_action_widget :: ((Ptr Assistant) -> ((Ptr Widget) -> (IO ())))

    foreign import ccall safe "gtk_assistant_remove_action_widget"
      gtk_assistant_remove_action_widget :: ((Ptr Assistant) -> ((Ptr Widget) -> (IO ())))

    foreign import ccall safe "gtk_assistant_update_buttons_state"
      gtk_assistant_update_buttons_state :: ((Ptr Assistant) -> (IO ()))

    foreign import ccall unsafe "gtk_assistant_page_type_get_type"
      gtk_assistant_page_type_get_type :: CULong

    foreign import ccall unsafe "gdk_pixbuf_get_type"
      gdk_pixbuf_get_type :: CULong