packages feed

gi-gtk-0.3.18.13: GI/Gtk/Objects/AccelGroup.hs


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

module GI.Gtk.Objects.AccelGroup
    ( 

-- * Exported types
    AccelGroup(..)                          ,
    AccelGroupK                             ,
    toAccelGroup                            ,
    noAccelGroup                            ,


 -- * Methods
-- ** accelGroupActivate
    AccelGroupActivateMethodInfo            ,
    accelGroupActivate                      ,


-- ** accelGroupConnect
    AccelGroupConnectMethodInfo             ,
    accelGroupConnect                       ,


-- ** accelGroupConnectByPath
    AccelGroupConnectByPathMethodInfo       ,
    accelGroupConnectByPath                 ,


-- ** accelGroupDisconnect
    AccelGroupDisconnectMethodInfo          ,
    accelGroupDisconnect                    ,


-- ** accelGroupDisconnectKey
    AccelGroupDisconnectKeyMethodInfo       ,
    accelGroupDisconnectKey                 ,


-- ** accelGroupFind
    AccelGroupFindMethodInfo                ,
    accelGroupFind                          ,


-- ** accelGroupFromAccelClosure
    accelGroupFromAccelClosure              ,


-- ** accelGroupGetIsLocked
    AccelGroupGetIsLockedMethodInfo         ,
    accelGroupGetIsLocked                   ,


-- ** accelGroupGetModifierMask
    AccelGroupGetModifierMaskMethodInfo     ,
    accelGroupGetModifierMask               ,


-- ** accelGroupLock
    AccelGroupLockMethodInfo                ,
    accelGroupLock                          ,


-- ** accelGroupNew
    accelGroupNew                           ,


-- ** accelGroupQuery
    AccelGroupQueryMethodInfo               ,
    accelGroupQuery                         ,


-- ** accelGroupUnlock
    AccelGroupUnlockMethodInfo              ,
    accelGroupUnlock                        ,




 -- * Properties
-- ** IsLocked
    AccelGroupIsLockedPropertyInfo          ,
    getAccelGroupIsLocked                   ,


-- ** ModifierMask
    AccelGroupModifierMaskPropertyInfo      ,
    getAccelGroupModifierMask               ,




 -- * Signals
-- ** AccelActivate
    AccelGroupAccelActivateCallback         ,
    AccelGroupAccelActivateCallbackC        ,
    AccelGroupAccelActivateSignalInfo       ,
    accelGroupAccelActivateCallbackWrapper  ,
    accelGroupAccelActivateClosure          ,
    afterAccelGroupAccelActivate            ,
    mkAccelGroupAccelActivateCallback       ,
    noAccelGroupAccelActivateCallback       ,
    onAccelGroupAccelActivate               ,


-- ** AccelChanged
    AccelGroupAccelChangedCallback          ,
    AccelGroupAccelChangedCallbackC         ,
    AccelGroupAccelChangedSignalInfo        ,
    accelGroupAccelChangedCallbackWrapper   ,
    accelGroupAccelChangedClosure           ,
    afterAccelGroupAccelChanged             ,
    mkAccelGroupAccelChangedCallback        ,
    noAccelGroupAccelChangedCallback        ,
    onAccelGroupAccelChanged                ,




    ) where

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

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

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

newtype AccelGroup = AccelGroup (ForeignPtr AccelGroup)
foreign import ccall "gtk_accel_group_get_type"
    c_gtk_accel_group_get_type :: IO GType

type instance ParentTypes AccelGroup = AccelGroupParentTypes
type AccelGroupParentTypes = '[GObject.Object]

instance GObject AccelGroup where
    gobjectIsInitiallyUnowned _ = False
    gobjectType _ = c_gtk_accel_group_get_type
    

class GObject o => AccelGroupK o
instance (GObject o, IsDescendantOf AccelGroup o) => AccelGroupK o

toAccelGroup :: AccelGroupK o => o -> IO AccelGroup
toAccelGroup = unsafeCastTo AccelGroup

noAccelGroup :: Maybe AccelGroup
noAccelGroup = Nothing

type family ResolveAccelGroupMethod (t :: Symbol) (o :: *) :: * where
    ResolveAccelGroupMethod "activate" o = AccelGroupActivateMethodInfo
    ResolveAccelGroupMethod "bindProperty" o = GObject.ObjectBindPropertyMethodInfo
    ResolveAccelGroupMethod "bindPropertyFull" o = GObject.ObjectBindPropertyFullMethodInfo
    ResolveAccelGroupMethod "connect" o = AccelGroupConnectMethodInfo
    ResolveAccelGroupMethod "connectByPath" o = AccelGroupConnectByPathMethodInfo
    ResolveAccelGroupMethod "disconnect" o = AccelGroupDisconnectMethodInfo
    ResolveAccelGroupMethod "disconnectKey" o = AccelGroupDisconnectKeyMethodInfo
    ResolveAccelGroupMethod "find" o = AccelGroupFindMethodInfo
    ResolveAccelGroupMethod "forceFloating" o = GObject.ObjectForceFloatingMethodInfo
    ResolveAccelGroupMethod "freezeNotify" o = GObject.ObjectFreezeNotifyMethodInfo
    ResolveAccelGroupMethod "isFloating" o = GObject.ObjectIsFloatingMethodInfo
    ResolveAccelGroupMethod "lock" o = AccelGroupLockMethodInfo
    ResolveAccelGroupMethod "notify" o = GObject.ObjectNotifyMethodInfo
    ResolveAccelGroupMethod "notifyByPspec" o = GObject.ObjectNotifyByPspecMethodInfo
    ResolveAccelGroupMethod "query" o = AccelGroupQueryMethodInfo
    ResolveAccelGroupMethod "ref" o = GObject.ObjectRefMethodInfo
    ResolveAccelGroupMethod "refSink" o = GObject.ObjectRefSinkMethodInfo
    ResolveAccelGroupMethod "replaceData" o = GObject.ObjectReplaceDataMethodInfo
    ResolveAccelGroupMethod "replaceQdata" o = GObject.ObjectReplaceQdataMethodInfo
    ResolveAccelGroupMethod "runDispose" o = GObject.ObjectRunDisposeMethodInfo
    ResolveAccelGroupMethod "stealData" o = GObject.ObjectStealDataMethodInfo
    ResolveAccelGroupMethod "stealQdata" o = GObject.ObjectStealQdataMethodInfo
    ResolveAccelGroupMethod "thawNotify" o = GObject.ObjectThawNotifyMethodInfo
    ResolveAccelGroupMethod "unlock" o = AccelGroupUnlockMethodInfo
    ResolveAccelGroupMethod "unref" o = GObject.ObjectUnrefMethodInfo
    ResolveAccelGroupMethod "watchClosure" o = GObject.ObjectWatchClosureMethodInfo
    ResolveAccelGroupMethod "getData" o = GObject.ObjectGetDataMethodInfo
    ResolveAccelGroupMethod "getIsLocked" o = AccelGroupGetIsLockedMethodInfo
    ResolveAccelGroupMethod "getModifierMask" o = AccelGroupGetModifierMaskMethodInfo
    ResolveAccelGroupMethod "getProperty" o = GObject.ObjectGetPropertyMethodInfo
    ResolveAccelGroupMethod "getQdata" o = GObject.ObjectGetQdataMethodInfo
    ResolveAccelGroupMethod "setData" o = GObject.ObjectSetDataMethodInfo
    ResolveAccelGroupMethod "setProperty" o = GObject.ObjectSetPropertyMethodInfo
    ResolveAccelGroupMethod l o = MethodResolutionFailed l o

instance (info ~ ResolveAccelGroupMethod t AccelGroup, MethodInfo info AccelGroup p) => IsLabelProxy t (AccelGroup -> p) where
    fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)

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

-- signal AccelGroup::accel-activate
type AccelGroupAccelActivateCallback =
    GObject.Object ->
    Word32 ->
    [Gdk.ModifierType] ->
    IO Bool

noAccelGroupAccelActivateCallback :: Maybe AccelGroupAccelActivateCallback
noAccelGroupAccelActivateCallback = Nothing

type AccelGroupAccelActivateCallbackC =
    Ptr () ->                               -- object
    Ptr GObject.Object ->
    Word32 ->
    CUInt ->
    Ptr () ->                               -- user_data
    IO CInt

foreign import ccall "wrapper"
    mkAccelGroupAccelActivateCallback :: AccelGroupAccelActivateCallbackC -> IO (FunPtr AccelGroupAccelActivateCallbackC)

accelGroupAccelActivateClosure :: AccelGroupAccelActivateCallback -> IO Closure
accelGroupAccelActivateClosure cb = newCClosure =<< mkAccelGroupAccelActivateCallback wrapped
    where wrapped = accelGroupAccelActivateCallbackWrapper cb

accelGroupAccelActivateCallbackWrapper ::
    AccelGroupAccelActivateCallback ->
    Ptr () ->
    Ptr GObject.Object ->
    Word32 ->
    CUInt ->
    Ptr () ->
    IO CInt
accelGroupAccelActivateCallbackWrapper _cb _ acceleratable keyval modifier _ = do
    acceleratable' <- (newObject GObject.Object) acceleratable
    let modifier' = wordToGFlags modifier
    result <- _cb  acceleratable' keyval modifier'
    let result' = (fromIntegral . fromEnum) result
    return result'

onAccelGroupAccelActivate :: (GObject a, MonadIO m) => a -> AccelGroupAccelActivateCallback -> m SignalHandlerId
onAccelGroupAccelActivate obj cb = liftIO $ connectAccelGroupAccelActivate obj cb SignalConnectBefore
afterAccelGroupAccelActivate :: (GObject a, MonadIO m) => a -> AccelGroupAccelActivateCallback -> m SignalHandlerId
afterAccelGroupAccelActivate obj cb = connectAccelGroupAccelActivate obj cb SignalConnectAfter

connectAccelGroupAccelActivate :: (GObject a, MonadIO m) =>
                                  a -> AccelGroupAccelActivateCallback -> SignalConnectMode -> m SignalHandlerId
connectAccelGroupAccelActivate obj cb after = liftIO $ do
    cb' <- mkAccelGroupAccelActivateCallback (accelGroupAccelActivateCallbackWrapper cb)
    connectSignalFunPtr obj "accel-activate" cb' after

-- signal AccelGroup::accel-changed
type AccelGroupAccelChangedCallback =
    Word32 ->
    [Gdk.ModifierType] ->
    Closure ->
    IO ()

noAccelGroupAccelChangedCallback :: Maybe AccelGroupAccelChangedCallback
noAccelGroupAccelChangedCallback = Nothing

type AccelGroupAccelChangedCallbackC =
    Ptr () ->                               -- object
    Word32 ->
    CUInt ->
    Ptr Closure ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkAccelGroupAccelChangedCallback :: AccelGroupAccelChangedCallbackC -> IO (FunPtr AccelGroupAccelChangedCallbackC)

accelGroupAccelChangedClosure :: AccelGroupAccelChangedCallback -> IO Closure
accelGroupAccelChangedClosure cb = newCClosure =<< mkAccelGroupAccelChangedCallback wrapped
    where wrapped = accelGroupAccelChangedCallbackWrapper cb

accelGroupAccelChangedCallbackWrapper ::
    AccelGroupAccelChangedCallback ->
    Ptr () ->
    Word32 ->
    CUInt ->
    Ptr Closure ->
    Ptr () ->
    IO ()
accelGroupAccelChangedCallbackWrapper _cb _ keyval modifier accelClosure _ = do
    let modifier' = wordToGFlags modifier
    accelClosure' <- (newBoxed Closure) accelClosure
    _cb  keyval modifier' accelClosure'

onAccelGroupAccelChanged :: (GObject a, MonadIO m) => a -> AccelGroupAccelChangedCallback -> m SignalHandlerId
onAccelGroupAccelChanged obj cb = liftIO $ connectAccelGroupAccelChanged obj cb SignalConnectBefore
afterAccelGroupAccelChanged :: (GObject a, MonadIO m) => a -> AccelGroupAccelChangedCallback -> m SignalHandlerId
afterAccelGroupAccelChanged obj cb = connectAccelGroupAccelChanged obj cb SignalConnectAfter

connectAccelGroupAccelChanged :: (GObject a, MonadIO m) =>
                                 a -> AccelGroupAccelChangedCallback -> SignalConnectMode -> m SignalHandlerId
connectAccelGroupAccelChanged obj cb after = liftIO $ do
    cb' <- mkAccelGroupAccelChangedCallback (accelGroupAccelChangedCallbackWrapper cb)
    connectSignalFunPtr obj "accel-changed" cb' after

-- VVV Prop "is-locked"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable]

getAccelGroupIsLocked :: (MonadIO m, AccelGroupK o) => o -> m Bool
getAccelGroupIsLocked obj = liftIO $ getObjectPropertyBool obj "is-locked"

data AccelGroupIsLockedPropertyInfo
instance AttrInfo AccelGroupIsLockedPropertyInfo where
    type AttrAllowedOps AccelGroupIsLockedPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint AccelGroupIsLockedPropertyInfo = (~) ()
    type AttrBaseTypeConstraint AccelGroupIsLockedPropertyInfo = AccelGroupK
    type AttrGetType AccelGroupIsLockedPropertyInfo = Bool
    type AttrLabel AccelGroupIsLockedPropertyInfo = "is-locked"
    attrGet _ = getAccelGroupIsLocked
    attrSet _ = undefined
    attrConstruct _ = undefined

-- VVV Prop "modifier-mask"
   -- Type: TInterface "Gdk" "ModifierType"
   -- Flags: [PropertyReadable]

getAccelGroupModifierMask :: (MonadIO m, AccelGroupK o) => o -> m [Gdk.ModifierType]
getAccelGroupModifierMask obj = liftIO $ getObjectPropertyFlags obj "modifier-mask"

data AccelGroupModifierMaskPropertyInfo
instance AttrInfo AccelGroupModifierMaskPropertyInfo where
    type AttrAllowedOps AccelGroupModifierMaskPropertyInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint AccelGroupModifierMaskPropertyInfo = (~) ()
    type AttrBaseTypeConstraint AccelGroupModifierMaskPropertyInfo = AccelGroupK
    type AttrGetType AccelGroupModifierMaskPropertyInfo = [Gdk.ModifierType]
    type AttrLabel AccelGroupModifierMaskPropertyInfo = "modifier-mask"
    attrGet _ = getAccelGroupModifierMask
    attrSet _ = undefined
    attrConstruct _ = undefined

type instance AttributeList AccelGroup = AccelGroupAttributeList
type AccelGroupAttributeList = ('[ '("isLocked", AccelGroupIsLockedPropertyInfo), '("modifierMask", AccelGroupModifierMaskPropertyInfo)] :: [(Symbol, *)])

data AccelGroupAccelActivateSignalInfo
instance SignalInfo AccelGroupAccelActivateSignalInfo where
    type HaskellCallbackType AccelGroupAccelActivateSignalInfo = AccelGroupAccelActivateCallback
    connectSignal _ = connectAccelGroupAccelActivate

data AccelGroupAccelChangedSignalInfo
instance SignalInfo AccelGroupAccelChangedSignalInfo where
    type HaskellCallbackType AccelGroupAccelChangedSignalInfo = AccelGroupAccelChangedCallback
    connectSignal _ = connectAccelGroupAccelChanged

type instance SignalList AccelGroup = AccelGroupSignalList
type AccelGroupSignalList = ('[ '("accelActivate", AccelGroupAccelActivateSignalInfo), '("accelChanged", AccelGroupAccelChangedSignalInfo), '("notify", GObject.ObjectNotifySignalInfo)] :: [(Symbol, *)])

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

foreign import ccall "gtk_accel_group_new" gtk_accel_group_new :: 
    IO (Ptr AccelGroup)


accelGroupNew ::
    (MonadIO m) =>
    m AccelGroup                            -- result
accelGroupNew  = liftIO $ do
    result <- gtk_accel_group_new
    checkUnexpectedReturnNULL "gtk_accel_group_new" result
    result' <- (wrapObject AccelGroup) result
    return result'

-- method AccelGroup::activate
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gtk" "AccelGroup", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "accel_quark", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "acceleratable", argType = TInterface "GObject" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "accel_key", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "accel_mods", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_accel_group_activate" gtk_accel_group_activate :: 
    Ptr AccelGroup ->                       -- _obj : TInterface "Gtk" "AccelGroup"
    Word32 ->                               -- accel_quark : TBasicType TUInt32
    Ptr GObject.Object ->                   -- acceleratable : TInterface "GObject" "Object"
    Word32 ->                               -- accel_key : TBasicType TUInt32
    CUInt ->                                -- accel_mods : TInterface "Gdk" "ModifierType"
    IO CInt


accelGroupActivate ::
    (MonadIO m, AccelGroupK a, GObject.ObjectK b) =>
    a                                       -- _obj
    -> Word32                               -- accelQuark
    -> b                                    -- acceleratable
    -> Word32                               -- accelKey
    -> [Gdk.ModifierType]                   -- accelMods
    -> m Bool                               -- result
accelGroupActivate _obj accelQuark acceleratable accelKey accelMods = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let acceleratable' = unsafeManagedPtrCastPtr acceleratable
    let accelMods' = gflagsToWord accelMods
    result <- gtk_accel_group_activate _obj' accelQuark acceleratable' accelKey accelMods'
    let result' = (/= 0) result
    touchManagedPtr _obj
    touchManagedPtr acceleratable
    return result'

data AccelGroupActivateMethodInfo
instance (signature ~ (Word32 -> b -> Word32 -> [Gdk.ModifierType] -> m Bool), MonadIO m, AccelGroupK a, GObject.ObjectK b) => MethodInfo AccelGroupActivateMethodInfo a signature where
    overloadedMethod _ = accelGroupActivate

-- method AccelGroup::connect
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gtk" "AccelGroup", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "accel_key", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "accel_mods", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "accel_flags", argType = TInterface "Gtk" "AccelFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "closure", argType = TInterface "GObject" "Closure", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_accel_group_connect" gtk_accel_group_connect :: 
    Ptr AccelGroup ->                       -- _obj : TInterface "Gtk" "AccelGroup"
    Word32 ->                               -- accel_key : TBasicType TUInt32
    CUInt ->                                -- accel_mods : TInterface "Gdk" "ModifierType"
    CUInt ->                                -- accel_flags : TInterface "Gtk" "AccelFlags"
    Ptr Closure ->                          -- closure : TInterface "GObject" "Closure"
    IO ()


accelGroupConnect ::
    (MonadIO m, AccelGroupK a) =>
    a                                       -- _obj
    -> Word32                               -- accelKey
    -> [Gdk.ModifierType]                   -- accelMods
    -> [AccelFlags]                         -- accelFlags
    -> Closure                              -- closure
    -> m ()                                 -- result
accelGroupConnect _obj accelKey accelMods accelFlags closure = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let accelMods' = gflagsToWord accelMods
    let accelFlags' = gflagsToWord accelFlags
    let closure' = unsafeManagedPtrGetPtr closure
    gtk_accel_group_connect _obj' accelKey accelMods' accelFlags' closure'
    touchManagedPtr _obj
    touchManagedPtr closure
    return ()

data AccelGroupConnectMethodInfo
instance (signature ~ (Word32 -> [Gdk.ModifierType] -> [AccelFlags] -> Closure -> m ()), MonadIO m, AccelGroupK a) => MethodInfo AccelGroupConnectMethodInfo a signature where
    overloadedMethod _ = accelGroupConnect

-- method AccelGroup::connect_by_path
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gtk" "AccelGroup", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "accel_path", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "closure", argType = TInterface "GObject" "Closure", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gtk_accel_group_connect_by_path" gtk_accel_group_connect_by_path :: 
    Ptr AccelGroup ->                       -- _obj : TInterface "Gtk" "AccelGroup"
    CString ->                              -- accel_path : TBasicType TUTF8
    Ptr Closure ->                          -- closure : TInterface "GObject" "Closure"
    IO ()


accelGroupConnectByPath ::
    (MonadIO m, AccelGroupK a) =>
    a                                       -- _obj
    -> T.Text                               -- accelPath
    -> Closure                              -- closure
    -> m ()                                 -- result
accelGroupConnectByPath _obj accelPath closure = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    accelPath' <- textToCString accelPath
    let closure' = unsafeManagedPtrGetPtr closure
    gtk_accel_group_connect_by_path _obj' accelPath' closure'
    touchManagedPtr _obj
    touchManagedPtr closure
    freeMem accelPath'
    return ()

data AccelGroupConnectByPathMethodInfo
instance (signature ~ (T.Text -> Closure -> m ()), MonadIO m, AccelGroupK a) => MethodInfo AccelGroupConnectByPathMethodInfo a signature where
    overloadedMethod _ = accelGroupConnectByPath

-- method AccelGroup::disconnect
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gtk" "AccelGroup", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "closure", argType = TInterface "GObject" "Closure", direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_accel_group_disconnect" gtk_accel_group_disconnect :: 
    Ptr AccelGroup ->                       -- _obj : TInterface "Gtk" "AccelGroup"
    Ptr Closure ->                          -- closure : TInterface "GObject" "Closure"
    IO CInt


accelGroupDisconnect ::
    (MonadIO m, AccelGroupK a) =>
    a                                       -- _obj
    -> Maybe (Closure)                      -- closure
    -> m Bool                               -- result
accelGroupDisconnect _obj closure = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    maybeClosure <- case closure of
        Nothing -> return nullPtr
        Just jClosure -> do
            let jClosure' = unsafeManagedPtrGetPtr jClosure
            return jClosure'
    result <- gtk_accel_group_disconnect _obj' maybeClosure
    let result' = (/= 0) result
    touchManagedPtr _obj
    whenJust closure touchManagedPtr
    return result'

data AccelGroupDisconnectMethodInfo
instance (signature ~ (Maybe (Closure) -> m Bool), MonadIO m, AccelGroupK a) => MethodInfo AccelGroupDisconnectMethodInfo a signature where
    overloadedMethod _ = accelGroupDisconnect

-- method AccelGroup::disconnect_key
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gtk" "AccelGroup", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "accel_key", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "accel_mods", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gtk_accel_group_disconnect_key" gtk_accel_group_disconnect_key :: 
    Ptr AccelGroup ->                       -- _obj : TInterface "Gtk" "AccelGroup"
    Word32 ->                               -- accel_key : TBasicType TUInt32
    CUInt ->                                -- accel_mods : TInterface "Gdk" "ModifierType"
    IO CInt


accelGroupDisconnectKey ::
    (MonadIO m, AccelGroupK a) =>
    a                                       -- _obj
    -> Word32                               -- accelKey
    -> [Gdk.ModifierType]                   -- accelMods
    -> m Bool                               -- result
accelGroupDisconnectKey _obj accelKey accelMods = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let accelMods' = gflagsToWord accelMods
    result <- gtk_accel_group_disconnect_key _obj' accelKey accelMods'
    let result' = (/= 0) result
    touchManagedPtr _obj
    return result'

data AccelGroupDisconnectKeyMethodInfo
instance (signature ~ (Word32 -> [Gdk.ModifierType] -> m Bool), MonadIO m, AccelGroupK a) => MethodInfo AccelGroupDisconnectKeyMethodInfo a signature where
    overloadedMethod _ = accelGroupDisconnectKey

-- method AccelGroup::find
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gtk" "AccelGroup", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "find_func", argType = TInterface "Gtk" "AccelGroupFindFunc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeCall, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TBasicType TVoid, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Gtk" "AccelKey"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_accel_group_find" gtk_accel_group_find :: 
    Ptr AccelGroup ->                       -- _obj : TInterface "Gtk" "AccelGroup"
    FunPtr AccelGroupFindFuncC ->           -- find_func : TInterface "Gtk" "AccelGroupFindFunc"
    Ptr () ->                               -- data : TBasicType TVoid
    IO (Ptr AccelKey)


accelGroupFind ::
    (MonadIO m, AccelGroupK a) =>
    a                                       -- _obj
    -> AccelGroupFindFunc                   -- findFunc
    -> m AccelKey                           -- result
accelGroupFind _obj findFunc = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    findFunc' <- mkAccelGroupFindFunc (accelGroupFindFuncWrapper Nothing findFunc)
    let data_ = nullPtr
    result <- gtk_accel_group_find _obj' findFunc' data_
    checkUnexpectedReturnNULL "gtk_accel_group_find" result
    result' <- (newPtr 12 AccelKey) result
    safeFreeFunPtr $ castFunPtrToPtr findFunc'
    touchManagedPtr _obj
    return result'

data AccelGroupFindMethodInfo
instance (signature ~ (AccelGroupFindFunc -> m AccelKey), MonadIO m, AccelGroupK a) => MethodInfo AccelGroupFindMethodInfo a signature where
    overloadedMethod _ = accelGroupFind

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

foreign import ccall "gtk_accel_group_get_is_locked" gtk_accel_group_get_is_locked :: 
    Ptr AccelGroup ->                       -- _obj : TInterface "Gtk" "AccelGroup"
    IO CInt


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

data AccelGroupGetIsLockedMethodInfo
instance (signature ~ (m Bool), MonadIO m, AccelGroupK a) => MethodInfo AccelGroupGetIsLockedMethodInfo a signature where
    overloadedMethod _ = accelGroupGetIsLocked

-- method AccelGroup::get_modifier_mask
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gtk" "AccelGroup", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Gdk" "ModifierType"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_accel_group_get_modifier_mask" gtk_accel_group_get_modifier_mask :: 
    Ptr AccelGroup ->                       -- _obj : TInterface "Gtk" "AccelGroup"
    IO CUInt


accelGroupGetModifierMask ::
    (MonadIO m, AccelGroupK a) =>
    a                                       -- _obj
    -> m [Gdk.ModifierType]                 -- result
accelGroupGetModifierMask _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gtk_accel_group_get_modifier_mask _obj'
    let result' = wordToGFlags result
    touchManagedPtr _obj
    return result'

data AccelGroupGetModifierMaskMethodInfo
instance (signature ~ (m [Gdk.ModifierType]), MonadIO m, AccelGroupK a) => MethodInfo AccelGroupGetModifierMaskMethodInfo a signature where
    overloadedMethod _ = accelGroupGetModifierMask

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

foreign import ccall "gtk_accel_group_lock" gtk_accel_group_lock :: 
    Ptr AccelGroup ->                       -- _obj : TInterface "Gtk" "AccelGroup"
    IO ()


accelGroupLock ::
    (MonadIO m, AccelGroupK a) =>
    a                                       -- _obj
    -> m ()                                 -- result
accelGroupLock _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_accel_group_lock _obj'
    touchManagedPtr _obj
    return ()

data AccelGroupLockMethodInfo
instance (signature ~ (m ()), MonadIO m, AccelGroupK a) => MethodInfo AccelGroupLockMethodInfo a signature where
    overloadedMethod _ = accelGroupLock

-- method AccelGroup::query
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gtk" "AccelGroup", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "accel_key", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "accel_mods", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n_entries", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : [Arg {argCName = "n_entries", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- returnType : TCArray False (-1) 3 (TInterface "Gtk" "AccelGroupEntry")
-- throws : False
-- Skip return : False

foreign import ccall "gtk_accel_group_query" gtk_accel_group_query :: 
    Ptr AccelGroup ->                       -- _obj : TInterface "Gtk" "AccelGroup"
    Word32 ->                               -- accel_key : TBasicType TUInt32
    CUInt ->                                -- accel_mods : TInterface "Gdk" "ModifierType"
    Ptr Word32 ->                           -- n_entries : TBasicType TUInt32
    IO (Ptr AccelGroupEntry)


accelGroupQuery ::
    (MonadIO m, AccelGroupK a) =>
    a                                       -- _obj
    -> Word32                               -- accelKey
    -> [Gdk.ModifierType]                   -- accelMods
    -> m [AccelGroupEntry]                  -- result
accelGroupQuery _obj accelKey accelMods = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let accelMods' = gflagsToWord accelMods
    nEntries <- allocMem :: IO (Ptr Word32)
    result <- gtk_accel_group_query _obj' accelKey accelMods' nEntries
    nEntries' <- peek nEntries
    checkUnexpectedReturnNULL "gtk_accel_group_query" result
    result' <- (unpackBlockArrayWithLength 32 nEntries') result
    result'' <- mapM (newPtr 32 AccelGroupEntry) result'
    touchManagedPtr _obj
    freeMem nEntries
    return result''

data AccelGroupQueryMethodInfo
instance (signature ~ (Word32 -> [Gdk.ModifierType] -> m [AccelGroupEntry]), MonadIO m, AccelGroupK a) => MethodInfo AccelGroupQueryMethodInfo a signature where
    overloadedMethod _ = accelGroupQuery

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

foreign import ccall "gtk_accel_group_unlock" gtk_accel_group_unlock :: 
    Ptr AccelGroup ->                       -- _obj : TInterface "Gtk" "AccelGroup"
    IO ()


accelGroupUnlock ::
    (MonadIO m, AccelGroupK a) =>
    a                                       -- _obj
    -> m ()                                 -- result
accelGroupUnlock _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    gtk_accel_group_unlock _obj'
    touchManagedPtr _obj
    return ()

data AccelGroupUnlockMethodInfo
instance (signature ~ (m ()), MonadIO m, AccelGroupK a) => MethodInfo AccelGroupUnlockMethodInfo a signature where
    overloadedMethod _ = accelGroupUnlock

-- method AccelGroup::from_accel_closure
-- method type : MemberFunction
-- Args : [Arg {argCName = "closure", argType = TInterface "GObject" "Closure", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Gtk" "AccelGroup"
-- throws : False
-- Skip return : False

foreign import ccall "gtk_accel_group_from_accel_closure" gtk_accel_group_from_accel_closure :: 
    Ptr Closure ->                          -- closure : TInterface "GObject" "Closure"
    IO (Ptr AccelGroup)


accelGroupFromAccelClosure ::
    (MonadIO m) =>
    Closure                                 -- closure
    -> m AccelGroup                         -- result
accelGroupFromAccelClosure closure = liftIO $ do
    let closure' = unsafeManagedPtrGetPtr closure
    result <- gtk_accel_group_from_accel_closure closure'
    checkUnexpectedReturnNULL "gtk_accel_group_from_accel_closure" result
    result' <- (newObject AccelGroup) result
    touchManagedPtr closure
    return result'