<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
               "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
[
  <!ENTITY % local.common.attrib "xmlns:xi  CDATA  #FIXED 'http://www.w3.org/2003/XInclude'">
  <!ENTITY % gtkdocentities SYSTEM "../xml/gtkdocentities.ent">
  %gtkdocentities;
]>
<refentry id="AtkRelation">
<refmeta>
<refentrytitle role="top_of_page" id="AtkRelation.top_of_page">AtkRelation</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>ATK Library</refmiscinfo>
</refmeta>
<refnamediv>
<refname>AtkRelation</refname>
<refpurpose>An object used to describe a relation between a
object and one or more other objects.</refpurpose>
</refnamediv>

<refsect1 id="AtkRelation.functions" role="functions_proto">
<title role="functions_proto.title">Functions</title>
<informaltable pgwide="1" frame="none">
<tgroup cols="2">
<colspec colname="functions_proto_type" colwidth="150px"/>
<colspec colname="functions_proto_name"/>
<tbody>
<row><entry role="function_type"><link linkend="AtkRelationType"><returnvalue>AtkRelationType</returnvalue></link>
</entry><entry role="function_name"><link linkend="atk-relation-type-register">atk_relation_type_register</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type">const <link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="atk-relation-type-get-name">atk_relation_type_get_name</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="AtkRelationType"><returnvalue>AtkRelationType</returnvalue></link>
</entry><entry role="function_name"><link linkend="atk-relation-type-for-name">atk_relation_type_for_name</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="AtkRelation"><returnvalue>AtkRelation</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="atk-relation-new">atk_relation_new</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="AtkRelationType"><returnvalue>AtkRelationType</returnvalue></link>
</entry><entry role="function_name"><link linkend="atk-relation-get-relation-type">atk_relation_get_relation_type</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GPtrArray"><returnvalue>GPtrArray</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="atk-relation-get-target">atk_relation_get_target</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="atk-relation-add-target">atk_relation_add_target</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="atk-relation-remove-target">atk_relation_remove_target</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="atk-relation-set-contains-target">atk_relation_set_contains_target</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 id="AtkRelation.properties" role="properties">
<title role="properties.title">Properties</title>
<informaltable frame="none">
<tgroup cols="3">
<colspec colname="properties_type" colwidth="150px"/>
<colspec colname="properties_name" colwidth="300px"/>
<colspec colname="properties_flags" colwidth="200px"/>
<tbody>
<row><entry role="property_type"><link linkend="AtkRelationType"><type>AtkRelationType</type></link></entry><entry role="property_name"><link linkend="AtkRelation--relation-type">relation-type</link></entry><entry role="property_flags">Read / Write</entry></row>
<row><entry role="property_type"><link linkend="GValueArray"><type>GValueArray</type></link>&#160;*</entry><entry role="property_name"><link linkend="AtkRelation--target">target</link></entry><entry role="property_flags">Read / Write</entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 id="AtkRelation.other" role="other_proto">
<title role="other_proto.title">Types and Values</title>
<informaltable pgwide="1" frame="none">
<tgroup cols="2">
<colspec colname="other_proto_type" colwidth="150px"/>
<colspec colname="other_proto_name"/>
<tbody>
<row><entry role="datatype_keyword">struct</entry><entry role="function_name"><link linkend="AtkRelation-struct">AtkRelation</link></entry></row>
<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="AtkRelationType">AtkRelationType</link></entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 id="AtkRelation.object-hierarchy" role="object_hierarchy">
<title role="object_hierarchy.title">Object Hierarchy</title>
<screen>    <link linkend="GEnum">GEnum</link>
    <phrase role="lineart">&#9584;&#9472;&#9472;</phrase> AtkRelationType
    <link linkend="GObject">GObject</link>
    <phrase role="lineart">&#9584;&#9472;&#9472;</phrase> AtkRelation
</screen>
</refsect1>


<refsect1 id="AtkRelation.description" role="desc">
<title role="desc.title">Description</title>
<para>An AtkRelation describes a relation between an object and one or
more other objects. The actual relations that an object has with
other objects are defined as an AtkRelationSet, which is a set of
AtkRelations.</para>

</refsect1>
<refsect1 id="AtkRelation.functions_details" role="details">
<title role="details.title">Functions</title>
<refsect2 id="atk-relation-type-register" role="function">
<title>atk_relation_type_register&#160;()</title>
<indexterm zone="atk-relation-type-register"><primary>atk_relation_type_register</primary></indexterm>
<programlisting language="C"><link linkend="AtkRelationType"><returnvalue>AtkRelationType</returnvalue></link>
atk_relation_type_register (<parameter>const <link linkend="gchar"><type>gchar</type></link> *name</parameter>);</programlisting>
<para>Associate <parameter>name</parameter>
 with a new <link linkend="AtkRelationType"><type>AtkRelationType</type></link></para>
<refsect3 id="atk-relation-type-register.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>name</para></entry>
<entry role="parameter_description"><para>a name string</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-relation-type-register.returns" role="returns">
<title>Returns</title>
<para> an <link linkend="AtkRelationType"><type>AtkRelationType</type></link> associated with <parameter>name</parameter>
</para>
</refsect3></refsect2>
<refsect2 id="atk-relation-type-get-name" role="function">
<title>atk_relation_type_get_name&#160;()</title>
<indexterm zone="atk-relation-type-get-name"><primary>atk_relation_type_get_name</primary></indexterm>
<programlisting language="C">const <link linkend="gchar"><returnvalue>gchar</returnvalue></link>&#160;*
atk_relation_type_get_name (<parameter><link linkend="AtkRelationType"><type>AtkRelationType</type></link> type</parameter>);</programlisting>
<para>Gets the description string describing the <link linkend="AtkRelationType"><type>AtkRelationType</type></link> <parameter>type</parameter>
.</para>
<refsect3 id="atk-relation-type-get-name.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>type</para></entry>
<entry role="parameter_description"><para>The <link linkend="AtkRelationType"><type>AtkRelationType</type></link> whose name is required</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-relation-type-get-name.returns" role="returns">
<title>Returns</title>
<para> the string describing the AtkRelationType</para>
</refsect3></refsect2>
<refsect2 id="atk-relation-type-for-name" role="function">
<title>atk_relation_type_for_name&#160;()</title>
<indexterm zone="atk-relation-type-for-name"><primary>atk_relation_type_for_name</primary></indexterm>
<programlisting language="C"><link linkend="AtkRelationType"><returnvalue>AtkRelationType</returnvalue></link>
atk_relation_type_for_name (<parameter>const <link linkend="gchar"><type>gchar</type></link> *name</parameter>);</programlisting>
<para>Get the <link linkend="AtkRelationType"><type>AtkRelationType</type></link> type corresponding to a relation name.</para>
<refsect3 id="atk-relation-type-for-name.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>name</para></entry>
<entry role="parameter_description"><para>a string which is the (non-localized) name of an ATK relation type.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-relation-type-for-name.returns" role="returns">
<title>Returns</title>
<para> the <link linkend="AtkRelationType"><type>AtkRelationType</type></link> enumerated type corresponding to the specified name,
or <link linkend="ATK-RELATION-NULL:CAPS"><type>ATK_RELATION_NULL</type></link> if no matching relation type is found.</para>
</refsect3></refsect2>
<refsect2 id="atk-relation-new" role="function">
<title>atk_relation_new&#160;()</title>
<indexterm zone="atk-relation-new"><primary>atk_relation_new</primary></indexterm>
<programlisting language="C"><link linkend="AtkRelation"><returnvalue>AtkRelation</returnvalue></link>&#160;*
atk_relation_new (<parameter><link linkend="AtkObject"><type>AtkObject</type></link> **targets</parameter>,
                  <parameter><link linkend="gint"><type>gint</type></link> n_targets</parameter>,
                  <parameter><link linkend="AtkRelationType"><type>AtkRelationType</type></link> relationship</parameter>);</programlisting>
<para>Create a new relation for the specified key and the specified list
of targets.  See also <link linkend="atk-object-add-relationship"><function>atk_object_add_relationship()</function></link>.</para>
<refsect3 id="atk-relation-new.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>targets</para></entry>
<entry role="parameter_description"><para>an array of pointers to
<link linkend="AtkObjects"><type>AtkObjects</type></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>array</acronym> length=n_targets]</emphasis></entry></row>
<row><entry role="parameter_name"><para>n_targets</para></entry>
<entry role="parameter_description"><para>number of <link linkend="AtkObjects"><type>AtkObjects</type></link> pointed to by <parameter>targets</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>relationship</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkRelationType"><type>AtkRelationType</type></link> with which to create the new
<link linkend="AtkRelation"><type>AtkRelation</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-relation-new.returns" role="returns">
<title>Returns</title>
<para> a pointer to a new <link linkend="AtkRelation"><type>AtkRelation</type></link></para>
</refsect3></refsect2>
<refsect2 id="atk-relation-get-relation-type" role="function">
<title>atk_relation_get_relation_type&#160;()</title>
<indexterm zone="atk-relation-get-relation-type"><primary>atk_relation_get_relation_type</primary></indexterm>
<programlisting language="C"><link linkend="AtkRelationType"><returnvalue>AtkRelationType</returnvalue></link>
atk_relation_get_relation_type (<parameter><link linkend="AtkRelation"><type>AtkRelation</type></link> *relation</parameter>);</programlisting>
<para>Gets the type of <parameter>relation</parameter>
</para>
<refsect3 id="atk-relation-get-relation-type.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>relation</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkRelation"><type>AtkRelation</type></link> </para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-relation-get-relation-type.returns" role="returns">
<title>Returns</title>
<para> the type of <parameter>relation</parameter>
</para>
</refsect3></refsect2>
<refsect2 id="atk-relation-get-target" role="function">
<title>atk_relation_get_target&#160;()</title>
<indexterm zone="atk-relation-get-target"><primary>atk_relation_get_target</primary></indexterm>
<programlisting language="C"><link linkend="GPtrArray"><returnvalue>GPtrArray</returnvalue></link>&#160;*
atk_relation_get_target (<parameter><link linkend="AtkRelation"><type>AtkRelation</type></link> *relation</parameter>);</programlisting>
<para>Gets the target list of <parameter>relation</parameter>
</para>
<refsect3 id="atk-relation-get-target.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>relation</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkRelation"><type>AtkRelation</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-relation-get-target.returns" role="returns">
<title>Returns</title>
<para>the target list of <parameter>relation</parameter>
. </para>
<para><emphasis role="annotation">[<acronym>transfer none</acronym>][<acronym>element-type</acronym> Atk.Object]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="atk-relation-add-target" role="function" condition="since:1.9">
<title>atk_relation_add_target&#160;()</title>
<indexterm zone="atk-relation-add-target" role="1.9"><primary>atk_relation_add_target</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
atk_relation_add_target (<parameter><link linkend="AtkRelation"><type>AtkRelation</type></link> *relation</parameter>,
                         <parameter><link linkend="AtkObject"><type>AtkObject</type></link> *target</parameter>);</programlisting>
<para>Adds the specified AtkObject to the target for the relation, if it is
not already present.  See also <link linkend="atk-object-add-relationship"><function>atk_object_add_relationship()</function></link>.</para>
<refsect3 id="atk-relation-add-target.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>relation</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkRelation"><type>AtkRelation</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>target</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkObject"><type>AtkObject</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para role="since">Since: <link linkend="api-index-1.9">1.9</link></para></refsect2>
<refsect2 id="atk-relation-remove-target" role="function">
<title>atk_relation_remove_target&#160;()</title>
<indexterm zone="atk-relation-remove-target"><primary>atk_relation_remove_target</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
atk_relation_remove_target (<parameter><link linkend="AtkRelation"><type>AtkRelation</type></link> *relation</parameter>,
                            <parameter><link linkend="AtkObject"><type>AtkObject</type></link> *target</parameter>);</programlisting>
<para>Remove the specified AtkObject from the target for the relation.</para>
<refsect3 id="atk-relation-remove-target.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>relation</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkRelation"><type>AtkRelation</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>target</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkObject"><type>AtkObject</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-relation-remove-target.returns" role="returns">
<title>Returns</title>
<para> TRUE if the removal is successful.</para>
</refsect3></refsect2>
<refsect2 id="atk-relation-set-contains-target" role="function">
<title>atk_relation_set_contains_target&#160;()</title>
<indexterm zone="atk-relation-set-contains-target"><primary>atk_relation_set_contains_target</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
atk_relation_set_contains_target (<parameter><link linkend="AtkRelationSet"><type>AtkRelationSet</type></link> *set</parameter>,
                                  <parameter><link linkend="AtkRelationType"><type>AtkRelationType</type></link> relationship</parameter>,
                                  <parameter><link linkend="AtkObject"><type>AtkObject</type></link> *target</parameter>);</programlisting>
<para>Determines whether the relation set contains a relation that
matches the specified pair formed by type <parameter>relationship</parameter>
 and object
<parameter>target</parameter>
.</para>
<refsect3 id="atk-relation-set-contains-target.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>set</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkRelationSet"><type>AtkRelationSet</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>relationship</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkRelationType"><type>AtkRelationType</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>target</para></entry>
<entry role="parameter_description"><para>an <link linkend="AtkObject"><type>AtkObject</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="atk-relation-set-contains-target.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if <parameter>set</parameter>
contains a relation with the relationship
type <parameter>relationship</parameter>
with an object <parameter>target</parameter>
, <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise</para>
</refsect3></refsect2>

</refsect1>
<refsect1 id="AtkRelation.other_details" role="details">
<title role="details.title">Types and Values</title>
<refsect2 id="AtkRelation-struct" role="struct">
<title>struct AtkRelation</title>
<indexterm zone="AtkRelation-struct"><primary>AtkRelation</primary></indexterm>
<programlisting language="C">struct AtkRelation;</programlisting>
</refsect2>
<refsect2 id="AtkRelationType" role="enum">
<title>enum AtkRelationType</title>
<indexterm zone="AtkRelationType"><primary>AtkRelationType</primary></indexterm>
<para>Describes the type of the relation</para>
<refsect3 id="AtkRelationType.members" role="enum_members">
<title>Members</title>
<informaltable role="enum_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="enum_members_name" colwidth="300px"/>
<colspec colname="enum_members_description"/>
<colspec colname="enum_members_annotations" colwidth="200px"/>
<tbody>
<row role="constant"><entry role="enum_member_name"><para id="ATK-RELATION-NULL:CAPS">ATK_RELATION_NULL</para></entry>
<entry role="enum_member_description"><para>Not used, represens "no relationship" or an error condition.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-RELATION-CONTROLLED-BY:CAPS">ATK_RELATION_CONTROLLED_BY</para></entry>
<entry role="enum_member_description"><para>Indicates an object controlled by one or more target objects.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-RELATION-CONTROLLER-FOR:CAPS">ATK_RELATION_CONTROLLER_FOR</para></entry>
<entry role="enum_member_description"><para>Indicates an object is an controller for one or more target objects.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-RELATION-LABEL-FOR:CAPS">ATK_RELATION_LABEL_FOR</para></entry>
<entry role="enum_member_description"><para>Indicates an object is a label for one or more target objects.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-RELATION-LABELLED-BY:CAPS">ATK_RELATION_LABELLED_BY</para></entry>
<entry role="enum_member_description"><para>Indicates an object is labelled by one or more target objects.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-RELATION-MEMBER-OF:CAPS">ATK_RELATION_MEMBER_OF</para></entry>
<entry role="enum_member_description"><para>Indicates an object is a member of a group of one or more target objects.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-RELATION-NODE-CHILD-OF:CAPS">ATK_RELATION_NODE_CHILD_OF</para></entry>
<entry role="enum_member_description"><para>Indicates an object is a cell in a treetable which is displayed because a cell in the same column is expanded and identifies that cell.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-RELATION-FLOWS-TO:CAPS">ATK_RELATION_FLOWS_TO</para></entry>
<entry role="enum_member_description"><para>Indicates that the object has content that flows logically to another
AtkObject in a sequential way, (for instance text-flow).</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-RELATION-FLOWS-FROM:CAPS">ATK_RELATION_FLOWS_FROM</para></entry>
<entry role="enum_member_description"><para>Indicates that the object has content that flows logically from
another AtkObject in a sequential way, (for instance text-flow).</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-RELATION-SUBWINDOW-OF:CAPS">ATK_RELATION_SUBWINDOW_OF</para></entry>
<entry role="enum_member_description"><para>Indicates a subwindow attached to a component but otherwise has no connection in  the UI heirarchy to that component.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-RELATION-EMBEDS:CAPS">ATK_RELATION_EMBEDS</para></entry>
<entry role="enum_member_description"><para>Indicates that the object visually embeds

another object's content, i.e. this object's content flows around

another's content.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-RELATION-EMBEDDED-BY:CAPS">ATK_RELATION_EMBEDDED_BY</para></entry>
<entry role="enum_member_description"><para>Reciprocal of <link linkend="ATK-RELATION-EMBEDS:CAPS"><literal>ATK_RELATION_EMBEDS</literal></link>, indicates that
this object's content is visualy embedded in another object.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-RELATION-POPUP-FOR:CAPS">ATK_RELATION_POPUP_FOR</para></entry>
<entry role="enum_member_description"><para>Indicates that an object is a popup for another object.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-RELATION-PARENT-WINDOW-OF:CAPS">ATK_RELATION_PARENT_WINDOW_OF</para></entry>
<entry role="enum_member_description"><para>Indicates that an object is a parent window of another object.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-RELATION-DESCRIBED-BY:CAPS">ATK_RELATION_DESCRIBED_BY</para></entry>
<entry role="enum_member_description"><para>Reciprocal of <link linkend="ATK-RELATION-DESCRIPTION-FOR:CAPS"><literal>ATK_RELATION_DESCRIPTION_FOR</literal></link>. Indicates that one
or more target objects provide descriptive information about this object. This relation
type is most appropriate for information that is not essential as its presentation may
be user-configurable and/or limited to an on-demand mechanism such as an assistive
technology command. For brief, essential information such as can be found in a widget's
on-screen label, use <link linkend="ATK-RELATION-LABELLED-BY:CAPS"><literal>ATK_RELATION_LABELLED_BY</literal></link>. For an on-screen error message, use
<link linkend="ATK-RELATION-ERROR-MESSAGE:CAPS"><literal>ATK_RELATION_ERROR_MESSAGE</literal></link>. For lengthy extended descriptive information contained in
an on-screen object, consider using <link linkend="ATK-RELATION-DETAILS:CAPS"><literal>ATK_RELATION_DETAILS</literal></link> as assistive technologies may
provide a means for the user to navigate to objects containing detailed descriptions so
that their content can be more closely reviewed.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-RELATION-DESCRIPTION-FOR:CAPS">ATK_RELATION_DESCRIPTION_FOR</para></entry>
<entry role="enum_member_description"><para>Reciprocal of <link linkend="ATK-RELATION-DESCRIBED-BY:CAPS"><literal>ATK_RELATION_DESCRIBED_BY</literal></link>. Indicates that this
object provides descriptive information about the target object(s). See also
<link linkend="ATK-RELATION-DETAILS-FOR:CAPS"><literal>ATK_RELATION_DETAILS_FOR</literal></link> and <link linkend="ATK-RELATION-ERROR-FOR:CAPS"><literal>ATK_RELATION_ERROR_FOR</literal></link>.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-RELATION-NODE-PARENT-OF:CAPS">ATK_RELATION_NODE_PARENT_OF</para></entry>
<entry role="enum_member_description"><para>Indicates an object is a cell in a treetable and is expanded to display other cells in the same column.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-RELATION-DETAILS:CAPS">ATK_RELATION_DETAILS</para></entry>
<entry role="enum_member_description"><para>Reciprocal of <link linkend="ATK-RELATION-DETAILS-FOR:CAPS"><literal>ATK_RELATION_DETAILS_FOR</literal></link>. Indicates that this object
has a detailed or extended description, the contents of which can be found in the target
object(s). This relation type is most appropriate for information that is sufficiently
lengthy as to make navigation to the container of that information desirable. For less
verbose information suitable for announcement only, see <link linkend="ATK-RELATION-DESCRIBED-BY:CAPS"><literal>ATK_RELATION_DESCRIBED_BY</literal></link>. If
the detailed information describes an error condition, <link linkend="ATK-RELATION-ERROR-FOR:CAPS"><literal>ATK_RELATION_ERROR_FOR</literal></link> should be
used instead. <parameter>Since</parameter>
: ATK-2.26.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-RELATION-DETAILS-FOR:CAPS">ATK_RELATION_DETAILS_FOR</para></entry>
<entry role="enum_member_description"><para>Reciprocal of <link linkend="ATK-RELATION-DETAILS:CAPS"><literal>ATK_RELATION_DETAILS</literal></link>. Indicates that this object
provides a detailed or extended description about the target object(s). See also
<link linkend="ATK-RELATION-DESCRIPTION-FOR:CAPS"><literal>ATK_RELATION_DESCRIPTION_FOR</literal></link> and <link linkend="ATK-RELATION-ERROR-FOR:CAPS"><literal>ATK_RELATION_ERROR_FOR</literal></link>. <parameter>Since</parameter>
: ATK-2.26.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-RELATION-ERROR-MESSAGE:CAPS">ATK_RELATION_ERROR_MESSAGE</para></entry>
<entry role="enum_member_description"><para>Reciprocal of <link linkend="ATK-RELATION-ERROR-FOR:CAPS"><literal>ATK_RELATION_ERROR_FOR</literal></link>. Indicates that this object
has one or more errors, the nature of which is described in the contents of the target
object(s). Objects that have this relation type should also contain <link linkend="ATK-STATE-INVALID-ENTRY:CAPS"><literal>ATK_STATE_INVALID_ENTRY</literal></link>
in their <link linkend="AtkStateSet"><type>AtkStateSet</type></link>. <parameter>Since</parameter>
: ATK-2.26.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-RELATION-ERROR-FOR:CAPS">ATK_RELATION_ERROR_FOR</para></entry>
<entry role="enum_member_description"><para>Reciprocal of <link linkend="ATK-RELATION-ERROR-MESSAGE:CAPS"><literal>ATK_RELATION_ERROR_MESSAGE</literal></link>. Indicates that this object
contains an error message describing an invalid condition in the target object(s). <parameter>Since</parameter>
:
ATK_2.26.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="ATK-RELATION-LAST-DEFINED:CAPS">ATK_RELATION_LAST_DEFINED</para></entry>
<entry role="enum_member_description"><para>Not used, this value indicates the end of the enumeration.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>

</refsect1>
<refsect1 id="AtkRelation.property-details" role="property_details">
<title role="property_details.title">Property Details</title>
<refsect2 id="AtkRelation--relation-type" role="property"><title>The <literal>“relation-type”</literal> property</title>
<indexterm zone="AtkRelation--relation-type"><primary>AtkRelation:relation-type</primary></indexterm>
<programlisting>  “relation-type”            <link linkend="AtkRelationType"><type>AtkRelationType</type></link></programlisting>
<para>The type of the relation.</para><para>Owner: AtkRelation</para>
<para>Flags: Read / Write</para>
<para>Default value: ATK_RELATION_NULL</para>
</refsect2>
<refsect2 id="AtkRelation--target" role="property"><title>The <literal>“target”</literal> property</title>
<indexterm zone="AtkRelation--target"><primary>AtkRelation:target</primary></indexterm>
<programlisting>  “target”                   <link linkend="GValueArray"><type>GValueArray</type></link>&#160;*</programlisting>
<para>An array of the targets for the relation.</para><para>Owner: AtkRelation</para>
<para>Flags: Read / Write</para>
</refsect2>

</refsect1>

</refentry>
