packages feed

gi-gtk-0.3.18.15: GI/Gtk/Structs/AccelGroupEntry.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.Structs.AccelGroupEntry
    ( 

-- * Exported types
    AccelGroupEntry(..)                     ,
    newZeroAccelGroupEntry                  ,
    noAccelGroupEntry                       ,


 -- * Properties
-- ** AccelPathQuark
    accelGroupEntryAccelPathQuark           ,
    accelGroupEntryReadAccelPathQuark       ,
    accelGroupEntryWriteAccelPathQuark      ,


-- ** Closure
    accelGroupEntryClearClosure             ,
    accelGroupEntryClosure                  ,
    accelGroupEntryReadClosure              ,
    accelGroupEntryWriteClosure             ,


-- ** Key
    accelGroupEntryClearKey                 ,
    accelGroupEntryKey                      ,
    accelGroupEntryReadKey                  ,
    accelGroupEntryWriteKey                 ,




    ) where

import Data.GI.Base.ShortPrelude

import qualified Data.GI.Base.Attributes as GI.Attributes
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

newtype AccelGroupEntry = AccelGroupEntry (ForeignPtr AccelGroupEntry)
instance WrappedPtr AccelGroupEntry where
    wrappedPtrCalloc = callocBytes 32
    wrappedPtrCopy = copyPtr 32
    wrappedPtrFree = Just ptr_to_g_free

-- | Construct a `AccelGroupEntry` struct initialized to zero.
newZeroAccelGroupEntry :: MonadIO m => m AccelGroupEntry
newZeroAccelGroupEntry = liftIO $ wrappedPtrCalloc >>= wrapPtr AccelGroupEntry

instance tag ~ 'AttrSet => Constructible AccelGroupEntry tag where
    new _ attrs = do
        o <- newZeroAccelGroupEntry
        GI.Attributes.set o attrs
        return o


noAccelGroupEntry :: Maybe AccelGroupEntry
noAccelGroupEntry = Nothing

accelGroupEntryReadKey :: MonadIO m => AccelGroupEntry -> m (Maybe AccelKey)
accelGroupEntryReadKey s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO (Ptr AccelKey)
    result <- convertIfNonNull val $ \val' -> do
        val'' <- (newPtr AccelKey) val'
        return val''
    return result

accelGroupEntryWriteKey :: MonadIO m => AccelGroupEntry -> Ptr AccelKey -> m ()
accelGroupEntryWriteKey s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 0) (val :: Ptr AccelKey)

accelGroupEntryClearKey :: MonadIO m => AccelGroupEntry -> m ()
accelGroupEntryClearKey s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 0) (nullPtr :: Ptr AccelKey)

data AccelGroupEntryKeyFieldInfo
instance AttrInfo AccelGroupEntryKeyFieldInfo where
    type AttrAllowedOps AccelGroupEntryKeyFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint AccelGroupEntryKeyFieldInfo = (~) (Ptr AccelKey)
    type AttrBaseTypeConstraint AccelGroupEntryKeyFieldInfo = (~) AccelGroupEntry
    type AttrGetType AccelGroupEntryKeyFieldInfo = Maybe AccelKey
    type AttrLabel AccelGroupEntryKeyFieldInfo = "key"
    attrGet _ = accelGroupEntryReadKey
    attrSet _ = accelGroupEntryWriteKey
    attrConstruct = undefined
    attrClear _ = accelGroupEntryClearKey

accelGroupEntryKey :: AttrLabelProxy "key"
accelGroupEntryKey = AttrLabelProxy


accelGroupEntryReadClosure :: MonadIO m => AccelGroupEntry -> m (Maybe Closure)
accelGroupEntryReadClosure s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO (Ptr Closure)
    result <- convertIfNonNull val $ \val' -> do
        val'' <- (newBoxed Closure) val'
        return val''
    return result

accelGroupEntryWriteClosure :: MonadIO m => AccelGroupEntry -> Ptr Closure -> m ()
accelGroupEntryWriteClosure s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 16) (val :: Ptr Closure)

accelGroupEntryClearClosure :: MonadIO m => AccelGroupEntry -> m ()
accelGroupEntryClearClosure s = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 16) (nullPtr :: Ptr Closure)

data AccelGroupEntryClosureFieldInfo
instance AttrInfo AccelGroupEntryClosureFieldInfo where
    type AttrAllowedOps AccelGroupEntryClosureFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint AccelGroupEntryClosureFieldInfo = (~) (Ptr Closure)
    type AttrBaseTypeConstraint AccelGroupEntryClosureFieldInfo = (~) AccelGroupEntry
    type AttrGetType AccelGroupEntryClosureFieldInfo = Maybe Closure
    type AttrLabel AccelGroupEntryClosureFieldInfo = "closure"
    attrGet _ = accelGroupEntryReadClosure
    attrSet _ = accelGroupEntryWriteClosure
    attrConstruct = undefined
    attrClear _ = accelGroupEntryClearClosure

accelGroupEntryClosure :: AttrLabelProxy "closure"
accelGroupEntryClosure = AttrLabelProxy


accelGroupEntryReadAccelPathQuark :: MonadIO m => AccelGroupEntry -> m Word32
accelGroupEntryReadAccelPathQuark s = liftIO $ withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO Word32
    return val

accelGroupEntryWriteAccelPathQuark :: MonadIO m => AccelGroupEntry -> Word32 -> m ()
accelGroupEntryWriteAccelPathQuark s val = liftIO $ withManagedPtr s $ \ptr -> do
    poke (ptr `plusPtr` 24) (val :: Word32)

data AccelGroupEntryAccelPathQuarkFieldInfo
instance AttrInfo AccelGroupEntryAccelPathQuarkFieldInfo where
    type AttrAllowedOps AccelGroupEntryAccelPathQuarkFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint AccelGroupEntryAccelPathQuarkFieldInfo = (~) Word32
    type AttrBaseTypeConstraint AccelGroupEntryAccelPathQuarkFieldInfo = (~) AccelGroupEntry
    type AttrGetType AccelGroupEntryAccelPathQuarkFieldInfo = Word32
    type AttrLabel AccelGroupEntryAccelPathQuarkFieldInfo = "accel_path_quark"
    attrGet _ = accelGroupEntryReadAccelPathQuark
    attrSet _ = accelGroupEntryWriteAccelPathQuark
    attrConstruct = undefined
    attrClear _ = undefined

accelGroupEntryAccelPathQuark :: AttrLabelProxy "accelPathQuark"
accelGroupEntryAccelPathQuark = AttrLabelProxy



type instance AttributeList AccelGroupEntry = AccelGroupEntryAttributeList
type AccelGroupEntryAttributeList = ('[ '("key", AccelGroupEntryKeyFieldInfo), '("closure", AccelGroupEntryClosureFieldInfo), '("accelPathQuark", AccelGroupEntryAccelPathQuarkFieldInfo)] :: [(Symbol, *)])

type family ResolveAccelGroupEntryMethod (t :: Symbol) (o :: *) :: * where
    ResolveAccelGroupEntryMethod l o = MethodResolutionFailed l o

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

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