module GI.Atk.Objects.Relation
(
Relation(..) ,
IsRelation ,
toRelation ,
noRelation ,
RelationAddTargetMethodInfo ,
relationAddTarget ,
RelationGetRelationTypeMethodInfo ,
relationGetRelationType ,
RelationGetTargetMethodInfo ,
relationGetTarget ,
relationNew ,
RelationRemoveTargetMethodInfo ,
relationRemoveTarget ,
RelationRelationTypePropertyInfo ,
constructRelationRelationType ,
getRelationRelationType ,
relationRelationType ,
setRelationRelationType ,
RelationTargetPropertyInfo ,
clearRelationTarget ,
constructRelationTarget ,
getRelationTarget ,
relationTarget ,
setRelationTarget ,
) where
import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P
import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import qualified GI.Atk.Enums as Atk.Enums
import qualified GI.Atk.Objects.Object as Atk.Object
import qualified GI.GObject.Objects.Object as GObject.Object
import qualified GI.GObject.Structs.ValueArray as GObject.ValueArray
newtype Relation = Relation (ManagedPtr Relation)
foreign import ccall "atk_relation_get_type"
c_atk_relation_get_type :: IO GType
instance GObject Relation where
gobjectType _ = c_atk_relation_get_type
class GObject o => IsRelation o
#if MIN_VERSION_base(4,9,0)
instance (GObject a, O.UnknownAncestorError Relation a) =>
IsRelation a
#endif
instance IsRelation Relation
instance GObject.Object.IsObject Relation
toRelation :: IsRelation o => o -> IO Relation
toRelation = unsafeCastTo Relation
noRelation :: Maybe Relation
noRelation = Nothing
type family ResolveRelationMethod (t :: Symbol) (o :: *) :: * where
ResolveRelationMethod "addTarget" o = RelationAddTargetMethodInfo
ResolveRelationMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
ResolveRelationMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
ResolveRelationMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
ResolveRelationMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
ResolveRelationMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
ResolveRelationMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
ResolveRelationMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
ResolveRelationMethod "ref" o = GObject.Object.ObjectRefMethodInfo
ResolveRelationMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
ResolveRelationMethod "removeTarget" o = RelationRemoveTargetMethodInfo
ResolveRelationMethod "replaceData" o = GObject.Object.ObjectReplaceDataMethodInfo
ResolveRelationMethod "replaceQdata" o = GObject.Object.ObjectReplaceQdataMethodInfo
ResolveRelationMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
ResolveRelationMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
ResolveRelationMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
ResolveRelationMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
ResolveRelationMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
ResolveRelationMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
ResolveRelationMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
ResolveRelationMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
ResolveRelationMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
ResolveRelationMethod "getRelationType" o = RelationGetRelationTypeMethodInfo
ResolveRelationMethod "getTarget" o = RelationGetTargetMethodInfo
ResolveRelationMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
ResolveRelationMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
ResolveRelationMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveRelationMethod t Relation, O.MethodInfo info Relation p) => O.IsLabelProxy t (Relation -> p) where
fromLabelProxy _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveRelationMethod t Relation, O.MethodInfo info Relation p) => O.IsLabel t (Relation -> p) where
fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif
getRelationRelationType :: (MonadIO m, IsRelation o) => o -> m Atk.Enums.RelationType
getRelationRelationType obj = liftIO $ getObjectPropertyEnum obj "relation-type"
setRelationRelationType :: (MonadIO m, IsRelation o) => o -> Atk.Enums.RelationType -> m ()
setRelationRelationType obj val = liftIO $ setObjectPropertyEnum obj "relation-type" val
constructRelationRelationType :: (IsRelation o) => Atk.Enums.RelationType -> IO (GValueConstruct o)
constructRelationRelationType val = constructObjectPropertyEnum "relation-type" val
data RelationRelationTypePropertyInfo
instance AttrInfo RelationRelationTypePropertyInfo where
type AttrAllowedOps RelationRelationTypePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
type AttrSetTypeConstraint RelationRelationTypePropertyInfo = (~) Atk.Enums.RelationType
type AttrBaseTypeConstraint RelationRelationTypePropertyInfo = IsRelation
type AttrGetType RelationRelationTypePropertyInfo = Atk.Enums.RelationType
type AttrLabel RelationRelationTypePropertyInfo = "relation-type"
type AttrOrigin RelationRelationTypePropertyInfo = Relation
attrGet _ = getRelationRelationType
attrSet _ = setRelationRelationType
attrConstruct _ = constructRelationRelationType
attrClear _ = undefined
getRelationTarget :: (MonadIO m, IsRelation o) => o -> m (Maybe GObject.ValueArray.ValueArray)
getRelationTarget obj = liftIO $ getObjectPropertyBoxed obj "target" GObject.ValueArray.ValueArray
setRelationTarget :: (MonadIO m, IsRelation o) => o -> GObject.ValueArray.ValueArray -> m ()
setRelationTarget obj val = liftIO $ setObjectPropertyBoxed obj "target" (Just val)
constructRelationTarget :: (IsRelation o) => GObject.ValueArray.ValueArray -> IO (GValueConstruct o)
constructRelationTarget val = constructObjectPropertyBoxed "target" (Just val)
clearRelationTarget :: (MonadIO m, IsRelation o) => o -> m ()
clearRelationTarget obj = liftIO $ setObjectPropertyBoxed obj "target" (Nothing :: Maybe GObject.ValueArray.ValueArray)
data RelationTargetPropertyInfo
instance AttrInfo RelationTargetPropertyInfo where
type AttrAllowedOps RelationTargetPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint RelationTargetPropertyInfo = (~) GObject.ValueArray.ValueArray
type AttrBaseTypeConstraint RelationTargetPropertyInfo = IsRelation
type AttrGetType RelationTargetPropertyInfo = (Maybe GObject.ValueArray.ValueArray)
type AttrLabel RelationTargetPropertyInfo = "target"
type AttrOrigin RelationTargetPropertyInfo = Relation
attrGet _ = getRelationTarget
attrSet _ = setRelationTarget
attrConstruct _ = constructRelationTarget
attrClear _ = clearRelationTarget
instance O.HasAttributeList Relation
type instance O.AttributeList Relation = RelationAttributeList
type RelationAttributeList = ('[ '("relationType", RelationRelationTypePropertyInfo), '("target", RelationTargetPropertyInfo)] :: [(Symbol, *)])
relationRelationType :: AttrLabelProxy "relationType"
relationRelationType = AttrLabelProxy
relationTarget :: AttrLabelProxy "target"
relationTarget = AttrLabelProxy
type instance O.SignalList Relation = RelationSignalList
type RelationSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])
foreign import ccall "atk_relation_new" atk_relation_new ::
Ptr (Ptr Atk.Object.Object) ->
Int32 ->
CUInt ->
IO (Ptr Relation)
relationNew ::
(B.CallStack.HasCallStack, MonadIO m) =>
[Atk.Object.Object]
-> Atk.Enums.RelationType
-> m Relation
relationNew targets relationship = liftIO $ do
let nTargets = fromIntegral $ length targets
targets' <- mapM unsafeManagedPtrCastPtr targets
targets'' <- packPtrArray targets'
let relationship' = (fromIntegral . fromEnum) relationship
result <- atk_relation_new targets'' nTargets relationship'
checkUnexpectedReturnNULL "relationNew" result
result' <- (wrapObject Relation) result
mapM_ touchManagedPtr targets
freeMem targets''
return result'
foreign import ccall "atk_relation_add_target" atk_relation_add_target ::
Ptr Relation ->
Ptr Atk.Object.Object ->
IO ()
relationAddTarget ::
(B.CallStack.HasCallStack, MonadIO m, IsRelation a, Atk.Object.IsObject b) =>
a
-> b
-> m ()
relationAddTarget relation target = liftIO $ do
relation' <- unsafeManagedPtrCastPtr relation
target' <- unsafeManagedPtrCastPtr target
atk_relation_add_target relation' target'
touchManagedPtr relation
touchManagedPtr target
return ()
data RelationAddTargetMethodInfo
instance (signature ~ (b -> m ()), MonadIO m, IsRelation a, Atk.Object.IsObject b) => O.MethodInfo RelationAddTargetMethodInfo a signature where
overloadedMethod _ = relationAddTarget
foreign import ccall "atk_relation_get_relation_type" atk_relation_get_relation_type ::
Ptr Relation ->
IO CUInt
relationGetRelationType ::
(B.CallStack.HasCallStack, MonadIO m, IsRelation a) =>
a
-> m Atk.Enums.RelationType
relationGetRelationType relation = liftIO $ do
relation' <- unsafeManagedPtrCastPtr relation
result <- atk_relation_get_relation_type relation'
let result' = (toEnum . fromIntegral) result
touchManagedPtr relation
return result'
data RelationGetRelationTypeMethodInfo
instance (signature ~ (m Atk.Enums.RelationType), MonadIO m, IsRelation a) => O.MethodInfo RelationGetRelationTypeMethodInfo a signature where
overloadedMethod _ = relationGetRelationType
foreign import ccall "atk_relation_get_target" atk_relation_get_target ::
Ptr Relation ->
IO (Ptr (GPtrArray (Ptr Atk.Object.Object)))
relationGetTarget ::
(B.CallStack.HasCallStack, MonadIO m, IsRelation a) =>
a
-> m [Atk.Object.Object]
relationGetTarget relation = liftIO $ do
relation' <- unsafeManagedPtrCastPtr relation
result <- atk_relation_get_target relation'
checkUnexpectedReturnNULL "relationGetTarget" result
result' <- unpackGPtrArray result
result'' <- mapM (newObject Atk.Object.Object) result'
touchManagedPtr relation
return result''
data RelationGetTargetMethodInfo
instance (signature ~ (m [Atk.Object.Object]), MonadIO m, IsRelation a) => O.MethodInfo RelationGetTargetMethodInfo a signature where
overloadedMethod _ = relationGetTarget
foreign import ccall "atk_relation_remove_target" atk_relation_remove_target ::
Ptr Relation ->
Ptr Atk.Object.Object ->
IO CInt
relationRemoveTarget ::
(B.CallStack.HasCallStack, MonadIO m, IsRelation a, Atk.Object.IsObject b) =>
a
-> b
-> m Bool
relationRemoveTarget relation target = liftIO $ do
relation' <- unsafeManagedPtrCastPtr relation
target' <- unsafeManagedPtrCastPtr target
result <- atk_relation_remove_target relation' target'
let result' = (/= 0) result
touchManagedPtr relation
touchManagedPtr target
return result'
data RelationRemoveTargetMethodInfo
instance (signature ~ (b -> m Bool), MonadIO m, IsRelation a, Atk.Object.IsObject b) => O.MethodInfo RelationRemoveTargetMethodInfo a signature where
overloadedMethod _ = relationRemoveTarget