From ef3ea1d41b2163f838c205f3c8aee071ffdaafe1 Mon Sep 17 00:00:00 2001 From: Srinivasa Ragavan Date: Mon, 16 Jan 2006 08:17:21 +0000 Subject: Added functions to collapse/Expand all 2006-01-16 Srinivasa Ragavan * table/e-tree-table-adapter.c (set_expanded_state_func), (set_collapsed_state_func): (e_tree_table_adapter_load_all_expanded_state): * table/e-tree.c: (e_tree_load_all_expanded_state): Added functions to collapse/Expand all svn path=/trunk/; revision=31203 --- widgets/table/e-tree-table-adapter.c | 38 ++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'widgets/table/e-tree-table-adapter.c') diff --git a/widgets/table/e-tree-table-adapter.c b/widgets/table/e-tree-table-adapter.c index 55674ecac3..6bf82ede38 100644 --- a/widgets/table/e-tree-table-adapter.c +++ b/widgets/table/e-tree-table-adapter.c @@ -963,6 +963,44 @@ open_file (ETreeTableAdapter *etta, const char *filename) return doc; } +static void +set_expanded_state_func (gpointer keyp, gpointer value, gpointer data) +{ + ETreePath path = keyp; + node_t *node = ((GNode *)value)->data; + ETreeTableAdapter *etta = (ETreeTableAdapter *) data; + + if (node->expanded != TRUE) { + e_tree_table_adapter_node_set_expanded(etta, path, TRUE); + node->expanded = TRUE; + } +} + +static void +set_collapsed_state_func (gpointer keyp, gpointer value, gpointer data) +{ + ETreePath path = keyp; + node_t *node = ((GNode *)value)->data; + ETreeTableAdapter *etta = (ETreeTableAdapter *) data; + xmlNode *xmlnode; + + if (node->expanded != FALSE) { + e_tree_table_adapter_node_set_expanded(etta, path, FALSE); + node->expanded = FALSE; + } +} +void +e_tree_table_adapter_load_all_expanded_state (ETreeTableAdapter *etta, gboolean state) +{ + + g_return_if_fail(etta != NULL); + + if (state) + g_hash_table_foreach (etta->priv->nodes, set_expanded_state_func, etta); + else + g_hash_table_foreach (etta->priv->nodes, set_collapsed_state_func, etta); +} + void e_tree_table_adapter_load_expanded_state (ETreeTableAdapter *etta, const char *filename) { -- cgit