Write documentation Write documentation

Sat Sep  8 14:19:49 2001  Jonathan Blandford  <jrb@redhat.com>

	* gtk/gtkliststore.c: Write documentation
	* gtk/gtktreestore.c: Write documentation

Quick Documentation cleanup pass.
This commit is contained in:
Jonathan Blandford
2001-09-08 18:23:47 +00:00
committed by Jonathan Blandford
parent fd97e93165
commit 9e1fc3a7ba
16 changed files with 370 additions and 166 deletions

View File

@ -244,7 +244,11 @@ static void
gtk_tree_store_init (GtkTreeStore *tree_store)
{
tree_store->root = g_node_new (NULL);
tree_store->stamp = g_random_int ();
do
{
tree_store->stamp = g_random_int ();
}
while (tree_store->stamp != 0);
tree_store->sort_list = NULL;
tree_store->sort_column_id = -2;
}
@ -684,10 +688,18 @@ gtk_tree_store_iter_parent (GtkTreeModel *tree_model,
return FALSE;
}
/*
* This is a somewhat inelegant function that does a lot of list
* manipulations on it's own.
*/
/**
* gtk_tree_store_set_value:
* @tree_store: a #GtkTreeStore
* @iter: A valid #GtkTreeIter for the row being modified
* @column: column number to modify
* @value: new value for the cell
*
* Sets the data in the cell specified by @iter and @column.
* The type of @value must be convertible to the type of the
* column.
*
**/
void
gtk_tree_store_set_value (GtkTreeStore *tree_store,
GtkTreeIter *iter,
@ -786,11 +798,11 @@ gtk_tree_store_set_value (GtkTreeStore *tree_store,
/**
* gtk_tree_store_set_valist:
* @tree_store: a #GtkTreeStore
* @iter: row to set data for
* @tree_store: A #GtkTreeStore
* @iter: A valid #GtkTreeIter for the row being modified
* @var_args: va_list of column/value pairs
*
* See gtk_tree_store_set(); this version takes a va_list for
* See @gtk_tree_store_set; this version takes a va_list for
* use by language bindings.
*
**/
@ -844,8 +856,8 @@ gtk_tree_store_set_valist (GtkTreeStore *tree_store,
/**
* gtk_tree_store_set:
* @tree_store: a #GtkTreeStore
* @iter: row iterator
* @tree_store: A #GtkTreeStore
* @iter: A valid #GtkTreeIter for the row being modified
* @Varargs: pairs of column number and value, terminated with -1
*
* Sets the value of one or more cells in the row referenced by @iter.
@ -870,60 +882,85 @@ gtk_tree_store_set (GtkTreeStore *tree_store,
va_end (var_args);
}
/**
* gtk_tree_store_remove:
* @tree_store: A #GtkTreeStore
* @iter: A valid #GtkTreeIter
*
* Removes @iter from @tree_store. After being removed, @iter is set to the
* next valid row at that level, or invalidated if it previeously pointed to the last one.
**/
void
gtk_tree_store_remove (GtkTreeStore *model,
gtk_tree_store_remove (GtkTreeStore *tree_store,
GtkTreeIter *iter)
{
GtkTreePath *path;
GtkTreeIter new_iter = {0,};
GNode *parent;
GNode *next_node;
g_return_if_fail (GTK_IS_TREE_STORE (model));
g_return_if_fail (VALID_ITER (iter, model));
g_return_if_fail (GTK_IS_TREE_STORE (tree_store));
g_return_if_fail (VALID_ITER (iter, tree_store));
parent = G_NODE (iter->user_data)->parent;
g_assert (parent != NULL);
next_node = G_NODE (iter->user_data);
if (G_NODE (iter->user_data)->data)
_gtk_tree_data_list_free ((GtkTreeDataList *) G_NODE (iter->user_data)->data,
model->column_headers);
tree_store->column_headers);
path = gtk_tree_store_get_path (GTK_TREE_MODEL (model), iter);
path = gtk_tree_store_get_path (GTK_TREE_MODEL (tree_store), iter);
g_node_destroy (G_NODE (iter->user_data));
model->stamp++;
gtk_tree_model_deleted (GTK_TREE_MODEL (model), path);
tree_store->stamp++;
gtk_tree_model_deleted (GTK_TREE_MODEL (tree_store), path);
if (parent != G_NODE (model->root))
if (parent != G_NODE (tree_store->root))
{
/* child_toggled */
if (parent->children == NULL)
{
gtk_tree_path_up (path);
new_iter.stamp = model->stamp;
new_iter.stamp = tree_store->stamp;
new_iter.user_data = parent;
gtk_tree_model_has_child_toggled (GTK_TREE_MODEL (model), path, &new_iter);
}
/* revalidate iter */
while (parent != G_NODE (model->root))
{
if (parent->next != NULL)
{
iter->stamp = model->stamp;
iter->user_data = parent->next;
break;
}
parent = parent->parent;
gtk_tree_model_has_child_toggled (GTK_TREE_MODEL (tree_store), path, &new_iter);
}
}
gtk_tree_path_free (path);
/* revalidate iter */
if (next_node != NULL)
{
iter->stamp = tree_store->stamp;
iter->user_data = next_node;
}
else
{
iter->stamp = 0;
}
}
/**
* gtk_tree_store_insert:
* @list_store: A #GtkListStore
* @iter: An unset #GtkTreeIter to set to the new row
* @parent: A valid #GtkTreeIter, or %NULL
* @position: position to insert the new row
*
* Creates a new row at @position. If parent is non-NULL, then the row will be
* made a child of @parent. Otherwise, the row will be created at the toplevel.
* If @position is larger than the number of rows at that level, then the new
* row will be inserted to the end of the list. @iter will be changed to point
* to this new row. The row will be empty before this function is called. To
* fill in values, you need to call @gtk_list_store_set or
* @gtk_list_store_set_value.
*
**/
void
gtk_tree_store_insert (GtkTreeStore *model,
gtk_tree_store_insert (GtkTreeStore *tree_store,
GtkTreeIter *iter,
GtkTreeIter *parent,
gint position)
@ -931,29 +968,47 @@ gtk_tree_store_insert (GtkTreeStore *model,
GtkTreePath *path;
GNode *parent_node;
g_return_if_fail (GTK_IS_TREE_STORE (model));
g_return_if_fail (GTK_IS_TREE_STORE (tree_store));
if (parent)
g_return_if_fail (VALID_ITER (parent, model));
g_return_if_fail (VALID_ITER (parent, tree_store));
if (parent)
parent_node = parent->user_data;
else
parent_node = model->root;
parent_node = tree_store->root;
iter->stamp = model->stamp;
iter->stamp = tree_store->stamp;
iter->user_data = g_node_new (NULL);
g_node_insert (parent_node, position, G_NODE (iter->user_data));
path = gtk_tree_store_get_path (GTK_TREE_MODEL (model), iter);
gtk_tree_model_inserted (GTK_TREE_MODEL (model), path, iter);
path = gtk_tree_store_get_path (GTK_TREE_MODEL (tree_store), iter);
gtk_tree_model_inserted (GTK_TREE_MODEL (tree_store), path, iter);
gtk_tree_path_free (path);
validate_tree ((GtkTreeStore*)model);
validate_tree ((GtkTreeStore*)tree_store);
}
/**
* gtk_tree_store_insert_before:
* @tree_store: A #GtkTreeStore
* @iter: An unset #GtkTreeIter to set to the new row
* parent: A valid #GtkTreeIter, or %NULL
* @sibling: A valid #GtkTreeIter, or %NULL
*
* Inserts a new row before @sibling. If @sibling is %NULL, then the row will
* be appended to the beginning of the @parent 's children. If @parent and
* @sibling are %NULL, then the row will be appended to the toplevel. If both
* @sibling and @parent are set, then @parent must be the parent of @sibling.
* When @sibling is set, @parent is optional.
*
* @iter will be changed to point to this new row. The row will be empty after
* this function is called. To fill in values, you need to call
* @gtk_tree_store_set or @gtk_tree_store_set_value.
*
**/
void
gtk_tree_store_insert_before (GtkTreeStore *model,
gtk_tree_store_insert_before (GtkTreeStore *tree_store,
GtkTreeIter *iter,
GtkTreeIter *parent,
GtkTreeIter *sibling)
@ -962,17 +1017,17 @@ gtk_tree_store_insert_before (GtkTreeStore *model,
GNode *parent_node = NULL;
GNode *new_node;
g_return_if_fail (GTK_IS_TREE_STORE (model));
g_return_if_fail (GTK_IS_TREE_STORE (tree_store));
g_return_if_fail (iter != NULL);
if (parent != NULL)
g_return_if_fail (VALID_ITER (parent, model));
g_return_if_fail (VALID_ITER (parent, tree_store));
if (sibling != NULL)
g_return_if_fail (VALID_ITER (sibling, model));
g_return_if_fail (VALID_ITER (sibling, tree_store));
new_node = g_node_new (NULL);
if (parent == NULL && sibling == NULL)
parent_node = model->root;
parent_node = tree_store->root;
else if (parent == NULL)
parent_node = G_NODE (sibling->user_data)->parent;
else if (sibling == NULL)
@ -987,19 +1042,37 @@ gtk_tree_store_insert_before (GtkTreeStore *model,
sibling ? G_NODE (sibling->user_data) : NULL,
new_node);
iter->stamp = model->stamp;
iter->stamp = tree_store->stamp;
iter->user_data = new_node;
path = gtk_tree_store_get_path (GTK_TREE_MODEL (model), iter);
gtk_tree_model_inserted (GTK_TREE_MODEL (model), path, iter);
path = gtk_tree_store_get_path (GTK_TREE_MODEL (tree_store), iter);
gtk_tree_model_inserted (GTK_TREE_MODEL (tree_store), path, iter);
gtk_tree_path_free (path);
validate_tree ((GtkTreeStore*)model);
validate_tree ((GtkTreeStore*)tree_store);
}
/**
* gtk_tree_store_insert_after:
* @tree_store: A #GtkTreeStore
* @iter: An unset #GtkTreeIter to set to the new row
* parent: A valid #GtkTreeIter, or %NULL
* @sibling: A valid #GtkTreeIter, or %NULL
*
* Inserts a new row after @sibling. If @sibling is %NULL, then the row will be
* prepended to the beginning of the @parent 's children. If @parent and
* @sibling are %NULL, then the row will be prepended to the toplevel. If both
* @sibling and @parent are set, then @parent must be the parent of @sibling.
* When @sibling is set, @parent is optional.
*
* @iter will be changed to point to this new row. The row will be empty after
* this function is called. To fill in values, you need to call
* @gtk_tree_store_set or @gtk_tree_store_set_value.
*
**/
void
gtk_tree_store_insert_after (GtkTreeStore *model,
gtk_tree_store_insert_after (GtkTreeStore *tree_store,
GtkTreeIter *iter,
GtkTreeIter *parent,
GtkTreeIter *sibling)
@ -1008,17 +1081,17 @@ gtk_tree_store_insert_after (GtkTreeStore *model,
GNode *parent_node;
GNode *new_node;
g_return_if_fail (GTK_IS_TREE_STORE (model));
g_return_if_fail (GTK_IS_TREE_STORE (tree_store));
g_return_if_fail (iter != NULL);
if (parent != NULL)
g_return_if_fail (VALID_ITER (parent, model));
g_return_if_fail (VALID_ITER (parent, tree_store));
if (sibling != NULL)
g_return_if_fail (VALID_ITER (sibling, model));
g_return_if_fail (VALID_ITER (sibling, tree_store));
new_node = g_node_new (NULL);
if (parent == NULL && sibling == NULL)
parent_node = model->root;
parent_node = tree_store->root;
else if (parent == NULL)
parent_node = G_NODE (sibling->user_data)->parent;
else if (sibling == NULL)
@ -1035,31 +1108,43 @@ gtk_tree_store_insert_after (GtkTreeStore *model,
sibling ? G_NODE (sibling->user_data) : NULL,
new_node);
iter->stamp = model->stamp;
iter->stamp = tree_store->stamp;
iter->user_data = new_node;
path = gtk_tree_store_get_path (GTK_TREE_MODEL (model), iter);
gtk_tree_model_inserted (GTK_TREE_MODEL (model), path, iter);
path = gtk_tree_store_get_path (GTK_TREE_MODEL (tree_store), iter);
gtk_tree_model_inserted (GTK_TREE_MODEL (tree_store), path, iter);
gtk_tree_path_free (path);
validate_tree ((GtkTreeStore*)model);
validate_tree ((GtkTreeStore*)tree_store);
}
/**
* gtk_tree_store_prepend:
* @tree_store: A #GtkTreeStore
* @iter: An unset #GtkTreeIter to set to the prepended row
* @parent: A valid #GtkTreeIter, or %NULL
*
* Prepends a new row to @tree_store. If @parent is non-NULL, then it will prepend
* the new row before the last child of @parent, otherwise it will prepend a row
* to the top level. @iter will be changed to point to this new row. The row
* will be empty after this function is called. To fill in values, you need to
* call @gtk_tree_store_set or @gtk_tree_store_set_value.
**/
void
gtk_tree_store_prepend (GtkTreeStore *model,
gtk_tree_store_prepend (GtkTreeStore *tree_store,
GtkTreeIter *iter,
GtkTreeIter *parent)
{
GNode *parent_node;
g_return_if_fail (GTK_IS_TREE_STORE (model));
g_return_if_fail (GTK_IS_TREE_STORE (tree_store));
g_return_if_fail (iter != NULL);
if (parent != NULL)
g_return_if_fail (VALID_ITER (parent, model));
g_return_if_fail (VALID_ITER (parent, tree_store));
if (parent == NULL)
parent_node = model->root;
parent_node = tree_store->root;
else
parent_node = parent->user_data;
@ -1067,47 +1152,59 @@ gtk_tree_store_prepend (GtkTreeStore *model,
{
GtkTreePath *path;
iter->stamp = model->stamp;
iter->stamp = tree_store->stamp;
iter->user_data = g_node_new (NULL);
g_node_prepend (parent_node, iter->user_data);
if (parent_node != model->root)
if (parent_node != tree_store->root)
{
path = gtk_tree_store_get_path (GTK_TREE_MODEL (model), parent);
gtk_tree_model_has_child_toggled (GTK_TREE_MODEL (model), path, parent);
path = gtk_tree_store_get_path (GTK_TREE_MODEL (tree_store), parent);
gtk_tree_model_has_child_toggled (GTK_TREE_MODEL (tree_store), path, parent);
gtk_tree_path_append_index (path, 0);
}
else
{
path = gtk_tree_store_get_path (GTK_TREE_MODEL (model), iter);
path = gtk_tree_store_get_path (GTK_TREE_MODEL (tree_store), iter);
}
gtk_tree_model_inserted (GTK_TREE_MODEL (model), path, iter);
gtk_tree_model_inserted (GTK_TREE_MODEL (tree_store), path, iter);
gtk_tree_path_free (path);
}
else
{
gtk_tree_store_insert_after (model, iter, parent, NULL);
gtk_tree_store_insert_after (tree_store, iter, parent, NULL);
}
validate_tree ((GtkTreeStore*)model);
validate_tree ((GtkTreeStore*)tree_store);
}
/**
* gtk_tree_store_append:
* @tree_store: A #GtkTreeStore
* @iter: An unset #GtkTreeIter to set to the appended row
* @parent: A valid #GtkTreeIter, or %NULL
*
* Appends a new row to @tree_store. If @parent is non-NULL, then it will append the
* new row after the last child of @parent, otherwise it will append a row to
* the top level. @iter will be changed to point to this new row. The row will
* be empty after this function is called. To fill in values, you need to call
* @gtk_tree_store_set or @gtk_tree_store_set_value.
**/
void
gtk_tree_store_append (GtkTreeStore *model,
gtk_tree_store_append (GtkTreeStore *tree_store,
GtkTreeIter *iter,
GtkTreeIter *parent)
{
GNode *parent_node;
g_return_if_fail (GTK_IS_TREE_STORE (model));
g_return_if_fail (GTK_IS_TREE_STORE (tree_store));
g_return_if_fail (iter != NULL);
if (parent != NULL)
g_return_if_fail (VALID_ITER (parent, model));
g_return_if_fail (VALID_ITER (parent, tree_store));
if (parent == NULL)
parent_node = model->root;
parent_node = tree_store->root;
else
parent_node = parent->user_data;
@ -1115,58 +1212,85 @@ gtk_tree_store_append (GtkTreeStore *model,
{
GtkTreePath *path;
iter->stamp = model->stamp;
iter->stamp = tree_store->stamp;
iter->user_data = g_node_new (NULL);
g_node_append (parent_node, G_NODE (iter->user_data));
if (parent_node != model->root)
if (parent_node != tree_store->root)
{
path = gtk_tree_store_get_path (GTK_TREE_MODEL (model), parent);
gtk_tree_model_has_child_toggled (GTK_TREE_MODEL (model), path, parent);
path = gtk_tree_store_get_path (GTK_TREE_MODEL (tree_store), parent);
gtk_tree_model_has_child_toggled (GTK_TREE_MODEL (tree_store), path, parent);
gtk_tree_path_append_index (path, 0);
}
else
{
path = gtk_tree_store_get_path (GTK_TREE_MODEL (model), iter);
path = gtk_tree_store_get_path (GTK_TREE_MODEL (tree_store), iter);
}
gtk_tree_model_inserted (GTK_TREE_MODEL (model), path, iter);
gtk_tree_model_inserted (GTK_TREE_MODEL (tree_store), path, iter);
gtk_tree_path_free (path);
}
else
{
gtk_tree_store_insert_before (model, iter, parent, NULL);
gtk_tree_store_insert_before (tree_store, iter, parent, NULL);
}
validate_tree ((GtkTreeStore*)model);
validate_tree ((GtkTreeStore*)tree_store);
}
/**
* gtk_tree_store_is_ancestor:
* @tree_store: A #GtkTreeStore
* @iter: A valid #GtkTreeIter
* @descendant: A valid #GtkTreeIter
*
* Returns %TRUE if @iter is an ancestor of @descendant. That is, @iter is the
* parent (or grandparent or great-grandparent) of @descendant.
*
* Return value: %TRUE, if @iter is an ancestor of @descendant
**/
gboolean
gtk_tree_store_is_ancestor (GtkTreeStore *model,
gtk_tree_store_is_ancestor (GtkTreeStore *tree_store,
GtkTreeIter *iter,
GtkTreeIter *descendant)
{
g_return_val_if_fail (GTK_IS_TREE_STORE (model), FALSE);
g_return_val_if_fail (VALID_ITER (iter, model), FALSE);
g_return_val_if_fail (VALID_ITER (descendant, model), FALSE);
g_return_val_if_fail (GTK_IS_TREE_STORE (tree_store), FALSE);
g_return_val_if_fail (VALID_ITER (iter, tree_store), FALSE);
g_return_val_if_fail (VALID_ITER (descendant, tree_store), FALSE);
return g_node_is_ancestor (G_NODE (iter->user_data),
G_NODE (descendant->user_data));
}
/**
* gtk_tree_store_iter_depth:
* @tree_store: A #GtkTreeStore
* @iter: A valid #GtkTreeIter
*
* Returns the depth of @iter. This will be 0 for anything on the root level, 1
* for anything down a level, etc.
*
* Return value: The depth of @iter
**/
gint
gtk_tree_store_iter_depth (GtkTreeStore *model,
gtk_tree_store_iter_depth (GtkTreeStore *tree_store,
GtkTreeIter *iter)
{
g_return_val_if_fail (GTK_IS_TREE_STORE (model), 0);
g_return_val_if_fail (VALID_ITER (iter, model), 0);
g_return_val_if_fail (GTK_IS_TREE_STORE (tree_store), 0);
g_return_val_if_fail (VALID_ITER (iter, tree_store), 0);
return g_node_depth (G_NODE (iter->user_data)) - 1;
}
/**
* gtk_tree_store_clear:
* @tree_store: @ #GtkTreeStore
*
* Removes all rows from @tree_store
**/
void
gtk_tree_store_clear (GtkTreeStore *tree_store)
{