1
<refentry id="GtkTreeStore">
3
<refentrytitle role="top_of_page">GtkTreeStore</refentrytitle>
4
<manvolnum>3</manvolnum>
5
<refmiscinfo>GTK Library</refmiscinfo>
9
<refname>GtkTreeStore</refname>
10
<refpurpose>A tree-like data structure that can be used with the <link linkend="GtkTreeView"><type>GtkTreeView</type></link></refpurpose>
11
<!--[<xref linkend="desc" endterm="desc.title"/>]-->
14
<refsynopsisdiv role="synopsis">
15
<title role="synopsis.title">Synopsis</title>
19
#include <gtk/gtk.h>
22
<link linkend="GtkTreeStore-struct">GtkTreeStore</link>;
23
<link linkend="GtkTreeStore">GtkTreeStore</link>* <link linkend="gtk-tree-store-new">gtk_tree_store_new</link> (<link linkend="gint">gint</link> n_columns,
25
<link linkend="GtkTreeStore">GtkTreeStore</link>* <link linkend="gtk-tree-store-newv">gtk_tree_store_newv</link> (<link linkend="gint">gint</link> n_columns,
26
<link linkend="GType">GType</link> *types);
27
<link linkend="void">void</link> <link linkend="gtk-tree-store-set-column-types">gtk_tree_store_set_column_types</link> (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
28
<link linkend="gint">gint</link> n_columns,
29
<link linkend="GType">GType</link> *types);
30
<link linkend="void">void</link> <link linkend="gtk-tree-store-set-value">gtk_tree_store_set_value</link> (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
31
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter,
32
<link linkend="gint">gint</link> column,
33
<link linkend="GValue">GValue</link> *value);
34
<link linkend="void">void</link> <link linkend="gtk-tree-store-set">gtk_tree_store_set</link> (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
35
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter,
37
<link linkend="void">void</link> <link linkend="gtk-tree-store-set-valist">gtk_tree_store_set_valist</link> (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
38
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter,
39
<link linkend="va-list">va_list</link> var_args);
40
<link linkend="gboolean">gboolean</link> <link linkend="gtk-tree-store-remove">gtk_tree_store_remove</link> (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
41
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter);
42
<link linkend="void">void</link> <link linkend="gtk-tree-store-insert">gtk_tree_store_insert</link> (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
43
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter,
44
<link linkend="GtkTreeIter">GtkTreeIter</link> *parent,
45
<link linkend="gint">gint</link> position);
46
<link linkend="void">void</link> <link linkend="gtk-tree-store-insert-before">gtk_tree_store_insert_before</link> (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
47
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter,
48
<link linkend="GtkTreeIter">GtkTreeIter</link> *parent,
49
<link linkend="GtkTreeIter">GtkTreeIter</link> *sibling);
50
<link linkend="void">void</link> <link linkend="gtk-tree-store-insert-after">gtk_tree_store_insert_after</link> (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
51
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter,
52
<link linkend="GtkTreeIter">GtkTreeIter</link> *parent,
53
<link linkend="GtkTreeIter">GtkTreeIter</link> *sibling);
54
<link linkend="void">void</link> <link linkend="gtk-tree-store-insert-with-values">gtk_tree_store_insert_with_values</link> (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
55
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter,
56
<link linkend="GtkTreeIter">GtkTreeIter</link> *parent,
57
<link linkend="gint">gint</link> position,
59
<link linkend="void">void</link> <link linkend="gtk-tree-store-insert-with-valuesv">gtk_tree_store_insert_with_valuesv</link> (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
60
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter,
61
<link linkend="GtkTreeIter">GtkTreeIter</link> *parent,
62
<link linkend="gint">gint</link> position,
63
<link linkend="gint">gint</link> *columns,
64
<link linkend="GValue">GValue</link> *values,
65
<link linkend="gint">gint</link> n_values);
66
<link linkend="void">void</link> <link linkend="gtk-tree-store-prepend">gtk_tree_store_prepend</link> (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
67
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter,
68
<link linkend="GtkTreeIter">GtkTreeIter</link> *parent);
69
<link linkend="void">void</link> <link linkend="gtk-tree-store-append">gtk_tree_store_append</link> (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
70
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter,
71
<link linkend="GtkTreeIter">GtkTreeIter</link> *parent);
72
<link linkend="gboolean">gboolean</link> <link linkend="gtk-tree-store-is-ancestor">gtk_tree_store_is_ancestor</link> (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
73
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter,
74
<link linkend="GtkTreeIter">GtkTreeIter</link> *descendant);
75
<link linkend="gint">gint</link> <link linkend="gtk-tree-store-iter-depth">gtk_tree_store_iter_depth</link> (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
76
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter);
77
<link linkend="void">void</link> <link linkend="gtk-tree-store-clear">gtk_tree_store_clear</link> (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store);
78
<link linkend="gboolean">gboolean</link> <link linkend="gtk-tree-store-iter-is-valid">gtk_tree_store_iter_is_valid</link> (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
79
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter);
80
<link linkend="void">void</link> <link linkend="gtk-tree-store-reorder">gtk_tree_store_reorder</link> (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
81
<link linkend="GtkTreeIter">GtkTreeIter</link> *parent,
82
<link linkend="gint">gint</link> *new_order);
83
<link linkend="void">void</link> <link linkend="gtk-tree-store-swap">gtk_tree_store_swap</link> (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
84
<link linkend="GtkTreeIter">GtkTreeIter</link> *a,
85
<link linkend="GtkTreeIter">GtkTreeIter</link> *b);
86
<link linkend="void">void</link> <link linkend="gtk-tree-store-move-before">gtk_tree_store_move_before</link> (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
87
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter,
88
<link linkend="GtkTreeIter">GtkTreeIter</link> *position);
89
<link linkend="void">void</link> <link linkend="gtk-tree-store-move-after">gtk_tree_store_move_after</link> (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
90
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter,
91
<link linkend="GtkTreeIter">GtkTreeIter</link> *position);
97
<refsect1 role="object_hierarchy">
98
<title role="object_hierarchy.title">Object Hierarchy</title>
101
<link linkend="GObject">GObject</link>
109
<refsect1 role="impl_interfaces">
110
<title role="impl_interfaces.title">Implemented Interfaces</title>
112
GtkTreeStore implements
113
<link linkend="GtkTreeModel">GtkTreeModel</link>, <link linkend="GtkTreeDragSource">GtkTreeDragSource</link>, <link linkend="GtkTreeDragDest">GtkTreeDragDest</link> and <link linkend="GtkTreeSortable">GtkTreeSortable</link>.</para>
121
<refsect1 role="desc">
122
<title role="desc.title">Description</title>
124
The <link linkend="GtkTreeStore"><type>GtkTreeStore</type></link> object is a list model for use with a <link linkend="GtkTreeView"><type>GtkTreeView</type></link>
125
widget. It implements the <link linkend="GtkTreeModel"><type>GtkTreeModel</type></link> interface, and consequentialy,
126
can use all of the methods available there. It also implements the
127
<link linkend="GtkTreeSortable"><type>GtkTreeSortable</type></link> interface so it can be sorted by the view. Finally,
128
it also implements the tree <link linkend="gtktreednd">drag and
129
drop</link> interfaces.
134
<refsect1 role="details">
135
<title role="details.title">Details</title>
137
<title><anchor id="GtkTreeStore-struct" role="struct"/>GtkTreeStore</title>
138
<indexterm><primary>GtkTreeStore</primary></indexterm><programlisting>typedef struct _GtkTreeStore GtkTreeStore;</programlisting>
143
<title><anchor id="gtk-tree-store-new" role="function"/>gtk_tree_store_new ()</title>
144
<indexterm><primary>gtk_tree_store_new</primary></indexterm><programlisting><link linkend="GtkTreeStore">GtkTreeStore</link>* gtk_tree_store_new (<link linkend="gint">gint</link> n_columns,
145
...);</programlisting>
147
Creates a new tree store as with <parameter>n_columns</parameter> columns each of the types passed
148
in. Note that only types derived from standard GObject fundamental types
152
As an example, <literal>gtk_tree_store_new (3, G_TYPE_INT, G_TYPE_STRING,
153
GDK_TYPE_PIXBUF);</literal> will create a new <link linkend="GtkTreeStore"><type>GtkTreeStore</type></link> with three columns, of type
154
<type>int</type>, <type>string</type> and <link linkend="GdkPixbuf"><type>GdkPixbuf</type></link> respectively.</para>
157
</para><variablelist role="params">
158
<varlistentry><term><parameter>n_columns</parameter> :</term>
159
<listitem><simpara> number of columns in the tree store
160
</simpara></listitem></varlistentry>
161
<varlistentry><term><parameter>...</parameter> :</term>
162
<listitem><simpara> all <link linkend="GType"><type>GType</type></link> types for the columns, from first to last
163
</simpara></listitem></varlistentry>
164
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a new <link linkend="GtkTreeStore"><type>GtkTreeStore</type></link>
165
</simpara></listitem></varlistentry>
166
</variablelist></refsect2>
168
<title><anchor id="gtk-tree-store-newv" role="function"/>gtk_tree_store_newv ()</title>
169
<indexterm><primary>gtk_tree_store_newv</primary></indexterm><programlisting><link linkend="GtkTreeStore">GtkTreeStore</link>* gtk_tree_store_newv (<link linkend="gint">gint</link> n_columns,
170
<link linkend="GType">GType</link> *types);</programlisting>
172
Non vararg creation function. Used primarily by language bindings.</para>
175
</para><variablelist role="params">
176
<varlistentry><term><parameter>n_columns</parameter> :</term>
177
<listitem><simpara> number of columns in the tree store
178
</simpara></listitem></varlistentry>
179
<varlistentry><term><parameter>types</parameter> :</term>
180
<listitem><simpara> an array of <link linkend="GType"><type>GType</type></link> types for the columns, from first to last
181
</simpara></listitem></varlistentry>
182
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a new <link linkend="GtkTreeStore"><type>GtkTreeStore</type></link>
183
</simpara></listitem></varlistentry>
184
</variablelist></refsect2>
186
<title><anchor id="gtk-tree-store-set-column-types" role="function"/>gtk_tree_store_set_column_types ()</title>
187
<indexterm><primary>gtk_tree_store_set_column_types</primary></indexterm><programlisting><link linkend="void">void</link> gtk_tree_store_set_column_types (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
188
<link linkend="gint">gint</link> n_columns,
189
<link linkend="GType">GType</link> *types);</programlisting>
191
This function is meant primarily for <link linkend="GObjects"><type>GObjects</type></link> that inherit from
192
<link linkend="GtkTreeStore"><type>GtkTreeStore</type></link>, and should only be used when constructing a new
193
<link linkend="GtkTreeStore"><type>GtkTreeStore</type></link>. It will not function after a row has been added,
194
or a method on the <link linkend="GtkTreeModel"><type>GtkTreeModel</type></link> interface is called.</para>
197
</para><variablelist role="params">
198
<varlistentry><term><parameter>tree_store</parameter> :</term>
199
<listitem><simpara> A <link linkend="GtkTreeStore"><type>GtkTreeStore</type></link>
200
</simpara></listitem></varlistentry>
201
<varlistentry><term><parameter>n_columns</parameter> :</term>
202
<listitem><simpara> Number of columns for the tree store
203
</simpara></listitem></varlistentry>
204
<varlistentry><term><parameter>types</parameter> :</term>
205
<listitem><simpara> An array of <link linkend="GType"><type>GType</type></link> types, one for each column
206
</simpara></listitem></varlistentry>
207
</variablelist></refsect2>
209
<title><anchor id="gtk-tree-store-set-value" role="function"/>gtk_tree_store_set_value ()</title>
210
<indexterm><primary>gtk_tree_store_set_value</primary></indexterm><programlisting><link linkend="void">void</link> gtk_tree_store_set_value (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
211
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter,
212
<link linkend="gint">gint</link> column,
213
<link linkend="GValue">GValue</link> *value);</programlisting>
215
Sets the data in the cell specified by <parameter>iter</parameter> and <parameter>column</parameter>.
216
The type of <parameter>value</parameter> must be convertible to the type of the
220
</para><variablelist role="params">
221
<varlistentry><term><parameter>tree_store</parameter> :</term>
222
<listitem><simpara> a <link linkend="GtkTreeStore"><type>GtkTreeStore</type></link>
223
</simpara></listitem></varlistentry>
224
<varlistentry><term><parameter>iter</parameter> :</term>
225
<listitem><simpara> A valid <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link> for the row being modified
226
</simpara></listitem></varlistentry>
227
<varlistentry><term><parameter>column</parameter> :</term>
228
<listitem><simpara> column number to modify
229
</simpara></listitem></varlistentry>
230
<varlistentry><term><parameter>value</parameter> :</term>
231
<listitem><simpara> new value for the cell
232
</simpara></listitem></varlistentry>
233
</variablelist></refsect2>
235
<title><anchor id="gtk-tree-store-set" role="function"/>gtk_tree_store_set ()</title>
236
<indexterm><primary>gtk_tree_store_set</primary></indexterm><programlisting><link linkend="void">void</link> gtk_tree_store_set (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
237
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter,
238
...);</programlisting>
240
Sets the value of one or more cells in the row referenced by <parameter>iter</parameter>.
241
The variable argument list should contain integer column numbers,
242
each column number followed by the value to be set.
243
The list is terminated by a -1. For example, to set column 0 with type
244
<link linkend="G-TYPE-STRING:CAPS"><literal>G_TYPE_STRING</literal></link> to "Foo", you would write
245
<literal>gtk_tree_store_set (store, iter, 0, "Foo", -1)</literal>.</para>
248
</para><variablelist role="params">
249
<varlistentry><term><parameter>tree_store</parameter> :</term>
250
<listitem><simpara> A <link linkend="GtkTreeStore"><type>GtkTreeStore</type></link>
251
</simpara></listitem></varlistentry>
252
<varlistentry><term><parameter>iter</parameter> :</term>
253
<listitem><simpara> A valid <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link> for the row being modified
254
</simpara></listitem></varlistentry>
255
<varlistentry><term><parameter>...</parameter> :</term>
256
<listitem><simpara> pairs of column number and value, terminated with -1
257
</simpara></listitem></varlistentry>
258
</variablelist></refsect2>
260
<title><anchor id="gtk-tree-store-set-valist" role="function"/>gtk_tree_store_set_valist ()</title>
261
<indexterm><primary>gtk_tree_store_set_valist</primary></indexterm><programlisting><link linkend="void">void</link> gtk_tree_store_set_valist (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
262
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter,
263
<link linkend="va-list">va_list</link> var_args);</programlisting>
265
See <link linkend="gtk-tree-store-set"><function>gtk_tree_store_set()</function></link>; this version takes a <type>va_list</type> for
266
use by language bindings.</para>
269
</para><variablelist role="params">
270
<varlistentry><term><parameter>tree_store</parameter> :</term>
271
<listitem><simpara> A <link linkend="GtkTreeStore"><type>GtkTreeStore</type></link>
272
</simpara></listitem></varlistentry>
273
<varlistentry><term><parameter>iter</parameter> :</term>
274
<listitem><simpara> A valid <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link> for the row being modified
275
</simpara></listitem></varlistentry>
276
<varlistentry><term><parameter>var_args</parameter> :</term>
277
<listitem><simpara> <type>va_list</type> of column/value pairs
278
</simpara></listitem></varlistentry>
279
</variablelist></refsect2>
281
<title><anchor id="gtk-tree-store-remove" role="function"/>gtk_tree_store_remove ()</title>
282
<indexterm><primary>gtk_tree_store_remove</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> gtk_tree_store_remove (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
283
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter);</programlisting>
285
Removes <parameter>iter</parameter> from <parameter>tree_store</parameter>. After being removed, <parameter>iter</parameter> is set to the
286
next valid row at that level, or invalidated if it previously pointed to the
290
</para><variablelist role="params">
291
<varlistentry><term><parameter>tree_store</parameter> :</term>
292
<listitem><simpara> A <link linkend="GtkTreeStore"><type>GtkTreeStore</type></link>
293
</simpara></listitem></varlistentry>
294
<varlistentry><term><parameter>iter</parameter> :</term>
295
<listitem><simpara> A valid <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link>
296
</simpara></listitem></varlistentry>
297
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if <parameter>iter</parameter> is still valid, <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> if not.
298
</simpara></listitem></varlistentry>
299
</variablelist></refsect2>
301
<title><anchor id="gtk-tree-store-insert" role="function"/>gtk_tree_store_insert ()</title>
302
<indexterm><primary>gtk_tree_store_insert</primary></indexterm><programlisting><link linkend="void">void</link> gtk_tree_store_insert (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
303
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter,
304
<link linkend="GtkTreeIter">GtkTreeIter</link> *parent,
305
<link linkend="gint">gint</link> position);</programlisting>
307
Creates a new row at <parameter>position</parameter>. If parent is non-<link linkend="NULL:CAPS"><literal>NULL</literal></link>, then the row will be
308
made a child of <parameter>parent</parameter>. Otherwise, the row will be created at the toplevel.
309
If <parameter>position</parameter> is larger than the number of rows at that level, then the new
310
row will be inserted to the end of the list. <parameter>iter</parameter> will be changed to point
311
to this new row. The row will be empty after this function is called. To
312
fill in values, you need to call <link linkend="gtk-tree-store-set"><function>gtk_tree_store_set()</function></link> or
313
<link linkend="gtk-tree-store-set-value"><function>gtk_tree_store_set_value()</function></link>.</para>
316
</para><variablelist role="params">
317
<varlistentry><term><parameter>tree_store</parameter> :</term>
318
<listitem><simpara> A <link linkend="GtkTreeStore"><type>GtkTreeStore</type></link>
319
</simpara></listitem></varlistentry>
320
<varlistentry><term><parameter>iter</parameter> :</term>
321
<listitem><simpara> An unset <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link> to set to the new row
322
</simpara></listitem></varlistentry>
323
<varlistentry><term><parameter>parent</parameter> :</term>
324
<listitem><simpara> A valid <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link>, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>
325
</simpara></listitem></varlistentry>
326
<varlistentry><term><parameter>position</parameter> :</term>
327
<listitem><simpara> position to insert the new row
328
</simpara></listitem></varlistentry>
329
</variablelist></refsect2>
331
<title><anchor id="gtk-tree-store-insert-before" role="function"/>gtk_tree_store_insert_before ()</title>
332
<indexterm><primary>gtk_tree_store_insert_before</primary></indexterm><programlisting><link linkend="void">void</link> gtk_tree_store_insert_before (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
333
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter,
334
<link linkend="GtkTreeIter">GtkTreeIter</link> *parent,
335
<link linkend="GtkTreeIter">GtkTreeIter</link> *sibling);</programlisting>
337
Inserts a new row before <parameter>sibling</parameter>. If <parameter>sibling</parameter> is <link linkend="NULL:CAPS"><literal>NULL</literal></link>, then the row will
338
be appended to <parameter>parent</parameter> 's children. If <parameter>parent</parameter> and <parameter>sibling</parameter> are <link linkend="NULL:CAPS"><literal>NULL</literal></link>, then
339
the row will be appended to the toplevel. If both <parameter>sibling</parameter> and <parameter>parent</parameter> are
340
set, then <parameter>parent</parameter> must be the parent of <parameter>sibling</parameter>. When <parameter>sibling</parameter> is set,
341
<parameter>parent</parameter> is optional.
344
<parameter>iter</parameter> will be changed to point to this new row. The row will be empty after
345
this function is called. To fill in values, you need to call
346
<link linkend="gtk-tree-store-set"><function>gtk_tree_store_set()</function></link> or <link linkend="gtk-tree-store-set-value"><function>gtk_tree_store_set_value()</function></link>.</para>
349
</para><variablelist role="params">
350
<varlistentry><term><parameter>tree_store</parameter> :</term>
351
<listitem><simpara> A <link linkend="GtkTreeStore"><type>GtkTreeStore</type></link>
352
</simpara></listitem></varlistentry>
353
<varlistentry><term><parameter>iter</parameter> :</term>
354
<listitem><simpara> An unset <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link> to set to the new row
355
</simpara></listitem></varlistentry>
356
<varlistentry><term><parameter>parent</parameter> :</term>
357
<listitem><simpara> A valid <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link>, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>
358
</simpara></listitem></varlistentry>
359
<varlistentry><term><parameter>sibling</parameter> :</term>
360
<listitem><simpara> A valid <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link>, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>
361
</simpara></listitem></varlistentry>
362
</variablelist></refsect2>
364
<title><anchor id="gtk-tree-store-insert-after" role="function"/>gtk_tree_store_insert_after ()</title>
365
<indexterm><primary>gtk_tree_store_insert_after</primary></indexterm><programlisting><link linkend="void">void</link> gtk_tree_store_insert_after (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
366
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter,
367
<link linkend="GtkTreeIter">GtkTreeIter</link> *parent,
368
<link linkend="GtkTreeIter">GtkTreeIter</link> *sibling);</programlisting>
370
Inserts a new row after <parameter>sibling</parameter>. If <parameter>sibling</parameter> is <link linkend="NULL:CAPS"><literal>NULL</literal></link>, then the row will be
371
prepended to <parameter>parent</parameter> 's children. If <parameter>parent</parameter> and <parameter>sibling</parameter> are <link linkend="NULL:CAPS"><literal>NULL</literal></link>, then
372
the row will be prepended to the toplevel. If both <parameter>sibling</parameter> and <parameter>parent</parameter> are
373
set, then <parameter>parent</parameter> must be the parent of <parameter>sibling</parameter>. When <parameter>sibling</parameter> is set,
374
<parameter>parent</parameter> is optional.
377
<parameter>iter</parameter> will be changed to point to this new row. The row will be empty after
378
this function is called. To fill in values, you need to call
379
<link linkend="gtk-tree-store-set"><function>gtk_tree_store_set()</function></link> or <link linkend="gtk-tree-store-set-value"><function>gtk_tree_store_set_value()</function></link>.</para>
382
</para><variablelist role="params">
383
<varlistentry><term><parameter>tree_store</parameter> :</term>
384
<listitem><simpara> A <link linkend="GtkTreeStore"><type>GtkTreeStore</type></link>
385
</simpara></listitem></varlistentry>
386
<varlistentry><term><parameter>iter</parameter> :</term>
387
<listitem><simpara> An unset <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link> to set to the new row
388
</simpara></listitem></varlistentry>
389
<varlistentry><term><parameter>parent</parameter> :</term>
390
<listitem><simpara> A valid <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link>, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>
391
</simpara></listitem></varlistentry>
392
<varlistentry><term><parameter>sibling</parameter> :</term>
393
<listitem><simpara> A valid <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link>, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>
394
</simpara></listitem></varlistentry>
395
</variablelist></refsect2>
397
<title><anchor id="gtk-tree-store-insert-with-values" role="function" condition="since:2.10"/>gtk_tree_store_insert_with_values ()</title>
398
<indexterm role="2.10"><primary>gtk_tree_store_insert_with_values</primary></indexterm><programlisting><link linkend="void">void</link> gtk_tree_store_insert_with_values (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
399
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter,
400
<link linkend="GtkTreeIter">GtkTreeIter</link> *parent,
401
<link linkend="gint">gint</link> position,
402
...);</programlisting>
404
Creates a new row at <parameter>position</parameter>. <parameter>iter</parameter> will be changed to point to this
405
new row. If <parameter>position</parameter> is larger than the number of rows on the list, then
406
the new row will be appended to the list. The row will be filled with
407
the values given to this function.
411
<literal>gtk_tree_store_insert_with_values (tree_store, iter, position, ...)</literal>
412
has the same effect as calling
413
<informalexample><programlisting>
414
gtk_tree_store_insert (tree_store, iter, position);
415
gtk_tree_store_set (tree_store, iter, ...);
416
</programlisting></informalexample>
417
with the different that the former will only emit a row_inserted signal,
418
while the latter will emit row_inserted, row_changed and if the tree store
419
is sorted, rows_reordered. Since emitting the rows_reordered signal
420
repeatedly can affect the performance of the program,
421
<link linkend="gtk-tree-store-insert-with-values"><function>gtk_tree_store_insert_with_values()</function></link> should generally be preferred when
422
inserting rows in a sorted tree store.</para>
425
</para><variablelist role="params">
426
<varlistentry><term><parameter>tree_store</parameter> :</term>
427
<listitem><simpara> A <link linkend="GtkTreeStore"><type>GtkTreeStore</type></link>
428
</simpara></listitem></varlistentry>
429
<varlistentry><term><parameter>iter</parameter> :</term>
430
<listitem><simpara> An unset <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link> to set the new row, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>.
431
</simpara></listitem></varlistentry>
432
<varlistentry><term><parameter>parent</parameter> :</term>
433
<listitem><simpara> A valid <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link>, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>
434
</simpara></listitem></varlistentry>
435
<varlistentry><term><parameter>position</parameter> :</term>
436
<listitem><simpara> position to insert the new row
437
</simpara></listitem></varlistentry>
438
<varlistentry><term><parameter>...</parameter> :</term>
439
<listitem><simpara> pairs of column number and value, terminated with -1
440
</simpara></listitem></varlistentry>
441
</variablelist><para role="since">Since 2.10
444
<title><anchor id="gtk-tree-store-insert-with-valuesv" role="function" condition="since:2.10"/>gtk_tree_store_insert_with_valuesv ()</title>
445
<indexterm role="2.10"><primary>gtk_tree_store_insert_with_valuesv</primary></indexterm><programlisting><link linkend="void">void</link> gtk_tree_store_insert_with_valuesv (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
446
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter,
447
<link linkend="GtkTreeIter">GtkTreeIter</link> *parent,
448
<link linkend="gint">gint</link> position,
449
<link linkend="gint">gint</link> *columns,
450
<link linkend="GValue">GValue</link> *values,
451
<link linkend="gint">gint</link> n_values);</programlisting>
453
A variant of <link linkend="gtk-tree-store-insert-with-values"><function>gtk_tree_store_insert_with_values()</function></link> which takes
454
the columns and values as two arrays, instead of varargs. This
455
function is mainly intended for language bindings.</para>
458
</para><variablelist role="params">
459
<varlistentry><term><parameter>tree_store</parameter> :</term>
460
<listitem><simpara> A <link linkend="GtkTreeStore"><type>GtkTreeStore</type></link>
461
</simpara></listitem></varlistentry>
462
<varlistentry><term><parameter>iter</parameter> :</term>
463
<listitem><simpara> An unset <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link> to set the new row, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>.
464
</simpara></listitem></varlistentry>
465
<varlistentry><term><parameter>parent</parameter> :</term>
466
<listitem><simpara> A valid <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link>, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>
467
</simpara></listitem></varlistentry>
468
<varlistentry><term><parameter>position</parameter> :</term>
469
<listitem><simpara> position to insert the new row
470
</simpara></listitem></varlistentry>
471
<varlistentry><term><parameter>columns</parameter> :</term>
472
<listitem><simpara> an array of column numbers
473
</simpara></listitem></varlistentry>
474
<varlistentry><term><parameter>values</parameter> :</term>
475
<listitem><simpara> an array of GValues
476
</simpara></listitem></varlistentry>
477
<varlistentry><term><parameter>n_values</parameter> :</term>
478
<listitem><simpara> the length of the <parameter>columns</parameter> and <parameter>values</parameter> arrays
479
</simpara></listitem></varlistentry>
480
</variablelist><para role="since">Since 2.10
483
<title><anchor id="gtk-tree-store-prepend" role="function"/>gtk_tree_store_prepend ()</title>
484
<indexterm><primary>gtk_tree_store_prepend</primary></indexterm><programlisting><link linkend="void">void</link> gtk_tree_store_prepend (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
485
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter,
486
<link linkend="GtkTreeIter">GtkTreeIter</link> *parent);</programlisting>
488
Prepends a new row to <parameter>tree_store</parameter>. If <parameter>parent</parameter> is non-<link linkend="NULL:CAPS"><literal>NULL</literal></link>, then it will prepend
489
the new row before the first child of <parameter>parent</parameter>, otherwise it will prepend a row
490
to the top level. <parameter>iter</parameter> will be changed to point to this new row. The row
491
will be empty after this function is called. To fill in values, you need to
492
call <link linkend="gtk-tree-store-set"><function>gtk_tree_store_set()</function></link> or <link linkend="gtk-tree-store-set-value"><function>gtk_tree_store_set_value()</function></link>.</para>
495
</para><variablelist role="params">
496
<varlistentry><term><parameter>tree_store</parameter> :</term>
497
<listitem><simpara> A <link linkend="GtkTreeStore"><type>GtkTreeStore</type></link>
498
</simpara></listitem></varlistentry>
499
<varlistentry><term><parameter>iter</parameter> :</term>
500
<listitem><simpara> An unset <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link> to set to the prepended row
501
</simpara></listitem></varlistentry>
502
<varlistentry><term><parameter>parent</parameter> :</term>
503
<listitem><simpara> A valid <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link>, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>
504
</simpara></listitem></varlistentry>
505
</variablelist></refsect2>
507
<title><anchor id="gtk-tree-store-append" role="function"/>gtk_tree_store_append ()</title>
508
<indexterm><primary>gtk_tree_store_append</primary></indexterm><programlisting><link linkend="void">void</link> gtk_tree_store_append (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
509
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter,
510
<link linkend="GtkTreeIter">GtkTreeIter</link> *parent);</programlisting>
512
Appends a new row to <parameter>tree_store</parameter>. If <parameter>parent</parameter> is non-<link linkend="NULL:CAPS"><literal>NULL</literal></link>, then it will append the
513
new row after the last child of <parameter>parent</parameter>, otherwise it will append a row to
514
the top level. <parameter>iter</parameter> will be changed to point to this new row. The row will
515
be empty after this function is called. To fill in values, you need to call
516
<link linkend="gtk-tree-store-set"><function>gtk_tree_store_set()</function></link> or <link linkend="gtk-tree-store-set-value"><function>gtk_tree_store_set_value()</function></link>.</para>
519
</para><variablelist role="params">
520
<varlistentry><term><parameter>tree_store</parameter> :</term>
521
<listitem><simpara> A <link linkend="GtkTreeStore"><type>GtkTreeStore</type></link>
522
</simpara></listitem></varlistentry>
523
<varlistentry><term><parameter>iter</parameter> :</term>
524
<listitem><simpara> An unset <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link> to set to the appended row
525
</simpara></listitem></varlistentry>
526
<varlistentry><term><parameter>parent</parameter> :</term>
527
<listitem><simpara> A valid <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link>, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>
528
</simpara></listitem></varlistentry>
529
</variablelist></refsect2>
531
<title><anchor id="gtk-tree-store-is-ancestor" role="function"/>gtk_tree_store_is_ancestor ()</title>
532
<indexterm><primary>gtk_tree_store_is_ancestor</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> gtk_tree_store_is_ancestor (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
533
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter,
534
<link linkend="GtkTreeIter">GtkTreeIter</link> *descendant);</programlisting>
536
Returns <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if <parameter>iter</parameter> is an ancestor of <parameter>descendant</parameter>. That is, <parameter>iter</parameter> is the
537
parent (or grandparent or great-grandparent) of <parameter>descendant</parameter>.</para>
540
</para><variablelist role="params">
541
<varlistentry><term><parameter>tree_store</parameter> :</term>
542
<listitem><simpara> A <link linkend="GtkTreeStore"><type>GtkTreeStore</type></link>
543
</simpara></listitem></varlistentry>
544
<varlistentry><term><parameter>iter</parameter> :</term>
545
<listitem><simpara> A valid <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link>
546
</simpara></listitem></varlistentry>
547
<varlistentry><term><parameter>descendant</parameter> :</term>
548
<listitem><simpara> A valid <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link>
549
</simpara></listitem></varlistentry>
550
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link>, if <parameter>iter</parameter> is an ancestor of <parameter>descendant</parameter>
551
</simpara></listitem></varlistentry>
552
</variablelist></refsect2>
554
<title><anchor id="gtk-tree-store-iter-depth" role="function"/>gtk_tree_store_iter_depth ()</title>
555
<indexterm><primary>gtk_tree_store_iter_depth</primary></indexterm><programlisting><link linkend="gint">gint</link> gtk_tree_store_iter_depth (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
556
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter);</programlisting>
558
Returns the depth of <parameter>iter</parameter>. This will be 0 for anything on the root level, 1
559
for anything down a level, etc.</para>
562
</para><variablelist role="params">
563
<varlistentry><term><parameter>tree_store</parameter> :</term>
564
<listitem><simpara> A <link linkend="GtkTreeStore"><type>GtkTreeStore</type></link>
565
</simpara></listitem></varlistentry>
566
<varlistentry><term><parameter>iter</parameter> :</term>
567
<listitem><simpara> A valid <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link>
568
</simpara></listitem></varlistentry>
569
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> The depth of <parameter>iter</parameter>
570
</simpara></listitem></varlistentry>
571
</variablelist></refsect2>
573
<title><anchor id="gtk-tree-store-clear" role="function"/>gtk_tree_store_clear ()</title>
574
<indexterm><primary>gtk_tree_store_clear</primary></indexterm><programlisting><link linkend="void">void</link> gtk_tree_store_clear (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store);</programlisting>
576
Removes all rows from <parameter>tree_store</parameter></para>
579
</para><variablelist role="params">
580
<varlistentry><term><parameter>tree_store</parameter> :</term>
581
<listitem><simpara> a <link linkend="GtkTreeStore"><type>GtkTreeStore</type></link>
582
</simpara></listitem></varlistentry>
583
</variablelist></refsect2>
585
<title><anchor id="gtk-tree-store-iter-is-valid" role="function" condition="since:2.2"/>gtk_tree_store_iter_is_valid ()</title>
586
<indexterm role="2.2"><primary>gtk_tree_store_iter_is_valid</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> gtk_tree_store_iter_is_valid (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
587
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter);</programlisting>
589
WARNING: This function is slow. Only use it for debugging and/or testing
593
Checks if the given iter is a valid iter for this <link linkend="GtkTreeStore"><type>GtkTreeStore</type></link>.</para>
596
</para><variablelist role="params">
597
<varlistentry><term><parameter>tree_store</parameter> :</term>
598
<listitem><simpara> A <link linkend="GtkTreeStore"><type>GtkTreeStore</type></link>.
599
</simpara></listitem></varlistentry>
600
<varlistentry><term><parameter>iter</parameter> :</term>
601
<listitem><simpara> A <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link>.
602
</simpara></listitem></varlistentry>
603
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the iter is valid, <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> if the iter is invalid.
605
</simpara></listitem></varlistentry>
606
</variablelist><para role="since">Since 2.2
609
<title><anchor id="gtk-tree-store-reorder" role="function" condition="since:2.2"/>gtk_tree_store_reorder ()</title>
610
<indexterm role="2.2"><primary>gtk_tree_store_reorder</primary></indexterm><programlisting><link linkend="void">void</link> gtk_tree_store_reorder (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
611
<link linkend="GtkTreeIter">GtkTreeIter</link> *parent,
612
<link linkend="gint">gint</link> *new_order);</programlisting>
614
Reorders the children of <parameter>parent</parameter> in <parameter>tree_store</parameter> to follow the order
615
indicated by <parameter>new_order</parameter>. Note that this function only works with
616
unsorted stores.</para>
619
</para><variablelist role="params">
620
<varlistentry><term><parameter>tree_store</parameter> :</term>
621
<listitem><simpara> A <link linkend="GtkTreeStore"><type>GtkTreeStore</type></link>.
622
</simpara></listitem></varlistentry>
623
<varlistentry><term><parameter>parent</parameter> :</term>
624
<listitem><simpara> A <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link>.
625
</simpara></listitem></varlistentry>
626
<varlistentry><term><parameter>new_order</parameter> :</term>
627
<listitem><simpara> an array of integers mapping the new position of each child
628
to its old position before the re-ordering,
629
i.e. <parameter>new_order</parameter><literal>[newpos] = oldpos</literal>.
630
</simpara></listitem></varlistentry>
631
</variablelist><para role="since">Since 2.2
634
<title><anchor id="gtk-tree-store-swap" role="function" condition="since:2.2"/>gtk_tree_store_swap ()</title>
635
<indexterm role="2.2"><primary>gtk_tree_store_swap</primary></indexterm><programlisting><link linkend="void">void</link> gtk_tree_store_swap (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
636
<link linkend="GtkTreeIter">GtkTreeIter</link> *a,
637
<link linkend="GtkTreeIter">GtkTreeIter</link> *b);</programlisting>
639
Swaps <parameter>a</parameter> and <parameter>b</parameter> in the same level of <parameter>tree_store</parameter>. Note that this function
640
only works with unsorted stores.</para>
643
</para><variablelist role="params">
644
<varlistentry><term><parameter>tree_store</parameter> :</term>
645
<listitem><simpara> A <link linkend="GtkTreeStore"><type>GtkTreeStore</type></link>.
646
</simpara></listitem></varlistentry>
647
<varlistentry><term><parameter>a</parameter> :</term>
648
<listitem><simpara> A <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link>.
649
</simpara></listitem></varlistentry>
650
<varlistentry><term><parameter>b</parameter> :</term>
651
<listitem><simpara> Another <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link>.
652
</simpara></listitem></varlistentry>
653
</variablelist><para role="since">Since 2.2
656
<title><anchor id="gtk-tree-store-move-before" role="function" condition="since:2.2"/>gtk_tree_store_move_before ()</title>
657
<indexterm role="2.2"><primary>gtk_tree_store_move_before</primary></indexterm><programlisting><link linkend="void">void</link> gtk_tree_store_move_before (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
658
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter,
659
<link linkend="GtkTreeIter">GtkTreeIter</link> *position);</programlisting>
661
Moves <parameter>iter</parameter> in <parameter>tree_store</parameter> to the position before <parameter>position</parameter>. <parameter>iter</parameter> and
662
<parameter>position</parameter> should be in the same level. Note that this function only
663
works with unsorted stores. If <parameter>position</parameter> is <link linkend="NULL:CAPS"><literal>NULL</literal></link>, <parameter>iter</parameter> will be
664
moved to the end of the level.</para>
667
</para><variablelist role="params">
668
<varlistentry><term><parameter>tree_store</parameter> :</term>
669
<listitem><simpara> A <link linkend="GtkTreeStore"><type>GtkTreeStore</type></link>.
670
</simpara></listitem></varlistentry>
671
<varlistentry><term><parameter>iter</parameter> :</term>
672
<listitem><simpara> A <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link>.
673
</simpara></listitem></varlistentry>
674
<varlistentry><term><parameter>position</parameter> :</term>
675
<listitem><simpara> A <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link> or <link linkend="NULL:CAPS"><literal>NULL</literal></link>.
676
</simpara></listitem></varlistentry>
677
</variablelist><para role="since">Since 2.2
680
<title><anchor id="gtk-tree-store-move-after" role="function" condition="since:2.2"/>gtk_tree_store_move_after ()</title>
681
<indexterm role="2.2"><primary>gtk_tree_store_move_after</primary></indexterm><programlisting><link linkend="void">void</link> gtk_tree_store_move_after (<link linkend="GtkTreeStore">GtkTreeStore</link> *tree_store,
682
<link linkend="GtkTreeIter">GtkTreeIter</link> *iter,
683
<link linkend="GtkTreeIter">GtkTreeIter</link> *position);</programlisting>
685
Moves <parameter>iter</parameter> in <parameter>tree_store</parameter> to the position after <parameter>position</parameter>. <parameter>iter</parameter> and
686
<parameter>position</parameter> should be in the same level. Note that this function only
687
works with unsorted stores. If <parameter>position</parameter> is <link linkend="NULL:CAPS"><literal>NULL</literal></link>, <parameter>iter</parameter> will be moved
688
to the start of the level.</para>
691
</para><variablelist role="params">
692
<varlistentry><term><parameter>tree_store</parameter> :</term>
693
<listitem><simpara> A <link linkend="GtkTreeStore"><type>GtkTreeStore</type></link>.
694
</simpara></listitem></varlistentry>
695
<varlistentry><term><parameter>iter</parameter> :</term>
696
<listitem><simpara> A <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link>.
697
</simpara></listitem></varlistentry>
698
<varlistentry><term><parameter>position</parameter> :</term>
699
<listitem><simpara> A <link linkend="GtkTreeIter"><type>GtkTreeIter</type></link>.
700
</simpara></listitem></varlistentry>
701
</variablelist><para role="since">Since 2.2
709
<title>See Also</title>
711
<link linkend="GtkTreeModel"><type>GtkTreeModel</type></link>, <link linkend="GtkTreeStore"><type>GtkTreeStore</type></link>