{- | 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(..) , newZeroBindingEntry , noBindingEntry , -- * Methods -- ** bindingEntryAddSignalFromString bindingEntryAddSignalFromString , -- ** bindingEntryAddSignall bindingEntryAddSignall , -- ** bindingEntryRemove bindingEntryRemove , -- ** bindingEntrySkip bindingEntrySkip , -- * 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.GLib as GLib import qualified GI.Gdk as Gdk newtype BindingEntry = BindingEntry (ForeignPtr BindingEntry) -- | Construct a `BindingEntry` struct initialized to zero. newZeroBindingEntry :: MonadIO m => m BindingEntry newZeroBindingEntry = liftIO $ callocBytes 56 >>= wrapPtr 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' -- method BindingEntry::add_signal_from_string -- method type : MemberFunction -- Args : [Arg {argCName = "binding_set", argType = TInterface "Gtk" "BindingSet", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "signal_desc", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : TInterface "GLib" "TokenType" -- throws : False -- Skip return : False foreign import ccall "gtk_binding_entry_add_signal_from_string" gtk_binding_entry_add_signal_from_string :: Ptr BindingSet -> -- binding_set : TInterface "Gtk" "BindingSet" CString -> -- signal_desc : TBasicType TUTF8 IO CUInt bindingEntryAddSignalFromString :: (MonadIO m) => BindingSet -- bindingSet -> T.Text -- signalDesc -> m GLib.TokenType -- result bindingEntryAddSignalFromString bindingSet signalDesc = liftIO $ do let bindingSet' = unsafeManagedPtrGetPtr bindingSet signalDesc' <- textToCString signalDesc result <- gtk_binding_entry_add_signal_from_string bindingSet' signalDesc' let result' = (toEnum . fromIntegral) result touchManagedPtr bindingSet freeMem signalDesc' return result' -- method BindingEntry::add_signall -- method type : MemberFunction -- Args : [Arg {argCName = "binding_set", argType = TInterface "Gtk" "BindingSet", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "modifiers", argType = TInterface "Gdk" "ModifierType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "signal_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "binding_args", argType = TGSList (TInterface "Gtk" "BindingArg"), 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_binding_entry_add_signall" gtk_binding_entry_add_signall :: Ptr BindingSet -> -- binding_set : TInterface "Gtk" "BindingSet" Word32 -> -- keyval : TBasicType TUInt32 CUInt -> -- modifiers : TInterface "Gdk" "ModifierType" CString -> -- signal_name : TBasicType TUTF8 Ptr (GSList (Ptr BindingArg)) -> -- binding_args : TGSList (TInterface "Gtk" "BindingArg") IO () bindingEntryAddSignall :: (MonadIO m) => BindingSet -- bindingSet -> Word32 -- keyval -> [Gdk.ModifierType] -- modifiers -> T.Text -- signalName -> [BindingArg] -- bindingArgs -> m () -- result bindingEntryAddSignall bindingSet keyval modifiers signalName bindingArgs = liftIO $ do let bindingSet' = unsafeManagedPtrGetPtr bindingSet let modifiers' = gflagsToWord modifiers signalName' <- textToCString signalName let bindingArgs' = map unsafeManagedPtrGetPtr bindingArgs bindingArgs'' <- packGSList bindingArgs' gtk_binding_entry_add_signall bindingSet' keyval modifiers' signalName' bindingArgs'' touchManagedPtr bindingSet mapM_ touchManagedPtr bindingArgs freeMem signalName' g_slist_free bindingArgs'' return () -- method BindingEntry::remove -- method type : MemberFunction -- Args : [Arg {argCName = "binding_set", argType = TInterface "Gtk" "BindingSet", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "modifiers", argType = TInterface "Gdk" "ModifierType", 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_binding_entry_remove" gtk_binding_entry_remove :: Ptr BindingSet -> -- binding_set : TInterface "Gtk" "BindingSet" Word32 -> -- keyval : TBasicType TUInt32 CUInt -> -- modifiers : TInterface "Gdk" "ModifierType" IO () bindingEntryRemove :: (MonadIO m) => BindingSet -- bindingSet -> Word32 -- keyval -> [Gdk.ModifierType] -- modifiers -> m () -- result bindingEntryRemove bindingSet keyval modifiers = liftIO $ do let bindingSet' = unsafeManagedPtrGetPtr bindingSet let modifiers' = gflagsToWord modifiers gtk_binding_entry_remove bindingSet' keyval modifiers' touchManagedPtr bindingSet return () -- method BindingEntry::skip -- method type : MemberFunction -- Args : [Arg {argCName = "binding_set", argType = TInterface "Gtk" "BindingSet", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "keyval", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "modifiers", argType = TInterface "Gdk" "ModifierType", 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_binding_entry_skip" gtk_binding_entry_skip :: Ptr BindingSet -> -- binding_set : TInterface "Gtk" "BindingSet" Word32 -> -- keyval : TBasicType TUInt32 CUInt -> -- modifiers : TInterface "Gdk" "ModifierType" IO () bindingEntrySkip :: (MonadIO m) => BindingSet -- bindingSet -> Word32 -- keyval -> [Gdk.ModifierType] -- modifiers -> m () -- result bindingEntrySkip bindingSet keyval modifiers = liftIO $ do let bindingSet' = unsafeManagedPtrGetPtr bindingSet let modifiers' = gflagsToWord modifiers gtk_binding_entry_skip bindingSet' keyval modifiers' touchManagedPtr bindingSet return () type family ResolveBindingEntryMethod (t :: Symbol) (o :: *) :: * where ResolveBindingEntryMethod l o = MethodResolutionFailed l o instance (info ~ ResolveBindingEntryMethod t BindingEntry, MethodInfo info BindingEntry p) => IsLabelProxy t (BindingEntry -> p) where fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info) #if MIN_VERSION_base(4,9,0) instance (info ~ ResolveBindingEntryMethod t BindingEntry, MethodInfo info BindingEntry p) => IsLabel t (BindingEntry -> p) where fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info) #endif