summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorJonathan Blandford <jrb@redhat.com>2000-10-30 23:21:38 +0000
committerJonathan Blandford <jrb@src.gnome.org>2000-10-30 23:21:38 +0000
commitc42cee3e7f635cd027ff4ccb548d430b079585e4 (patch)
tree283f5f17815fbba5f98e862783a64ab6f2755570 /gtk
parent72284e347d2269bb0b3f577a589942cca301a1aa (diff)
downloadgtk+-c42cee3e7f635cd027ff4ccb548d430b079585e4.tar.gz
New function.
Mon Oct 30 19:23:50 2000 Jonathan Blandford <jrb@redhat.com> * 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.
Diffstat (limited to 'gtk')
-rw-r--r--gtk/gtktreemodel.c12
-rw-r--r--gtk/gtktreeselection.c4
-rw-r--r--gtk/gtktreestore.h1
-rw-r--r--gtk/gtktreeview.c80
-rw-r--r--gtk/gtktreeview.h15
-rw-r--r--gtk/gtktreeviewcolumn.c7
-rw-r--r--gtk/gtktreeviewcolumn.h2
7 files changed, 102 insertions, 19 deletions
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);