{- | 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.AccelKey ( -- * Exported types AccelKey(..) , newZeroAccelKey , noAccelKey , -- * Properties -- ** AccelFlags accelKeyReadAccelFlags , -- ** AccelKey accelKeyReadAccelKey , -- ** AccelMods accelKeyReadAccelMods , ) 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 AccelKey = AccelKey (ForeignPtr AccelKey) -- | Construct a `AccelKey` struct initialized to zero. newZeroAccelKey :: MonadIO m => m AccelKey newZeroAccelKey = liftIO $ callocBytes 12 >>= wrapPtr AccelKey noAccelKey :: Maybe AccelKey noAccelKey = Nothing accelKeyReadAccelKey :: AccelKey -> IO Word32 accelKeyReadAccelKey s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO Word32 return val accelKeyReadAccelMods :: AccelKey -> IO [Gdk.ModifierType] accelKeyReadAccelMods s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 4) :: IO CUInt let val' = wordToGFlags val return val' accelKeyReadAccelFlags :: AccelKey -> IO Word32 accelKeyReadAccelFlags s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 8) :: IO Word32 return val type family ResolveAccelKeyMethod (t :: Symbol) (o :: *) :: * where ResolveAccelKeyMethod l o = MethodResolutionFailed l o instance (info ~ ResolveAccelKeyMethod t AccelKey, MethodInfo info AccelKey p) => IsLabelProxy t (AccelKey -> p) where fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info) #if MIN_VERSION_base(4,9,0) instance (info ~ ResolveAccelKeyMethod t AccelKey, MethodInfo info AccelKey p) => IsLabel t (AccelKey -> p) where fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info) #endif