{- |
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.GtkSource.Objects.GutterRenderer
    ( 

-- * Exported types
    GutterRenderer(..)                      ,
    IsGutterRenderer                        ,
    toGutterRenderer                        ,
    noGutterRenderer                        ,


 -- * Methods
-- ** Unsupported methods #method:Unsupported methods#
    GutterRendererGetAlignmentMethodInfo    ,
    GutterRendererGetPaddingMethodInfo      ,


-- ** activate #method:activate#
    GutterRendererActivateMethodInfo        ,
    gutterRendererActivate                  ,


-- ** begin #method:begin#
    GutterRendererBeginMethodInfo           ,
    gutterRendererBegin                     ,


-- ** draw #method:draw#
    GutterRendererDrawMethodInfo            ,
    gutterRendererDraw                      ,


-- ** end #method:end#
    GutterRendererEndMethodInfo             ,
    gutterRendererEnd                       ,


-- ** getAlignmentMode #method:getAlignmentMode#
    GutterRendererGetAlignmentModeMethodInfo,
    gutterRendererGetAlignmentMode          ,


-- ** getBackground #method:getBackground#
    GutterRendererGetBackgroundMethodInfo   ,
    gutterRendererGetBackground             ,


-- ** getSize #method:getSize#
    GutterRendererGetSizeMethodInfo         ,
    gutterRendererGetSize                   ,


-- ** getView #method:getView#
    GutterRendererGetViewMethodInfo         ,
    gutterRendererGetView                   ,


-- ** getVisible #method:getVisible#
    GutterRendererGetVisibleMethodInfo      ,
    gutterRendererGetVisible                ,


-- ** getWindowType #method:getWindowType#
    GutterRendererGetWindowTypeMethodInfo   ,
    gutterRendererGetWindowType             ,


-- ** queryActivatable #method:queryActivatable#
    GutterRendererQueryActivatableMethodInfo,
    gutterRendererQueryActivatable          ,


-- ** queryData #method:queryData#
    GutterRendererQueryDataMethodInfo       ,
    gutterRendererQueryData                 ,


-- ** queryTooltip #method:queryTooltip#
    GutterRendererQueryTooltipMethodInfo    ,
    gutterRendererQueryTooltip              ,


-- ** queueDraw #method:queueDraw#
    GutterRendererQueueDrawMethodInfo       ,
    gutterRendererQueueDraw                 ,


-- ** setAlignment #method:setAlignment#
    GutterRendererSetAlignmentMethodInfo    ,
    gutterRendererSetAlignment              ,


-- ** setAlignmentMode #method:setAlignmentMode#
    GutterRendererSetAlignmentModeMethodInfo,
    gutterRendererSetAlignmentMode          ,


-- ** setBackground #method:setBackground#
    GutterRendererSetBackgroundMethodInfo   ,
    gutterRendererSetBackground             ,


-- ** setPadding #method:setPadding#
    GutterRendererSetPaddingMethodInfo      ,
    gutterRendererSetPadding                ,


-- ** setSize #method:setSize#
    GutterRendererSetSizeMethodInfo         ,
    gutterRendererSetSize                   ,


-- ** setVisible #method:setVisible#
    GutterRendererSetVisibleMethodInfo      ,
    gutterRendererSetVisible                ,




 -- * Properties
-- ** alignmentMode #attr:alignmentMode#
    GutterRendererAlignmentModePropertyInfo ,
    constructGutterRendererAlignmentMode    ,
    getGutterRendererAlignmentMode          ,
    gutterRendererAlignmentMode             ,
    setGutterRendererAlignmentMode          ,


-- ** backgroundRgba #attr:backgroundRgba#
    GutterRendererBackgroundRgbaPropertyInfo,
    clearGutterRendererBackgroundRgba       ,
    constructGutterRendererBackgroundRgba   ,
    getGutterRendererBackgroundRgba         ,
    gutterRendererBackgroundRgba            ,
    setGutterRendererBackgroundRgba         ,


-- ** backgroundSet #attr:backgroundSet#
    GutterRendererBackgroundSetPropertyInfo ,
    constructGutterRendererBackgroundSet    ,
    getGutterRendererBackgroundSet          ,
    gutterRendererBackgroundSet             ,
    setGutterRendererBackgroundSet          ,


-- ** size #attr:size#
    GutterRendererSizePropertyInfo          ,
    constructGutterRendererSize             ,
    getGutterRendererSize                   ,
    gutterRendererSize                      ,
    setGutterRendererSize                   ,


-- ** view #attr:view#
    GutterRendererViewPropertyInfo          ,
    getGutterRendererView                   ,
    gutterRendererView                      ,


-- ** visible #attr:visible#
    GutterRendererVisiblePropertyInfo       ,
    constructGutterRendererVisible          ,
    getGutterRendererVisible                ,
    gutterRendererVisible                   ,
    setGutterRendererVisible                ,


-- ** windowType #attr:windowType#
    GutterRendererWindowTypePropertyInfo    ,
    getGutterRendererWindowType             ,
    gutterRendererWindowType                ,


-- ** xalign #attr:xalign#
    GutterRendererXalignPropertyInfo        ,
    constructGutterRendererXalign           ,
    getGutterRendererXalign                 ,
    gutterRendererXalign                    ,
    setGutterRendererXalign                 ,


-- ** xpad #attr:xpad#
    GutterRendererXpadPropertyInfo          ,
    constructGutterRendererXpad             ,
    getGutterRendererXpad                   ,
    gutterRendererXpad                      ,
    setGutterRendererXpad                   ,


-- ** yalign #attr:yalign#
    GutterRendererYalignPropertyInfo        ,
    constructGutterRendererYalign           ,
    getGutterRendererYalign                 ,
    gutterRendererYalign                    ,
    setGutterRendererYalign                 ,


-- ** ypad #attr:ypad#
    GutterRendererYpadPropertyInfo          ,
    constructGutterRendererYpad             ,
    getGutterRendererYpad                   ,
    gutterRendererYpad                      ,
    setGutterRendererYpad                   ,




 -- * Signals
-- ** activate #signal:activate#
    C_GutterRendererActivateCallback        ,
    GutterRendererActivateCallback          ,
    GutterRendererActivateSignalInfo        ,
    afterGutterRendererActivate             ,
    genClosure_GutterRendererActivate       ,
    mk_GutterRendererActivateCallback       ,
    noGutterRendererActivateCallback        ,
    onGutterRendererActivate                ,
    wrap_GutterRendererActivateCallback     ,


-- ** queryActivatable #signal:queryActivatable#
    C_GutterRendererQueryActivatableCallback,
    GutterRendererQueryActivatableCallback  ,
    GutterRendererQueryActivatableSignalInfo,
    afterGutterRendererQueryActivatable     ,
    genClosure_GutterRendererQueryActivatable,
    mk_GutterRendererQueryActivatableCallback,
    noGutterRendererQueryActivatableCallback,
    onGutterRendererQueryActivatable        ,
    wrap_GutterRendererQueryActivatableCallback,


-- ** queryData #signal:queryData#
    C_GutterRendererQueryDataCallback       ,
    GutterRendererQueryDataCallback         ,
    GutterRendererQueryDataSignalInfo       ,
    afterGutterRendererQueryData            ,
    genClosure_GutterRendererQueryData      ,
    mk_GutterRendererQueryDataCallback      ,
    noGutterRendererQueryDataCallback       ,
    onGutterRendererQueryData               ,
    wrap_GutterRendererQueryDataCallback    ,


-- ** queryTooltip #signal:queryTooltip#
    C_GutterRendererQueryTooltipCallback    ,
    GutterRendererQueryTooltipCallback      ,
    GutterRendererQueryTooltipSignalInfo    ,
    afterGutterRendererQueryTooltip         ,
    genClosure_GutterRendererQueryTooltip   ,
    mk_GutterRendererQueryTooltipCallback   ,
    noGutterRendererQueryTooltipCallback    ,
    onGutterRendererQueryTooltip            ,
    wrap_GutterRendererQueryTooltipCallback ,


-- ** queueDraw #signal:queueDraw#
    C_GutterRendererQueueDrawCallback       ,
    GutterRendererQueueDrawCallback         ,
    GutterRendererQueueDrawSignalInfo       ,
    afterGutterRendererQueueDraw            ,
    genClosure_GutterRendererQueueDraw      ,
    mk_GutterRendererQueueDrawCallback      ,
    noGutterRendererQueueDrawCallback       ,
    onGutterRendererQueueDraw               ,
    wrap_GutterRendererQueueDrawCallback    ,




    ) where

import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP

import qualified GI.Cairo.Structs.Context as Cairo.Context
import qualified GI.GObject.Objects.Object as GObject.Object
import qualified GI.Gdk.Structs.RGBA as Gdk.RGBA
import qualified GI.Gdk.Structs.Rectangle as Gdk.Rectangle
import qualified GI.Gdk.Unions.Event as Gdk.Event
import qualified GI.Gtk.Enums as Gtk.Enums
import qualified GI.Gtk.Objects.TextView as Gtk.TextView
import qualified GI.Gtk.Objects.Tooltip as Gtk.Tooltip
import qualified GI.Gtk.Structs.TextIter as Gtk.TextIter
import {-# SOURCE #-} qualified GI.GtkSource.Enums as GtkSource.Enums
import {-# SOURCE #-} qualified GI.GtkSource.Flags as GtkSource.Flags

newtype GutterRenderer = GutterRenderer (ManagedPtr GutterRenderer)
foreign import ccall "gtk_source_gutter_renderer_get_type"
    c_gtk_source_gutter_renderer_get_type :: IO GType

instance GObject GutterRenderer where
    gobjectType _ = c_gtk_source_gutter_renderer_get_type
    

class GObject o => IsGutterRenderer o
#if MIN_VERSION_base(4,9,0)
instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError GutterRenderer a) =>
    IsGutterRenderer a
#endif
instance IsGutterRenderer GutterRenderer
instance GObject.Object.IsObject GutterRenderer

toGutterRenderer :: IsGutterRenderer o => o -> IO GutterRenderer
toGutterRenderer = unsafeCastTo GutterRenderer

noGutterRenderer :: Maybe GutterRenderer
noGutterRenderer = Nothing

type family ResolveGutterRendererMethod (t :: Symbol) (o :: *) :: * where
    ResolveGutterRendererMethod "activate" o = GutterRendererActivateMethodInfo
    ResolveGutterRendererMethod "begin" o = GutterRendererBeginMethodInfo
    ResolveGutterRendererMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveGutterRendererMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveGutterRendererMethod "draw" o = GutterRendererDrawMethodInfo
    ResolveGutterRendererMethod "end" o = GutterRendererEndMethodInfo
    ResolveGutterRendererMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveGutterRendererMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveGutterRendererMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveGutterRendererMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveGutterRendererMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveGutterRendererMethod "queryActivatable" o = GutterRendererQueryActivatableMethodInfo
    ResolveGutterRendererMethod "queryData" o = GutterRendererQueryDataMethodInfo
    ResolveGutterRendererMethod "queryTooltip" o = GutterRendererQueryTooltipMethodInfo
    ResolveGutterRendererMethod "queueDraw" o = GutterRendererQueueDrawMethodInfo
    ResolveGutterRendererMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveGutterRendererMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveGutterRendererMethod "replaceData" o = GObject.Object.ObjectReplaceDataMethodInfo
    ResolveGutterRendererMethod "replaceQdata" o = GObject.Object.ObjectReplaceQdataMethodInfo
    ResolveGutterRendererMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveGutterRendererMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveGutterRendererMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveGutterRendererMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveGutterRendererMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveGutterRendererMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveGutterRendererMethod "getAlignment" o = GutterRendererGetAlignmentMethodInfo
    ResolveGutterRendererMethod "getAlignmentMode" o = GutterRendererGetAlignmentModeMethodInfo
    ResolveGutterRendererMethod "getBackground" o = GutterRendererGetBackgroundMethodInfo
    ResolveGutterRendererMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveGutterRendererMethod "getPadding" o = GutterRendererGetPaddingMethodInfo
    ResolveGutterRendererMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveGutterRendererMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveGutterRendererMethod "getSize" o = GutterRendererGetSizeMethodInfo
    ResolveGutterRendererMethod "getView" o = GutterRendererGetViewMethodInfo
    ResolveGutterRendererMethod "getVisible" o = GutterRendererGetVisibleMethodInfo
    ResolveGutterRendererMethod "getWindowType" o = GutterRendererGetWindowTypeMethodInfo
    ResolveGutterRendererMethod "setAlignment" o = GutterRendererSetAlignmentMethodInfo
    ResolveGutterRendererMethod "setAlignmentMode" o = GutterRendererSetAlignmentModeMethodInfo
    ResolveGutterRendererMethod "setBackground" o = GutterRendererSetBackgroundMethodInfo
    ResolveGutterRendererMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveGutterRendererMethod "setPadding" o = GutterRendererSetPaddingMethodInfo
    ResolveGutterRendererMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveGutterRendererMethod "setSize" o = GutterRendererSetSizeMethodInfo
    ResolveGutterRendererMethod "setVisible" o = GutterRendererSetVisibleMethodInfo
    ResolveGutterRendererMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveGutterRendererMethod t GutterRenderer, O.MethodInfo info GutterRenderer p) => O.IsLabelProxy t (GutterRenderer -> p) where
    fromLabelProxy _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveGutterRendererMethod t GutterRenderer, O.MethodInfo info GutterRenderer p) => O.IsLabel t (GutterRenderer -> p) where
    fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif

-- signal GutterRenderer::activate
type GutterRendererActivateCallback =
    Gtk.TextIter.TextIter ->
    Gdk.Rectangle.Rectangle ->
    Gdk.Event.Event ->
    IO ()

noGutterRendererActivateCallback :: Maybe GutterRendererActivateCallback
noGutterRendererActivateCallback = Nothing

type C_GutterRendererActivateCallback =
    Ptr () ->                               -- object
    Ptr Gtk.TextIter.TextIter ->
    Ptr Gdk.Rectangle.Rectangle ->
    Ptr Gdk.Event.Event ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mk_GutterRendererActivateCallback :: C_GutterRendererActivateCallback -> IO (FunPtr C_GutterRendererActivateCallback)

genClosure_GutterRendererActivate :: GutterRendererActivateCallback -> IO Closure
genClosure_GutterRendererActivate cb = do
    let cb' = wrap_GutterRendererActivateCallback cb
    mk_GutterRendererActivateCallback cb' >>= newCClosure


wrap_GutterRendererActivateCallback ::
    GutterRendererActivateCallback ->
    Ptr () ->
    Ptr Gtk.TextIter.TextIter ->
    Ptr Gdk.Rectangle.Rectangle ->
    Ptr Gdk.Event.Event ->
    Ptr () ->
    IO ()
wrap_GutterRendererActivateCallback _cb _ iter area event _ = do
    iter' <- (newBoxed Gtk.TextIter.TextIter) iter
    area' <- (newBoxed Gdk.Rectangle.Rectangle) area
    event' <- (newBoxed Gdk.Event.Event) event
    _cb  iter' area' event'


onGutterRendererActivate :: (IsGutterRenderer a, MonadIO m) => a -> GutterRendererActivateCallback -> m SignalHandlerId
onGutterRendererActivate obj cb = liftIO $ do
    let cb' = wrap_GutterRendererActivateCallback cb
    cb'' <- mk_GutterRendererActivateCallback cb'
    connectSignalFunPtr obj "activate" cb'' SignalConnectBefore

afterGutterRendererActivate :: (IsGutterRenderer a, MonadIO m) => a -> GutterRendererActivateCallback -> m SignalHandlerId
afterGutterRendererActivate obj cb = liftIO $ do
    let cb' = wrap_GutterRendererActivateCallback cb
    cb'' <- mk_GutterRendererActivateCallback cb'
    connectSignalFunPtr obj "activate" cb'' SignalConnectAfter


-- signal GutterRenderer::query-activatable
type GutterRendererQueryActivatableCallback =
    Gtk.TextIter.TextIter ->
    Gdk.Rectangle.Rectangle ->
    Gdk.Event.Event ->
    IO Bool

noGutterRendererQueryActivatableCallback :: Maybe GutterRendererQueryActivatableCallback
noGutterRendererQueryActivatableCallback = Nothing

type C_GutterRendererQueryActivatableCallback =
    Ptr () ->                               -- object
    Ptr Gtk.TextIter.TextIter ->
    Ptr Gdk.Rectangle.Rectangle ->
    Ptr Gdk.Event.Event ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mk_GutterRendererQueryActivatableCallback :: C_GutterRendererQueryActivatableCallback -> IO (FunPtr C_GutterRendererQueryActivatableCallback)

genClosure_GutterRendererQueryActivatable :: GutterRendererQueryActivatableCallback -> IO Closure
genClosure_GutterRendererQueryActivatable cb = do
    let cb' = wrap_GutterRendererQueryActivatableCallback cb
    mk_GutterRendererQueryActivatableCallback cb' >>= newCClosure


wrap_GutterRendererQueryActivatableCallback ::
    GutterRendererQueryActivatableCallback ->
    Ptr () ->
    Ptr Gtk.TextIter.TextIter ->
    Ptr Gdk.Rectangle.Rectangle ->
    Ptr Gdk.Event.Event ->
    Ptr () ->
    IO CInt
wrap_GutterRendererQueryActivatableCallback _cb _ iter area event _ = do
    iter' <- (newBoxed Gtk.TextIter.TextIter) iter
    area' <- (newBoxed Gdk.Rectangle.Rectangle) area
    event' <- (newBoxed Gdk.Event.Event) event
    result <- _cb  iter' area' event'
    let result' = (fromIntegral . fromEnum) result
    return result'


onGutterRendererQueryActivatable :: (IsGutterRenderer a, MonadIO m) => a -> GutterRendererQueryActivatableCallback -> m SignalHandlerId
onGutterRendererQueryActivatable obj cb = liftIO $ do
    let cb' = wrap_GutterRendererQueryActivatableCallback cb
    cb'' <- mk_GutterRendererQueryActivatableCallback cb'
    connectSignalFunPtr obj "query-activatable" cb'' SignalConnectBefore

afterGutterRendererQueryActivatable :: (IsGutterRenderer a, MonadIO m) => a -> GutterRendererQueryActivatableCallback -> m SignalHandlerId
afterGutterRendererQueryActivatable obj cb = liftIO $ do
    let cb' = wrap_GutterRendererQueryActivatableCallback cb
    cb'' <- mk_GutterRendererQueryActivatableCallback cb'
    connectSignalFunPtr obj "query-activatable" cb'' SignalConnectAfter


-- signal GutterRenderer::query-data
type GutterRendererQueryDataCallback =
    Gtk.TextIter.TextIter ->
    Gtk.TextIter.TextIter ->
    [GtkSource.Flags.GutterRendererState] ->
    IO ()

noGutterRendererQueryDataCallback :: Maybe GutterRendererQueryDataCallback
noGutterRendererQueryDataCallback = Nothing

type C_GutterRendererQueryDataCallback =
    Ptr () ->                               -- object
    Ptr Gtk.TextIter.TextIter ->
    Ptr Gtk.TextIter.TextIter ->
    CUInt ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mk_GutterRendererQueryDataCallback :: C_GutterRendererQueryDataCallback -> IO (FunPtr C_GutterRendererQueryDataCallback)

genClosure_GutterRendererQueryData :: GutterRendererQueryDataCallback -> IO Closure
genClosure_GutterRendererQueryData cb = do
    let cb' = wrap_GutterRendererQueryDataCallback cb
    mk_GutterRendererQueryDataCallback cb' >>= newCClosure


wrap_GutterRendererQueryDataCallback ::
    GutterRendererQueryDataCallback ->
    Ptr () ->
    Ptr Gtk.TextIter.TextIter ->
    Ptr Gtk.TextIter.TextIter ->
    CUInt ->
    Ptr () ->
    IO ()
wrap_GutterRendererQueryDataCallback _cb _ start end state _ = do
    start' <- (newBoxed Gtk.TextIter.TextIter) start
    end' <- (newBoxed Gtk.TextIter.TextIter) end
    let state' = wordToGFlags state
    _cb  start' end' state'


onGutterRendererQueryData :: (IsGutterRenderer a, MonadIO m) => a -> GutterRendererQueryDataCallback -> m SignalHandlerId
onGutterRendererQueryData obj cb = liftIO $ do
    let cb' = wrap_GutterRendererQueryDataCallback cb
    cb'' <- mk_GutterRendererQueryDataCallback cb'
    connectSignalFunPtr obj "query-data" cb'' SignalConnectBefore

afterGutterRendererQueryData :: (IsGutterRenderer a, MonadIO m) => a -> GutterRendererQueryDataCallback -> m SignalHandlerId
afterGutterRendererQueryData obj cb = liftIO $ do
    let cb' = wrap_GutterRendererQueryDataCallback cb
    cb'' <- mk_GutterRendererQueryDataCallback cb'
    connectSignalFunPtr obj "query-data" cb'' SignalConnectAfter


-- signal GutterRenderer::query-tooltip
type GutterRendererQueryTooltipCallback =
    Gtk.TextIter.TextIter ->
    Gdk.Rectangle.Rectangle ->
    Int32 ->
    Int32 ->
    Gtk.Tooltip.Tooltip ->
    IO Bool

noGutterRendererQueryTooltipCallback :: Maybe GutterRendererQueryTooltipCallback
noGutterRendererQueryTooltipCallback = Nothing

type C_GutterRendererQueryTooltipCallback =
    Ptr () ->                               -- object
    Ptr Gtk.TextIter.TextIter ->
    Ptr Gdk.Rectangle.Rectangle ->
    Int32 ->
    Int32 ->
    Ptr Gtk.Tooltip.Tooltip ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mk_GutterRendererQueryTooltipCallback :: C_GutterRendererQueryTooltipCallback -> IO (FunPtr C_GutterRendererQueryTooltipCallback)

genClosure_GutterRendererQueryTooltip :: GutterRendererQueryTooltipCallback -> IO Closure
genClosure_GutterRendererQueryTooltip cb = do
    let cb' = wrap_GutterRendererQueryTooltipCallback cb
    mk_GutterRendererQueryTooltipCallback cb' >>= newCClosure


wrap_GutterRendererQueryTooltipCallback ::
    GutterRendererQueryTooltipCallback ->
    Ptr () ->
    Ptr Gtk.TextIter.TextIter ->
    Ptr Gdk.Rectangle.Rectangle ->
    Int32 ->
    Int32 ->
    Ptr Gtk.Tooltip.Tooltip ->
    Ptr () ->
    IO CInt
wrap_GutterRendererQueryTooltipCallback _cb _ iter area x y tooltip _ = do
    iter' <- (newBoxed Gtk.TextIter.TextIter) iter
    area' <- (newBoxed Gdk.Rectangle.Rectangle) area
    tooltip' <- (newObject Gtk.Tooltip.Tooltip) tooltip
    result <- _cb  iter' area' x y tooltip'
    let result' = (fromIntegral . fromEnum) result
    return result'


onGutterRendererQueryTooltip :: (IsGutterRenderer a, MonadIO m) => a -> GutterRendererQueryTooltipCallback -> m SignalHandlerId
onGutterRendererQueryTooltip obj cb = liftIO $ do
    let cb' = wrap_GutterRendererQueryTooltipCallback cb
    cb'' <- mk_GutterRendererQueryTooltipCallback cb'
    connectSignalFunPtr obj "query-tooltip" cb'' SignalConnectBefore

afterGutterRendererQueryTooltip :: (IsGutterRenderer a, MonadIO m) => a -> GutterRendererQueryTooltipCallback -> m SignalHandlerId
afterGutterRendererQueryTooltip obj cb = liftIO $ do
    let cb' = wrap_GutterRendererQueryTooltipCallback cb
    cb'' <- mk_GutterRendererQueryTooltipCallback cb'
    connectSignalFunPtr obj "query-tooltip" cb'' SignalConnectAfter


-- signal GutterRenderer::queue-draw
type GutterRendererQueueDrawCallback =
    IO ()

noGutterRendererQueueDrawCallback :: Maybe GutterRendererQueueDrawCallback
noGutterRendererQueueDrawCallback = Nothing

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

foreign import ccall "wrapper"
    mk_GutterRendererQueueDrawCallback :: C_GutterRendererQueueDrawCallback -> IO (FunPtr C_GutterRendererQueueDrawCallback)

genClosure_GutterRendererQueueDraw :: GutterRendererQueueDrawCallback -> IO Closure
genClosure_GutterRendererQueueDraw cb = do
    let cb' = wrap_GutterRendererQueueDrawCallback cb
    mk_GutterRendererQueueDrawCallback cb' >>= newCClosure


wrap_GutterRendererQueueDrawCallback ::
    GutterRendererQueueDrawCallback ->
    Ptr () ->
    Ptr () ->
    IO ()
wrap_GutterRendererQueueDrawCallback _cb _ _ = do
    _cb 


onGutterRendererQueueDraw :: (IsGutterRenderer a, MonadIO m) => a -> GutterRendererQueueDrawCallback -> m SignalHandlerId
onGutterRendererQueueDraw obj cb = liftIO $ do
    let cb' = wrap_GutterRendererQueueDrawCallback cb
    cb'' <- mk_GutterRendererQueueDrawCallback cb'
    connectSignalFunPtr obj "queue-draw" cb'' SignalConnectBefore

afterGutterRendererQueueDraw :: (IsGutterRenderer a, MonadIO m) => a -> GutterRendererQueueDrawCallback -> m SignalHandlerId
afterGutterRendererQueueDraw obj cb = liftIO $ do
    let cb' = wrap_GutterRendererQueueDrawCallback cb
    cb'' <- mk_GutterRendererQueueDrawCallback cb'
    connectSignalFunPtr obj "queue-draw" cb'' SignalConnectAfter


-- VVV Prop "alignment-mode"
   -- Type: TInterface (Name {namespace = "GtkSource", name = "GutterRendererAlignmentMode"})
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Just False,Just False)

getGutterRendererAlignmentMode :: (MonadIO m, IsGutterRenderer o) => o -> m GtkSource.Enums.GutterRendererAlignmentMode
getGutterRendererAlignmentMode obj = liftIO $ getObjectPropertyEnum obj "alignment-mode"

setGutterRendererAlignmentMode :: (MonadIO m, IsGutterRenderer o) => o -> GtkSource.Enums.GutterRendererAlignmentMode -> m ()
setGutterRendererAlignmentMode obj val = liftIO $ setObjectPropertyEnum obj "alignment-mode" val

constructGutterRendererAlignmentMode :: (IsGutterRenderer o) => GtkSource.Enums.GutterRendererAlignmentMode -> IO (GValueConstruct o)
constructGutterRendererAlignmentMode val = constructObjectPropertyEnum "alignment-mode" val

data GutterRendererAlignmentModePropertyInfo
instance AttrInfo GutterRendererAlignmentModePropertyInfo where
    type AttrAllowedOps GutterRendererAlignmentModePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint GutterRendererAlignmentModePropertyInfo = (~) GtkSource.Enums.GutterRendererAlignmentMode
    type AttrBaseTypeConstraint GutterRendererAlignmentModePropertyInfo = IsGutterRenderer
    type AttrGetType GutterRendererAlignmentModePropertyInfo = GtkSource.Enums.GutterRendererAlignmentMode
    type AttrLabel GutterRendererAlignmentModePropertyInfo = "alignment-mode"
    type AttrOrigin GutterRendererAlignmentModePropertyInfo = GutterRenderer
    attrGet _ = getGutterRendererAlignmentMode
    attrSet _ = setGutterRendererAlignmentMode
    attrConstruct _ = constructGutterRendererAlignmentMode
    attrClear _ = undefined

-- VVV Prop "background-rgba"
   -- Type: TInterface (Name {namespace = "Gdk", name = "RGBA"})
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

getGutterRendererBackgroundRgba :: (MonadIO m, IsGutterRenderer o) => o -> m (Maybe Gdk.RGBA.RGBA)
getGutterRendererBackgroundRgba obj = liftIO $ getObjectPropertyBoxed obj "background-rgba" Gdk.RGBA.RGBA

setGutterRendererBackgroundRgba :: (MonadIO m, IsGutterRenderer o) => o -> Gdk.RGBA.RGBA -> m ()
setGutterRendererBackgroundRgba obj val = liftIO $ setObjectPropertyBoxed obj "background-rgba" (Just val)

constructGutterRendererBackgroundRgba :: (IsGutterRenderer o) => Gdk.RGBA.RGBA -> IO (GValueConstruct o)
constructGutterRendererBackgroundRgba val = constructObjectPropertyBoxed "background-rgba" (Just val)

clearGutterRendererBackgroundRgba :: (MonadIO m, IsGutterRenderer o) => o -> m ()
clearGutterRendererBackgroundRgba obj = liftIO $ setObjectPropertyBoxed obj "background-rgba" (Nothing :: Maybe Gdk.RGBA.RGBA)

data GutterRendererBackgroundRgbaPropertyInfo
instance AttrInfo GutterRendererBackgroundRgbaPropertyInfo where
    type AttrAllowedOps GutterRendererBackgroundRgbaPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint GutterRendererBackgroundRgbaPropertyInfo = (~) Gdk.RGBA.RGBA
    type AttrBaseTypeConstraint GutterRendererBackgroundRgbaPropertyInfo = IsGutterRenderer
    type AttrGetType GutterRendererBackgroundRgbaPropertyInfo = (Maybe Gdk.RGBA.RGBA)
    type AttrLabel GutterRendererBackgroundRgbaPropertyInfo = "background-rgba"
    type AttrOrigin GutterRendererBackgroundRgbaPropertyInfo = GutterRenderer
    attrGet _ = getGutterRendererBackgroundRgba
    attrSet _ = setGutterRendererBackgroundRgba
    attrConstruct _ = constructGutterRendererBackgroundRgba
    attrClear _ = clearGutterRendererBackgroundRgba

-- VVV Prop "background-set"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Nothing,Nothing)

getGutterRendererBackgroundSet :: (MonadIO m, IsGutterRenderer o) => o -> m Bool
getGutterRendererBackgroundSet obj = liftIO $ getObjectPropertyBool obj "background-set"

setGutterRendererBackgroundSet :: (MonadIO m, IsGutterRenderer o) => o -> Bool -> m ()
setGutterRendererBackgroundSet obj val = liftIO $ setObjectPropertyBool obj "background-set" val

constructGutterRendererBackgroundSet :: (IsGutterRenderer o) => Bool -> IO (GValueConstruct o)
constructGutterRendererBackgroundSet val = constructObjectPropertyBool "background-set" val

data GutterRendererBackgroundSetPropertyInfo
instance AttrInfo GutterRendererBackgroundSetPropertyInfo where
    type AttrAllowedOps GutterRendererBackgroundSetPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint GutterRendererBackgroundSetPropertyInfo = (~) Bool
    type AttrBaseTypeConstraint GutterRendererBackgroundSetPropertyInfo = IsGutterRenderer
    type AttrGetType GutterRendererBackgroundSetPropertyInfo = Bool
    type AttrLabel GutterRendererBackgroundSetPropertyInfo = "background-set"
    type AttrOrigin GutterRendererBackgroundSetPropertyInfo = GutterRenderer
    attrGet _ = getGutterRendererBackgroundSet
    attrSet _ = setGutterRendererBackgroundSet
    attrConstruct _ = constructGutterRendererBackgroundSet
    attrClear _ = undefined

-- VVV Prop "size"
   -- Type: TBasicType TInt
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Just False,Just False)

getGutterRendererSize :: (MonadIO m, IsGutterRenderer o) => o -> m Int32
getGutterRendererSize obj = liftIO $ getObjectPropertyInt32 obj "size"

setGutterRendererSize :: (MonadIO m, IsGutterRenderer o) => o -> Int32 -> m ()
setGutterRendererSize obj val = liftIO $ setObjectPropertyInt32 obj "size" val

constructGutterRendererSize :: (IsGutterRenderer o) => Int32 -> IO (GValueConstruct o)
constructGutterRendererSize val = constructObjectPropertyInt32 "size" val

data GutterRendererSizePropertyInfo
instance AttrInfo GutterRendererSizePropertyInfo where
    type AttrAllowedOps GutterRendererSizePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint GutterRendererSizePropertyInfo = (~) Int32
    type AttrBaseTypeConstraint GutterRendererSizePropertyInfo = IsGutterRenderer
    type AttrGetType GutterRendererSizePropertyInfo = Int32
    type AttrLabel GutterRendererSizePropertyInfo = "size"
    type AttrOrigin GutterRendererSizePropertyInfo = GutterRenderer
    attrGet _ = getGutterRendererSize
    attrSet _ = setGutterRendererSize
    attrConstruct _ = constructGutterRendererSize
    attrClear _ = undefined

-- VVV Prop "view"
   -- Type: TInterface (Name {namespace = "Gtk", name = "TextView"})
   -- Flags: [PropertyReadable]
   -- Nullable: (Just False,Nothing)

getGutterRendererView :: (MonadIO m, IsGutterRenderer o) => o -> m Gtk.TextView.TextView
getGutterRendererView obj = liftIO $ checkUnexpectedNothing "getGutterRendererView" $ getObjectPropertyObject obj "view" Gtk.TextView.TextView

data GutterRendererViewPropertyInfo
instance AttrInfo GutterRendererViewPropertyInfo where
    type AttrAllowedOps GutterRendererViewPropertyInfo = '[ 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint GutterRendererViewPropertyInfo = (~) ()
    type AttrBaseTypeConstraint GutterRendererViewPropertyInfo = IsGutterRenderer
    type AttrGetType GutterRendererViewPropertyInfo = Gtk.TextView.TextView
    type AttrLabel GutterRendererViewPropertyInfo = "view"
    type AttrOrigin GutterRendererViewPropertyInfo = GutterRenderer
    attrGet _ = getGutterRendererView
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "visible"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Just False,Just False)

getGutterRendererVisible :: (MonadIO m, IsGutterRenderer o) => o -> m Bool
getGutterRendererVisible obj = liftIO $ getObjectPropertyBool obj "visible"

setGutterRendererVisible :: (MonadIO m, IsGutterRenderer o) => o -> Bool -> m ()
setGutterRendererVisible obj val = liftIO $ setObjectPropertyBool obj "visible" val

constructGutterRendererVisible :: (IsGutterRenderer o) => Bool -> IO (GValueConstruct o)
constructGutterRendererVisible val = constructObjectPropertyBool "visible" val

data GutterRendererVisiblePropertyInfo
instance AttrInfo GutterRendererVisiblePropertyInfo where
    type AttrAllowedOps GutterRendererVisiblePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint GutterRendererVisiblePropertyInfo = (~) Bool
    type AttrBaseTypeConstraint GutterRendererVisiblePropertyInfo = IsGutterRenderer
    type AttrGetType GutterRendererVisiblePropertyInfo = Bool
    type AttrLabel GutterRendererVisiblePropertyInfo = "visible"
    type AttrOrigin GutterRendererVisiblePropertyInfo = GutterRenderer
    attrGet _ = getGutterRendererVisible
    attrSet _ = setGutterRendererVisible
    attrConstruct _ = constructGutterRendererVisible
    attrClear _ = undefined

-- VVV Prop "window-type"
   -- Type: TInterface (Name {namespace = "Gtk", name = "TextWindowType"})
   -- Flags: [PropertyReadable]
   -- Nullable: (Just False,Nothing)

getGutterRendererWindowType :: (MonadIO m, IsGutterRenderer o) => o -> m Gtk.Enums.TextWindowType
getGutterRendererWindowType obj = liftIO $ getObjectPropertyEnum obj "window-type"

data GutterRendererWindowTypePropertyInfo
instance AttrInfo GutterRendererWindowTypePropertyInfo where
    type AttrAllowedOps GutterRendererWindowTypePropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint GutterRendererWindowTypePropertyInfo = (~) ()
    type AttrBaseTypeConstraint GutterRendererWindowTypePropertyInfo = IsGutterRenderer
    type AttrGetType GutterRendererWindowTypePropertyInfo = Gtk.Enums.TextWindowType
    type AttrLabel GutterRendererWindowTypePropertyInfo = "window-type"
    type AttrOrigin GutterRendererWindowTypePropertyInfo = GutterRenderer
    attrGet _ = getGutterRendererWindowType
    attrSet _ = undefined
    attrConstruct _ = undefined
    attrClear _ = undefined

-- VVV Prop "xalign"
   -- Type: TBasicType TFloat
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Nothing,Nothing)

getGutterRendererXalign :: (MonadIO m, IsGutterRenderer o) => o -> m Float
getGutterRendererXalign obj = liftIO $ getObjectPropertyFloat obj "xalign"

setGutterRendererXalign :: (MonadIO m, IsGutterRenderer o) => o -> Float -> m ()
setGutterRendererXalign obj val = liftIO $ setObjectPropertyFloat obj "xalign" val

constructGutterRendererXalign :: (IsGutterRenderer o) => Float -> IO (GValueConstruct o)
constructGutterRendererXalign val = constructObjectPropertyFloat "xalign" val

data GutterRendererXalignPropertyInfo
instance AttrInfo GutterRendererXalignPropertyInfo where
    type AttrAllowedOps GutterRendererXalignPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint GutterRendererXalignPropertyInfo = (~) Float
    type AttrBaseTypeConstraint GutterRendererXalignPropertyInfo = IsGutterRenderer
    type AttrGetType GutterRendererXalignPropertyInfo = Float
    type AttrLabel GutterRendererXalignPropertyInfo = "xalign"
    type AttrOrigin GutterRendererXalignPropertyInfo = GutterRenderer
    attrGet _ = getGutterRendererXalign
    attrSet _ = setGutterRendererXalign
    attrConstruct _ = constructGutterRendererXalign
    attrClear _ = undefined

-- VVV Prop "xpad"
   -- Type: TBasicType TInt
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Nothing,Nothing)

getGutterRendererXpad :: (MonadIO m, IsGutterRenderer o) => o -> m Int32
getGutterRendererXpad obj = liftIO $ getObjectPropertyInt32 obj "xpad"

setGutterRendererXpad :: (MonadIO m, IsGutterRenderer o) => o -> Int32 -> m ()
setGutterRendererXpad obj val = liftIO $ setObjectPropertyInt32 obj "xpad" val

constructGutterRendererXpad :: (IsGutterRenderer o) => Int32 -> IO (GValueConstruct o)
constructGutterRendererXpad val = constructObjectPropertyInt32 "xpad" val

data GutterRendererXpadPropertyInfo
instance AttrInfo GutterRendererXpadPropertyInfo where
    type AttrAllowedOps GutterRendererXpadPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint GutterRendererXpadPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint GutterRendererXpadPropertyInfo = IsGutterRenderer
    type AttrGetType GutterRendererXpadPropertyInfo = Int32
    type AttrLabel GutterRendererXpadPropertyInfo = "xpad"
    type AttrOrigin GutterRendererXpadPropertyInfo = GutterRenderer
    attrGet _ = getGutterRendererXpad
    attrSet _ = setGutterRendererXpad
    attrConstruct _ = constructGutterRendererXpad
    attrClear _ = undefined

-- VVV Prop "yalign"
   -- Type: TBasicType TFloat
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Nothing,Nothing)

getGutterRendererYalign :: (MonadIO m, IsGutterRenderer o) => o -> m Float
getGutterRendererYalign obj = liftIO $ getObjectPropertyFloat obj "yalign"

setGutterRendererYalign :: (MonadIO m, IsGutterRenderer o) => o -> Float -> m ()
setGutterRendererYalign obj val = liftIO $ setObjectPropertyFloat obj "yalign" val

constructGutterRendererYalign :: (IsGutterRenderer o) => Float -> IO (GValueConstruct o)
constructGutterRendererYalign val = constructObjectPropertyFloat "yalign" val

data GutterRendererYalignPropertyInfo
instance AttrInfo GutterRendererYalignPropertyInfo where
    type AttrAllowedOps GutterRendererYalignPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint GutterRendererYalignPropertyInfo = (~) Float
    type AttrBaseTypeConstraint GutterRendererYalignPropertyInfo = IsGutterRenderer
    type AttrGetType GutterRendererYalignPropertyInfo = Float
    type AttrLabel GutterRendererYalignPropertyInfo = "yalign"
    type AttrOrigin GutterRendererYalignPropertyInfo = GutterRenderer
    attrGet _ = getGutterRendererYalign
    attrSet _ = setGutterRendererYalign
    attrConstruct _ = constructGutterRendererYalign
    attrClear _ = undefined

-- VVV Prop "ypad"
   -- Type: TBasicType TInt
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]
   -- Nullable: (Nothing,Nothing)

getGutterRendererYpad :: (MonadIO m, IsGutterRenderer o) => o -> m Int32
getGutterRendererYpad obj = liftIO $ getObjectPropertyInt32 obj "ypad"

setGutterRendererYpad :: (MonadIO m, IsGutterRenderer o) => o -> Int32 -> m ()
setGutterRendererYpad obj val = liftIO $ setObjectPropertyInt32 obj "ypad" val

constructGutterRendererYpad :: (IsGutterRenderer o) => Int32 -> IO (GValueConstruct o)
constructGutterRendererYpad val = constructObjectPropertyInt32 "ypad" val

data GutterRendererYpadPropertyInfo
instance AttrInfo GutterRendererYpadPropertyInfo where
    type AttrAllowedOps GutterRendererYpadPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint GutterRendererYpadPropertyInfo = (~) Int32
    type AttrBaseTypeConstraint GutterRendererYpadPropertyInfo = IsGutterRenderer
    type AttrGetType GutterRendererYpadPropertyInfo = Int32
    type AttrLabel GutterRendererYpadPropertyInfo = "ypad"
    type AttrOrigin GutterRendererYpadPropertyInfo = GutterRenderer
    attrGet _ = getGutterRendererYpad
    attrSet _ = setGutterRendererYpad
    attrConstruct _ = constructGutterRendererYpad
    attrClear _ = undefined

instance O.HasAttributeList GutterRenderer
type instance O.AttributeList GutterRenderer = GutterRendererAttributeList
type GutterRendererAttributeList = ('[ '("alignmentMode", GutterRendererAlignmentModePropertyInfo), '("backgroundRgba", GutterRendererBackgroundRgbaPropertyInfo), '("backgroundSet", GutterRendererBackgroundSetPropertyInfo), '("size", GutterRendererSizePropertyInfo), '("view", GutterRendererViewPropertyInfo), '("visible", GutterRendererVisiblePropertyInfo), '("windowType", GutterRendererWindowTypePropertyInfo), '("xalign", GutterRendererXalignPropertyInfo), '("xpad", GutterRendererXpadPropertyInfo), '("yalign", GutterRendererYalignPropertyInfo), '("ypad", GutterRendererYpadPropertyInfo)] :: [(Symbol, *)])

gutterRendererAlignmentMode :: AttrLabelProxy "alignmentMode"
gutterRendererAlignmentMode = AttrLabelProxy

gutterRendererBackgroundRgba :: AttrLabelProxy "backgroundRgba"
gutterRendererBackgroundRgba = AttrLabelProxy

gutterRendererBackgroundSet :: AttrLabelProxy "backgroundSet"
gutterRendererBackgroundSet = AttrLabelProxy

gutterRendererSize :: AttrLabelProxy "size"
gutterRendererSize = AttrLabelProxy

gutterRendererView :: AttrLabelProxy "view"
gutterRendererView = AttrLabelProxy

gutterRendererVisible :: AttrLabelProxy "visible"
gutterRendererVisible = AttrLabelProxy

gutterRendererWindowType :: AttrLabelProxy "windowType"
gutterRendererWindowType = AttrLabelProxy

gutterRendererXalign :: AttrLabelProxy "xalign"
gutterRendererXalign = AttrLabelProxy

gutterRendererXpad :: AttrLabelProxy "xpad"
gutterRendererXpad = AttrLabelProxy

gutterRendererYalign :: AttrLabelProxy "yalign"
gutterRendererYalign = AttrLabelProxy

gutterRendererYpad :: AttrLabelProxy "ypad"
gutterRendererYpad = AttrLabelProxy

data GutterRendererActivateSignalInfo
instance SignalInfo GutterRendererActivateSignalInfo where
    type HaskellCallbackType GutterRendererActivateSignalInfo = GutterRendererActivateCallback
    connectSignal _ obj cb connectMode = do
        let cb' = wrap_GutterRendererActivateCallback cb
        cb'' <- mk_GutterRendererActivateCallback cb'
        connectSignalFunPtr obj "activate" cb'' connectMode

data GutterRendererQueryActivatableSignalInfo
instance SignalInfo GutterRendererQueryActivatableSignalInfo where
    type HaskellCallbackType GutterRendererQueryActivatableSignalInfo = GutterRendererQueryActivatableCallback
    connectSignal _ obj cb connectMode = do
        let cb' = wrap_GutterRendererQueryActivatableCallback cb
        cb'' <- mk_GutterRendererQueryActivatableCallback cb'
        connectSignalFunPtr obj "query-activatable" cb'' connectMode

data GutterRendererQueryDataSignalInfo
instance SignalInfo GutterRendererQueryDataSignalInfo where
    type HaskellCallbackType GutterRendererQueryDataSignalInfo = GutterRendererQueryDataCallback
    connectSignal _ obj cb connectMode = do
        let cb' = wrap_GutterRendererQueryDataCallback cb
        cb'' <- mk_GutterRendererQueryDataCallback cb'
        connectSignalFunPtr obj "query-data" cb'' connectMode

data GutterRendererQueryTooltipSignalInfo
instance SignalInfo GutterRendererQueryTooltipSignalInfo where
    type HaskellCallbackType GutterRendererQueryTooltipSignalInfo = GutterRendererQueryTooltipCallback
    connectSignal _ obj cb connectMode = do
        let cb' = wrap_GutterRendererQueryTooltipCallback cb
        cb'' <- mk_GutterRendererQueryTooltipCallback cb'
        connectSignalFunPtr obj "query-tooltip" cb'' connectMode

data GutterRendererQueueDrawSignalInfo
instance SignalInfo GutterRendererQueueDrawSignalInfo where
    type HaskellCallbackType GutterRendererQueueDrawSignalInfo = GutterRendererQueueDrawCallback
    connectSignal _ obj cb connectMode = do
        let cb' = wrap_GutterRendererQueueDrawCallback cb
        cb'' <- mk_GutterRendererQueueDrawCallback cb'
        connectSignalFunPtr obj "queue-draw" cb'' connectMode

type instance O.SignalList GutterRenderer = GutterRendererSignalList
type GutterRendererSignalList = ('[ '("activate", GutterRendererActivateSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("queryActivatable", GutterRendererQueryActivatableSignalInfo), '("queryData", GutterRendererQueryDataSignalInfo), '("queryTooltip", GutterRendererQueryTooltipSignalInfo), '("queueDraw", GutterRendererQueueDrawSignalInfo)] :: [(Symbol, *)])

-- method GutterRenderer::activate
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSourceGutterRenderer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "iter", argType = TInterface (Name {namespace = "Gtk", name = "TextIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkTextIter at the start of the line where the renderer is activated", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "area", argType = TInterface (Name {namespace = "Gdk", name = "Rectangle"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GdkRectangle of the cell area where the renderer is activated", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "event", argType = TInterface (Name {namespace = "Gdk", name = "Event"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the event that triggered the activation", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_source_gutter_renderer_activate" gtk_source_gutter_renderer_activate :: 
    Ptr GutterRenderer ->                   -- renderer : TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"})
    Ptr Gtk.TextIter.TextIter ->            -- iter : TInterface (Name {namespace = "Gtk", name = "TextIter"})
    Ptr Gdk.Rectangle.Rectangle ->          -- area : TInterface (Name {namespace = "Gdk", name = "Rectangle"})
    Ptr Gdk.Event.Event ->                  -- event : TInterface (Name {namespace = "Gdk", name = "Event"})
    IO ()

{- |
Emits the 'GI.GtkSource.Objects.GutterRenderer.GutterRenderer'::@/activate/@ signal of the renderer. This is
called from 'GI.GtkSource.Objects.Gutter.Gutter' and should never have to be called manually.
-}
gutterRendererActivate ::
    (B.CallStack.HasCallStack, MonadIO m, IsGutterRenderer a) =>
    a
    {- ^ /@renderer@/: a 'GI.GtkSource.Objects.GutterRenderer.GutterRenderer' -}
    -> Gtk.TextIter.TextIter
    {- ^ /@iter@/: a 'GI.Gtk.Structs.TextIter.TextIter' at the start of the line where the renderer is activated -}
    -> Gdk.Rectangle.Rectangle
    {- ^ /@area@/: a 'GI.Gdk.Structs.Rectangle.Rectangle' of the cell area where the renderer is activated -}
    -> Gdk.Event.Event
    {- ^ /@event@/: the event that triggered the activation -}
    -> m ()
gutterRendererActivate renderer iter area event = liftIO $ do
    renderer' <- unsafeManagedPtrCastPtr renderer
    iter' <- unsafeManagedPtrGetPtr iter
    area' <- unsafeManagedPtrGetPtr area
    event' <- unsafeManagedPtrGetPtr event
    gtk_source_gutter_renderer_activate renderer' iter' area' event'
    touchManagedPtr renderer
    touchManagedPtr iter
    touchManagedPtr area
    touchManagedPtr event
    return ()

data GutterRendererActivateMethodInfo
instance (signature ~ (Gtk.TextIter.TextIter -> Gdk.Rectangle.Rectangle -> Gdk.Event.Event -> m ()), MonadIO m, IsGutterRenderer a) => O.MethodInfo GutterRendererActivateMethodInfo a signature where
    overloadedMethod _ = gutterRendererActivate

-- method GutterRenderer::begin
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSourceGutterRenderer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cr", argType = TInterface (Name {namespace = "cairo", name = "Context"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #cairo_t", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "background_area", argType = TInterface (Name {namespace = "Gdk", name = "Rectangle"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GdkRectangle", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cell_area", argType = TInterface (Name {namespace = "Gdk", name = "Rectangle"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GdkRectangle", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "start", argType = TInterface (Name {namespace = "Gtk", name = "TextIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkTextIter", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "end", argType = TInterface (Name {namespace = "Gtk", name = "TextIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkTextIter", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_source_gutter_renderer_begin" gtk_source_gutter_renderer_begin :: 
    Ptr GutterRenderer ->                   -- renderer : TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"})
    Ptr Cairo.Context.Context ->            -- cr : TInterface (Name {namespace = "cairo", name = "Context"})
    Ptr Gdk.Rectangle.Rectangle ->          -- background_area : TInterface (Name {namespace = "Gdk", name = "Rectangle"})
    Ptr Gdk.Rectangle.Rectangle ->          -- cell_area : TInterface (Name {namespace = "Gdk", name = "Rectangle"})
    Ptr Gtk.TextIter.TextIter ->            -- start : TInterface (Name {namespace = "Gtk", name = "TextIter"})
    Ptr Gtk.TextIter.TextIter ->            -- end : TInterface (Name {namespace = "Gtk", name = "TextIter"})
    IO ()

{- |
Called when drawing a region begins. The region to be drawn is indicated
by /@start@/ and /@end@/. The purpose is to allow the implementation to precompute
some state before the draw method is called for each cell.
-}
gutterRendererBegin ::
    (B.CallStack.HasCallStack, MonadIO m, IsGutterRenderer a) =>
    a
    {- ^ /@renderer@/: a 'GI.GtkSource.Objects.GutterRenderer.GutterRenderer' -}
    -> Cairo.Context.Context
    {- ^ /@cr@/: a 'GI.Cairo.Structs.Context.Context' -}
    -> Gdk.Rectangle.Rectangle
    {- ^ /@backgroundArea@/: a 'GI.Gdk.Structs.Rectangle.Rectangle' -}
    -> Gdk.Rectangle.Rectangle
    {- ^ /@cellArea@/: a 'GI.Gdk.Structs.Rectangle.Rectangle' -}
    -> Gtk.TextIter.TextIter
    {- ^ /@start@/: a 'GI.Gtk.Structs.TextIter.TextIter' -}
    -> Gtk.TextIter.TextIter
    {- ^ /@end@/: a 'GI.Gtk.Structs.TextIter.TextIter' -}
    -> m ()
gutterRendererBegin renderer cr backgroundArea cellArea start end = liftIO $ do
    renderer' <- unsafeManagedPtrCastPtr renderer
    cr' <- unsafeManagedPtrGetPtr cr
    backgroundArea' <- unsafeManagedPtrGetPtr backgroundArea
    cellArea' <- unsafeManagedPtrGetPtr cellArea
    start' <- unsafeManagedPtrGetPtr start
    end' <- unsafeManagedPtrGetPtr end
    gtk_source_gutter_renderer_begin renderer' cr' backgroundArea' cellArea' start' end'
    touchManagedPtr renderer
    touchManagedPtr cr
    touchManagedPtr backgroundArea
    touchManagedPtr cellArea
    touchManagedPtr start
    touchManagedPtr end
    return ()

data GutterRendererBeginMethodInfo
instance (signature ~ (Cairo.Context.Context -> Gdk.Rectangle.Rectangle -> Gdk.Rectangle.Rectangle -> Gtk.TextIter.TextIter -> Gtk.TextIter.TextIter -> m ()), MonadIO m, IsGutterRenderer a) => O.MethodInfo GutterRendererBeginMethodInfo a signature where
    overloadedMethod _ = gutterRendererBegin

-- method GutterRenderer::draw
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSourceGutterRenderer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cr", argType = TInterface (Name {namespace = "cairo", name = "Context"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the cairo render context", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "background_area", argType = TInterface (Name {namespace = "Gdk", name = "Rectangle"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GdkRectangle indicating the total area to be drawn", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cell_area", argType = TInterface (Name {namespace = "Gdk", name = "Rectangle"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GdkRectangle indicating the area to draw content", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "start", argType = TInterface (Name {namespace = "Gtk", name = "TextIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkTextIter", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "end", argType = TInterface (Name {namespace = "Gtk", name = "TextIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkTextIter", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "state", argType = TInterface (Name {namespace = "GtkSource", name = "GutterRendererState"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSourceGutterRendererState", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_source_gutter_renderer_draw" gtk_source_gutter_renderer_draw :: 
    Ptr GutterRenderer ->                   -- renderer : TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"})
    Ptr Cairo.Context.Context ->            -- cr : TInterface (Name {namespace = "cairo", name = "Context"})
    Ptr Gdk.Rectangle.Rectangle ->          -- background_area : TInterface (Name {namespace = "Gdk", name = "Rectangle"})
    Ptr Gdk.Rectangle.Rectangle ->          -- cell_area : TInterface (Name {namespace = "Gdk", name = "Rectangle"})
    Ptr Gtk.TextIter.TextIter ->            -- start : TInterface (Name {namespace = "Gtk", name = "TextIter"})
    Ptr Gtk.TextIter.TextIter ->            -- end : TInterface (Name {namespace = "Gtk", name = "TextIter"})
    CUInt ->                                -- state : TInterface (Name {namespace = "GtkSource", name = "GutterRendererState"})
    IO ()

{- |
Main renderering method. Implementations should implement this method to draw
onto the cairo context. The /@backgroundArea@/ indicates the total area of the
cell to be drawn. The /@cellArea@/ indicates the area where content can be
drawn (text, images, etc).

The /@backgroundArea@/ is the /@cellArea@/ plus the padding on each side (two
times the 'GI.GtkSource.Objects.GutterRenderer.GutterRenderer':@/xpad/@ horizontally and two times the
'GI.GtkSource.Objects.GutterRenderer.GutterRenderer':@/ypad/@ vertically, so that the /@cellArea@/ is centered
inside /@backgroundArea@/).

The /@state@/ argument indicates the current state of the renderer and should
be taken into account to properly draw the different possible states
(cursor, prelit, selected) if appropriate.
-}
gutterRendererDraw ::
    (B.CallStack.HasCallStack, MonadIO m, IsGutterRenderer a) =>
    a
    {- ^ /@renderer@/: a 'GI.GtkSource.Objects.GutterRenderer.GutterRenderer' -}
    -> Cairo.Context.Context
    {- ^ /@cr@/: the cairo render context -}
    -> Gdk.Rectangle.Rectangle
    {- ^ /@backgroundArea@/: a 'GI.Gdk.Structs.Rectangle.Rectangle' indicating the total area to be drawn -}
    -> Gdk.Rectangle.Rectangle
    {- ^ /@cellArea@/: a 'GI.Gdk.Structs.Rectangle.Rectangle' indicating the area to draw content -}
    -> Gtk.TextIter.TextIter
    {- ^ /@start@/: a 'GI.Gtk.Structs.TextIter.TextIter' -}
    -> Gtk.TextIter.TextIter
    {- ^ /@end@/: a 'GI.Gtk.Structs.TextIter.TextIter' -}
    -> [GtkSource.Flags.GutterRendererState]
    {- ^ /@state@/: a 'GI.GtkSource.Flags.GutterRendererState' -}
    -> m ()
gutterRendererDraw renderer cr backgroundArea cellArea start end state = liftIO $ do
    renderer' <- unsafeManagedPtrCastPtr renderer
    cr' <- unsafeManagedPtrGetPtr cr
    backgroundArea' <- unsafeManagedPtrGetPtr backgroundArea
    cellArea' <- unsafeManagedPtrGetPtr cellArea
    start' <- unsafeManagedPtrGetPtr start
    end' <- unsafeManagedPtrGetPtr end
    let state' = gflagsToWord state
    gtk_source_gutter_renderer_draw renderer' cr' backgroundArea' cellArea' start' end' state'
    touchManagedPtr renderer
    touchManagedPtr cr
    touchManagedPtr backgroundArea
    touchManagedPtr cellArea
    touchManagedPtr start
    touchManagedPtr end
    return ()

data GutterRendererDrawMethodInfo
instance (signature ~ (Cairo.Context.Context -> Gdk.Rectangle.Rectangle -> Gdk.Rectangle.Rectangle -> Gtk.TextIter.TextIter -> Gtk.TextIter.TextIter -> [GtkSource.Flags.GutterRendererState] -> m ()), MonadIO m, IsGutterRenderer a) => O.MethodInfo GutterRendererDrawMethodInfo a signature where
    overloadedMethod _ = gutterRendererDraw

-- method GutterRenderer::end
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSourceGutterRenderer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_source_gutter_renderer_end" gtk_source_gutter_renderer_end :: 
    Ptr GutterRenderer ->                   -- renderer : TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"})
    IO ()

{- |
Called when drawing a region of lines has ended.
-}
gutterRendererEnd ::
    (B.CallStack.HasCallStack, MonadIO m, IsGutterRenderer a) =>
    a
    {- ^ /@renderer@/: a 'GI.GtkSource.Objects.GutterRenderer.GutterRenderer' -}
    -> m ()
gutterRendererEnd renderer = liftIO $ do
    renderer' <- unsafeManagedPtrCastPtr renderer
    gtk_source_gutter_renderer_end renderer'
    touchManagedPtr renderer
    return ()

data GutterRendererEndMethodInfo
instance (signature ~ (m ()), MonadIO m, IsGutterRenderer a) => O.MethodInfo GutterRendererEndMethodInfo a signature where
    overloadedMethod _ = gutterRendererEnd

-- XXX Could not generate method GutterRenderer::get_alignment
-- Error was : Not implemented: "Don't know how to allocate \"xalign\" of type TBasicType TFloat"
-- XXX: Dummy instance, since code generation failed.
-- Please file a bug at http://github.com/haskell-gi/haskell-gi.
data GutterRendererGetAlignmentMethodInfo
instance (p ~ (), o ~ O.MethodResolutionFailed "getAlignment" GutterRenderer) => O.MethodInfo GutterRendererGetAlignmentMethodInfo o p where
    overloadedMethod _ = undefined
-- method GutterRenderer::get_alignment_mode
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSourceGutterRenderer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "GtkSource", name = "GutterRendererAlignmentMode"}))
-- throws : False
-- Skip return : False

foreign import ccall "gtk_source_gutter_renderer_get_alignment_mode" gtk_source_gutter_renderer_get_alignment_mode :: 
    Ptr GutterRenderer ->                   -- renderer : TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"})
    IO CUInt

{- |
Get the alignment mode. The alignment mode describes the manner in which the
renderer is aligned (see :xalign and :yalign).
-}
gutterRendererGetAlignmentMode ::
    (B.CallStack.HasCallStack, MonadIO m, IsGutterRenderer a) =>
    a
    {- ^ /@renderer@/: a 'GI.GtkSource.Objects.GutterRenderer.GutterRenderer' -}
    -> m GtkSource.Enums.GutterRendererAlignmentMode
    {- ^ __Returns:__ a 'GI.GtkSource.Enums.GutterRendererAlignmentMode' -}
gutterRendererGetAlignmentMode renderer = liftIO $ do
    renderer' <- unsafeManagedPtrCastPtr renderer
    result <- gtk_source_gutter_renderer_get_alignment_mode renderer'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr renderer
    return result'

data GutterRendererGetAlignmentModeMethodInfo
instance (signature ~ (m GtkSource.Enums.GutterRendererAlignmentMode), MonadIO m, IsGutterRenderer a) => O.MethodInfo GutterRendererGetAlignmentModeMethodInfo a signature where
    overloadedMethod _ = gutterRendererGetAlignmentMode

-- method GutterRenderer::get_background
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSourceGutterRenderer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "color", argType = TInterface (Name {namespace = "Gdk", name = "RGBA"}), direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "return value for a #GdkRGBA", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "gtk_source_gutter_renderer_get_background" gtk_source_gutter_renderer_get_background :: 
    Ptr GutterRenderer ->                   -- renderer : TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"})
    Ptr Gdk.RGBA.RGBA ->                    -- color : TInterface (Name {namespace = "Gdk", name = "RGBA"})
    IO CInt

{- |
Get the background color of the renderer.
-}
gutterRendererGetBackground ::
    (B.CallStack.HasCallStack, MonadIO m, IsGutterRenderer a) =>
    a
    {- ^ /@renderer@/: a 'GI.GtkSource.Objects.GutterRenderer.GutterRenderer' -}
    -> m (Bool,Gdk.RGBA.RGBA)
    {- ^ __Returns:__ 'True' if the background color is set, 'False' otherwise -}
gutterRendererGetBackground renderer = liftIO $ do
    renderer' <- unsafeManagedPtrCastPtr renderer
    color <- callocBoxedBytes 32 :: IO (Ptr Gdk.RGBA.RGBA)
    result <- gtk_source_gutter_renderer_get_background renderer' color
    let result' = (/= 0) result
    color' <- (wrapBoxed Gdk.RGBA.RGBA) color
    touchManagedPtr renderer
    return (result', color')

data GutterRendererGetBackgroundMethodInfo
instance (signature ~ (m (Bool,Gdk.RGBA.RGBA)), MonadIO m, IsGutterRenderer a) => O.MethodInfo GutterRendererGetBackgroundMethodInfo a signature where
    overloadedMethod _ = gutterRendererGetBackground

-- XXX Could not generate method GutterRenderer::get_padding
-- Error was : Not implemented: "Don't know how to allocate \"xpad\" of type TBasicType TInt"
-- XXX: Dummy instance, since code generation failed.
-- Please file a bug at http://github.com/haskell-gi/haskell-gi.
data GutterRendererGetPaddingMethodInfo
instance (p ~ (), o ~ O.MethodResolutionFailed "getPadding" GutterRenderer) => O.MethodInfo GutterRendererGetPaddingMethodInfo o p where
    overloadedMethod _ = undefined
-- method GutterRenderer::get_size
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSourceGutterRenderer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TInt)
-- throws : False
-- Skip return : False

foreign import ccall "gtk_source_gutter_renderer_get_size" gtk_source_gutter_renderer_get_size :: 
    Ptr GutterRenderer ->                   -- renderer : TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"})
    IO Int32

{- |
Get the size of the renderer.
-}
gutterRendererGetSize ::
    (B.CallStack.HasCallStack, MonadIO m, IsGutterRenderer a) =>
    a
    {- ^ /@renderer@/: a 'GI.GtkSource.Objects.GutterRenderer.GutterRenderer' -}
    -> m Int32
    {- ^ __Returns:__ the size of the renderer. -}
gutterRendererGetSize renderer = liftIO $ do
    renderer' <- unsafeManagedPtrCastPtr renderer
    result <- gtk_source_gutter_renderer_get_size renderer'
    touchManagedPtr renderer
    return result

data GutterRendererGetSizeMethodInfo
instance (signature ~ (m Int32), MonadIO m, IsGutterRenderer a) => O.MethodInfo GutterRendererGetSizeMethodInfo a signature where
    overloadedMethod _ = gutterRendererGetSize

-- method GutterRenderer::get_view
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSourceGutterRenderer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gtk", name = "TextView"}))
-- throws : False
-- Skip return : False

foreign import ccall "gtk_source_gutter_renderer_get_view" gtk_source_gutter_renderer_get_view :: 
    Ptr GutterRenderer ->                   -- renderer : TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"})
    IO (Ptr Gtk.TextView.TextView)

{- |
Get the view associated to the gutter renderer
-}
gutterRendererGetView ::
    (B.CallStack.HasCallStack, MonadIO m, IsGutterRenderer a) =>
    a
    {- ^ /@renderer@/: a 'GI.GtkSource.Objects.GutterRenderer.GutterRenderer' -}
    -> m Gtk.TextView.TextView
    {- ^ __Returns:__ a 'GI.Gtk.Objects.TextView.TextView' -}
gutterRendererGetView renderer = liftIO $ do
    renderer' <- unsafeManagedPtrCastPtr renderer
    result <- gtk_source_gutter_renderer_get_view renderer'
    checkUnexpectedReturnNULL "gutterRendererGetView" result
    result' <- (newObject Gtk.TextView.TextView) result
    touchManagedPtr renderer
    return result'

data GutterRendererGetViewMethodInfo
instance (signature ~ (m Gtk.TextView.TextView), MonadIO m, IsGutterRenderer a) => O.MethodInfo GutterRendererGetViewMethodInfo a signature where
    overloadedMethod _ = gutterRendererGetView

-- method GutterRenderer::get_visible
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSourceGutterRenderer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "gtk_source_gutter_renderer_get_visible" gtk_source_gutter_renderer_get_visible :: 
    Ptr GutterRenderer ->                   -- renderer : TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"})
    IO CInt

{- |
Get whether the gutter renderer is visible.
-}
gutterRendererGetVisible ::
    (B.CallStack.HasCallStack, MonadIO m, IsGutterRenderer a) =>
    a
    {- ^ /@renderer@/: a 'GI.GtkSource.Objects.GutterRenderer.GutterRenderer' -}
    -> m Bool
    {- ^ __Returns:__ 'True' if the renderer is visible, 'False' otherwise -}
gutterRendererGetVisible renderer = liftIO $ do
    renderer' <- unsafeManagedPtrCastPtr renderer
    result <- gtk_source_gutter_renderer_get_visible renderer'
    let result' = (/= 0) result
    touchManagedPtr renderer
    return result'

data GutterRendererGetVisibleMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsGutterRenderer a) => O.MethodInfo GutterRendererGetVisibleMethodInfo a signature where
    overloadedMethod _ = gutterRendererGetVisible

-- method GutterRenderer::get_window_type
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSourceGutterRenderer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gtk", name = "TextWindowType"}))
-- throws : False
-- Skip return : False

foreign import ccall "gtk_source_gutter_renderer_get_window_type" gtk_source_gutter_renderer_get_window_type :: 
    Ptr GutterRenderer ->                   -- renderer : TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"})
    IO CUInt

{- |
Get the 'GI.Gtk.Enums.TextWindowType' associated with the gutter renderer.
-}
gutterRendererGetWindowType ::
    (B.CallStack.HasCallStack, MonadIO m, IsGutterRenderer a) =>
    a
    {- ^ /@renderer@/: a 'GI.GtkSource.Objects.GutterRenderer.GutterRenderer' -}
    -> m Gtk.Enums.TextWindowType
    {- ^ __Returns:__ a 'GI.Gtk.Enums.TextWindowType' -}
gutterRendererGetWindowType renderer = liftIO $ do
    renderer' <- unsafeManagedPtrCastPtr renderer
    result <- gtk_source_gutter_renderer_get_window_type renderer'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr renderer
    return result'

data GutterRendererGetWindowTypeMethodInfo
instance (signature ~ (m Gtk.Enums.TextWindowType), MonadIO m, IsGutterRenderer a) => O.MethodInfo GutterRendererGetWindowTypeMethodInfo a signature where
    overloadedMethod _ = gutterRendererGetWindowType

-- method GutterRenderer::query_activatable
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSourceGutterRenderer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "iter", argType = TInterface (Name {namespace = "Gtk", name = "TextIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkTextIter at the start of the line to be activated", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "area", argType = TInterface (Name {namespace = "Gdk", name = "Rectangle"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GdkRectangle of the cell area to be activated", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "event", argType = TInterface (Name {namespace = "Gdk", name = "Event"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the event that triggered the query", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "gtk_source_gutter_renderer_query_activatable" gtk_source_gutter_renderer_query_activatable :: 
    Ptr GutterRenderer ->                   -- renderer : TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"})
    Ptr Gtk.TextIter.TextIter ->            -- iter : TInterface (Name {namespace = "Gtk", name = "TextIter"})
    Ptr Gdk.Rectangle.Rectangle ->          -- area : TInterface (Name {namespace = "Gdk", name = "Rectangle"})
    Ptr Gdk.Event.Event ->                  -- event : TInterface (Name {namespace = "Gdk", name = "Event"})
    IO CInt

{- |
Get whether the renderer is activatable at the location in /@event@/. This is
called from 'GI.GtkSource.Objects.Gutter.Gutter' to determine whether a renderer is activatable
using the mouse pointer.
-}
gutterRendererQueryActivatable ::
    (B.CallStack.HasCallStack, MonadIO m, IsGutterRenderer a) =>
    a
    {- ^ /@renderer@/: a 'GI.GtkSource.Objects.GutterRenderer.GutterRenderer' -}
    -> Gtk.TextIter.TextIter
    {- ^ /@iter@/: a 'GI.Gtk.Structs.TextIter.TextIter' at the start of the line to be activated -}
    -> Gdk.Rectangle.Rectangle
    {- ^ /@area@/: a 'GI.Gdk.Structs.Rectangle.Rectangle' of the cell area to be activated -}
    -> Gdk.Event.Event
    {- ^ /@event@/: the event that triggered the query -}
    -> m Bool
    {- ^ __Returns:__ 'True' if the renderer can be activated, 'False' otherwise -}
gutterRendererQueryActivatable renderer iter area event = liftIO $ do
    renderer' <- unsafeManagedPtrCastPtr renderer
    iter' <- unsafeManagedPtrGetPtr iter
    area' <- unsafeManagedPtrGetPtr area
    event' <- unsafeManagedPtrGetPtr event
    result <- gtk_source_gutter_renderer_query_activatable renderer' iter' area' event'
    let result' = (/= 0) result
    touchManagedPtr renderer
    touchManagedPtr iter
    touchManagedPtr area
    touchManagedPtr event
    return result'

data GutterRendererQueryActivatableMethodInfo
instance (signature ~ (Gtk.TextIter.TextIter -> Gdk.Rectangle.Rectangle -> Gdk.Event.Event -> m Bool), MonadIO m, IsGutterRenderer a) => O.MethodInfo GutterRendererQueryActivatableMethodInfo a signature where
    overloadedMethod _ = gutterRendererQueryActivatable

-- method GutterRenderer::query_data
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSourceGutterRenderer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "start", argType = TInterface (Name {namespace = "Gtk", name = "TextIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkTextIter.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "end", argType = TInterface (Name {namespace = "Gtk", name = "TextIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkTextIter.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "state", argType = TInterface (Name {namespace = "GtkSource", name = "GutterRendererState"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSourceGutterRendererState.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_source_gutter_renderer_query_data" gtk_source_gutter_renderer_query_data :: 
    Ptr GutterRenderer ->                   -- renderer : TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"})
    Ptr Gtk.TextIter.TextIter ->            -- start : TInterface (Name {namespace = "Gtk", name = "TextIter"})
    Ptr Gtk.TextIter.TextIter ->            -- end : TInterface (Name {namespace = "Gtk", name = "TextIter"})
    CUInt ->                                -- state : TInterface (Name {namespace = "GtkSource", name = "GutterRendererState"})
    IO ()

{- |
Emit the 'GI.GtkSource.Objects.GutterRenderer.GutterRenderer'::@/query-data/@ signal. This function is called
to query for data just before rendering a cell. This is called from the
'GI.GtkSource.Objects.Gutter.Gutter'.  Implementations can override the default signal handler or
can connect a signal handler externally to the
'GI.GtkSource.Objects.GutterRenderer.GutterRenderer'::@/query-data/@ signal.
-}
gutterRendererQueryData ::
    (B.CallStack.HasCallStack, MonadIO m, IsGutterRenderer a) =>
    a
    {- ^ /@renderer@/: a 'GI.GtkSource.Objects.GutterRenderer.GutterRenderer'. -}
    -> Gtk.TextIter.TextIter
    {- ^ /@start@/: a 'GI.Gtk.Structs.TextIter.TextIter'. -}
    -> Gtk.TextIter.TextIter
    {- ^ /@end@/: a 'GI.Gtk.Structs.TextIter.TextIter'. -}
    -> [GtkSource.Flags.GutterRendererState]
    {- ^ /@state@/: a 'GI.GtkSource.Flags.GutterRendererState'. -}
    -> m ()
gutterRendererQueryData renderer start end state = liftIO $ do
    renderer' <- unsafeManagedPtrCastPtr renderer
    start' <- unsafeManagedPtrGetPtr start
    end' <- unsafeManagedPtrGetPtr end
    let state' = gflagsToWord state
    gtk_source_gutter_renderer_query_data renderer' start' end' state'
    touchManagedPtr renderer
    touchManagedPtr start
    touchManagedPtr end
    return ()

data GutterRendererQueryDataMethodInfo
instance (signature ~ (Gtk.TextIter.TextIter -> Gtk.TextIter.TextIter -> [GtkSource.Flags.GutterRendererState] -> m ()), MonadIO m, IsGutterRenderer a) => O.MethodInfo GutterRendererQueryDataMethodInfo a signature where
    overloadedMethod _ = gutterRendererQueryData

-- method GutterRenderer::query_tooltip
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSourceGutterRenderer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "iter", argType = TInterface (Name {namespace = "Gtk", name = "TextIter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkTextIter.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "area", argType = TInterface (Name {namespace = "Gdk", name = "Rectangle"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GdkRectangle.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "x", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The x position of the tooltip.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "y", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The y position of the tooltip.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "tooltip", argType = TInterface (Name {namespace = "Gtk", name = "Tooltip"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkTooltip.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "gtk_source_gutter_renderer_query_tooltip" gtk_source_gutter_renderer_query_tooltip :: 
    Ptr GutterRenderer ->                   -- renderer : TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"})
    Ptr Gtk.TextIter.TextIter ->            -- iter : TInterface (Name {namespace = "Gtk", name = "TextIter"})
    Ptr Gdk.Rectangle.Rectangle ->          -- area : TInterface (Name {namespace = "Gdk", name = "Rectangle"})
    Int32 ->                                -- x : TBasicType TInt
    Int32 ->                                -- y : TBasicType TInt
    Ptr Gtk.Tooltip.Tooltip ->              -- tooltip : TInterface (Name {namespace = "Gtk", name = "Tooltip"})
    IO CInt

{- |
Emits the 'GI.GtkSource.Objects.GutterRenderer.GutterRenderer'::@/query-tooltip/@ signal. This function is
called from 'GI.GtkSource.Objects.Gutter.Gutter'. Implementations can override the default signal
handler or can connect to the signal externally.
-}
gutterRendererQueryTooltip ::
    (B.CallStack.HasCallStack, MonadIO m, IsGutterRenderer a, Gtk.Tooltip.IsTooltip b) =>
    a
    {- ^ /@renderer@/: a 'GI.GtkSource.Objects.GutterRenderer.GutterRenderer'. -}
    -> Gtk.TextIter.TextIter
    {- ^ /@iter@/: a 'GI.Gtk.Structs.TextIter.TextIter'. -}
    -> Gdk.Rectangle.Rectangle
    {- ^ /@area@/: a 'GI.Gdk.Structs.Rectangle.Rectangle'. -}
    -> Int32
    {- ^ /@x@/: The x position of the tooltip. -}
    -> Int32
    {- ^ /@y@/: The y position of the tooltip. -}
    -> b
    {- ^ /@tooltip@/: a 'GI.Gtk.Objects.Tooltip.Tooltip'. -}
    -> m Bool
    {- ^ __Returns:__ 'True' if the tooltip has been set, 'False' otherwise -}
gutterRendererQueryTooltip renderer iter area x y tooltip = liftIO $ do
    renderer' <- unsafeManagedPtrCastPtr renderer
    iter' <- unsafeManagedPtrGetPtr iter
    area' <- unsafeManagedPtrGetPtr area
    tooltip' <- unsafeManagedPtrCastPtr tooltip
    result <- gtk_source_gutter_renderer_query_tooltip renderer' iter' area' x y tooltip'
    let result' = (/= 0) result
    touchManagedPtr renderer
    touchManagedPtr iter
    touchManagedPtr area
    touchManagedPtr tooltip
    return result'

data GutterRendererQueryTooltipMethodInfo
instance (signature ~ (Gtk.TextIter.TextIter -> Gdk.Rectangle.Rectangle -> Int32 -> Int32 -> b -> m Bool), MonadIO m, IsGutterRenderer a, Gtk.Tooltip.IsTooltip b) => O.MethodInfo GutterRendererQueryTooltipMethodInfo a signature where
    overloadedMethod _ = gutterRendererQueryTooltip

-- method GutterRenderer::queue_draw
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSourceGutterRenderer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_source_gutter_renderer_queue_draw" gtk_source_gutter_renderer_queue_draw :: 
    Ptr GutterRenderer ->                   -- renderer : TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"})
    IO ()

{- |
Emits the 'GI.GtkSource.Objects.GutterRenderer.GutterRenderer'::@/queue-draw/@ signal of the renderer. Call
this from an implementation to inform that the renderer has changed such that
it needs to redraw.
-}
gutterRendererQueueDraw ::
    (B.CallStack.HasCallStack, MonadIO m, IsGutterRenderer a) =>
    a
    {- ^ /@renderer@/: a 'GI.GtkSource.Objects.GutterRenderer.GutterRenderer' -}
    -> m ()
gutterRendererQueueDraw renderer = liftIO $ do
    renderer' <- unsafeManagedPtrCastPtr renderer
    gtk_source_gutter_renderer_queue_draw renderer'
    touchManagedPtr renderer
    return ()

data GutterRendererQueueDrawMethodInfo
instance (signature ~ (m ()), MonadIO m, IsGutterRenderer a) => O.MethodInfo GutterRendererQueueDrawMethodInfo a signature where
    overloadedMethod _ = gutterRendererQueueDraw

-- method GutterRenderer::set_alignment
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSourceGutterRenderer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "xalign", argType = TBasicType TFloat, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the x-alignment", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "yalign", argType = TBasicType TFloat, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the y-alignment", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_source_gutter_renderer_set_alignment" gtk_source_gutter_renderer_set_alignment :: 
    Ptr GutterRenderer ->                   -- renderer : TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"})
    CFloat ->                               -- xalign : TBasicType TFloat
    CFloat ->                               -- yalign : TBasicType TFloat
    IO ()

{- |
Set the alignment of the gutter renderer. Both /@xalign@/ and /@yalign@/ can be
-1, which means the values will not be changed (this allows changing only
one of the values).

/@xalign@/ is the horizontal alignment. Set to 0 for a left alignment. 1 for a
right alignment. And 0.5 for centering the cells. /@yalign@/ is the vertical
alignment. Set to 0 for a top alignment. 1 for a bottom alignment.
-}
gutterRendererSetAlignment ::
    (B.CallStack.HasCallStack, MonadIO m, IsGutterRenderer a) =>
    a
    {- ^ /@renderer@/: a 'GI.GtkSource.Objects.GutterRenderer.GutterRenderer' -}
    -> Float
    {- ^ /@xalign@/: the x-alignment -}
    -> Float
    {- ^ /@yalign@/: the y-alignment -}
    -> m ()
gutterRendererSetAlignment renderer xalign yalign = liftIO $ do
    renderer' <- unsafeManagedPtrCastPtr renderer
    let xalign' = realToFrac xalign
    let yalign' = realToFrac yalign
    gtk_source_gutter_renderer_set_alignment renderer' xalign' yalign'
    touchManagedPtr renderer
    return ()

data GutterRendererSetAlignmentMethodInfo
instance (signature ~ (Float -> Float -> m ()), MonadIO m, IsGutterRenderer a) => O.MethodInfo GutterRendererSetAlignmentMethodInfo a signature where
    overloadedMethod _ = gutterRendererSetAlignment

-- method GutterRenderer::set_alignment_mode
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSourceGutterRenderer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "mode", argType = TInterface (Name {namespace = "GtkSource", name = "GutterRendererAlignmentMode"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSourceGutterRendererAlignmentMode", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_source_gutter_renderer_set_alignment_mode" gtk_source_gutter_renderer_set_alignment_mode :: 
    Ptr GutterRenderer ->                   -- renderer : TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"})
    CUInt ->                                -- mode : TInterface (Name {namespace = "GtkSource", name = "GutterRendererAlignmentMode"})
    IO ()

{- |
Set the alignment mode. The alignment mode describes the manner in which the
renderer is aligned (see :xalign and :yalign).
-}
gutterRendererSetAlignmentMode ::
    (B.CallStack.HasCallStack, MonadIO m, IsGutterRenderer a) =>
    a
    {- ^ /@renderer@/: a 'GI.GtkSource.Objects.GutterRenderer.GutterRenderer' -}
    -> GtkSource.Enums.GutterRendererAlignmentMode
    {- ^ /@mode@/: a 'GI.GtkSource.Enums.GutterRendererAlignmentMode' -}
    -> m ()
gutterRendererSetAlignmentMode renderer mode = liftIO $ do
    renderer' <- unsafeManagedPtrCastPtr renderer
    let mode' = (fromIntegral . fromEnum) mode
    gtk_source_gutter_renderer_set_alignment_mode renderer' mode'
    touchManagedPtr renderer
    return ()

data GutterRendererSetAlignmentModeMethodInfo
instance (signature ~ (GtkSource.Enums.GutterRendererAlignmentMode -> m ()), MonadIO m, IsGutterRenderer a) => O.MethodInfo GutterRendererSetAlignmentModeMethodInfo a signature where
    overloadedMethod _ = gutterRendererSetAlignmentMode

-- method GutterRenderer::set_background
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSourceGutterRenderer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "color", argType = TInterface (Name {namespace = "Gdk", name = "RGBA"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GdkRGBA or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_source_gutter_renderer_set_background" gtk_source_gutter_renderer_set_background :: 
    Ptr GutterRenderer ->                   -- renderer : TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"})
    Ptr Gdk.RGBA.RGBA ->                    -- color : TInterface (Name {namespace = "Gdk", name = "RGBA"})
    IO ()

{- |
Set the background color of the renderer. If /@color@/ is set to 'Nothing', the
renderer will not have a background color.
-}
gutterRendererSetBackground ::
    (B.CallStack.HasCallStack, MonadIO m, IsGutterRenderer a) =>
    a
    {- ^ /@renderer@/: a 'GI.GtkSource.Objects.GutterRenderer.GutterRenderer' -}
    -> Maybe (Gdk.RGBA.RGBA)
    {- ^ /@color@/: a 'GI.Gdk.Structs.RGBA.RGBA' or 'Nothing' -}
    -> m ()
gutterRendererSetBackground renderer color = liftIO $ do
    renderer' <- unsafeManagedPtrCastPtr renderer
    maybeColor <- case color of
        Nothing -> return nullPtr
        Just jColor -> do
            jColor' <- unsafeManagedPtrGetPtr jColor
            return jColor'
    gtk_source_gutter_renderer_set_background renderer' maybeColor
    touchManagedPtr renderer
    whenJust color touchManagedPtr
    return ()

data GutterRendererSetBackgroundMethodInfo
instance (signature ~ (Maybe (Gdk.RGBA.RGBA) -> m ()), MonadIO m, IsGutterRenderer a) => O.MethodInfo GutterRendererSetBackgroundMethodInfo a signature where
    overloadedMethod _ = gutterRendererSetBackground

-- method GutterRenderer::set_padding
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSourceGutterRenderer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "xpad", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the x-padding", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "ypad", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the y-padding", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_source_gutter_renderer_set_padding" gtk_source_gutter_renderer_set_padding :: 
    Ptr GutterRenderer ->                   -- renderer : TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"})
    Int32 ->                                -- xpad : TBasicType TInt
    Int32 ->                                -- ypad : TBasicType TInt
    IO ()

{- |
Set the padding of the gutter renderer. Both /@xpad@/ and /@ypad@/ can be
-1, which means the values will not be changed (this allows changing only
one of the values).

/@xpad@/ is the left and right padding. /@ypad@/ is the top and bottom padding.
-}
gutterRendererSetPadding ::
    (B.CallStack.HasCallStack, MonadIO m, IsGutterRenderer a) =>
    a
    {- ^ /@renderer@/: a 'GI.GtkSource.Objects.GutterRenderer.GutterRenderer' -}
    -> Int32
    {- ^ /@xpad@/: the x-padding -}
    -> Int32
    {- ^ /@ypad@/: the y-padding -}
    -> m ()
gutterRendererSetPadding renderer xpad ypad = liftIO $ do
    renderer' <- unsafeManagedPtrCastPtr renderer
    gtk_source_gutter_renderer_set_padding renderer' xpad ypad
    touchManagedPtr renderer
    return ()

data GutterRendererSetPaddingMethodInfo
instance (signature ~ (Int32 -> Int32 -> m ()), MonadIO m, IsGutterRenderer a) => O.MethodInfo GutterRendererSetPaddingMethodInfo a signature where
    overloadedMethod _ = gutterRendererSetPadding

-- method GutterRenderer::set_size
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSourceGutterRenderer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "size", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the size", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_source_gutter_renderer_set_size" gtk_source_gutter_renderer_set_size :: 
    Ptr GutterRenderer ->                   -- renderer : TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"})
    Int32 ->                                -- size : TBasicType TInt
    IO ()

{- |
Sets the size of the renderer. A value of -1 specifies that the size
is to be determined dynamically.
-}
gutterRendererSetSize ::
    (B.CallStack.HasCallStack, MonadIO m, IsGutterRenderer a) =>
    a
    {- ^ /@renderer@/: a 'GI.GtkSource.Objects.GutterRenderer.GutterRenderer' -}
    -> Int32
    {- ^ /@size@/: the size -}
    -> m ()
gutterRendererSetSize renderer size = liftIO $ do
    renderer' <- unsafeManagedPtrCastPtr renderer
    gtk_source_gutter_renderer_set_size renderer' size
    touchManagedPtr renderer
    return ()

data GutterRendererSetSizeMethodInfo
instance (signature ~ (Int32 -> m ()), MonadIO m, IsGutterRenderer a) => O.MethodInfo GutterRendererSetSizeMethodInfo a signature where
    overloadedMethod _ = gutterRendererSetSize

-- method GutterRenderer::set_visible
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "renderer", argType = TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GtkSourceGutterRenderer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "visible", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the visibility", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gtk_source_gutter_renderer_set_visible" gtk_source_gutter_renderer_set_visible :: 
    Ptr GutterRenderer ->                   -- renderer : TInterface (Name {namespace = "GtkSource", name = "GutterRenderer"})
    CInt ->                                 -- visible : TBasicType TBoolean
    IO ()

{- |
Set whether the gutter renderer is visible.
-}
gutterRendererSetVisible ::
    (B.CallStack.HasCallStack, MonadIO m, IsGutterRenderer a) =>
    a
    {- ^ /@renderer@/: a 'GI.GtkSource.Objects.GutterRenderer.GutterRenderer' -}
    -> Bool
    {- ^ /@visible@/: the visibility -}
    -> m ()
gutterRendererSetVisible renderer visible = liftIO $ do
    renderer' <- unsafeManagedPtrCastPtr renderer
    let visible' = (fromIntegral . fromEnum) visible
    gtk_source_gutter_renderer_set_visible renderer' visible'
    touchManagedPtr renderer
    return ()

data GutterRendererSetVisibleMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m, IsGutterRenderer a) => O.MethodInfo GutterRendererSetVisibleMethodInfo a signature where
    overloadedMethod _ = gutterRendererSetVisible