From 4c941fbefbfe8ba3617355ab73e139f65da0081e Mon Sep 17 00:00:00 2001 From: Chris Shoemaker Date: Sun, 14 May 2006 02:07:52 +0000 Subject: [PATCH] Change the method for specifying and recording the default visibility of tree-view columns. There is now a per-column setting, "DEFAULT_VISIBLE", similar to "ALWAYS_VISIBLE", that controls the visibility of a column in the absence of, or prior to, gconf management. It is no longer necessary for the tree view to store a list of column names for default visible columns. To faciliate the adaptation of pre-existing tree-views, the view_column_find_by_name() has been publicized as gnc_tree_view_find_column_by_name(). All callers of gnc_tree_view_configure_columns() have been converted to use the DEFAULT_VISIBLE column property. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@14037 57a11ea4-9604-0410-9ed3-97b8803252fd --- src/gnome-utils/gnc-tree-view-account.c | 5 +- src/gnome-utils/gnc-tree-view-commodity.c | 122 +++++++++++---------- src/gnome-utils/gnc-tree-view-price.c | 71 ++++++------ src/gnome-utils/gnc-tree-view.c | 88 ++++++--------- src/gnome-utils/gnc-tree-view.h | 33 ++++-- src/gnome/druid-hierarchy.c | 6 +- src/gnome/gnc-plugin-page-account-tree.c | 10 +- src/gnome/gnc-plugin-page-budget.c | 5 +- src/import-export/import-account-matcher.c | 14 ++- 9 files changed, 183 insertions(+), 171 deletions(-) diff --git a/src/gnome-utils/gnc-tree-view-account.c b/src/gnome-utils/gnc-tree-view-account.c index 356c38bd0d..c77460bb2e 100644 --- a/src/gnome-utils/gnc-tree-view-account.c +++ b/src/gnome-utils/gnc-tree-view-account.c @@ -644,8 +644,7 @@ gnc_tree_view_account_new_with_group (AccountGroup *group, gboolean show_root) GNC_TREE_MODEL_ACCOUNT_COL_TAX_INFO, GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, sort_by_string); - gnc_tree_view_add_toggle_column - (view, _("Placeholder"), + gnc_tree_view_add_toggle_column(view, _("Placeholder"), /* Translators: This string has a context prefix; the translation must only contain the part after the | character. */ Q_("Column letter for 'Placeholder'|P"), @@ -659,7 +658,7 @@ gnc_tree_view_account_new_with_group (AccountGroup *group, gboolean show_root) gtva_update_column_names(view); /* By default only the first column is visible. */ - gnc_tree_view_configure_columns(view, NULL); + gnc_tree_view_configure_columns(view); gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (f_model), gnc_tree_view_account_filter_helper, view, diff --git a/src/gnome-utils/gnc-tree-view-commodity.c b/src/gnome-utils/gnc-tree-view-commodity.c index f3181b9053..3a3bfa6882 100644 --- a/src/gnome-utils/gnc-tree-view-commodity.c +++ b/src/gnome-utils/gnc-tree-view-commodity.c @@ -359,6 +359,7 @@ gnc_tree_view_commodity_new (QofBook *book, { GncTreeView *view; GtkTreeModel *model, *f_model, *s_model; + GtkTreeViewColumn *col; gnc_commodity_table *ct; va_list var_args; @@ -389,64 +390,69 @@ gnc_tree_view_commodity_new (QofBook *book, /* Set default visibilities */ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(view), FALSE); - gnc_tree_view_add_text_column (view, _("Namespace"), "namespace", NULL, - "NASDAQ", - GNC_TREE_MODEL_COMMODITY_COL_NAMESPACE, - GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, - sort_by_commodity_string); - gnc_tree_view_add_text_column (view, _("Symbol"), "symbol", NULL, - "ACMEACME", - GNC_TREE_MODEL_COMMODITY_COL_MNEMONIC, - GNC_TREE_MODEL_COMMODITY_COL_VISIBILITY, - sort_by_commodity_string); - gnc_tree_view_add_text_column (view, _("Name"), "name", NULL, - "Acme Corporation, Inc.", - GNC_TREE_MODEL_COMMODITY_COL_FULLNAME, - GNC_TREE_MODEL_COMMODITY_COL_VISIBILITY, - sort_by_commodity_string); - gnc_tree_view_add_text_column (view, _("Print Name"), "printname", NULL, - "ACMEACME (Acme Corporation, Inc.)", - GNC_TREE_MODEL_COMMODITY_COL_PRINTNAME, - GNC_TREE_MODEL_COMMODITY_COL_VISIBILITY, - sort_by_commodity_string); - gnc_tree_view_add_text_column (view, _("Unique Name"), "uniquename", NULL, - "NASDAQ::ACMEACME", - GNC_TREE_MODEL_COMMODITY_COL_UNIQUE_NAME, - GNC_TREE_MODEL_COMMODITY_COL_VISIBILITY, - sort_by_commodity_string); - gnc_tree_view_add_text_column (view, _("CUSIP code"), "cusip_code", NULL, - "QWERTYUIOP", - GNC_TREE_MODEL_COMMODITY_COL_CUSIP, - GNC_TREE_MODEL_COMMODITY_COL_VISIBILITY, - sort_by_commodity_string); - gnc_tree_view_add_numeric_column (view, _("Fraction"), "fraction", "10000", - GNC_TREE_MODEL_COMMODITY_COL_FRACTION, - GNC_TREE_VIEW_COLUMN_COLOR_NONE, - GNC_TREE_MODEL_COMMODITY_COL_VISIBILITY, - sort_by_fraction); - gnc_tree_view_add_toggle_column - (view, _("Get Quotes"), - /* Translators: This string has a context prefix; the translation - must only contain the part after the | character. */ - Q_("Column letter for 'Get Quotes'|Q"), - "quote_flag", - GNC_TREE_MODEL_COMMODITY_COL_QUOTE_FLAG, - GNC_TREE_MODEL_COMMODITY_COL_VISIBILITY, - sort_by_quote_flag, - NULL); - gnc_tree_view_add_text_column (view, _("Source"), "quote_source", NULL, - "yahoo", - GNC_TREE_MODEL_COMMODITY_COL_QUOTE_SOURCE, - GNC_TREE_MODEL_COMMODITY_COL_VISIBILITY, - sort_by_commodity_string); - gnc_tree_view_add_text_column (view, _("Timezone"), "quote_timezone", NULL, - "America/New_York", - GNC_TREE_MODEL_COMMODITY_COL_QUOTE_TZ, - GNC_TREE_MODEL_COMMODITY_COL_VISIBILITY, - sort_by_commodity_string); - - gnc_tree_view_configure_columns(view, "symbol", "name", "cusip_code", - "fraction", NULL); + col = gnc_tree_view_add_text_column ( + view, _("Namespace"), "namespace", NULL, "NASDAQ", + GNC_TREE_MODEL_COMMODITY_COL_NAMESPACE, + GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, + sort_by_commodity_string); + col = gnc_tree_view_add_text_column ( + view, _("Symbol"), "symbol", NULL, "ACMEACME", + GNC_TREE_MODEL_COMMODITY_COL_MNEMONIC, + GNC_TREE_MODEL_COMMODITY_COL_VISIBILITY, + sort_by_commodity_string); + g_object_set_data(G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1)); + col = gnc_tree_view_add_text_column ( + view, _("Name"), "name", NULL, "Acme Corporation, Inc.", + GNC_TREE_MODEL_COMMODITY_COL_FULLNAME, + GNC_TREE_MODEL_COMMODITY_COL_VISIBILITY, + sort_by_commodity_string); + g_object_set_data(G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1)); + col = gnc_tree_view_add_text_column ( + view, _("Print Name"), "printname", NULL, + "ACMEACME (Acme Corporation, Inc.)", + GNC_TREE_MODEL_COMMODITY_COL_PRINTNAME, + GNC_TREE_MODEL_COMMODITY_COL_VISIBILITY, + sort_by_commodity_string); + col = gnc_tree_view_add_text_column ( + view, _("Unique Name"), "uniquename", NULL, + "NASDAQ::ACMEACME", GNC_TREE_MODEL_COMMODITY_COL_UNIQUE_NAME, + GNC_TREE_MODEL_COMMODITY_COL_VISIBILITY, + sort_by_commodity_string); + col = gnc_tree_view_add_text_column ( + view, _("CUSIP code"), "cusip_code", NULL, "QWERTYUIOP", + GNC_TREE_MODEL_COMMODITY_COL_CUSIP, + GNC_TREE_MODEL_COMMODITY_COL_VISIBILITY, + sort_by_commodity_string); + g_object_set_data(G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1)); + col = gnc_tree_view_add_numeric_column ( + view, _("Fraction"), "fraction", "10000", + GNC_TREE_MODEL_COMMODITY_COL_FRACTION, + GNC_TREE_VIEW_COLUMN_COLOR_NONE, + GNC_TREE_MODEL_COMMODITY_COL_VISIBILITY, + sort_by_fraction); + g_object_set_data(G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1)); + col = gnc_tree_view_add_toggle_column( + view, _("Get Quotes"), + /* Translators: This string has a context prefix; the translation + must only contain the part after the | character. */ + Q_("Column letter for 'Get Quotes'|Q"), "quote_flag", + GNC_TREE_MODEL_COMMODITY_COL_QUOTE_FLAG, + GNC_TREE_MODEL_COMMODITY_COL_VISIBILITY, + sort_by_quote_flag, + NULL); + col = gnc_tree_view_add_text_column ( + view, _("Source"), "quote_source", NULL, "yahoo", + GNC_TREE_MODEL_COMMODITY_COL_QUOTE_SOURCE, + GNC_TREE_MODEL_COMMODITY_COL_VISIBILITY, + sort_by_commodity_string); + col = gnc_tree_view_add_text_column ( + view, _("Timezone"), "quote_timezone", NULL, "America/New_York", + GNC_TREE_MODEL_COMMODITY_COL_QUOTE_TZ, + GNC_TREE_MODEL_COMMODITY_COL_VISIBILITY, + sort_by_commodity_string); + + g_object_set_data(G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1)); + gnc_tree_view_configure_columns(view); gtk_widget_show(GTK_WIDGET(view)); LEAVE(" %p", view); diff --git a/src/gnome-utils/gnc-tree-view-price.c b/src/gnome-utils/gnc-tree-view-price.c index d94ff8d690..3a6f7979f1 100644 --- a/src/gnome-utils/gnc-tree-view-price.c +++ b/src/gnome-utils/gnc-tree-view-price.c @@ -399,6 +399,7 @@ gnc_tree_view_price_new (QofBook *book, { GncTreeView *view; GtkTreeModel *model, *f_model, *s_model; + GtkTreeViewColumn *col; GNCPriceDB *price_db; va_list var_args; const gchar *sample_text; @@ -430,39 +431,45 @@ gnc_tree_view_price_new (QofBook *book, sample_text = gnc_commodity_get_printname(gnc_default_currency()); sample_text2 = g_strdup_printf("%s%s", sample_text, sample_text); - gnc_tree_view_add_text_column (view, _("Security"), "security", NULL, - sample_text2, - GNC_TREE_MODEL_PRICE_COL_COMMODITY, - GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, - sort_by_name); + col = gnc_tree_view_add_text_column ( + view, _("Security"), "security", NULL, sample_text2, + GNC_TREE_MODEL_PRICE_COL_COMMODITY, + GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS, + sort_by_name); g_free(sample_text2); - gnc_tree_view_add_text_column (view, _("Currency"), "currency", NULL, - sample_text, - GNC_TREE_MODEL_PRICE_COL_CURRENCY, - GNC_TREE_MODEL_PRICE_COL_VISIBILITY, - sort_by_name); - gnc_tree_view_add_text_column (view, _("Date"), "date", NULL, - "2005-05-20", - GNC_TREE_MODEL_PRICE_COL_DATE, - GNC_TREE_MODEL_PRICE_COL_VISIBILITY, - sort_by_date); - gnc_tree_view_add_text_column (view, _("Source"), "source", NULL, - "Finance::Quote", - GNC_TREE_MODEL_PRICE_COL_SOURCE, - GNC_TREE_MODEL_PRICE_COL_VISIBILITY, - sort_by_source); - gnc_tree_view_add_text_column (view, _("Type"), "type", NULL, "last", - GNC_TREE_MODEL_PRICE_COL_TYPE, - GNC_TREE_MODEL_PRICE_COL_VISIBILITY, - sort_by_type); - gnc_tree_view_add_numeric_column (view, _("Price"), "price", "100.00000", - GNC_TREE_MODEL_PRICE_COL_VALUE, - GNC_TREE_VIEW_COLUMN_COLOR_NONE, - GNC_TREE_MODEL_PRICE_COL_VISIBILITY, - sort_by_value); - - gnc_tree_view_configure_columns(view, "commodity", "currency", - "date", "source", "type", "price", NULL); + col = gnc_tree_view_add_text_column ( + view, _("Currency"), "currency", NULL, sample_text, + GNC_TREE_MODEL_PRICE_COL_CURRENCY, + GNC_TREE_MODEL_PRICE_COL_VISIBILITY, + sort_by_name); + g_object_set_data(G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1)); + col = gnc_tree_view_add_text_column ( + view, _("Date"), "date", NULL, "2005-05-20", + GNC_TREE_MODEL_PRICE_COL_DATE, + GNC_TREE_MODEL_PRICE_COL_VISIBILITY, + sort_by_date); + g_object_set_data(G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1)); + col = gnc_tree_view_add_text_column ( + view, _("Source"), "source", NULL, "Finance::Quote", + GNC_TREE_MODEL_PRICE_COL_SOURCE, + GNC_TREE_MODEL_PRICE_COL_VISIBILITY, + sort_by_source); + g_object_set_data(G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1)); + col = gnc_tree_view_add_text_column ( + view, _("Type"), "type", NULL, "last", + GNC_TREE_MODEL_PRICE_COL_TYPE, + GNC_TREE_MODEL_PRICE_COL_VISIBILITY, + sort_by_type); + g_object_set_data(G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1)); + col = gnc_tree_view_add_numeric_column ( + view, _("Price"), "price", "100.00000", + GNC_TREE_MODEL_PRICE_COL_VALUE, + GNC_TREE_VIEW_COLUMN_COLOR_NONE, + GNC_TREE_MODEL_PRICE_COL_VISIBILITY, + sort_by_value); + g_object_set_data(G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1)); + + gnc_tree_view_configure_columns(view); gtk_widget_show(GTK_WIDGET(view)); LEAVE(" %p", view); diff --git a/src/gnome-utils/gnc-tree-view.c b/src/gnome-utils/gnc-tree-view.c index 8dbd623af0..75d2abb613 100644 --- a/src/gnome-utils/gnc-tree-view.c +++ b/src/gnome-utils/gnc-tree-view.c @@ -117,7 +117,6 @@ static void gnc_tree_view_select_column_cb (GtkTreeViewColumn *column, typedef struct GncTreeViewPrivate { GtkTooltips *title_tips; - GSList *default_visible; /* Spacer column */ GtkTreeViewColumn *spacer_column; @@ -248,7 +247,6 @@ gnc_tree_view_init (GncTreeView *view, GncTreeViewClass *klass) gnc_gobject_tracking_remember(G_OBJECT(view), G_OBJECT_CLASS(klass)); priv = GNC_TREE_VIEW_GET_PRIVATE(view); - priv->default_visible = NULL; priv->column_menu = NULL; priv->show_column_menu = FALSE; priv->gconf_section = NULL; @@ -342,7 +340,6 @@ gnc_tree_view_destroy (GtkObject *object) { GncTreeView *view; GncTreeViewPrivate *priv; - GSList *slist; ENTER("view %p", object); g_return_if_fail (object != NULL); @@ -353,12 +350,6 @@ gnc_tree_view_destroy (GtkObject *object) gnc_tree_view_remove_gconf(view); priv = GNC_TREE_VIEW_GET_PRIVATE(view); - if (priv->default_visible) { - slist = priv->default_visible; - priv->default_visible = NULL; - g_slist_foreach(slist, (GFunc)g_free, NULL); - g_slist_free(slist); - } if (priv->column_menu) { DEBUG("removing column selection menu"); @@ -499,11 +490,10 @@ view_column_find_by_model_id (GncTreeView *view, * * @param id The "pref name" to find. * - * @internal */ -static GtkTreeViewColumn * -view_column_find_by_name (GncTreeView *view, - const gchar *wanted) +GtkTreeViewColumn * +gnc_tree_view_find_column_by_name (GncTreeView *view, + const gchar *wanted) { GtkTreeViewColumn *column, *found = NULL; GList *column_list, *tmp; @@ -827,15 +817,15 @@ gnc_tree_view_column_visible (GncTreeView *view, return visible; } - visible = (g_slist_find_custom(priv->default_visible, pref_name, - (GCompareFunc)strcmp) != NULL); + visible = column ? + (g_object_get_data(G_OBJECT(column), DEFAULT_VISIBLE) != NULL) : FALSE; LEAVE("%d, gconf but using defaults", visible); return visible; } /* Check the default columns list */ - visible = (g_slist_find_custom(priv->default_visible, pref_name, - (GCompareFunc)strcmp) != NULL); + visible = column ? + (g_object_get_data(G_OBJECT(column), DEFAULT_VISIBLE) != NULL) : FALSE; LEAVE("defaults says %d", visible); return visible; } @@ -943,7 +933,7 @@ gnc_tree_view_set_sort_column (GncTreeView *view, gint model_column, current; priv = GNC_TREE_VIEW_GET_PRIVATE(view); - column = view_column_find_by_name(view, name); + column = gnc_tree_view_find_column_by_name(view, name); if (!column) return; @@ -992,7 +982,7 @@ gnc_tree_view_set_column_order (GncTreeView *view, columns = NULL; for (tmp = column_names; tmp; tmp = g_slist_next(tmp)) { name = gconf_value_get_string(tmp->data); - column = view_column_find_by_name(view, name); + column = gnc_tree_view_find_column_by_name(view, name); if (!column) continue; columns = g_slist_append(columns, column); @@ -1077,7 +1067,7 @@ gnc_tree_view_gconf_changed (GConfClient *client, if (strcmp(type_name, GCONF_KEY_VISIBLE) == 0) { priv->seen_gconf_visibility = TRUE; - column = view_column_find_by_name(view, column_name); + column = gnc_tree_view_find_column_by_name(view, column_name); if (column) { known = TRUE; if (!g_object_get_data(G_OBJECT(column), ALWAYS_VISIBLE)) { @@ -1086,7 +1076,7 @@ gnc_tree_view_gconf_changed (GConfClient *client, } } else if (strcmp(type_name, GCONF_KEY_WIDTH) == 0) { width = gconf_value_get_int(value); - column = view_column_find_by_name(view, column_name); + column = gnc_tree_view_find_column_by_name(view, column_name); if (column) { known = TRUE; if (width && (width != gtk_tree_view_column_get_width(column))) { @@ -1553,7 +1543,7 @@ void gnc_tree_view_expand_columns (GncTreeView *view, /* Now enable it on the requested columns. */ while (name != NULL) { - column = view_column_find_by_name (view, name); + column = gnc_tree_view_find_column_by_name(view, name); if (column != NULL) { gtk_tree_view_column_set_expand(column, TRUE); hide_spacer = TRUE; @@ -1645,62 +1635,46 @@ gnc_tree_view_set_model(GncTreeView *view, GtkTreeModel *model) } } -/** Configure (by name) the default set of visible columns in an gnc - * tree view. This is the list of columns that will be shown if the - * view isn't using gconf to manage column visibility. If gconf is - * used, this list will be used the very first time the view is - * presented to the user, then gconf will be used after that. The - * available list of columns can be found in the file - * gnc-tree-view-xxx.c. - * - * Parameters are defined in gnc-tree-view.h - */ +static gint +gnc_tree_view_count_visible_columns(GncTreeView *view) +{ + GList *columns, *node; + gint count = 0; + + columns = gtk_tree_view_get_columns(GTK_TREE_VIEW(view)); + for (node = columns; node; node = node->next) { + GtkTreeViewColumn *col = GTK_TREE_VIEW_COLUMN(node->data); + if (gnc_tree_view_column_visible (view, col, NULL)) + count++; + } + g_list_free(columns); + return count; +} + void -gnc_tree_view_configure_columns (GncTreeView *view, - gchar *first_column_name, - ...) +gnc_tree_view_configure_columns (GncTreeView *view) { GncTreeViewPrivate *priv; GtkTreeViewColumn *column; - GSList *slist; GList *columns; - gchar *name; gboolean hide_spacer; - va_list args; g_return_if_fail(GNC_IS_TREE_VIEW(view)); ENTER(" "); - /* Delete any old list of column names */ - priv = GNC_TREE_VIEW_GET_PRIVATE(view); - if (priv->default_visible) { - slist = priv->default_visible; - priv->default_visible = NULL; - g_slist_foreach(slist, (GFunc)g_free, NULL); - g_slist_free(slist); - } - - /* Build a new list */ - va_start (args, first_column_name); - name = first_column_name; - while (name != NULL) { - priv->default_visible = - g_slist_append(priv->default_visible, g_strdup(name)); - name = va_arg(args, gchar*); - } - va_end (args); /* Update the view and gconf */ columns = gtk_tree_view_get_columns(GTK_TREE_VIEW(view)); g_list_foreach(columns, (GFunc)gnc_tree_view_update_visibility, view); g_list_free(columns); + priv = GNC_TREE_VIEW_GET_PRIVATE(view); if (priv->gconf_section) priv->seen_gconf_visibility = TRUE; /* If only the first column is visible, hide the spacer and make that * column expand. */ - hide_spacer = (first_column_name == NULL); + hide_spacer = (gnc_tree_view_count_visible_columns(view) == 1); column = gtk_tree_view_get_column(GTK_TREE_VIEW(view), 0); gtk_tree_view_column_set_expand(column, hide_spacer); gtk_tree_view_column_set_visible(priv->spacer_column, !hide_spacer); diff --git a/src/gnome-utils/gnc-tree-view.h b/src/gnome-utils/gnc-tree-view.h index ee6adbd918..9636c8bae0 100644 --- a/src/gnome-utils/gnc-tree-view.h +++ b/src/gnome-utils/gnc-tree-view.h @@ -70,6 +70,11 @@ GType gnc_tree_view_get_type (void); values: GINT_TO_POINTER(0) and GINT_TO_POINTER(1) */ #define ALWAYS_VISIBLE "always-visible" +/* This attribute controls visibility of a non-gconf column or a gconf + column before a visibility preference has been recorded. Valid values: + GINT_TO_POINTER(0) and GINT_TO_POINTER(1) */ +#define DEFAULT_VISIBLE "default-visible" + #define GNC_TREE_VIEW_COLUMN_DATA_NONE -1 #define GNC_TREE_VIEW_COLUMN_COLOR_NONE -1 #define GNC_TREE_VIEW_COLUMN_VISIBLE_ALWAYS -1 @@ -289,21 +294,27 @@ gint gnc_tree_view_append_column (GncTreeView *view, */ void gnc_tree_view_set_model(GncTreeView *view, GtkTreeModel *model); -/** Configure (by name) the default set of visible columns in an gnc - * tree view. This is the list of columns that will be shown if the - * view isn't using gconf to manage column visibility. If gconf is - * used, this list will be used the very first time the view is - * presented to the user, then gconf will be used after that. The - * available list of columns can be found in the file - * gnc-tree-view-xxx.c. +/** Make all the correct columns visible, respecting their default + * visibility setting, their "always" visibility setting, and their + * gconf visibility settings, if managed by gconf. * * @param view A pointer to an gnc tree view. + */ +void gnc_tree_view_configure_columns (GncTreeView *view); + +/** Find a tree column given the "pref name" used with gconf. This + * function simply runs the list of all (visible and invisible) + * columns looking for a match. Column names were attached to each + * column at the time the column was created. + * + * @param view The visible tree widget. + * + * @param id The "pref name" to find. * - * @param column_names A list of column names to make visible. */ -void gnc_tree_view_configure_columns (GncTreeView *view, - gchar *first_column_name, - ...); +GtkTreeViewColumn * +gnc_tree_view_find_column_by_name (GncTreeView *view, + const gchar *wanted); /** This function is called to set up or remove an association between * a gconf section and the display of a view. It will first remove diff --git a/src/gnome/druid-hierarchy.c b/src/gnome/druid-hierarchy.c index 4608e8efaf..25ccf8c87e 100644 --- a/src/gnome/druid-hierarchy.c +++ b/src/gnome/druid-hierarchy.c @@ -866,8 +866,10 @@ on_final_account_prepare (GnomeDruidPage *gnomedruidpage, gnc_tree_view_account_notes_edited_cb); gtk_tree_view_set_headers_visible (tree_view, TRUE); - gnc_tree_view_configure_columns (GNC_TREE_VIEW(data->final_account_tree), - "type", /*"placeholder", */ NULL); + column = gnc_tree_view_find_column_by_name ( + GNC_TREE_VIEW(data->final_account_tree), "type"); + g_object_set_data(G_OBJECT(column), DEFAULT_VISIBLE, GINT_TO_POINTER(1)); + gnc_tree_view_configure_columns (GNC_TREE_VIEW(data->final_account_tree)); gnc_tree_view_set_show_column_menu (GNC_TREE_VIEW(data->final_account_tree), FALSE); diff --git a/src/gnome/gnc-plugin-page-account-tree.c b/src/gnome/gnc-plugin-page-account-tree.c index 02ce3cd73e..8285393d41 100644 --- a/src/gnome/gnc-plugin-page-account-tree.c +++ b/src/gnome/gnc-plugin-page-account-tree.c @@ -403,6 +403,7 @@ gnc_plugin_page_account_tree_create_widget (GncPluginPage *plugin_page) GtkTreeSelection *selection; GtkTreeView *tree_view; GtkWidget *scrolled_window; + GtkTreeViewColumn *col; ENTER("page %p", plugin_page); page = GNC_PLUGIN_PAGE_ACCOUNT_TREE (plugin_page); @@ -423,8 +424,13 @@ gnc_plugin_page_account_tree_create_widget (GncPluginPage *plugin_page) TRUE, TRUE, 0); tree_view = gnc_tree_view_account_new(FALSE); - gnc_tree_view_configure_columns(GNC_TREE_VIEW(tree_view), - "description", "total", NULL); + col = gnc_tree_view_find_column_by_name( + GNC_TREE_VIEW(tree_view), "description"); + g_object_set_data(G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1)); + col = gnc_tree_view_find_column_by_name( + GNC_TREE_VIEW(tree_view), "total"); + g_object_set_data(G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1)); + gnc_tree_view_configure_columns(GNC_TREE_VIEW(tree_view)); g_object_set(G_OBJECT(tree_view), "gconf-section", GCONF_SECTION, "show-column-menu", TRUE, diff --git a/src/gnome/gnc-plugin-page-budget.c b/src/gnome/gnc-plugin-page-budget.c index 2c9d2bfb20..8352a1d90d 100644 --- a/src/gnome/gnc-plugin-page-budget.c +++ b/src/gnome/gnc-plugin-page-budget.c @@ -391,7 +391,7 @@ gnc_plugin_page_budget_create_widget (GncPluginPage *plugin_page) tree_view = gnc_tree_view_account_new(FALSE); g_object_set(G_OBJECT(tree_view), "gconf-section", GCONF_SECTION, NULL); - gnc_tree_view_configure_columns(GNC_TREE_VIEW(tree_view), NULL); + gnc_tree_view_configure_columns(GNC_TREE_VIEW(tree_view)); priv->tree_view = tree_view; selection = gtk_tree_view_get_selection(tree_view); gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE); @@ -1051,8 +1051,7 @@ gnc_plugin_page_budget_view_refresh (GncPluginPageBudget *page) num_periods_visible = g_list_length(col_list); } - gnc_tree_view_configure_columns( - GNC_TREE_VIEW(priv->tree_view), NULL); + gnc_tree_view_configure_columns(GNC_TREE_VIEW(priv->tree_view)); /* Create any needed columns */ while (num_periods_visible < num_periods) { diff --git a/src/import-export/import-account-matcher.c b/src/import-export/import-account-matcher.c index a71a5a82a2..5a8384f4df 100644 --- a/src/import-export/import-account-matcher.c +++ b/src/import-export/import-account-matcher.c @@ -64,6 +64,7 @@ static void build_acct_tree(struct _accountpickerdialog * picker) { GtkTreeView *account_tree; + GtkTreeViewColumn *col; /* Build a new account tree */ TRACE("Begin"); @@ -71,16 +72,23 @@ build_acct_tree(struct _accountpickerdialog * picker) picker->account_tree = GNC_TREE_VIEW_ACCOUNT(account_tree); gtk_tree_view_set_headers_visible (account_tree, TRUE); + col = gnc_tree_view_find_column_by_name(GNC_TREE_VIEW(account_tree), "type"); + g_object_set_data(G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1)); + /* Add our custom column. */ - gnc_tree_view_account_add_kvp_column (picker->account_tree, + col = gnc_tree_view_account_add_kvp_column (picker->account_tree, _("Account ID"), "online_id"); + g_object_set_data(G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1)); + + col = gnc_tree_view_find_column_by_name( + GNC_TREE_VIEW(picker->account_tree), "type"); + g_object_set_data(G_OBJECT(col), DEFAULT_VISIBLE, GINT_TO_POINTER(1)); gtk_container_add(GTK_CONTAINER(picker->account_tree_sw), GTK_WIDGET(picker->account_tree)); /* Configure the columns */ - gnc_tree_view_configure_columns (GNC_TREE_VIEW(picker->account_tree), - "type", "description", "online_id", NULL); + gnc_tree_view_configure_columns (GNC_TREE_VIEW(picker->account_tree)); } /* When user clicks to create a new account */