{-# 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
-- splitted 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 Any -> Ptr ()
forall a b. FunPtr a -> Ptr b
castFunPtrToPtr FunPtr Any
forall a. FunPtr a
nullFunPtr)
    FunPtr (Ptr () -> IO ())
destroyFunPtr

assistantSetForwardPageFunc self
self (Just Int -> IO Int
pageFunc) = do
  FunPtr (CInt -> Ptr () -> IO CInt)
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
            Int
result <- Int -> IO Int
pageFunc (CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral CInt
c)
            CInt -> IO CInt
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (CInt -> IO CInt) -> CInt -> IO CInt
forall a b. (a -> b) -> a -> b
$ Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral Int
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)
    FunPtr (CInt -> Ptr () -> IO CInt)
pfPtr
    (FunPtr (CInt -> Ptr () -> IO CInt) -> Ptr ()
forall a b. FunPtr a -> Ptr b
castFunPtrToPtr FunPtr (CInt -> Ptr () -> IO CInt)
pfPtr)
    FunPtr (Ptr () -> IO ())
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