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

module GI.Gtk.Objects.PrintOperation
    ( 

-- * Exported types
    PrintOperation(..)                      ,
    PrintOperationK                         ,
    toPrintOperation                        ,
    noPrintOperation                        ,


 -- * Methods
-- ** printOperationCancel
    printOperationCancel                    ,


-- ** printOperationDrawPageFinish
    printOperationDrawPageFinish            ,


-- ** printOperationGetDefaultPageSetup
    printOperationGetDefaultPageSetup       ,


-- ** printOperationGetEmbedPageSetup
    printOperationGetEmbedPageSetup         ,


-- ** printOperationGetError
    printOperationGetError                  ,


-- ** printOperationGetHasSelection
    printOperationGetHasSelection           ,


-- ** printOperationGetNPagesToPrint
    printOperationGetNPagesToPrint          ,


-- ** printOperationGetPrintSettings
    printOperationGetPrintSettings          ,


-- ** printOperationGetStatus
    printOperationGetStatus                 ,


-- ** printOperationGetStatusString
    printOperationGetStatusString           ,


-- ** printOperationGetSupportSelection
    printOperationGetSupportSelection       ,


-- ** printOperationIsFinished
    printOperationIsFinished                ,


-- ** printOperationNew
    printOperationNew                       ,


-- ** printOperationRun
    printOperationRun                       ,


-- ** printOperationSetAllowAsync
    printOperationSetAllowAsync             ,


-- ** printOperationSetCurrentPage
    printOperationSetCurrentPage            ,


-- ** printOperationSetCustomTabLabel
    printOperationSetCustomTabLabel         ,


-- ** printOperationSetDefaultPageSetup
    printOperationSetDefaultPageSetup       ,


-- ** printOperationSetDeferDrawing
    printOperationSetDeferDrawing           ,


-- ** printOperationSetEmbedPageSetup
    printOperationSetEmbedPageSetup         ,


-- ** printOperationSetExportFilename
    printOperationSetExportFilename         ,


-- ** printOperationSetHasSelection
    printOperationSetHasSelection           ,


-- ** printOperationSetJobName
    printOperationSetJobName                ,


-- ** printOperationSetNPages
    printOperationSetNPages                 ,


-- ** printOperationSetPrintSettings
    printOperationSetPrintSettings          ,


-- ** printOperationSetShowProgress
    printOperationSetShowProgress           ,


-- ** printOperationSetSupportSelection
    printOperationSetSupportSelection       ,


-- ** printOperationSetTrackPrintStatus
    printOperationSetTrackPrintStatus       ,


-- ** printOperationSetUnit
    printOperationSetUnit                   ,


-- ** printOperationSetUseFullPage
    printOperationSetUseFullPage            ,




 -- * Properties
-- ** AllowAsync
    PrintOperationAllowAsyncPropertyInfo    ,
    constructPrintOperationAllowAsync       ,
    getPrintOperationAllowAsync             ,
    setPrintOperationAllowAsync             ,


-- ** CurrentPage
    PrintOperationCurrentPagePropertyInfo   ,
    constructPrintOperationCurrentPage      ,
    getPrintOperationCurrentPage            ,
    setPrintOperationCurrentPage            ,


-- ** CustomTabLabel
    PrintOperationCustomTabLabelPropertyInfo,
    constructPrintOperationCustomTabLabel   ,
    getPrintOperationCustomTabLabel         ,
    setPrintOperationCustomTabLabel         ,


-- ** DefaultPageSetup
    PrintOperationDefaultPageSetupPropertyInfo,
    constructPrintOperationDefaultPageSetup ,
    getPrintOperationDefaultPageSetup       ,
    setPrintOperationDefaultPageSetup       ,


-- ** EmbedPageSetup
    PrintOperationEmbedPageSetupPropertyInfo,
    constructPrintOperationEmbedPageSetup   ,
    getPrintOperationEmbedPageSetup         ,
    setPrintOperationEmbedPageSetup         ,


-- ** ExportFilename
    PrintOperationExportFilenamePropertyInfo,
    constructPrintOperationExportFilename   ,
    getPrintOperationExportFilename         ,
    setPrintOperationExportFilename         ,


-- ** HasSelection
    PrintOperationHasSelectionPropertyInfo  ,
    constructPrintOperationHasSelection     ,
    getPrintOperationHasSelection           ,
    setPrintOperationHasSelection           ,


-- ** JobName
    PrintOperationJobNamePropertyInfo       ,
    constructPrintOperationJobName          ,
    getPrintOperationJobName                ,
    setPrintOperationJobName                ,


-- ** NPages
    PrintOperationNPagesPropertyInfo        ,
    constructPrintOperationNPages           ,
    getPrintOperationNPages                 ,
    setPrintOperationNPages                 ,


-- ** NPagesToPrint
    PrintOperationNPagesToPrintPropertyInfo ,
    getPrintOperationNPagesToPrint          ,


-- ** PrintSettings
    PrintOperationPrintSettingsPropertyInfo ,
    constructPrintOperationPrintSettings    ,
    getPrintOperationPrintSettings          ,
    setPrintOperationPrintSettings          ,


-- ** ShowProgress
    PrintOperationShowProgressPropertyInfo  ,
    constructPrintOperationShowProgress     ,
    getPrintOperationShowProgress           ,
    setPrintOperationShowProgress           ,


-- ** Status
    PrintOperationStatusPropertyInfo        ,
    getPrintOperationStatus                 ,


-- ** StatusString
    PrintOperationStatusStringPropertyInfo  ,
    getPrintOperationStatusString           ,


-- ** SupportSelection
    PrintOperationSupportSelectionPropertyInfo,
    constructPrintOperationSupportSelection ,
    getPrintOperationSupportSelection       ,
    setPrintOperationSupportSelection       ,


-- ** TrackPrintStatus
    PrintOperationTrackPrintStatusPropertyInfo,
    constructPrintOperationTrackPrintStatus ,
    getPrintOperationTrackPrintStatus       ,
    setPrintOperationTrackPrintStatus       ,


-- ** Unit
    PrintOperationUnitPropertyInfo          ,
    constructPrintOperationUnit             ,
    getPrintOperationUnit                   ,
    setPrintOperationUnit                   ,


-- ** UseFullPage
    PrintOperationUseFullPagePropertyInfo   ,
    constructPrintOperationUseFullPage      ,
    getPrintOperationUseFullPage            ,
    setPrintOperationUseFullPage            ,




 -- * Signals
-- ** BeginPrint
    PrintOperationBeginPrintCallback        ,
    PrintOperationBeginPrintCallbackC       ,
    PrintOperationBeginPrintSignalInfo      ,
    afterPrintOperationBeginPrint           ,
    mkPrintOperationBeginPrintCallback      ,
    noPrintOperationBeginPrintCallback      ,
    onPrintOperationBeginPrint              ,
    printOperationBeginPrintCallbackWrapper ,
    printOperationBeginPrintClosure         ,


-- ** CreateCustomWidget
    PrintOperationCreateCustomWidgetCallback,
    PrintOperationCreateCustomWidgetCallbackC,
    PrintOperationCreateCustomWidgetSignalInfo,
    afterPrintOperationCreateCustomWidget   ,
    mkPrintOperationCreateCustomWidgetCallback,
    noPrintOperationCreateCustomWidgetCallback,
    onPrintOperationCreateCustomWidget      ,
    printOperationCreateCustomWidgetCallbackWrapper,
    printOperationCreateCustomWidgetClosure ,


-- ** CustomWidgetApply
    PrintOperationCustomWidgetApplyCallback ,
    PrintOperationCustomWidgetApplyCallbackC,
    PrintOperationCustomWidgetApplySignalInfo,
    afterPrintOperationCustomWidgetApply    ,
    mkPrintOperationCustomWidgetApplyCallback,
    noPrintOperationCustomWidgetApplyCallback,
    onPrintOperationCustomWidgetApply       ,
    printOperationCustomWidgetApplyCallbackWrapper,
    printOperationCustomWidgetApplyClosure  ,


-- ** Done
    PrintOperationDoneCallback              ,
    PrintOperationDoneCallbackC             ,
    PrintOperationDoneSignalInfo            ,
    afterPrintOperationDone                 ,
    mkPrintOperationDoneCallback            ,
    noPrintOperationDoneCallback            ,
    onPrintOperationDone                    ,
    printOperationDoneCallbackWrapper       ,
    printOperationDoneClosure               ,


-- ** DrawPage
    PrintOperationDrawPageCallback          ,
    PrintOperationDrawPageCallbackC         ,
    PrintOperationDrawPageSignalInfo        ,
    afterPrintOperationDrawPage             ,
    mkPrintOperationDrawPageCallback        ,
    noPrintOperationDrawPageCallback        ,
    onPrintOperationDrawPage                ,
    printOperationDrawPageCallbackWrapper   ,
    printOperationDrawPageClosure           ,


-- ** EndPrint
    PrintOperationEndPrintCallback          ,
    PrintOperationEndPrintCallbackC         ,
    PrintOperationEndPrintSignalInfo        ,
    afterPrintOperationEndPrint             ,
    mkPrintOperationEndPrintCallback        ,
    noPrintOperationEndPrintCallback        ,
    onPrintOperationEndPrint                ,
    printOperationEndPrintCallbackWrapper   ,
    printOperationEndPrintClosure           ,


-- ** Paginate
    PrintOperationPaginateCallback          ,
    PrintOperationPaginateCallbackC         ,
    PrintOperationPaginateSignalInfo        ,
    afterPrintOperationPaginate             ,
    mkPrintOperationPaginateCallback        ,
    noPrintOperationPaginateCallback        ,
    onPrintOperationPaginate                ,
    printOperationPaginateCallbackWrapper   ,
    printOperationPaginateClosure           ,


-- ** Preview
    PrintOperationPreviewCallback           ,
    PrintOperationPreviewCallbackC          ,
    PrintOperationPreviewSignalInfo         ,
    afterPrintOperationPreview              ,
    mkPrintOperationPreviewCallback         ,
    noPrintOperationPreviewCallback         ,
    onPrintOperationPreview                 ,
    printOperationPreviewCallbackWrapper    ,
    printOperationPreviewClosure            ,


-- ** RequestPageSetup
    PrintOperationRequestPageSetupCallback  ,
    PrintOperationRequestPageSetupCallbackC ,
    PrintOperationRequestPageSetupSignalInfo,
    afterPrintOperationRequestPageSetup     ,
    mkPrintOperationRequestPageSetupCallback,
    noPrintOperationRequestPageSetupCallback,
    onPrintOperationRequestPageSetup        ,
    printOperationRequestPageSetupCallbackWrapper,
    printOperationRequestPageSetupClosure   ,


-- ** StatusChanged
    PrintOperationStatusChangedCallback     ,
    PrintOperationStatusChangedCallbackC    ,
    PrintOperationStatusChangedSignalInfo   ,
    afterPrintOperationStatusChanged        ,
    mkPrintOperationStatusChangedCallback   ,
    noPrintOperationStatusChangedCallback   ,
    onPrintOperationStatusChanged           ,
    printOperationStatusChangedCallbackWrapper,
    printOperationStatusChangedClosure      ,


-- ** UpdateCustomWidget
    PrintOperationUpdateCustomWidgetCallback,
    PrintOperationUpdateCustomWidgetCallbackC,
    PrintOperationUpdateCustomWidgetSignalInfo,
    afterPrintOperationUpdateCustomWidget   ,
    mkPrintOperationUpdateCustomWidgetCallback,
    noPrintOperationUpdateCustomWidgetCallback,
    onPrintOperationUpdateCustomWidget      ,
    printOperationUpdateCustomWidgetCallbackWrapper,
    printOperationUpdateCustomWidgetClosure ,




    ) where

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

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

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

newtype PrintOperation = PrintOperation (ForeignPtr PrintOperation)
foreign import ccall "gtk_print_operation_get_type"
    c_gtk_print_operation_get_type :: IO GType

type instance ParentTypes PrintOperation = PrintOperationParentTypes
type PrintOperationParentTypes = '[GObject.Object, PrintOperationPreview]

instance GObject PrintOperation where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_gtk_print_operation_get_type
    

class GObject o => PrintOperationK o
instance (GObject o, IsDescendantOf PrintOperation o) => PrintOperationK o

toPrintOperation :: PrintOperationK o => o -> IO PrintOperation
toPrintOperation = unsafeCastTo PrintOperation

noPrintOperation :: Maybe PrintOperation
noPrintOperation = Nothing

-- signal PrintOperation::begin-print
type PrintOperationBeginPrintCallback =
    PrintContext ->
    IO ()

noPrintOperationBeginPrintCallback :: Maybe PrintOperationBeginPrintCallback
noPrintOperationBeginPrintCallback = Nothing

type PrintOperationBeginPrintCallbackC =
    Ptr () ->                               -- object
    Ptr PrintContext ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkPrintOperationBeginPrintCallback :: PrintOperationBeginPrintCallbackC -> IO (FunPtr PrintOperationBeginPrintCallbackC)

printOperationBeginPrintClosure :: PrintOperationBeginPrintCallback -> IO Closure
printOperationBeginPrintClosure cb = newCClosure =<< mkPrintOperationBeginPrintCallback wrapped
    where wrapped = printOperationBeginPrintCallbackWrapper cb

printOperationBeginPrintCallbackWrapper ::
    PrintOperationBeginPrintCallback ->
    Ptr () ->
    Ptr PrintContext ->
    Ptr () ->
    IO ()
printOperationBeginPrintCallbackWrapper _cb _ context _ = do
    context' <- (newObject PrintContext) context
    _cb  context'

onPrintOperationBeginPrint :: (GObject a, MonadIO m) => a -> PrintOperationBeginPrintCallback -> m SignalHandlerId
onPrintOperationBeginPrint obj cb = liftIO $ connectPrintOperationBeginPrint obj cb SignalConnectBefore
afterPrintOperationBeginPrint :: (GObject a, MonadIO m) => a -> PrintOperationBeginPrintCallback -> m SignalHandlerId
afterPrintOperationBeginPrint obj cb = connectPrintOperationBeginPrint obj cb SignalConnectAfter

connectPrintOperationBeginPrint :: (GObject a, MonadIO m) =>
                                   a -> PrintOperationBeginPrintCallback -> SignalConnectMode -> m SignalHandlerId
connectPrintOperationBeginPrint obj cb after = liftIO $ do
    cb' <- mkPrintOperationBeginPrintCallback (printOperationBeginPrintCallbackWrapper cb)
    connectSignalFunPtr obj "begin-print" cb' after

-- signal PrintOperation::create-custom-widget
type PrintOperationCreateCustomWidgetCallback =
    IO GObject.Object

noPrintOperationCreateCustomWidgetCallback :: Maybe PrintOperationCreateCustomWidgetCallback
noPrintOperationCreateCustomWidgetCallback = Nothing

type PrintOperationCreateCustomWidgetCallbackC =
    Ptr () ->                               -- object
    Ptr () ->                               -- user_data
    IO (Ptr GObject.Object)

foreign import ccall "wrapper"
    mkPrintOperationCreateCustomWidgetCallback :: PrintOperationCreateCustomWidgetCallbackC -> IO (FunPtr PrintOperationCreateCustomWidgetCallbackC)

printOperationCreateCustomWidgetClosure :: PrintOperationCreateCustomWidgetCallback -> IO Closure
printOperationCreateCustomWidgetClosure cb = newCClosure =<< mkPrintOperationCreateCustomWidgetCallback wrapped
    where wrapped = printOperationCreateCustomWidgetCallbackWrapper cb

printOperationCreateCustomWidgetCallbackWrapper ::
    PrintOperationCreateCustomWidgetCallback ->
    Ptr () ->
    Ptr () ->
    IO (Ptr GObject.Object)
printOperationCreateCustomWidgetCallbackWrapper _cb _ _ = do
    result <- _cb 
    let result' = unsafeManagedPtrCastPtr result
    return result'

onPrintOperationCreateCustomWidget :: (GObject a, MonadIO m) => a -> PrintOperationCreateCustomWidgetCallback -> m SignalHandlerId
onPrintOperationCreateCustomWidget obj cb = liftIO $ connectPrintOperationCreateCustomWidget obj cb SignalConnectBefore
afterPrintOperationCreateCustomWidget :: (GObject a, MonadIO m) => a -> PrintOperationCreateCustomWidgetCallback -> m SignalHandlerId
afterPrintOperationCreateCustomWidget obj cb = connectPrintOperationCreateCustomWidget obj cb SignalConnectAfter

connectPrintOperationCreateCustomWidget :: (GObject a, MonadIO m) =>
                                           a -> PrintOperationCreateCustomWidgetCallback -> SignalConnectMode -> m SignalHandlerId
connectPrintOperationCreateCustomWidget obj cb after = liftIO $ do
    cb' <- mkPrintOperationCreateCustomWidgetCallback (printOperationCreateCustomWidgetCallbackWrapper cb)
    connectSignalFunPtr obj "create-custom-widget" cb' after

-- signal PrintOperation::custom-widget-apply
type PrintOperationCustomWidgetApplyCallback =
    Widget ->
    IO ()

noPrintOperationCustomWidgetApplyCallback :: Maybe PrintOperationCustomWidgetApplyCallback
noPrintOperationCustomWidgetApplyCallback = Nothing

type PrintOperationCustomWidgetApplyCallbackC =
    Ptr () ->                               -- object
    Ptr Widget ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkPrintOperationCustomWidgetApplyCallback :: PrintOperationCustomWidgetApplyCallbackC -> IO (FunPtr PrintOperationCustomWidgetApplyCallbackC)

printOperationCustomWidgetApplyClosure :: PrintOperationCustomWidgetApplyCallback -> IO Closure
printOperationCustomWidgetApplyClosure cb = newCClosure =<< mkPrintOperationCustomWidgetApplyCallback wrapped
    where wrapped = printOperationCustomWidgetApplyCallbackWrapper cb

printOperationCustomWidgetApplyCallbackWrapper ::
    PrintOperationCustomWidgetApplyCallback ->
    Ptr () ->
    Ptr Widget ->
    Ptr () ->
    IO ()
printOperationCustomWidgetApplyCallbackWrapper _cb _ widget _ = do
    widget' <- (newObject Widget) widget
    _cb  widget'

onPrintOperationCustomWidgetApply :: (GObject a, MonadIO m) => a -> PrintOperationCustomWidgetApplyCallback -> m SignalHandlerId
onPrintOperationCustomWidgetApply obj cb = liftIO $ connectPrintOperationCustomWidgetApply obj cb SignalConnectBefore
afterPrintOperationCustomWidgetApply :: (GObject a, MonadIO m) => a -> PrintOperationCustomWidgetApplyCallback -> m SignalHandlerId
afterPrintOperationCustomWidgetApply obj cb = connectPrintOperationCustomWidgetApply obj cb SignalConnectAfter

connectPrintOperationCustomWidgetApply :: (GObject a, MonadIO m) =>
                                          a -> PrintOperationCustomWidgetApplyCallback -> SignalConnectMode -> m SignalHandlerId
connectPrintOperationCustomWidgetApply obj cb after = liftIO $ do
    cb' <- mkPrintOperationCustomWidgetApplyCallback (printOperationCustomWidgetApplyCallbackWrapper cb)
    connectSignalFunPtr obj "custom-widget-apply" cb' after

-- signal PrintOperation::done
type PrintOperationDoneCallback =
    PrintOperationResult ->
    IO ()

noPrintOperationDoneCallback :: Maybe PrintOperationDoneCallback
noPrintOperationDoneCallback = Nothing

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

foreign import ccall "wrapper"
    mkPrintOperationDoneCallback :: PrintOperationDoneCallbackC -> IO (FunPtr PrintOperationDoneCallbackC)

printOperationDoneClosure :: PrintOperationDoneCallback -> IO Closure
printOperationDoneClosure cb = newCClosure =<< mkPrintOperationDoneCallback wrapped
    where wrapped = printOperationDoneCallbackWrapper cb

printOperationDoneCallbackWrapper ::
    PrintOperationDoneCallback ->
    Ptr () ->
    CUInt ->
    Ptr () ->
    IO ()
printOperationDoneCallbackWrapper _cb _ result_ _ = do
    let result_' = (toEnum . fromIntegral) result_
    _cb  result_'

onPrintOperationDone :: (GObject a, MonadIO m) => a -> PrintOperationDoneCallback -> m SignalHandlerId
onPrintOperationDone obj cb = liftIO $ connectPrintOperationDone obj cb SignalConnectBefore
afterPrintOperationDone :: (GObject a, MonadIO m) => a -> PrintOperationDoneCallback -> m SignalHandlerId
afterPrintOperationDone obj cb = connectPrintOperationDone obj cb SignalConnectAfter

connectPrintOperationDone :: (GObject a, MonadIO m) =>
                             a -> PrintOperationDoneCallback -> SignalConnectMode -> m SignalHandlerId
connectPrintOperationDone obj cb after = liftIO $ do
    cb' <- mkPrintOperationDoneCallback (printOperationDoneCallbackWrapper cb)
    connectSignalFunPtr obj "done" cb' after

-- signal PrintOperation::draw-page
type PrintOperationDrawPageCallback =
    PrintContext ->
    Int32 ->
    IO ()

noPrintOperationDrawPageCallback :: Maybe PrintOperationDrawPageCallback
noPrintOperationDrawPageCallback = Nothing

type PrintOperationDrawPageCallbackC =
    Ptr () ->                               -- object
    Ptr PrintContext ->
    Int32 ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkPrintOperationDrawPageCallback :: PrintOperationDrawPageCallbackC -> IO (FunPtr PrintOperationDrawPageCallbackC)

printOperationDrawPageClosure :: PrintOperationDrawPageCallback -> IO Closure
printOperationDrawPageClosure cb = newCClosure =<< mkPrintOperationDrawPageCallback wrapped
    where wrapped = printOperationDrawPageCallbackWrapper cb

printOperationDrawPageCallbackWrapper ::
    PrintOperationDrawPageCallback ->
    Ptr () ->
    Ptr PrintContext ->
    Int32 ->
    Ptr () ->
    IO ()
printOperationDrawPageCallbackWrapper _cb _ context page_nr _ = do
    context' <- (newObject PrintContext) context
    _cb  context' page_nr

onPrintOperationDrawPage :: (GObject a, MonadIO m) => a -> PrintOperationDrawPageCallback -> m SignalHandlerId
onPrintOperationDrawPage obj cb = liftIO $ connectPrintOperationDrawPage obj cb SignalConnectBefore
afterPrintOperationDrawPage :: (GObject a, MonadIO m) => a -> PrintOperationDrawPageCallback -> m SignalHandlerId
afterPrintOperationDrawPage obj cb = connectPrintOperationDrawPage obj cb SignalConnectAfter

connectPrintOperationDrawPage :: (GObject a, MonadIO m) =>
                                 a -> PrintOperationDrawPageCallback -> SignalConnectMode -> m SignalHandlerId
connectPrintOperationDrawPage obj cb after = liftIO $ do
    cb' <- mkPrintOperationDrawPageCallback (printOperationDrawPageCallbackWrapper cb)
    connectSignalFunPtr obj "draw-page" cb' after

-- signal PrintOperation::end-print
type PrintOperationEndPrintCallback =
    PrintContext ->
    IO ()

noPrintOperationEndPrintCallback :: Maybe PrintOperationEndPrintCallback
noPrintOperationEndPrintCallback = Nothing

type PrintOperationEndPrintCallbackC =
    Ptr () ->                               -- object
    Ptr PrintContext ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkPrintOperationEndPrintCallback :: PrintOperationEndPrintCallbackC -> IO (FunPtr PrintOperationEndPrintCallbackC)

printOperationEndPrintClosure :: PrintOperationEndPrintCallback -> IO Closure
printOperationEndPrintClosure cb = newCClosure =<< mkPrintOperationEndPrintCallback wrapped
    where wrapped = printOperationEndPrintCallbackWrapper cb

printOperationEndPrintCallbackWrapper ::
    PrintOperationEndPrintCallback ->
    Ptr () ->
    Ptr PrintContext ->
    Ptr () ->
    IO ()
printOperationEndPrintCallbackWrapper _cb _ context _ = do
    context' <- (newObject PrintContext) context
    _cb  context'

onPrintOperationEndPrint :: (GObject a, MonadIO m) => a -> PrintOperationEndPrintCallback -> m SignalHandlerId
onPrintOperationEndPrint obj cb = liftIO $ connectPrintOperationEndPrint obj cb SignalConnectBefore
afterPrintOperationEndPrint :: (GObject a, MonadIO m) => a -> PrintOperationEndPrintCallback -> m SignalHandlerId
afterPrintOperationEndPrint obj cb = connectPrintOperationEndPrint obj cb SignalConnectAfter

connectPrintOperationEndPrint :: (GObject a, MonadIO m) =>
                                 a -> PrintOperationEndPrintCallback -> SignalConnectMode -> m SignalHandlerId
connectPrintOperationEndPrint obj cb after = liftIO $ do
    cb' <- mkPrintOperationEndPrintCallback (printOperationEndPrintCallbackWrapper cb)
    connectSignalFunPtr obj "end-print" cb' after

-- signal PrintOperation::paginate
type PrintOperationPaginateCallback =
    PrintContext ->
    IO Bool

noPrintOperationPaginateCallback :: Maybe PrintOperationPaginateCallback
noPrintOperationPaginateCallback = Nothing

type PrintOperationPaginateCallbackC =
    Ptr () ->                               -- object
    Ptr PrintContext ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkPrintOperationPaginateCallback :: PrintOperationPaginateCallbackC -> IO (FunPtr PrintOperationPaginateCallbackC)

printOperationPaginateClosure :: PrintOperationPaginateCallback -> IO Closure
printOperationPaginateClosure cb = newCClosure =<< mkPrintOperationPaginateCallback wrapped
    where wrapped = printOperationPaginateCallbackWrapper cb

printOperationPaginateCallbackWrapper ::
    PrintOperationPaginateCallback ->
    Ptr () ->
    Ptr PrintContext ->
    Ptr () ->
    IO CInt
printOperationPaginateCallbackWrapper _cb _ context _ = do
    context' <- (newObject PrintContext) context
    result <- _cb  context'
    let result' = (fromIntegral . fromEnum) result
    return result'

onPrintOperationPaginate :: (GObject a, MonadIO m) => a -> PrintOperationPaginateCallback -> m SignalHandlerId
onPrintOperationPaginate obj cb = liftIO $ connectPrintOperationPaginate obj cb SignalConnectBefore
afterPrintOperationPaginate :: (GObject a, MonadIO m) => a -> PrintOperationPaginateCallback -> m SignalHandlerId
afterPrintOperationPaginate obj cb = connectPrintOperationPaginate obj cb SignalConnectAfter

connectPrintOperationPaginate :: (GObject a, MonadIO m) =>
                                 a -> PrintOperationPaginateCallback -> SignalConnectMode -> m SignalHandlerId
connectPrintOperationPaginate obj cb after = liftIO $ do
    cb' <- mkPrintOperationPaginateCallback (printOperationPaginateCallbackWrapper cb)
    connectSignalFunPtr obj "paginate" cb' after

-- signal PrintOperation::preview
type PrintOperationPreviewCallback =
    PrintOperationPreview ->
    PrintContext ->
    Maybe Window ->
    IO Bool

noPrintOperationPreviewCallback :: Maybe PrintOperationPreviewCallback
noPrintOperationPreviewCallback = Nothing

type PrintOperationPreviewCallbackC =
    Ptr () ->                               -- object
    Ptr PrintOperationPreview ->
    Ptr PrintContext ->
    Ptr Window ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkPrintOperationPreviewCallback :: PrintOperationPreviewCallbackC -> IO (FunPtr PrintOperationPreviewCallbackC)

printOperationPreviewClosure :: PrintOperationPreviewCallback -> IO Closure
printOperationPreviewClosure cb = newCClosure =<< mkPrintOperationPreviewCallback wrapped
    where wrapped = printOperationPreviewCallbackWrapper cb

printOperationPreviewCallbackWrapper ::
    PrintOperationPreviewCallback ->
    Ptr () ->
    Ptr PrintOperationPreview ->
    Ptr PrintContext ->
    Ptr Window ->
    Ptr () ->
    IO CInt
printOperationPreviewCallbackWrapper _cb _ preview context parent _ = do
    preview' <- (newObject PrintOperationPreview) preview
    context' <- (newObject PrintContext) context
    maybeParent <-
        if parent == nullPtr
        then return Nothing
        else do
            parent' <- (newObject Window) parent
            return $ Just parent'
    result <- _cb  preview' context' maybeParent
    let result' = (fromIntegral . fromEnum) result
    return result'

onPrintOperationPreview :: (GObject a, MonadIO m) => a -> PrintOperationPreviewCallback -> m SignalHandlerId
onPrintOperationPreview obj cb = liftIO $ connectPrintOperationPreview obj cb SignalConnectBefore
afterPrintOperationPreview :: (GObject a, MonadIO m) => a -> PrintOperationPreviewCallback -> m SignalHandlerId
afterPrintOperationPreview obj cb = connectPrintOperationPreview obj cb SignalConnectAfter

connectPrintOperationPreview :: (GObject a, MonadIO m) =>
                                a -> PrintOperationPreviewCallback -> SignalConnectMode -> m SignalHandlerId
connectPrintOperationPreview obj cb after = liftIO $ do
    cb' <- mkPrintOperationPreviewCallback (printOperationPreviewCallbackWrapper cb)
    connectSignalFunPtr obj "preview" cb' after

-- signal PrintOperation::request-page-setup
type PrintOperationRequestPageSetupCallback =
    PrintContext ->
    Int32 ->
    PageSetup ->
    IO ()

noPrintOperationRequestPageSetupCallback :: Maybe PrintOperationRequestPageSetupCallback
noPrintOperationRequestPageSetupCallback = Nothing

type PrintOperationRequestPageSetupCallbackC =
    Ptr () ->                               -- object
    Ptr PrintContext ->
    Int32 ->
    Ptr PageSetup ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkPrintOperationRequestPageSetupCallback :: PrintOperationRequestPageSetupCallbackC -> IO (FunPtr PrintOperationRequestPageSetupCallbackC)

printOperationRequestPageSetupClosure :: PrintOperationRequestPageSetupCallback -> IO Closure
printOperationRequestPageSetupClosure cb = newCClosure =<< mkPrintOperationRequestPageSetupCallback wrapped
    where wrapped = printOperationRequestPageSetupCallbackWrapper cb

printOperationRequestPageSetupCallbackWrapper ::
    PrintOperationRequestPageSetupCallback ->
    Ptr () ->
    Ptr PrintContext ->
    Int32 ->
    Ptr PageSetup ->
    Ptr () ->
    IO ()
printOperationRequestPageSetupCallbackWrapper _cb _ context page_nr setup _ = do
    context' <- (newObject PrintContext) context
    setup' <- (newObject PageSetup) setup
    _cb  context' page_nr setup'

onPrintOperationRequestPageSetup :: (GObject a, MonadIO m) => a -> PrintOperationRequestPageSetupCallback -> m SignalHandlerId
onPrintOperationRequestPageSetup obj cb = liftIO $ connectPrintOperationRequestPageSetup obj cb SignalConnectBefore
afterPrintOperationRequestPageSetup :: (GObject a, MonadIO m) => a -> PrintOperationRequestPageSetupCallback -> m SignalHandlerId
afterPrintOperationRequestPageSetup obj cb = connectPrintOperationRequestPageSetup obj cb SignalConnectAfter

connectPrintOperationRequestPageSetup :: (GObject a, MonadIO m) =>
                                         a -> PrintOperationRequestPageSetupCallback -> SignalConnectMode -> m SignalHandlerId
connectPrintOperationRequestPageSetup obj cb after = liftIO $ do
    cb' <- mkPrintOperationRequestPageSetupCallback (printOperationRequestPageSetupCallbackWrapper cb)
    connectSignalFunPtr obj "request-page-setup" cb' after

-- signal PrintOperation::status-changed
type PrintOperationStatusChangedCallback =
    IO ()

noPrintOperationStatusChangedCallback :: Maybe PrintOperationStatusChangedCallback
noPrintOperationStatusChangedCallback = Nothing

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

foreign import ccall "wrapper"
    mkPrintOperationStatusChangedCallback :: PrintOperationStatusChangedCallbackC -> IO (FunPtr PrintOperationStatusChangedCallbackC)

printOperationStatusChangedClosure :: PrintOperationStatusChangedCallback -> IO Closure
printOperationStatusChangedClosure cb = newCClosure =<< mkPrintOperationStatusChangedCallback wrapped
    where wrapped = printOperationStatusChangedCallbackWrapper cb

printOperationStatusChangedCallbackWrapper ::
    PrintOperationStatusChangedCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
printOperationStatusChangedCallbackWrapper _cb _ _ = do
    _cb 

onPrintOperationStatusChanged :: (GObject a, MonadIO m) => a -> PrintOperationStatusChangedCallback -> m SignalHandlerId
onPrintOperationStatusChanged obj cb = liftIO $ connectPrintOperationStatusChanged obj cb SignalConnectBefore
afterPrintOperationStatusChanged :: (GObject a, MonadIO m) => a -> PrintOperationStatusChangedCallback -> m SignalHandlerId
afterPrintOperationStatusChanged obj cb = connectPrintOperationStatusChanged obj cb SignalConnectAfter

connectPrintOperationStatusChanged :: (GObject a, MonadIO m) =>
                                      a -> PrintOperationStatusChangedCallback -> SignalConnectMode -> m SignalHandlerId
connectPrintOperationStatusChanged obj cb after = liftIO $ do
    cb' <- mkPrintOperationStatusChangedCallback (printOperationStatusChangedCallbackWrapper cb)
    connectSignalFunPtr obj "status-changed" cb' after

-- signal PrintOperation::update-custom-widget
type PrintOperationUpdateCustomWidgetCallback =
    Widget ->
    PageSetup ->
    PrintSettings ->
    IO ()

noPrintOperationUpdateCustomWidgetCallback :: Maybe PrintOperationUpdateCustomWidgetCallback
noPrintOperationUpdateCustomWidgetCallback = Nothing

type PrintOperationUpdateCustomWidgetCallbackC =
    Ptr () ->                               -- object
    Ptr Widget ->
    Ptr PageSetup ->
    Ptr PrintSettings ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkPrintOperationUpdateCustomWidgetCallback :: PrintOperationUpdateCustomWidgetCallbackC -> IO (FunPtr PrintOperationUpdateCustomWidgetCallbackC)

printOperationUpdateCustomWidgetClosure :: PrintOperationUpdateCustomWidgetCallback -> IO Closure
printOperationUpdateCustomWidgetClosure cb = newCClosure =<< mkPrintOperationUpdateCustomWidgetCallback wrapped
    where wrapped = printOperationUpdateCustomWidgetCallbackWrapper cb

printOperationUpdateCustomWidgetCallbackWrapper ::
    PrintOperationUpdateCustomWidgetCallback ->
    Ptr () ->
    Ptr Widget ->
    Ptr PageSetup ->
    Ptr PrintSettings ->
    Ptr () ->
    IO ()
printOperationUpdateCustomWidgetCallbackWrapper _cb _ widget setup settings _ = do
    widget' <- (newObject Widget) widget
    setup' <- (newObject PageSetup) setup
    settings' <- (newObject PrintSettings) settings
    _cb  widget' setup' settings'

onPrintOperationUpdateCustomWidget :: (GObject a, MonadIO m) => a -> PrintOperationUpdateCustomWidgetCallback -> m SignalHandlerId
onPrintOperationUpdateCustomWidget obj cb = liftIO $ connectPrintOperationUpdateCustomWidget obj cb SignalConnectBefore
afterPrintOperationUpdateCustomWidget :: (GObject a, MonadIO m) => a -> PrintOperationUpdateCustomWidgetCallback -> m SignalHandlerId
afterPrintOperationUpdateCustomWidget obj cb = connectPrintOperationUpdateCustomWidget obj cb SignalConnectAfter

connectPrintOperationUpdateCustomWidget :: (GObject a, MonadIO m) =>
                                           a -> PrintOperationUpdateCustomWidgetCallback -> SignalConnectMode -> m SignalHandlerId
connectPrintOperationUpdateCustomWidget obj cb after = liftIO $ do
    cb' <- mkPrintOperationUpdateCustomWidgetCallback (printOperationUpdateCustomWidgetCallbackWrapper cb)
    connectSignalFunPtr obj "update-custom-widget" cb' after

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

getPrintOperationAllowAsync :: (MonadIO m, PrintOperationK o) => o -> m Bool
getPrintOperationAllowAsync obj = liftIO $ getObjectPropertyBool obj "allow-async"

setPrintOperationAllowAsync :: (MonadIO m, PrintOperationK o) => o -> Bool -> m ()
setPrintOperationAllowAsync obj val = liftIO $ setObjectPropertyBool obj "allow-async" val

constructPrintOperationAllowAsync :: Bool -> IO ([Char], GValue)
constructPrintOperationAllowAsync val = constructObjectPropertyBool "allow-async" val

data PrintOperationAllowAsyncPropertyInfo
instance AttrInfo PrintOperationAllowAsyncPropertyInfo where
    type AttrAllowedOps PrintOperationAllowAsyncPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint PrintOperationAllowAsyncPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint PrintOperationAllowAsyncPropertyInfo = PrintOperationK
    type AttrGetType PrintOperationAllowAsyncPropertyInfo = Bool
    type AttrLabel PrintOperationAllowAsyncPropertyInfo = "PrintOperation::allow-async"
    attrGet _ = getPrintOperationAllowAsync
    attrSet _ = setPrintOperationAllowAsync
    attrConstruct _ = constructPrintOperationAllowAsync

-- VVV Prop "current-page"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable,PropertyWritable]

getPrintOperationCurrentPage :: (MonadIO m, PrintOperationK o) => o -> m Int32
getPrintOperationCurrentPage obj = liftIO $ getObjectPropertyCInt obj "current-page"

setPrintOperationCurrentPage :: (MonadIO m, PrintOperationK o) => o -> Int32 -> m ()
setPrintOperationCurrentPage obj val = liftIO $ setObjectPropertyCInt obj "current-page" val

constructPrintOperationCurrentPage :: Int32 -> IO ([Char], GValue)
constructPrintOperationCurrentPage val = constructObjectPropertyCInt "current-page" val

data PrintOperationCurrentPagePropertyInfo
instance AttrInfo PrintOperationCurrentPagePropertyInfo where
    type AttrAllowedOps PrintOperationCurrentPagePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint PrintOperationCurrentPagePropertyInfo = (~) Int32
    type AttrBaseTypeConstraint PrintOperationCurrentPagePropertyInfo = PrintOperationK
    type AttrGetType PrintOperationCurrentPagePropertyInfo = Int32
    type AttrLabel PrintOperationCurrentPagePropertyInfo = "PrintOperation::current-page"
    attrGet _ = getPrintOperationCurrentPage
    attrSet _ = setPrintOperationCurrentPage
    attrConstruct _ = constructPrintOperationCurrentPage

-- VVV Prop "custom-tab-label"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]

getPrintOperationCustomTabLabel :: (MonadIO m, PrintOperationK o) => o -> m T.Text
getPrintOperationCustomTabLabel obj = liftIO $ getObjectPropertyString obj "custom-tab-label"

setPrintOperationCustomTabLabel :: (MonadIO m, PrintOperationK o) => o -> T.Text -> m ()
setPrintOperationCustomTabLabel obj val = liftIO $ setObjectPropertyString obj "custom-tab-label" val

constructPrintOperationCustomTabLabel :: T.Text -> IO ([Char], GValue)
constructPrintOperationCustomTabLabel val = constructObjectPropertyString "custom-tab-label" val

data PrintOperationCustomTabLabelPropertyInfo
instance AttrInfo PrintOperationCustomTabLabelPropertyInfo where
    type AttrAllowedOps PrintOperationCustomTabLabelPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint PrintOperationCustomTabLabelPropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint PrintOperationCustomTabLabelPropertyInfo = PrintOperationK
    type AttrGetType PrintOperationCustomTabLabelPropertyInfo = T.Text
    type AttrLabel PrintOperationCustomTabLabelPropertyInfo = "PrintOperation::custom-tab-label"
    attrGet _ = getPrintOperationCustomTabLabel
    attrSet _ = setPrintOperationCustomTabLabel
    attrConstruct _ = constructPrintOperationCustomTabLabel

-- VVV Prop "default-page-setup"
   -- Type: TInterface "Gtk" "PageSetup"
   -- Flags: [PropertyReadable,PropertyWritable]

getPrintOperationDefaultPageSetup :: (MonadIO m, PrintOperationK o) => o -> m PageSetup
getPrintOperationDefaultPageSetup obj = liftIO $ getObjectPropertyObject obj "default-page-setup" PageSetup

setPrintOperationDefaultPageSetup :: (MonadIO m, PrintOperationK o, PageSetupK a) => o -> a -> m ()
setPrintOperationDefaultPageSetup obj val = liftIO $ setObjectPropertyObject obj "default-page-setup" val

constructPrintOperationDefaultPageSetup :: (PageSetupK a) => a -> IO ([Char], GValue)
constructPrintOperationDefaultPageSetup val = constructObjectPropertyObject "default-page-setup" val

data PrintOperationDefaultPageSetupPropertyInfo
instance AttrInfo PrintOperationDefaultPageSetupPropertyInfo where
    type AttrAllowedOps PrintOperationDefaultPageSetupPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint PrintOperationDefaultPageSetupPropertyInfo = PageSetupK
    type AttrBaseTypeConstraint PrintOperationDefaultPageSetupPropertyInfo = PrintOperationK
    type AttrGetType PrintOperationDefaultPageSetupPropertyInfo = PageSetup
    type AttrLabel PrintOperationDefaultPageSetupPropertyInfo = "PrintOperation::default-page-setup"
    attrGet _ = getPrintOperationDefaultPageSetup
    attrSet _ = setPrintOperationDefaultPageSetup
    attrConstruct _ = constructPrintOperationDefaultPageSetup

-- VVV Prop "embed-page-setup"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getPrintOperationEmbedPageSetup :: (MonadIO m, PrintOperationK o) => o -> m Bool
getPrintOperationEmbedPageSetup obj = liftIO $ getObjectPropertyBool obj "embed-page-setup"

setPrintOperationEmbedPageSetup :: (MonadIO m, PrintOperationK o) => o -> Bool -> m ()
setPrintOperationEmbedPageSetup obj val = liftIO $ setObjectPropertyBool obj "embed-page-setup" val

constructPrintOperationEmbedPageSetup :: Bool -> IO ([Char], GValue)
constructPrintOperationEmbedPageSetup val = constructObjectPropertyBool "embed-page-setup" val

data PrintOperationEmbedPageSetupPropertyInfo
instance AttrInfo PrintOperationEmbedPageSetupPropertyInfo where
    type AttrAllowedOps PrintOperationEmbedPageSetupPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint PrintOperationEmbedPageSetupPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint PrintOperationEmbedPageSetupPropertyInfo = PrintOperationK
    type AttrGetType PrintOperationEmbedPageSetupPropertyInfo = Bool
    type AttrLabel PrintOperationEmbedPageSetupPropertyInfo = "PrintOperation::embed-page-setup"
    attrGet _ = getPrintOperationEmbedPageSetup
    attrSet _ = setPrintOperationEmbedPageSetup
    attrConstruct _ = constructPrintOperationEmbedPageSetup

-- VVV Prop "export-filename"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]

getPrintOperationExportFilename :: (MonadIO m, PrintOperationK o) => o -> m T.Text
getPrintOperationExportFilename obj = liftIO $ getObjectPropertyString obj "export-filename"

setPrintOperationExportFilename :: (MonadIO m, PrintOperationK o) => o -> T.Text -> m ()
setPrintOperationExportFilename obj val = liftIO $ setObjectPropertyString obj "export-filename" val

constructPrintOperationExportFilename :: T.Text -> IO ([Char], GValue)
constructPrintOperationExportFilename val = constructObjectPropertyString "export-filename" val

data PrintOperationExportFilenamePropertyInfo
instance AttrInfo PrintOperationExportFilenamePropertyInfo where
    type AttrAllowedOps PrintOperationExportFilenamePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint PrintOperationExportFilenamePropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint PrintOperationExportFilenamePropertyInfo = PrintOperationK
    type AttrGetType PrintOperationExportFilenamePropertyInfo = T.Text
    type AttrLabel PrintOperationExportFilenamePropertyInfo = "PrintOperation::export-filename"
    attrGet _ = getPrintOperationExportFilename
    attrSet _ = setPrintOperationExportFilename
    attrConstruct _ = constructPrintOperationExportFilename

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

getPrintOperationHasSelection :: (MonadIO m, PrintOperationK o) => o -> m Bool
getPrintOperationHasSelection obj = liftIO $ getObjectPropertyBool obj "has-selection"

setPrintOperationHasSelection :: (MonadIO m, PrintOperationK o) => o -> Bool -> m ()
setPrintOperationHasSelection obj val = liftIO $ setObjectPropertyBool obj "has-selection" val

constructPrintOperationHasSelection :: Bool -> IO ([Char], GValue)
constructPrintOperationHasSelection val = constructObjectPropertyBool "has-selection" val

data PrintOperationHasSelectionPropertyInfo
instance AttrInfo PrintOperationHasSelectionPropertyInfo where
    type AttrAllowedOps PrintOperationHasSelectionPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint PrintOperationHasSelectionPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint PrintOperationHasSelectionPropertyInfo = PrintOperationK
    type AttrGetType PrintOperationHasSelectionPropertyInfo = Bool
    type AttrLabel PrintOperationHasSelectionPropertyInfo = "PrintOperation::has-selection"
    attrGet _ = getPrintOperationHasSelection
    attrSet _ = setPrintOperationHasSelection
    attrConstruct _ = constructPrintOperationHasSelection

-- VVV Prop "job-name"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable]

getPrintOperationJobName :: (MonadIO m, PrintOperationK o) => o -> m T.Text
getPrintOperationJobName obj = liftIO $ getObjectPropertyString obj "job-name"

setPrintOperationJobName :: (MonadIO m, PrintOperationK o) => o -> T.Text -> m ()
setPrintOperationJobName obj val = liftIO $ setObjectPropertyString obj "job-name" val

constructPrintOperationJobName :: T.Text -> IO ([Char], GValue)
constructPrintOperationJobName val = constructObjectPropertyString "job-name" val

data PrintOperationJobNamePropertyInfo
instance AttrInfo PrintOperationJobNamePropertyInfo where
    type AttrAllowedOps PrintOperationJobNamePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint PrintOperationJobNamePropertyInfo = (~) T.Text
    type AttrBaseTypeConstraint PrintOperationJobNamePropertyInfo = PrintOperationK
    type AttrGetType PrintOperationJobNamePropertyInfo = T.Text
    type AttrLabel PrintOperationJobNamePropertyInfo = "PrintOperation::job-name"
    attrGet _ = getPrintOperationJobName
    attrSet _ = setPrintOperationJobName
    attrConstruct _ = constructPrintOperationJobName

-- VVV Prop "n-pages"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable,PropertyWritable]

getPrintOperationNPages :: (MonadIO m, PrintOperationK o) => o -> m Int32
getPrintOperationNPages obj = liftIO $ getObjectPropertyCInt obj "n-pages"

setPrintOperationNPages :: (MonadIO m, PrintOperationK o) => o -> Int32 -> m ()
setPrintOperationNPages obj val = liftIO $ setObjectPropertyCInt obj "n-pages" val

constructPrintOperationNPages :: Int32 -> IO ([Char], GValue)
constructPrintOperationNPages val = constructObjectPropertyCInt "n-pages" val

data PrintOperationNPagesPropertyInfo
instance AttrInfo PrintOperationNPagesPropertyInfo where
    type AttrAllowedOps PrintOperationNPagesPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint PrintOperationNPagesPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint PrintOperationNPagesPropertyInfo = PrintOperationK
    type AttrGetType PrintOperationNPagesPropertyInfo = Int32
    type AttrLabel PrintOperationNPagesPropertyInfo = "PrintOperation::n-pages"
    attrGet _ = getPrintOperationNPages
    attrSet _ = setPrintOperationNPages
    attrConstruct _ = constructPrintOperationNPages

-- VVV Prop "n-pages-to-print"
   -- Type: TBasicType TInt32
   -- Flags: [PropertyReadable]

getPrintOperationNPagesToPrint :: (MonadIO m, PrintOperationK o) => o -> m Int32
getPrintOperationNPagesToPrint obj = liftIO $ getObjectPropertyCInt obj "n-pages-to-print"

data PrintOperationNPagesToPrintPropertyInfo
instance AttrInfo PrintOperationNPagesToPrintPropertyInfo where
    type AttrAllowedOps PrintOperationNPagesToPrintPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint PrintOperationNPagesToPrintPropertyInfo = (~) ()
    type AttrBaseTypeConstraint PrintOperationNPagesToPrintPropertyInfo = PrintOperationK
    type AttrGetType PrintOperationNPagesToPrintPropertyInfo = Int32
    type AttrLabel PrintOperationNPagesToPrintPropertyInfo = "PrintOperation::n-pages-to-print"
    attrGet _ = getPrintOperationNPagesToPrint
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "print-settings"
   -- Type: TInterface "Gtk" "PrintSettings"
   -- Flags: [PropertyReadable,PropertyWritable]

getPrintOperationPrintSettings :: (MonadIO m, PrintOperationK o) => o -> m PrintSettings
getPrintOperationPrintSettings obj = liftIO $ getObjectPropertyObject obj "print-settings" PrintSettings

setPrintOperationPrintSettings :: (MonadIO m, PrintOperationK o, PrintSettingsK a) => o -> a -> m ()
setPrintOperationPrintSettings obj val = liftIO $ setObjectPropertyObject obj "print-settings" val

constructPrintOperationPrintSettings :: (PrintSettingsK a) => a -> IO ([Char], GValue)
constructPrintOperationPrintSettings val = constructObjectPropertyObject "print-settings" val

data PrintOperationPrintSettingsPropertyInfo
instance AttrInfo PrintOperationPrintSettingsPropertyInfo where
    type AttrAllowedOps PrintOperationPrintSettingsPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint PrintOperationPrintSettingsPropertyInfo = PrintSettingsK
    type AttrBaseTypeConstraint PrintOperationPrintSettingsPropertyInfo = PrintOperationK
    type AttrGetType PrintOperationPrintSettingsPropertyInfo = PrintSettings
    type AttrLabel PrintOperationPrintSettingsPropertyInfo = "PrintOperation::print-settings"
    attrGet _ = getPrintOperationPrintSettings
    attrSet _ = setPrintOperationPrintSettings
    attrConstruct _ = constructPrintOperationPrintSettings

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

getPrintOperationShowProgress :: (MonadIO m, PrintOperationK o) => o -> m Bool
getPrintOperationShowProgress obj = liftIO $ getObjectPropertyBool obj "show-progress"

setPrintOperationShowProgress :: (MonadIO m, PrintOperationK o) => o -> Bool -> m ()
setPrintOperationShowProgress obj val = liftIO $ setObjectPropertyBool obj "show-progress" val

constructPrintOperationShowProgress :: Bool -> IO ([Char], GValue)
constructPrintOperationShowProgress val = constructObjectPropertyBool "show-progress" val

data PrintOperationShowProgressPropertyInfo
instance AttrInfo PrintOperationShowProgressPropertyInfo where
    type AttrAllowedOps PrintOperationShowProgressPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint PrintOperationShowProgressPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint PrintOperationShowProgressPropertyInfo = PrintOperationK
    type AttrGetType PrintOperationShowProgressPropertyInfo = Bool
    type AttrLabel PrintOperationShowProgressPropertyInfo = "PrintOperation::show-progress"
    attrGet _ = getPrintOperationShowProgress
    attrSet _ = setPrintOperationShowProgress
    attrConstruct _ = constructPrintOperationShowProgress

-- VVV Prop "status"
   -- Type: TInterface "Gtk" "PrintStatus"
   -- Flags: [PropertyReadable]

getPrintOperationStatus :: (MonadIO m, PrintOperationK o) => o -> m PrintStatus
getPrintOperationStatus obj = liftIO $ getObjectPropertyEnum obj "status"

data PrintOperationStatusPropertyInfo
instance AttrInfo PrintOperationStatusPropertyInfo where
    type AttrAllowedOps PrintOperationStatusPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint PrintOperationStatusPropertyInfo = (~) ()
    type AttrBaseTypeConstraint PrintOperationStatusPropertyInfo = PrintOperationK
    type AttrGetType PrintOperationStatusPropertyInfo = PrintStatus
    type AttrLabel PrintOperationStatusPropertyInfo = "PrintOperation::status"
    attrGet _ = getPrintOperationStatus
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "status-string"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable]

getPrintOperationStatusString :: (MonadIO m, PrintOperationK o) => o -> m T.Text
getPrintOperationStatusString obj = liftIO $ getObjectPropertyString obj "status-string"

data PrintOperationStatusStringPropertyInfo
instance AttrInfo PrintOperationStatusStringPropertyInfo where
    type AttrAllowedOps PrintOperationStatusStringPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint PrintOperationStatusStringPropertyInfo = (~) ()
    type AttrBaseTypeConstraint PrintOperationStatusStringPropertyInfo = PrintOperationK
    type AttrGetType PrintOperationStatusStringPropertyInfo = T.Text
    type AttrLabel PrintOperationStatusStringPropertyInfo = "PrintOperation::status-string"
    attrGet _ = getPrintOperationStatusString
    attrSet _ = undefined
    attrConstruct _ = undefined

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

getPrintOperationSupportSelection :: (MonadIO m, PrintOperationK o) => o -> m Bool
getPrintOperationSupportSelection obj = liftIO $ getObjectPropertyBool obj "support-selection"

setPrintOperationSupportSelection :: (MonadIO m, PrintOperationK o) => o -> Bool -> m ()
setPrintOperationSupportSelection obj val = liftIO $ setObjectPropertyBool obj "support-selection" val

constructPrintOperationSupportSelection :: Bool -> IO ([Char], GValue)
constructPrintOperationSupportSelection val = constructObjectPropertyBool "support-selection" val

data PrintOperationSupportSelectionPropertyInfo
instance AttrInfo PrintOperationSupportSelectionPropertyInfo where
    type AttrAllowedOps PrintOperationSupportSelectionPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint PrintOperationSupportSelectionPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint PrintOperationSupportSelectionPropertyInfo = PrintOperationK
    type AttrGetType PrintOperationSupportSelectionPropertyInfo = Bool
    type AttrLabel PrintOperationSupportSelectionPropertyInfo = "PrintOperation::support-selection"
    attrGet _ = getPrintOperationSupportSelection
    attrSet _ = setPrintOperationSupportSelection
    attrConstruct _ = constructPrintOperationSupportSelection

-- VVV Prop "track-print-status"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getPrintOperationTrackPrintStatus :: (MonadIO m, PrintOperationK o) => o -> m Bool
getPrintOperationTrackPrintStatus obj = liftIO $ getObjectPropertyBool obj "track-print-status"

setPrintOperationTrackPrintStatus :: (MonadIO m, PrintOperationK o) => o -> Bool -> m ()
setPrintOperationTrackPrintStatus obj val = liftIO $ setObjectPropertyBool obj "track-print-status" val

constructPrintOperationTrackPrintStatus :: Bool -> IO ([Char], GValue)
constructPrintOperationTrackPrintStatus val = constructObjectPropertyBool "track-print-status" val

data PrintOperationTrackPrintStatusPropertyInfo
instance AttrInfo PrintOperationTrackPrintStatusPropertyInfo where
    type AttrAllowedOps PrintOperationTrackPrintStatusPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint PrintOperationTrackPrintStatusPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint PrintOperationTrackPrintStatusPropertyInfo = PrintOperationK
    type AttrGetType PrintOperationTrackPrintStatusPropertyInfo = Bool
    type AttrLabel PrintOperationTrackPrintStatusPropertyInfo = "PrintOperation::track-print-status"
    attrGet _ = getPrintOperationTrackPrintStatus
    attrSet _ = setPrintOperationTrackPrintStatus
    attrConstruct _ = constructPrintOperationTrackPrintStatus

-- VVV Prop "unit"
   -- Type: TInterface "Gtk" "Unit"
   -- Flags: [PropertyReadable,PropertyWritable]

getPrintOperationUnit :: (MonadIO m, PrintOperationK o) => o -> m Unit
getPrintOperationUnit obj = liftIO $ getObjectPropertyEnum obj "unit"

setPrintOperationUnit :: (MonadIO m, PrintOperationK o) => o -> Unit -> m ()
setPrintOperationUnit obj val = liftIO $ setObjectPropertyEnum obj "unit" val

constructPrintOperationUnit :: Unit -> IO ([Char], GValue)
constructPrintOperationUnit val = constructObjectPropertyEnum "unit" val

data PrintOperationUnitPropertyInfo
instance AttrInfo PrintOperationUnitPropertyInfo where
    type AttrAllowedOps PrintOperationUnitPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint PrintOperationUnitPropertyInfo = (~) Unit
    type AttrBaseTypeConstraint PrintOperationUnitPropertyInfo = PrintOperationK
    type AttrGetType PrintOperationUnitPropertyInfo = Unit
    type AttrLabel PrintOperationUnitPropertyInfo = "PrintOperation::unit"
    attrGet _ = getPrintOperationUnit
    attrSet _ = setPrintOperationUnit
    attrConstruct _ = constructPrintOperationUnit

-- VVV Prop "use-full-page"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]

getPrintOperationUseFullPage :: (MonadIO m, PrintOperationK o) => o -> m Bool
getPrintOperationUseFullPage obj = liftIO $ getObjectPropertyBool obj "use-full-page"

setPrintOperationUseFullPage :: (MonadIO m, PrintOperationK o) => o -> Bool -> m ()
setPrintOperationUseFullPage obj val = liftIO $ setObjectPropertyBool obj "use-full-page" val

constructPrintOperationUseFullPage :: Bool -> IO ([Char], GValue)
constructPrintOperationUseFullPage val = constructObjectPropertyBool "use-full-page" val

data PrintOperationUseFullPagePropertyInfo
instance AttrInfo PrintOperationUseFullPagePropertyInfo where
    type AttrAllowedOps PrintOperationUseFullPagePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint PrintOperationUseFullPagePropertyInfo = (~) Bool
    type AttrBaseTypeConstraint PrintOperationUseFullPagePropertyInfo = PrintOperationK
    type AttrGetType PrintOperationUseFullPagePropertyInfo = Bool
    type AttrLabel PrintOperationUseFullPagePropertyInfo = "PrintOperation::use-full-page"
    attrGet _ = getPrintOperationUseFullPage
    attrSet _ = setPrintOperationUseFullPage
    attrConstruct _ = constructPrintOperationUseFullPage

type instance AttributeList PrintOperation = PrintOperationAttributeList
type PrintOperationAttributeList = ('[ '("allow-async", PrintOperationAllowAsyncPropertyInfo), '("current-page", PrintOperationCurrentPagePropertyInfo), '("custom-tab-label", PrintOperationCustomTabLabelPropertyInfo), '("default-page-setup", PrintOperationDefaultPageSetupPropertyInfo), '("embed-page-setup", PrintOperationEmbedPageSetupPropertyInfo), '("export-filename", PrintOperationExportFilenamePropertyInfo), '("has-selection", PrintOperationHasSelectionPropertyInfo), '("job-name", PrintOperationJobNamePropertyInfo), '("n-pages", PrintOperationNPagesPropertyInfo), '("n-pages-to-print", PrintOperationNPagesToPrintPropertyInfo), '("print-settings", PrintOperationPrintSettingsPropertyInfo), '("show-progress", PrintOperationShowProgressPropertyInfo), '("status", PrintOperationStatusPropertyInfo), '("status-string", PrintOperationStatusStringPropertyInfo), '("support-selection", PrintOperationSupportSelectionPropertyInfo), '("track-print-status", PrintOperationTrackPrintStatusPropertyInfo), '("unit", PrintOperationUnitPropertyInfo), '("use-full-page", PrintOperationUseFullPagePropertyInfo)] :: [(Symbol, *)])

data PrintOperationBeginPrintSignalInfo
instance SignalInfo PrintOperationBeginPrintSignalInfo where
    type HaskellCallbackType PrintOperationBeginPrintSignalInfo = PrintOperationBeginPrintCallback
    connectSignal _ = connectPrintOperationBeginPrint

data PrintOperationCreateCustomWidgetSignalInfo
instance SignalInfo PrintOperationCreateCustomWidgetSignalInfo where
    type HaskellCallbackType PrintOperationCreateCustomWidgetSignalInfo = PrintOperationCreateCustomWidgetCallback
    connectSignal _ = connectPrintOperationCreateCustomWidget

data PrintOperationCustomWidgetApplySignalInfo
instance SignalInfo PrintOperationCustomWidgetApplySignalInfo where
    type HaskellCallbackType PrintOperationCustomWidgetApplySignalInfo = PrintOperationCustomWidgetApplyCallback
    connectSignal _ = connectPrintOperationCustomWidgetApply

data PrintOperationDoneSignalInfo
instance SignalInfo PrintOperationDoneSignalInfo where
    type HaskellCallbackType PrintOperationDoneSignalInfo = PrintOperationDoneCallback
    connectSignal _ = connectPrintOperationDone

data PrintOperationDrawPageSignalInfo
instance SignalInfo PrintOperationDrawPageSignalInfo where
    type HaskellCallbackType PrintOperationDrawPageSignalInfo = PrintOperationDrawPageCallback
    connectSignal _ = connectPrintOperationDrawPage

data PrintOperationEndPrintSignalInfo
instance SignalInfo PrintOperationEndPrintSignalInfo where
    type HaskellCallbackType PrintOperationEndPrintSignalInfo = PrintOperationEndPrintCallback
    connectSignal _ = connectPrintOperationEndPrint

data PrintOperationPaginateSignalInfo
instance SignalInfo PrintOperationPaginateSignalInfo where
    type HaskellCallbackType PrintOperationPaginateSignalInfo = PrintOperationPaginateCallback
    connectSignal _ = connectPrintOperationPaginate

data PrintOperationPreviewSignalInfo
instance SignalInfo PrintOperationPreviewSignalInfo where
    type HaskellCallbackType PrintOperationPreviewSignalInfo = PrintOperationPreviewCallback
    connectSignal _ = connectPrintOperationPreview

data PrintOperationRequestPageSetupSignalInfo
instance SignalInfo PrintOperationRequestPageSetupSignalInfo where
    type HaskellCallbackType PrintOperationRequestPageSetupSignalInfo = PrintOperationRequestPageSetupCallback
    connectSignal _ = connectPrintOperationRequestPageSetup

data PrintOperationStatusChangedSignalInfo
instance SignalInfo PrintOperationStatusChangedSignalInfo where
    type HaskellCallbackType PrintOperationStatusChangedSignalInfo = PrintOperationStatusChangedCallback
    connectSignal _ = connectPrintOperationStatusChanged

data PrintOperationUpdateCustomWidgetSignalInfo
instance SignalInfo PrintOperationUpdateCustomWidgetSignalInfo where
    type HaskellCallbackType PrintOperationUpdateCustomWidgetSignalInfo = PrintOperationUpdateCustomWidgetCallback
    connectSignal _ = connectPrintOperationUpdateCustomWidget

type instance SignalList PrintOperation = PrintOperationSignalList
type PrintOperationSignalList = ('[ '("begin-print", PrintOperationBeginPrintSignalInfo), '("create-custom-widget", PrintOperationCreateCustomWidgetSignalInfo), '("custom-widget-apply", PrintOperationCustomWidgetApplySignalInfo), '("done", PrintOperationDoneSignalInfo), '("draw-page", PrintOperationDrawPageSignalInfo), '("end-print", PrintOperationEndPrintSignalInfo), '("got-page-size", PrintOperationPreviewGotPageSizeSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("paginate", PrintOperationPaginateSignalInfo), '("preview", PrintOperationPreviewSignalInfo), '("ready", PrintOperationPreviewReadySignalInfo), '("request-page-setup", PrintOperationRequestPageSetupSignalInfo), '("status-changed", PrintOperationStatusChangedSignalInfo), '("update-custom-widget", PrintOperationUpdateCustomWidgetSignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])

-- method PrintOperation::new
-- method type : Constructor
-- Args : []
-- Lengths : []
-- hInArgs : []
-- returnType : TInterface "Gtk" "PrintOperation"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_print_operation_new" gtk_print_operation_new :: 
    IO (Ptr PrintOperation)


printOperationNew ::
    (MonadIO m) =>
    m PrintOperation
printOperationNew  = liftIO $ do
    result <- gtk_print_operation_new
    checkUnexpectedReturnNULL "gtk_print_operation_new" result
    result' <- (wrapObject PrintOperation) result
    return result'

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

foreign import ccall "gtk_print_operation_cancel" gtk_print_operation_cancel :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    IO ()


printOperationCancel ::
    (MonadIO m, PrintOperationK a) =>
    a ->                                    -- _obj
    m ()
printOperationCancel _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_print_operation_cancel _obj'
    touchManagedPtr _obj
    return ()

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

foreign import ccall "gtk_print_operation_draw_page_finish" gtk_print_operation_draw_page_finish :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    IO ()


printOperationDrawPageFinish ::
    (MonadIO m, PrintOperationK a) =>
    a ->                                    -- _obj
    m ()
printOperationDrawPageFinish _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_print_operation_draw_page_finish _obj'
    touchManagedPtr _obj
    return ()

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

foreign import ccall "gtk_print_operation_get_default_page_setup" gtk_print_operation_get_default_page_setup :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    IO (Ptr PageSetup)


printOperationGetDefaultPageSetup ::
    (MonadIO m, PrintOperationK a) =>
    a ->                                    -- _obj
    m PageSetup
printOperationGetDefaultPageSetup _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_print_operation_get_default_page_setup _obj'
    checkUnexpectedReturnNULL "gtk_print_operation_get_default_page_setup" result
    result' <- (newObject PageSetup) result
    touchManagedPtr _obj
    return result'

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

foreign import ccall "gtk_print_operation_get_embed_page_setup" gtk_print_operation_get_embed_page_setup :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    IO CInt


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

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

foreign import ccall "gtk_print_operation_get_error" gtk_print_operation_get_error :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    Ptr (Ptr GError) ->                     -- error
    IO ()


printOperationGetError ::
    (MonadIO m, PrintOperationK a) =>
    a ->                                    -- _obj
    m ()
printOperationGetError _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    onException (do
        propagateGError $ gtk_print_operation_get_error _obj'
        touchManagedPtr _obj
        return ()
     ) (do
        return ()
     )

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

foreign import ccall "gtk_print_operation_get_has_selection" gtk_print_operation_get_has_selection :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    IO CInt


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

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

foreign import ccall "gtk_print_operation_get_n_pages_to_print" gtk_print_operation_get_n_pages_to_print :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    IO Int32


printOperationGetNPagesToPrint ::
    (MonadIO m, PrintOperationK a) =>
    a ->                                    -- _obj
    m Int32
printOperationGetNPagesToPrint _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_print_operation_get_n_pages_to_print _obj'
    touchManagedPtr _obj
    return result

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

foreign import ccall "gtk_print_operation_get_print_settings" gtk_print_operation_get_print_settings :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    IO (Ptr PrintSettings)


printOperationGetPrintSettings ::
    (MonadIO m, PrintOperationK a) =>
    a ->                                    -- _obj
    m PrintSettings
printOperationGetPrintSettings _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_print_operation_get_print_settings _obj'
    checkUnexpectedReturnNULL "gtk_print_operation_get_print_settings" result
    result' <- (newObject PrintSettings) result
    touchManagedPtr _obj
    return result'

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

foreign import ccall "gtk_print_operation_get_status" gtk_print_operation_get_status :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    IO CUInt


printOperationGetStatus ::
    (MonadIO m, PrintOperationK a) =>
    a ->                                    -- _obj
    m PrintStatus
printOperationGetStatus _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_print_operation_get_status _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

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

foreign import ccall "gtk_print_operation_get_status_string" gtk_print_operation_get_status_string :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    IO CString


printOperationGetStatusString ::
    (MonadIO m, PrintOperationK a) =>
    a ->                                    -- _obj
    m T.Text
printOperationGetStatusString _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_print_operation_get_status_string _obj'
    checkUnexpectedReturnNULL "gtk_print_operation_get_status_string" result
    result' <- cstringToText result
    touchManagedPtr _obj
    return result'

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

foreign import ccall "gtk_print_operation_get_support_selection" gtk_print_operation_get_support_selection :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    IO CInt


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

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

foreign import ccall "gtk_print_operation_is_finished" gtk_print_operation_is_finished :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    IO CInt


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

-- method PrintOperation::run
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Gtk" "PrintOperation", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "action", argType = TInterface "Gtk" "PrintOperationAction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "parent", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Gtk" "PrintOperation", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "action", argType = TInterface "Gtk" "PrintOperationAction", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "parent", argType = TInterface "Gtk" "Window", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Gtk" "PrintOperationResult"
-- throws : True
-- Skip return : False

foreign import ccall "gtk_print_operation_run" gtk_print_operation_run :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    CUInt ->                                -- action : TInterface "Gtk" "PrintOperationAction"
    Ptr Window ->                           -- parent : TInterface "Gtk" "Window"
    Ptr (Ptr GError) ->                     -- error
    IO CUInt


printOperationRun ::
    (MonadIO m, PrintOperationK a, WindowK b) =>
    a ->                                    -- _obj
    PrintOperationAction ->                 -- action
    Maybe (b) ->                            -- parent
    m PrintOperationResult
printOperationRun _obj action parent = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let action' = (fromIntegral . fromEnum) action
    maybeParent <- case parent of
        Nothing -> return nullPtr
        Just jParent -> do
            let jParent' = unsafeManagedPtrCastPtr jParent
            return jParent'
    onException (do
        result <- propagateGError $ gtk_print_operation_run _obj' action' maybeParent
        let result' = (toEnum . fromIntegral) result
        touchManagedPtr _obj
        whenJust parent touchManagedPtr
        return result'
     ) (do
        return ()
     )

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

foreign import ccall "gtk_print_operation_set_allow_async" gtk_print_operation_set_allow_async :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    CInt ->                                 -- allow_async : TBasicType TBoolean
    IO ()


printOperationSetAllowAsync ::
    (MonadIO m, PrintOperationK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- allow_async
    m ()
printOperationSetAllowAsync _obj allow_async = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let allow_async' = (fromIntegral . fromEnum) allow_async
    gtk_print_operation_set_allow_async _obj' allow_async'
    touchManagedPtr _obj
    return ()

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

foreign import ccall "gtk_print_operation_set_current_page" gtk_print_operation_set_current_page :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    Int32 ->                                -- current_page : TBasicType TInt32
    IO ()


printOperationSetCurrentPage ::
    (MonadIO m, PrintOperationK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- current_page
    m ()
printOperationSetCurrentPage _obj current_page = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_print_operation_set_current_page _obj' current_page
    touchManagedPtr _obj
    return ()

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

foreign import ccall "gtk_print_operation_set_custom_tab_label" gtk_print_operation_set_custom_tab_label :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    CString ->                              -- label : TBasicType TUTF8
    IO ()


printOperationSetCustomTabLabel ::
    (MonadIO m, PrintOperationK a) =>
    a ->                                    -- _obj
    Maybe (T.Text) ->                       -- label
    m ()
printOperationSetCustomTabLabel _obj label = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeLabel <- case label of
        Nothing -> return nullPtr
        Just jLabel -> do
            jLabel' <- textToCString jLabel
            return jLabel'
    gtk_print_operation_set_custom_tab_label _obj' maybeLabel
    touchManagedPtr _obj
    freeMem maybeLabel
    return ()

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

foreign import ccall "gtk_print_operation_set_default_page_setup" gtk_print_operation_set_default_page_setup :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    Ptr PageSetup ->                        -- default_page_setup : TInterface "Gtk" "PageSetup"
    IO ()


printOperationSetDefaultPageSetup ::
    (MonadIO m, PrintOperationK a, PageSetupK b) =>
    a ->                                    -- _obj
    Maybe (b) ->                            -- default_page_setup
    m ()
printOperationSetDefaultPageSetup _obj default_page_setup = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeDefault_page_setup <- case default_page_setup of
        Nothing -> return nullPtr
        Just jDefault_page_setup -> do
            let jDefault_page_setup' = unsafeManagedPtrCastPtr jDefault_page_setup
            return jDefault_page_setup'
    gtk_print_operation_set_default_page_setup _obj' maybeDefault_page_setup
    touchManagedPtr _obj
    whenJust default_page_setup touchManagedPtr
    return ()

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

foreign import ccall "gtk_print_operation_set_defer_drawing" gtk_print_operation_set_defer_drawing :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    IO ()


printOperationSetDeferDrawing ::
    (MonadIO m, PrintOperationK a) =>
    a ->                                    -- _obj
    m ()
printOperationSetDeferDrawing _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_print_operation_set_defer_drawing _obj'
    touchManagedPtr _obj
    return ()

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

foreign import ccall "gtk_print_operation_set_embed_page_setup" gtk_print_operation_set_embed_page_setup :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    CInt ->                                 -- embed : TBasicType TBoolean
    IO ()


printOperationSetEmbedPageSetup ::
    (MonadIO m, PrintOperationK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- embed
    m ()
printOperationSetEmbedPageSetup _obj embed = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let embed' = (fromIntegral . fromEnum) embed
    gtk_print_operation_set_embed_page_setup _obj' embed'
    touchManagedPtr _obj
    return ()

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

foreign import ccall "gtk_print_operation_set_export_filename" gtk_print_operation_set_export_filename :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    CString ->                              -- filename : TBasicType TFileName
    IO ()


printOperationSetExportFilename ::
    (MonadIO m, PrintOperationK a) =>
    a ->                                    -- _obj
    [Char] ->                               -- filename
    m ()
printOperationSetExportFilename _obj filename = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    filename' <- stringToCString filename
    gtk_print_operation_set_export_filename _obj' filename'
    touchManagedPtr _obj
    freeMem filename'
    return ()

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

foreign import ccall "gtk_print_operation_set_has_selection" gtk_print_operation_set_has_selection :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    CInt ->                                 -- has_selection : TBasicType TBoolean
    IO ()


printOperationSetHasSelection ::
    (MonadIO m, PrintOperationK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- has_selection
    m ()
printOperationSetHasSelection _obj has_selection = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let has_selection' = (fromIntegral . fromEnum) has_selection
    gtk_print_operation_set_has_selection _obj' has_selection'
    touchManagedPtr _obj
    return ()

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

foreign import ccall "gtk_print_operation_set_job_name" gtk_print_operation_set_job_name :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    CString ->                              -- job_name : TBasicType TUTF8
    IO ()


printOperationSetJobName ::
    (MonadIO m, PrintOperationK a) =>
    a ->                                    -- _obj
    T.Text ->                               -- job_name
    m ()
printOperationSetJobName _obj job_name = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    job_name' <- textToCString job_name
    gtk_print_operation_set_job_name _obj' job_name'
    touchManagedPtr _obj
    freeMem job_name'
    return ()

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

foreign import ccall "gtk_print_operation_set_n_pages" gtk_print_operation_set_n_pages :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    Int32 ->                                -- n_pages : TBasicType TInt32
    IO ()


printOperationSetNPages ::
    (MonadIO m, PrintOperationK a) =>
    a ->                                    -- _obj
    Int32 ->                                -- n_pages
    m ()
printOperationSetNPages _obj n_pages = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_print_operation_set_n_pages _obj' n_pages
    touchManagedPtr _obj
    return ()

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

foreign import ccall "gtk_print_operation_set_print_settings" gtk_print_operation_set_print_settings :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    Ptr PrintSettings ->                    -- print_settings : TInterface "Gtk" "PrintSettings"
    IO ()


printOperationSetPrintSettings ::
    (MonadIO m, PrintOperationK a, PrintSettingsK b) =>
    a ->                                    -- _obj
    Maybe (b) ->                            -- print_settings
    m ()
printOperationSetPrintSettings _obj print_settings = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybePrint_settings <- case print_settings of
        Nothing -> return nullPtr
        Just jPrint_settings -> do
            let jPrint_settings' = unsafeManagedPtrCastPtr jPrint_settings
            return jPrint_settings'
    gtk_print_operation_set_print_settings _obj' maybePrint_settings
    touchManagedPtr _obj
    whenJust print_settings touchManagedPtr
    return ()

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

foreign import ccall "gtk_print_operation_set_show_progress" gtk_print_operation_set_show_progress :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    CInt ->                                 -- show_progress : TBasicType TBoolean
    IO ()


printOperationSetShowProgress ::
    (MonadIO m, PrintOperationK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- show_progress
    m ()
printOperationSetShowProgress _obj show_progress = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let show_progress' = (fromIntegral . fromEnum) show_progress
    gtk_print_operation_set_show_progress _obj' show_progress'
    touchManagedPtr _obj
    return ()

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

foreign import ccall "gtk_print_operation_set_support_selection" gtk_print_operation_set_support_selection :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    CInt ->                                 -- support_selection : TBasicType TBoolean
    IO ()


printOperationSetSupportSelection ::
    (MonadIO m, PrintOperationK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- support_selection
    m ()
printOperationSetSupportSelection _obj support_selection = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let support_selection' = (fromIntegral . fromEnum) support_selection
    gtk_print_operation_set_support_selection _obj' support_selection'
    touchManagedPtr _obj
    return ()

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

foreign import ccall "gtk_print_operation_set_track_print_status" gtk_print_operation_set_track_print_status :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    CInt ->                                 -- track_status : TBasicType TBoolean
    IO ()


printOperationSetTrackPrintStatus ::
    (MonadIO m, PrintOperationK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- track_status
    m ()
printOperationSetTrackPrintStatus _obj track_status = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let track_status' = (fromIntegral . fromEnum) track_status
    gtk_print_operation_set_track_print_status _obj' track_status'
    touchManagedPtr _obj
    return ()

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

foreign import ccall "gtk_print_operation_set_unit" gtk_print_operation_set_unit :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    CUInt ->                                -- unit : TInterface "Gtk" "Unit"
    IO ()


printOperationSetUnit ::
    (MonadIO m, PrintOperationK a) =>
    a ->                                    -- _obj
    Unit ->                                 -- unit
    m ()
printOperationSetUnit _obj unit = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let unit' = (fromIntegral . fromEnum) unit
    gtk_print_operation_set_unit _obj' unit'
    touchManagedPtr _obj
    return ()

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

foreign import ccall "gtk_print_operation_set_use_full_page" gtk_print_operation_set_use_full_page :: 
    Ptr PrintOperation ->                   -- _obj : TInterface "Gtk" "PrintOperation"
    CInt ->                                 -- full_page : TBasicType TBoolean
    IO ()


printOperationSetUseFullPage ::
    (MonadIO m, PrintOperationK a) =>
    a ->                                    -- _obj
    Bool ->                                 -- full_page
    m ()
printOperationSetUseFullPage _obj full_page = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let full_page' = (fromIntegral . fromEnum) full_page
    gtk_print_operation_set_use_full_page _obj' full_page'
    touchManagedPtr _obj
    return ()