From c42cee3e7f635cd027ff4ccb548d430b079585e4 Mon Sep 17 00:00:00 2001 From: Jonathan Blandford Date: Mon, 30 Oct 2000 23:21:38 +0000 Subject: New function. Mon Oct 30 19:23:50 2000 Jonathan Blandford * gtk/gtktreeview.c (gtk_tree_view_expand_row): New function. * gtk/gtktreeview.c (gtk_tree_view_collapse_row): New function. * gtk/gtktreeview.c, gtk/gtktreemodel.c, gtk/gtktreeselection.c gtk/gtktreestore.h, gtk/gtktreeview.h, gtk/gtktreeviewcolumn.c, gtk/gtktreeviewcolumn.h: Fixed inline docs. * docs/reference/gtk/tree_widget.sgml: Proto intro to the tree widget. Needs writing someday. * docs/reference/gtk/tmpl/gtktree*sgml: Added the tree widget to the docs. --- gtk/gtktreemodel.c | 12 ++++---- gtk/gtktreeselection.c | 4 +-- gtk/gtktreestore.h | 1 + gtk/gtktreeview.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++++- gtk/gtktreeview.h | 15 ++++++---- gtk/gtktreeviewcolumn.c | 7 ++--- gtk/gtktreeviewcolumn.h | 2 +- 7 files changed, 102 insertions(+), 19 deletions(-) (limited to 'gtk') diff --git a/gtk/gtktreemodel.c b/gtk/gtktreemodel.c index 4e60d9bc01..af752dfd6d 100644 --- a/gtk/gtktreemodel.c +++ b/gtk/gtktreemodel.c @@ -50,7 +50,6 @@ gtk_tree_model_get_type (void) /** * gtk_tree_path_new: - * @void: * * Creates a new #GtkTreePath. * @@ -138,7 +137,6 @@ gtk_tree_path_to_string (GtkTreePath *path) /** * gtk_tree_path_new_root: - * @void: * * Creates a new root #GtkTreePath. The string representation of this path is * "0" @@ -332,6 +330,8 @@ gtk_tree_path_next (GtkTreePath *path) * @path: A #GtkTreePath. * * Moves the @path to point to the previous node at the current depth, if it exists. + * + * Return value: TRUE if @path has a previous node, and the move was made. **/ gint gtk_tree_path_prev (GtkTreePath *path) @@ -518,8 +518,8 @@ gtk_tree_model_iter_next (GtkTreeModel *tree_model, /** * gtk_tree_model_iter_children: * @tree_model: A #GtkTreeModel. - * @iter: The #GtkTreeIter. - * @child: The new #GtkTreeIter. + * @iter: The new #GtkTreeIter to be set to the child. + * @parent: The #GtkTreeIter. * * Sets @iter to point to the first child of @parent. If @parent has no children, * FALSE is returned and @iter is set to be invalid. @parent will remain a valid @@ -614,8 +614,8 @@ gtk_tree_model_iter_nth_child (GtkTreeModel *tree_model, /** * gtk_tree_model_iter_parent: * @tree_model: A #GtkTreeModel - * @iter: The #GtkTreeIter. - * @parent: The #GtkTreeIter to set to the parent + * @iter: The new #GtkTreeIter to set to the parent. + * @child: The #GtkTreeIter. * * Sets @iter to be the parent of @child. If @child is at the toplevel, and * doesn't have a parent, then @iter is set to an invalid iterator and FALSE diff --git a/gtk/gtktreeselection.c b/gtk/gtktreeselection.c index 74e0771209..414eae2bff 100644 --- a/gtk/gtktreeselection.c +++ b/gtk/gtktreeselection.c @@ -94,7 +94,6 @@ gtk_tree_selection_init (GtkTreeSelection *selection) /** * gtk_tree_selection_new: - * @void: * * Creates a new #GtkTreeSelection object. This function should not be invoked, * as each #GtkTreeView will create it's own #GtkTreeSelection. @@ -242,12 +241,13 @@ gtk_tree_selection_get_user_data (GtkTreeSelection *selection) /** * gtk_tree_selection_get_selected: * @selection: A #GtkTreeSelection. + * @iter: The #GtkTreeIter, or NULL. * * Sets @iter to the currently selected node if @selection is set to * #GTK_TREE_SELECTION_SINGLE. Otherwise, it uses the anchor. @iter may be * NULL if you just want to test if @selection has any selected nodes. * - * Return value: The if a node is selected. + * Return value: TRUE, if there is a selected node. **/ gboolean gtk_tree_selection_get_selected (GtkTreeSelection *selection, diff --git a/gtk/gtktreestore.h b/gtk/gtktreestore.h index a333db5ca9..48e2a0b1d1 100644 --- a/gtk/gtktreestore.h +++ b/gtk/gtktreestore.h @@ -42,6 +42,7 @@ struct _GtkTreeStore gint stamp; gpointer root; + gpointer last; gint n_columns; GType *column_headers; }; diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index 15821411c7..8379486106 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -2876,7 +2876,6 @@ gtk_tree_view_adjustment_changed (GtkAdjustment *adjustment, /** * gtk_tree_view_new: - * @void: * * Creates a new #GtkTreeView widget. * @@ -3703,3 +3702,82 @@ gtk_tree_view_collapse_all (GtkTreeView *tree_view) if (GTK_WIDGET_REALIZED (tree_view)) gtk_widget_queue_draw (GTK_WIDGET (tree_view)); } + +gboolean +gtk_tree_view_expand_row (GtkTreeView *tree_view, + GtkTreePath *path, + gboolean open_all) +{ + GtkTreeIter iter; + GtkTreeIter child; + GtkRBTree *tree; + GtkRBNode *node; + + g_return_val_if_fail (tree_view != NULL, FALSE); + g_return_val_if_fail (GTK_IS_TREE_VIEW (tree_view), FALSE); + g_return_val_if_fail (tree_view->priv->model != NULL, FALSE); + g_return_val_if_fail (path != NULL, FALSE); + + if (_gtk_tree_view_find_node (tree_view, + path, + &tree, + &node)) + return FALSE; + + gtk_tree_model_get_iter (tree_view->priv->model, &iter, path); + if (! gtk_tree_model_iter_has_child (tree_view->priv->model, &iter)) + return FALSE; + + node->children = _gtk_rbtree_new (); + node->children->parent_tree = tree; + node->children->parent_node = node; + + gtk_tree_model_iter_children (tree_view->priv->model, &child, &iter); + gtk_tree_view_build_tree (tree_view, + node->children, + &child, + gtk_tree_path_get_depth (path) + 1, + open_all, + GTK_WIDGET_REALIZED (tree_view)); + + if (GTK_WIDGET_REALIZED (tree_view)) + gtk_widget_queue_draw (GTK_WIDGET (tree_view)); + + return TRUE; +} + +gboolean +gtk_tree_view_collapse_row (GtkTreeView *tree_view, + GtkTreePath *path) +{ + GtkRBTree *tree; + GtkRBNode *node; + GtkTreeIter iter; + + g_return_val_if_fail (tree_view != NULL, FALSE); + g_return_val_if_fail (GTK_IS_TREE_VIEW (tree_view), FALSE); + g_return_val_if_fail (tree_view->priv->tree != NULL, FALSE); + g_return_val_if_fail (path != NULL, FALSE); + + if (_gtk_tree_view_find_node (tree_view, + path, + &tree, + &node)) + return FALSE; + + if (node->children == NULL) + return FALSE; + + gtk_tree_model_get_iter (tree_view->priv->model, &iter, path); + gtk_tree_view_discover_dirty (tree_view, + node->children, + &iter, + gtk_tree_path_get_depth (path)); + _gtk_rbtree_remove (node->children); + + if (GTK_WIDGET_REALIZED (tree_view)) + gtk_widget_queue_draw (GTK_WIDGET (tree_view)); + + return TRUE; +} + diff --git a/gtk/gtktreeview.h b/gtk/gtktreeview.h index 5c9b6d0f15..efa04884bf 100644 --- a/gtk/gtktreeview.h +++ b/gtk/gtktreeview.h @@ -65,13 +65,13 @@ GtkWidget *gtk_tree_view_new_with_model (GtkTreeModel *mo GtkTreeModel *gtk_tree_view_get_model (GtkTreeView *tree_view); void gtk_tree_view_set_model (GtkTreeView *tree_view, - GtkTreeModel *tree_model); + GtkTreeModel *model); GtkTreeSelection *gtk_tree_view_get_selection (GtkTreeView *tree_view); -GtkAdjustment *gtk_tree_view_get_hadjustment (GtkTreeView *layout); -void gtk_tree_view_set_hadjustment (GtkTreeView *layout, +GtkAdjustment *gtk_tree_view_get_hadjustment (GtkTreeView *tree_view); +void gtk_tree_view_set_hadjustment (GtkTreeView *tree_view, GtkAdjustment *adjustment); -GtkAdjustment *gtk_tree_view_get_vadjustment (GtkTreeView *layout); -void gtk_tree_view_set_vadjustment (GtkTreeView *layout, +GtkAdjustment *gtk_tree_view_get_vadjustment (GtkTreeView *tree_view); +void gtk_tree_view_set_vadjustment (GtkTreeView *tree_view, GtkAdjustment *adjustment); gboolean gtk_tree_view_get_headers_visible (GtkTreeView *tree_view); void gtk_tree_view_set_headers_visible (GtkTreeView *tree_view, @@ -103,6 +103,11 @@ gboolean gtk_tree_view_get_path_at_pos (GtkTreeView *tr GtkTreeViewColumn **column); void gtk_tree_view_expand_all (GtkTreeView *tree_view); void gtk_tree_view_collapse_all (GtkTreeView *tree_view); +gboolean gtk_tree_view_expand_row (GtkTreeView *tree_view, + GtkTreePath *path, + gboolean open_all); +gboolean gtk_tree_view_collapse_row (GtkTreeView *tree_view, + GtkTreePath *path); #ifdef __cplusplus diff --git a/gtk/gtktreeviewcolumn.c b/gtk/gtktreeviewcolumn.c index 8c4c43f2e9..6c51f4355d 100644 --- a/gtk/gtktreeviewcolumn.c +++ b/gtk/gtktreeviewcolumn.c @@ -140,7 +140,6 @@ gtk_real_tree_column_clicked (GtkTreeViewColumn *tree_column) /** * gtk_tree_view_column_new: - * @void: * * Creates a new #GtkTreeViewColumn. * @@ -160,7 +159,7 @@ gtk_tree_view_column_new (void) * gtk_tree_view_column_new_with_attributes: * @title: The title to set the header to. * @cell: The #GtkCellRenderer. - * @: A NULL terminated list of attributes. + * @Varargs: A NULL terminated list of attributes. * * Creates a new #GtkTreeViewColumn with a number of default values. This is * equivalent to calling @gtk_tree_view_column_set_title, @@ -279,7 +278,7 @@ gtk_tree_view_column_set_attributesv (GtkTreeViewColumn *tree_column, /** * gtk_tree_view_column_set_attributes: * @tree_column: A #GtkTreeViewColumn. - * @: A NULL terminated listing of attributes to add. + * @Varargs: A NULL terminated listing of attributes to add. * * Adds the attributes in the list the the @tree_column. The attributes should * be in attribute/column order, as in @gtk_tree_view_column_add_attribute. If @@ -305,7 +304,7 @@ gtk_tree_view_column_set_attributes (GtkTreeViewColumn *tree_column, * gtk_tree_view_column_set_cell_data: * @tree_column: A #GtkTreeViewColumn. * @tree_model: The #GtkTreeModel to to get the cell renderers attributes from. - * @tree_node: The #GtkTreeNode to to get the cell renderers attributes from. + * @iter: The #GtkTreeIter to to get the cell renderer's attributes from. * * Sets the cell renderer based on the @tree_model and @tree_node. That is, for * every attribute mapping in @tree_column, it will get a value from the set diff --git a/gtk/gtktreeviewcolumn.h b/gtk/gtktreeviewcolumn.h index 7b7544ee3c..091ff07154 100644 --- a/gtk/gtktreeviewcolumn.h +++ b/gtk/gtktreeviewcolumn.h @@ -105,7 +105,7 @@ void gtk_tree_view_column_set_col_type (GtkTreeViewColumn gint gtk_tree_view_column_get_col_type (GtkTreeViewColumn *tree_column); gint gtk_tree_view_column_get_size (GtkTreeViewColumn *tree_column); void gtk_tree_view_column_set_size (GtkTreeViewColumn *tree_column, - gint width); + gint size); void gtk_tree_view_column_set_min_width (GtkTreeViewColumn *tree_column, gint min_width); gint gtk_tree_view_column_get_min_width (GtkTreeViewColumn *tree_column); -- cgit v1.2.1