gi-atk-0.2.18.15: GI/Atk/Structs/PropertyValues.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)
Note: @old_value field of #AtkPropertyValues will not contain a
valid value. This is a field defined with the purpose of contain
the previous value of the property, but is not used anymore.
-}
module GI.Atk.Structs.PropertyValues
(
-- * Exported types
PropertyValues(..) ,
newZeroPropertyValues ,
noPropertyValues ,
-- * Properties
-- ** NewValue
propertyValuesClearNewValue ,
propertyValuesNewValue ,
propertyValuesReadNewValue ,
propertyValuesWriteNewValue ,
-- ** OldValue
propertyValuesClearOldValue ,
propertyValuesOldValue ,
propertyValuesReadOldValue ,
propertyValuesWriteOldValue ,
-- ** PropertyName
propertyValuesClearPropertyName ,
propertyValuesPropertyName ,
propertyValuesReadPropertyName ,
propertyValuesWritePropertyName ,
) 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.Atk.Types
import GI.Atk.Callbacks
newtype PropertyValues = PropertyValues (ForeignPtr PropertyValues)
instance WrappedPtr PropertyValues where
wrappedPtrCalloc = callocBytes 56
wrappedPtrCopy = copyPtr 56
wrappedPtrFree = Just ptr_to_g_free
-- | Construct a `PropertyValues` struct initialized to zero.
newZeroPropertyValues :: MonadIO m => m PropertyValues
newZeroPropertyValues = liftIO $ wrappedPtrCalloc >>= wrapPtr PropertyValues
instance tag ~ 'AttrSet => Constructible PropertyValues tag where
new _ attrs = do
o <- newZeroPropertyValues
GI.Attributes.set o attrs
return o
noPropertyValues :: Maybe PropertyValues
noPropertyValues = Nothing
propertyValuesReadPropertyName :: MonadIO m => PropertyValues -> m (Maybe T.Text)
propertyValuesReadPropertyName s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO CString
result <- convertIfNonNull val $ \val' -> do
val'' <- cstringToText val'
return val''
return result
propertyValuesWritePropertyName :: MonadIO m => PropertyValues -> CString -> m ()
propertyValuesWritePropertyName s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (val :: CString)
propertyValuesClearPropertyName :: MonadIO m => PropertyValues -> m ()
propertyValuesClearPropertyName s = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (nullPtr :: CString)
data PropertyValuesPropertyNameFieldInfo
instance AttrInfo PropertyValuesPropertyNameFieldInfo where
type AttrAllowedOps PropertyValuesPropertyNameFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint PropertyValuesPropertyNameFieldInfo = (~) CString
type AttrBaseTypeConstraint PropertyValuesPropertyNameFieldInfo = (~) PropertyValues
type AttrGetType PropertyValuesPropertyNameFieldInfo = Maybe T.Text
type AttrLabel PropertyValuesPropertyNameFieldInfo = "property_name"
attrGet _ = propertyValuesReadPropertyName
attrSet _ = propertyValuesWritePropertyName
attrConstruct = undefined
attrClear _ = propertyValuesClearPropertyName
propertyValuesPropertyName :: AttrLabelProxy "propertyName"
propertyValuesPropertyName = AttrLabelProxy
propertyValuesReadOldValue :: MonadIO m => PropertyValues -> m (Maybe GValue)
propertyValuesReadOldValue s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 8) :: IO (Ptr GValue)
result <- convertIfNonNull val $ \val' -> do
val'' <- (newBoxed GValue) val'
return val''
return result
propertyValuesWriteOldValue :: MonadIO m => PropertyValues -> Ptr GValue -> m ()
propertyValuesWriteOldValue s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 8) (val :: Ptr GValue)
propertyValuesClearOldValue :: MonadIO m => PropertyValues -> m ()
propertyValuesClearOldValue s = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 8) (nullPtr :: Ptr GValue)
data PropertyValuesOldValueFieldInfo
instance AttrInfo PropertyValuesOldValueFieldInfo where
type AttrAllowedOps PropertyValuesOldValueFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint PropertyValuesOldValueFieldInfo = (~) (Ptr GValue)
type AttrBaseTypeConstraint PropertyValuesOldValueFieldInfo = (~) PropertyValues
type AttrGetType PropertyValuesOldValueFieldInfo = Maybe GValue
type AttrLabel PropertyValuesOldValueFieldInfo = "old_value"
attrGet _ = propertyValuesReadOldValue
attrSet _ = propertyValuesWriteOldValue
attrConstruct = undefined
attrClear _ = propertyValuesClearOldValue
propertyValuesOldValue :: AttrLabelProxy "oldValue"
propertyValuesOldValue = AttrLabelProxy
propertyValuesReadNewValue :: MonadIO m => PropertyValues -> m (Maybe GValue)
propertyValuesReadNewValue s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 32) :: IO (Ptr GValue)
result <- convertIfNonNull val $ \val' -> do
val'' <- (newBoxed GValue) val'
return val''
return result
propertyValuesWriteNewValue :: MonadIO m => PropertyValues -> Ptr GValue -> m ()
propertyValuesWriteNewValue s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 32) (val :: Ptr GValue)
propertyValuesClearNewValue :: MonadIO m => PropertyValues -> m ()
propertyValuesClearNewValue s = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 32) (nullPtr :: Ptr GValue)
data PropertyValuesNewValueFieldInfo
instance AttrInfo PropertyValuesNewValueFieldInfo where
type AttrAllowedOps PropertyValuesNewValueFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint PropertyValuesNewValueFieldInfo = (~) (Ptr GValue)
type AttrBaseTypeConstraint PropertyValuesNewValueFieldInfo = (~) PropertyValues
type AttrGetType PropertyValuesNewValueFieldInfo = Maybe GValue
type AttrLabel PropertyValuesNewValueFieldInfo = "new_value"
attrGet _ = propertyValuesReadNewValue
attrSet _ = propertyValuesWriteNewValue
attrConstruct = undefined
attrClear _ = propertyValuesClearNewValue
propertyValuesNewValue :: AttrLabelProxy "newValue"
propertyValuesNewValue = AttrLabelProxy
type instance AttributeList PropertyValues = PropertyValuesAttributeList
type PropertyValuesAttributeList = ('[ '("propertyName", PropertyValuesPropertyNameFieldInfo), '("oldValue", PropertyValuesOldValueFieldInfo), '("newValue", PropertyValuesNewValueFieldInfo)] :: [(Symbol, *)])
type family ResolvePropertyValuesMethod (t :: Symbol) (o :: *) :: * where
ResolvePropertyValuesMethod l o = MethodResolutionFailed l o
instance (info ~ ResolvePropertyValuesMethod t PropertyValues, MethodInfo info PropertyValues p) => IsLabelProxy t (PropertyValues -> p) where
fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)
#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolvePropertyValuesMethod t PropertyValues, MethodInfo info PropertyValues p) => IsLabel t (PropertyValues -> p) where
fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info)
#endif