gi-atk-0.2.16.12: GI/Atk/Objects/Relation.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)
-}
module GI.Atk.Objects.Relation
(
-- * Exported types
Relation(..) ,
RelationK ,
toRelation ,
noRelation ,
-- * Methods
-- ** relationAddTarget
relationAddTarget ,
-- ** relationGetRelationType
relationGetRelationType ,
-- ** relationGetTarget
relationGetTarget ,
-- ** relationNew
relationNew ,
-- ** relationRemoveTarget
relationRemoveTarget ,
-- * Properties
-- ** RelationType
RelationRelationTypePropertyInfo ,
constructRelationRelationType ,
getRelationRelationType ,
setRelationRelationType ,
-- ** Target
RelationTargetPropertyInfo ,
constructRelationTarget ,
getRelationTarget ,
setRelationTarget ,
) 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.Atk.Types
import GI.Atk.Callbacks
import qualified GI.GObject as GObject
newtype Relation = Relation (ForeignPtr Relation)
foreign import ccall "atk_relation_get_type"
c_atk_relation_get_type :: IO GType
type instance ParentTypes Relation = RelationParentTypes
type RelationParentTypes = '[GObject.Object]
instance GObject Relation where
gobjectIsInitiallyUnowned _ = False
gobjectType _ = c_atk_relation_get_type
class GObject o => RelationK o
instance (GObject o, IsDescendantOf Relation o) => RelationK o
toRelation :: RelationK o => o -> IO Relation
toRelation = unsafeCastTo Relation
noRelation :: Maybe Relation
noRelation = Nothing
-- VVV Prop "relation-type"
-- Type: TInterface "Atk" "RelationType"
-- Flags: [PropertyReadable,PropertyWritable]
getRelationRelationType :: (MonadIO m, RelationK o) => o -> m RelationType
getRelationRelationType obj = liftIO $ getObjectPropertyEnum obj "relation-type"
setRelationRelationType :: (MonadIO m, RelationK o) => o -> RelationType -> m ()
setRelationRelationType obj val = liftIO $ setObjectPropertyEnum obj "relation-type" val
constructRelationRelationType :: RelationType -> IO ([Char], GValue)
constructRelationRelationType val = constructObjectPropertyEnum "relation-type" val
data RelationRelationTypePropertyInfo
instance AttrInfo RelationRelationTypePropertyInfo where
type AttrAllowedOps RelationRelationTypePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
type AttrSetTypeConstraint RelationRelationTypePropertyInfo = (~) RelationType
type AttrBaseTypeConstraint RelationRelationTypePropertyInfo = RelationK
type AttrGetType RelationRelationTypePropertyInfo = RelationType
type AttrLabel RelationRelationTypePropertyInfo = "Relation::relation-type"
attrGet _ = getRelationRelationType
attrSet _ = setRelationRelationType
attrConstruct _ = constructRelationRelationType
-- VVV Prop "target"
-- Type: TInterface "GObject" "ValueArray"
-- Flags: [PropertyReadable,PropertyWritable]
getRelationTarget :: (MonadIO m, RelationK o) => o -> m GObject.ValueArray
getRelationTarget obj = liftIO $ getObjectPropertyBoxed obj "target" GObject.ValueArray
setRelationTarget :: (MonadIO m, RelationK o) => o -> GObject.ValueArray -> m ()
setRelationTarget obj val = liftIO $ setObjectPropertyBoxed obj "target" val
constructRelationTarget :: GObject.ValueArray -> IO ([Char], GValue)
constructRelationTarget val = constructObjectPropertyBoxed "target" val
data RelationTargetPropertyInfo
instance AttrInfo RelationTargetPropertyInfo where
type AttrAllowedOps RelationTargetPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
type AttrSetTypeConstraint RelationTargetPropertyInfo = (~) GObject.ValueArray
type AttrBaseTypeConstraint RelationTargetPropertyInfo = RelationK
type AttrGetType RelationTargetPropertyInfo = GObject.ValueArray
type AttrLabel RelationTargetPropertyInfo = "Relation::target"
attrGet _ = getRelationTarget
attrSet _ = setRelationTarget
attrConstruct _ = constructRelationTarget
type instance AttributeList Relation = RelationAttributeList
type RelationAttributeList = ('[ '("relation-type", RelationRelationTypePropertyInfo), '("target", RelationTargetPropertyInfo)] :: [(Symbol, *)])
type instance SignalList Relation = RelationSignalList
type RelationSignalList = ('[ '("notify", GObject.ObjectNotifySignalInfo), '("notify::[property]", GObjectNotifySignalInfo)] :: [(Symbol, *)])
-- method Relation::new
-- method type : Constructor
-- Args : [Arg {argName = "targets", argType = TCArray False (-1) 1 (TInterface "Atk" "Object"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "n_targets", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "relationship", argType = TInterface "Atk" "RelationType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : [Arg {argName = "n_targets", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- hInArgs : [Arg {argName = "targets", argType = TCArray False (-1) 1 (TInterface "Atk" "Object"), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "relationship", argType = TInterface "Atk" "RelationType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Atk" "Relation"
-- throws : False
-- Skip return : False
foreign import ccall "atk_relation_new" atk_relation_new ::
Ptr (Ptr Object) -> -- targets : TCArray False (-1) 1 (TInterface "Atk" "Object")
Int32 -> -- n_targets : TBasicType TInt32
CUInt -> -- relationship : TInterface "Atk" "RelationType"
IO (Ptr Relation)
relationNew ::
(MonadIO m) =>
[Object] -> -- targets
RelationType -> -- relationship
m Relation
relationNew targets relationship = liftIO $ do
let n_targets = fromIntegral $ length targets
let targets' = map unsafeManagedPtrCastPtr targets
targets'' <- packPtrArray targets'
let relationship' = (fromIntegral . fromEnum) relationship
result <- atk_relation_new targets'' n_targets relationship'
checkUnexpectedReturnNULL "atk_relation_new" result
result' <- (wrapObject Relation) result
mapM_ touchManagedPtr targets
freeMem targets''
return result'
-- method Relation::add_target
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Atk" "Relation", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "target", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Atk" "Relation", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "target", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False
foreign import ccall "atk_relation_add_target" atk_relation_add_target ::
Ptr Relation -> -- _obj : TInterface "Atk" "Relation"
Ptr Object -> -- target : TInterface "Atk" "Object"
IO ()
relationAddTarget ::
(MonadIO m, RelationK a, ObjectK b) =>
a -> -- _obj
b -> -- target
m ()
relationAddTarget _obj target = liftIO $ do
let _obj' = unsafeManagedPtrCastPtr _obj
let target' = unsafeManagedPtrCastPtr target
atk_relation_add_target _obj' target'
touchManagedPtr _obj
touchManagedPtr target
return ()
-- method Relation::get_relation_type
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Atk" "Relation", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Atk" "Relation", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TInterface "Atk" "RelationType"
-- throws : False
-- Skip return : False
foreign import ccall "atk_relation_get_relation_type" atk_relation_get_relation_type ::
Ptr Relation -> -- _obj : TInterface "Atk" "Relation"
IO CUInt
relationGetRelationType ::
(MonadIO m, RelationK a) =>
a -> -- _obj
m RelationType
relationGetRelationType _obj = liftIO $ do
let _obj' = unsafeManagedPtrCastPtr _obj
result <- atk_relation_get_relation_type _obj'
let result' = (toEnum . fromIntegral) result
touchManagedPtr _obj
return result'
-- method Relation::get_target
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Atk" "Relation", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Atk" "Relation", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TPtrArray (TInterface "Atk" "Object")
-- throws : False
-- Skip return : False
foreign import ccall "atk_relation_get_target" atk_relation_get_target ::
Ptr Relation -> -- _obj : TInterface "Atk" "Relation"
IO (Ptr (GPtrArray (Ptr Object)))
relationGetTarget ::
(MonadIO m, RelationK a) =>
a -> -- _obj
m [Object]
relationGetTarget _obj = liftIO $ do
let _obj' = unsafeManagedPtrCastPtr _obj
result <- atk_relation_get_target _obj'
checkUnexpectedReturnNULL "atk_relation_get_target" result
result' <- unpackGPtrArray result
result'' <- mapM (newObject Object) result'
touchManagedPtr _obj
return result''
-- method Relation::remove_target
-- method type : OrdinaryMethod
-- Args : [Arg {argName = "_obj", argType = TInterface "Atk" "Relation", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "target", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- Lengths : []
-- hInArgs : [Arg {argName = "_obj", argType = TInterface "Atk" "Relation", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "target", argType = TInterface "Atk" "Object", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}]
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False
foreign import ccall "atk_relation_remove_target" atk_relation_remove_target ::
Ptr Relation -> -- _obj : TInterface "Atk" "Relation"
Ptr Object -> -- target : TInterface "Atk" "Object"
IO CInt
relationRemoveTarget ::
(MonadIO m, RelationK a, ObjectK b) =>
a -> -- _obj
b -> -- target
m Bool
relationRemoveTarget _obj target = liftIO $ do
let _obj' = unsafeManagedPtrCastPtr _obj
let target' = unsafeManagedPtrCastPtr target
result <- atk_relation_remove_target _obj' target'
let result' = (/= 0) result
touchManagedPtr _obj
touchManagedPtr target
return result'