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

Each key binding element of a binding sets binding list is
represented by a GtkBindingEntry.
-}

module GI.Gtk.Structs.BindingEntry
    ( 

-- * Exported types
    BindingEntry(..)                        ,
    noBindingEntry                          ,


 -- * Properties
-- ** BindingSet
    bindingEntryReadBindingSet              ,


-- ** Destroyed
    bindingEntryReadDestroyed               ,


-- ** HashNext
    bindingEntryReadHashNext                ,


-- ** InEmission
    bindingEntryReadInEmission              ,


-- ** Keyval
    bindingEntryReadKeyval                  ,


-- ** MarksUnbound
    bindingEntryReadMarksUnbound            ,


-- ** Modifiers
    bindingEntryReadModifiers               ,


-- ** SetNext
    bindingEntryReadSetNext                 ,


-- ** Signals
    bindingEntryReadSignals                 ,




    ) 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.Gdk as Gdk

newtype BindingEntry = BindingEntry (ForeignPtr BindingEntry)
noBindingEntry :: Maybe BindingEntry
noBindingEntry = Nothing

bindingEntryReadKeyval :: BindingEntry -> IO Word32
bindingEntryReadKeyval s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO Word32
    return val

bindingEntryReadModifiers :: BindingEntry -> IO [Gdk.ModifierType]
bindingEntryReadModifiers s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 4) :: IO CUInt
    let val' = wordToGFlags val
    return val'

bindingEntryReadBindingSet :: BindingEntry -> IO BindingSet
bindingEntryReadBindingSet s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 8) :: IO (Ptr BindingSet)
    val' <- (newPtr 64 BindingSet) val
    return val'

bindingEntryReadDestroyed :: BindingEntry -> IO Word32
bindingEntryReadDestroyed s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 16) :: IO Word32
    return val

bindingEntryReadInEmission :: BindingEntry -> IO Word32
bindingEntryReadInEmission s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 20) :: IO Word32
    return val

bindingEntryReadMarksUnbound :: BindingEntry -> IO Word32
bindingEntryReadMarksUnbound s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 24) :: IO Word32
    return val

bindingEntryReadSetNext :: BindingEntry -> IO BindingEntry
bindingEntryReadSetNext s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 32) :: IO (Ptr BindingEntry)
    val' <- (newPtr 56 BindingEntry) val
    return val'

bindingEntryReadHashNext :: BindingEntry -> IO BindingEntry
bindingEntryReadHashNext s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 40) :: IO (Ptr BindingEntry)
    val' <- (newPtr 56 BindingEntry) val
    return val'

bindingEntryReadSignals :: BindingEntry -> IO BindingSignal
bindingEntryReadSignals s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 48) :: IO (Ptr BindingSignal)
    val' <- (newPtr 32 BindingSignal) val
    return val'