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 ++++++++++++++++++++++++++++++++++++ widgets/table/e-tree.c | 6 ++++++ 2 files changed, 44 insertions(+) (limited to 'widgets/table') 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) { diff --git a/widgets/table/e-tree.c b/widgets/table/e-tree.c index aa644f09ea..9ba6f7f5f2 100644 --- a/widgets/table/e-tree.c +++ b/widgets/table/e-tree.c @@ -2014,6 +2014,12 @@ e_tree_load_expanded_state (ETree *et, char *filename) e_tree_table_adapter_load_expanded_state (et->priv->etta, filename); } +void +e_tree_load_all_expanded_state (ETree *et, gboolean state) +{ + e_tree_table_adapter_load_all_expanded_state (et->priv->etta, state); +} + gint e_tree_row_count (ETree *et) { -- cgit