forked from AuroraMiddleware/gtk
4614cffc73
Sun Oct 24 02:54:36 2004 Jonathan Blandford <jrb@redhat.com> * gtk/gtk.types: Add GtkAboutDialog and GtkFileChooserButton * gtk/tmpl/GtkFileChooserButton.sgml: Write docs * gtk/tmpl/GtkListStore.sgml: Update performance comment now that we use GSequence. * gtk/visual_index.xml: Fix up a couple of errors. * gtk/images/*png: update Sun Oct 24 02:56:43 2004 Jonathan Blandford <jrb@redhat.com> * docs/tools/widgets.c: Update GtkFileChooserButton doc shot.
295 lines
5.2 KiB
Plaintext
295 lines
5.2 KiB
Plaintext
<!-- ##### SECTION Title ##### -->
|
|
GtkListStore
|
|
|
|
<!-- ##### SECTION Short_Description ##### -->
|
|
A list-like data structure that can be used with the #GtkTreeView
|
|
|
|
<!-- ##### SECTION Long_Description ##### -->
|
|
<para>
|
|
The #GtkListStore object is a list model for use with a #GtkTreeView
|
|
widget. It implements the #GtkTreeModel interface, and consequentialy,
|
|
can use all of the methods available there. It also implements the
|
|
#GtkTreeSortable interface so it can be sorted by the view.
|
|
Finally, it also implements the tree <link linkend="gtktreednd">drag and
|
|
drop</link> interfaces.
|
|
</para>
|
|
|
|
<para>
|
|
The #GtkListStore can accept most GObject types as a column type, though
|
|
it can't accept all custom types. Internally, it will keep a copy of
|
|
data passed in (such as a string or a boxed pointer). Columns that
|
|
accept #GObject<!-- -->s are handled a little differently. The
|
|
#GtkListStore will keep a reference to the object instead of copying the
|
|
value. As a result, if the object is modified, it is up to the
|
|
application writer to call @gtk_tree_model_row_changed to emit the
|
|
"row_changed" signal. This most commonly effects lists with
|
|
#GdkPixbuf<!-- -->s stored.
|
|
</para>
|
|
|
|
<example>
|
|
<title>Creating a simple list store.</title>
|
|
<programlisting>
|
|
enum {
|
|
COLUMN_STRING,
|
|
COLUMN_INT,
|
|
COLUMN_BOOLEAN,
|
|
N_COLUMNS
|
|
};
|
|
|
|
{
|
|
GtkListStore *list_store;
|
|
GtkTreePath *path;
|
|
GtkTreeIter iter;
|
|
gint i;
|
|
|
|
list_store = gtk_list_store_new (N_COLUMNS,
|
|
G_TYPE_STRING,
|
|
G_TYPE_INT,
|
|
G_TYPE_BOOLEAN);
|
|
|
|
for (i = 0; i < 10; i++)
|
|
{
|
|
gchar *some_data;
|
|
|
|
some_data = get_some_data (i);
|
|
|
|
/* Add a new row to the model */
|
|
gtk_list_store_append (list_store, &iter);
|
|
gtk_list_store_set (list_store, &iter,
|
|
COLUMN_STRING, some_data,
|
|
COLUMN_INT, i,
|
|
COLUMN_BOOLEAN, FALSE,
|
|
-1);
|
|
|
|
/* As the store will keep a copy of the string internally, we
|
|
* free some_data.
|
|
*/
|
|
g_free (some_data);
|
|
}
|
|
|
|
/* Modify a particular row */
|
|
path = gtk_tree_path_new_from_string ("4");
|
|
gtk_tree_model_get_iter (GTK_TREE_MODEL (list_store),
|
|
&iter,
|
|
path);
|
|
gtk_tree_path_free (path);
|
|
gtk_list_store_set (list_store, &iter,
|
|
COLUMN_BOOLEAN, TRUE,
|
|
-1);
|
|
}
|
|
</programlisting>
|
|
</example>
|
|
|
|
<refsect2>
|
|
<title>Performance Considerations</title>
|
|
<para>
|
|
Internally, the #GtkListStore was implemented with a linked list with a
|
|
tail pointer prior to GTK+ 2.6. As a result, it was fast at data
|
|
insertion and deletion, and not fast at random data access. The
|
|
#GtkListStore sets the #GTK_TREE_MODEL_ITERS_PERSIST flag, which means
|
|
that #GtkTreeIter<!-- -->s can be cached while the row exists. Thus, if
|
|
access to a particular row is needed often and your code is expected to
|
|
run on older versions of GTK+, it is worth keeping the iter around.
|
|
</para>
|
|
</refsect2>
|
|
|
|
<!-- ##### SECTION See_Also ##### -->
|
|
<para>
|
|
#GtkTreeModel, #GtkTreeStore
|
|
</para>
|
|
|
|
<!-- ##### STRUCT GtkListStore ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
|
|
<!-- ##### FUNCTION gtk_list_store_new ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@n_columns:
|
|
@Varargs:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION gtk_list_store_newv ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@n_columns:
|
|
@types:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION gtk_list_store_set_column_types ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@list_store:
|
|
@n_columns:
|
|
@types:
|
|
|
|
|
|
<!-- ##### FUNCTION gtk_list_store_set ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@list_store:
|
|
@iter:
|
|
@Varargs:
|
|
|
|
|
|
<!-- ##### FUNCTION gtk_list_store_set_valist ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@list_store:
|
|
@iter:
|
|
@var_args:
|
|
|
|
|
|
<!-- ##### FUNCTION gtk_list_store_set_value ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@list_store:
|
|
@iter:
|
|
@column:
|
|
@value:
|
|
|
|
|
|
<!-- ##### FUNCTION gtk_list_store_remove ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@list_store:
|
|
@iter:
|
|
@Returns:
|
|
<!-- # Unused Parameters # -->
|
|
@store:
|
|
|
|
|
|
<!-- ##### FUNCTION gtk_list_store_insert ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@list_store:
|
|
@iter:
|
|
@position:
|
|
<!-- # Unused Parameters # -->
|
|
@store:
|
|
|
|
|
|
<!-- ##### FUNCTION gtk_list_store_insert_before ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@list_store:
|
|
@iter:
|
|
@sibling:
|
|
<!-- # Unused Parameters # -->
|
|
@store:
|
|
|
|
|
|
<!-- ##### FUNCTION gtk_list_store_insert_after ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@list_store:
|
|
@iter:
|
|
@sibling:
|
|
<!-- # Unused Parameters # -->
|
|
@store:
|
|
|
|
|
|
<!-- ##### FUNCTION gtk_list_store_prepend ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@list_store:
|
|
@iter:
|
|
<!-- # Unused Parameters # -->
|
|
@store:
|
|
|
|
|
|
<!-- ##### FUNCTION gtk_list_store_append ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@list_store:
|
|
@iter:
|
|
<!-- # Unused Parameters # -->
|
|
@store:
|
|
|
|
|
|
<!-- ##### FUNCTION gtk_list_store_clear ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@list_store:
|
|
|
|
|
|
<!-- ##### FUNCTION gtk_list_store_iter_is_valid ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@list_store:
|
|
@iter:
|
|
@Returns:
|
|
|
|
|
|
<!-- ##### FUNCTION gtk_list_store_reorder ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@store:
|
|
@new_order:
|
|
|
|
|
|
<!-- ##### FUNCTION gtk_list_store_swap ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@store:
|
|
@a:
|
|
@b:
|
|
|
|
|
|
<!-- ##### FUNCTION gtk_list_store_move_before ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@store:
|
|
@iter:
|
|
@position:
|
|
|
|
|
|
<!-- ##### FUNCTION gtk_list_store_move_after ##### -->
|
|
<para>
|
|
|
|
</para>
|
|
|
|
@store:
|
|
@iter:
|
|
@position:
|
|
|
|
|