gi-gdk-0.3.18.13: GI/Gdk/Structs/WindowAttr.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)
Attributes to use for a newly-created window.
-}
module GI.Gdk.Structs.WindowAttr
(
-- * Exported types
WindowAttr(..) ,
newZeroWindowAttr ,
noWindowAttr ,
-- * Properties
-- ** Cursor
windowAttrReadCursor ,
-- ** EventMask
windowAttrReadEventMask ,
-- ** Height
windowAttrReadHeight ,
-- ** OverrideRedirect
windowAttrReadOverrideRedirect ,
-- ** Title
windowAttrReadTitle ,
-- ** TypeHint
windowAttrReadTypeHint ,
-- ** Visual
windowAttrReadVisual ,
-- ** Wclass
windowAttrReadWclass ,
-- ** Width
windowAttrReadWidth ,
-- ** WindowType
windowAttrReadWindowType ,
-- ** WmclassClass
windowAttrReadWmclassClass ,
-- ** WmclassName
windowAttrReadWmclassName ,
-- ** X
windowAttrReadX ,
-- ** Y
windowAttrReadY ,
) 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.Gdk.Types
import GI.Gdk.Callbacks
newtype WindowAttr = WindowAttr (ForeignPtr WindowAttr)
-- | Construct a `WindowAttr` struct initialized to zero.
newZeroWindowAttr :: MonadIO m => m WindowAttr
newZeroWindowAttr = liftIO $ callocBytes 80 >>= wrapPtr WindowAttr
noWindowAttr :: Maybe WindowAttr
noWindowAttr = Nothing
windowAttrReadTitle :: WindowAttr -> IO T.Text
windowAttrReadTitle s = withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO CString
val' <- cstringToText val
return val'
windowAttrReadEventMask :: WindowAttr -> IO Int32
windowAttrReadEventMask s = withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 8) :: IO Int32
return val
windowAttrReadX :: WindowAttr -> IO Int32
windowAttrReadX s = withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 12) :: IO Int32
return val
windowAttrReadY :: WindowAttr -> IO Int32
windowAttrReadY s = withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 16) :: IO Int32
return val
windowAttrReadWidth :: WindowAttr -> IO Int32
windowAttrReadWidth s = withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 20) :: IO Int32
return val
windowAttrReadHeight :: WindowAttr -> IO Int32
windowAttrReadHeight s = withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 24) :: IO Int32
return val
windowAttrReadWclass :: WindowAttr -> IO WindowWindowClass
windowAttrReadWclass s = withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 28) :: IO CUInt
let val' = (toEnum . fromIntegral) val
return val'
windowAttrReadVisual :: WindowAttr -> IO Visual
windowAttrReadVisual s = withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 32) :: IO (Ptr Visual)
val' <- (newObject Visual) val
return val'
windowAttrReadWindowType :: WindowAttr -> IO WindowType
windowAttrReadWindowType s = withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 40) :: IO CUInt
let val' = (toEnum . fromIntegral) val
return val'
windowAttrReadCursor :: WindowAttr -> IO Cursor
windowAttrReadCursor s = withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 48) :: IO (Ptr Cursor)
val' <- (newObject Cursor) val
return val'
windowAttrReadWmclassName :: WindowAttr -> IO T.Text
windowAttrReadWmclassName s = withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 56) :: IO CString
val' <- cstringToText val
return val'
windowAttrReadWmclassClass :: WindowAttr -> IO T.Text
windowAttrReadWmclassClass s = withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 64) :: IO CString
val' <- cstringToText val
return val'
windowAttrReadOverrideRedirect :: WindowAttr -> IO Bool
windowAttrReadOverrideRedirect s = withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 72) :: IO CInt
let val' = (/= 0) val
return val'
windowAttrReadTypeHint :: WindowAttr -> IO WindowTypeHint
windowAttrReadTypeHint s = withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 76) :: IO CUInt
let val' = (toEnum . fromIntegral) val
return val'
type family ResolveWindowAttrMethod (t :: Symbol) (o :: *) :: * where
ResolveWindowAttrMethod l o = MethodResolutionFailed l o
instance (info ~ ResolveWindowAttrMethod t WindowAttr, MethodInfo info WindowAttr p) => IsLabelProxy t (WindowAttr -> p) where
fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)
#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveWindowAttrMethod t WindowAttr, MethodInfo info WindowAttr p) => IsLabel t (WindowAttr -> p) where
fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info)
#endif