[Gnucash-changes] r14037 - gnucash/trunk/src - Change the method
for specifying and recording the default visibility of
Chris Shoemaker
chris at cvs.gnucash.org
Sat May 13 22:07:53 EDT 2006
Author: chris
Date: 2006-05-13 22:07:52 -0400 (Sat, 13 May 2006)
New Revision: 14037
Trac: http://svn.gnucash.org/trac/changeset/14037
Modified:
gnucash/trunk/src/gnome-utils/gnc-tree-view-account.c
gnucash/trunk/src/gnome-utils/gnc-tree-view-commodity.c
gnucash/trunk/src/gnome-utils/gnc-tree-view-price.c
gnucash/trunk/src/gnome-utils/gnc-tree-view.c
gnucash/trunk/src/gnome-utils/gnc-tree-view.h
gnucash/trunk/src/gnome/druid-hierarchy.c
gnucash/trunk/src/gnome/gnc-plugin-page-account-tree.c
gnucash/trunk/src/gnome/gnc-plugin-page-budget.c
gnucash/trunk/src/import-export/import-account-matcher.c
Log:
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.
Modified: gnucash/trunk/src/gnome/druid-hierarchy.c
===================================================================
--- gnucash/trunk/src/gnome/druid-hierarchy.c 2006-05-14 00:09:26 UTC (rev 14036)
+++ gnucash/trunk/src/gnome/druid-hierarchy.c 2006-05-14 02:07:52 UTC (rev 14037)
@@ -866,8 +866,10 @@
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);
Modified: gnucash/trunk/src/gnome/gnc-plugin-page-account-tree.c
===================================================================
--- gnucash/trunk/src/gnome/gnc-plugin-page-account-tree.c 2006-05-14 00:09:26 UTC (rev 14036)
+++ gnucash/trunk/src/gnome/gnc-plugin-page-account-tree.c 2006-05-14 02:07:52 UTC (rev 14037)
@@ -403,6 +403,7 @@
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 @@
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,
Modified: gnucash/trunk/src/gnome/gnc-plugin-page-budget.c
===================================================================
--- gnucash/trunk/src/gnome/gnc-plugin-page-budget.c 2006-05-14 00:09:26 UTC (rev 14036)
+++ gnucash/trunk/src/gnome/gnc-plugin-page-budget.c 2006-05-14 02:07:52 UTC (rev 14037)
@@ -391,7 +391,7 @@
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 @@
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) {
Modified: gnucash/trunk/src/gnome-utils/gnc-tree-view-account.c
===================================================================
--- gnucash/trunk/src/gnome-utils/gnc-tree-view-account.c 2006-05-14 00:09:26 UTC (rev 14036)
+++ gnucash/trunk/src/gnome-utils/gnc-tree-view-account.c 2006-05-14 02:07:52 UTC (rev 14037)
@@ -644,8 +644,7 @@
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 @@
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,
Modified: gnucash/trunk/src/gnome-utils/gnc-tree-view-commodity.c
===================================================================
--- gnucash/trunk/src/gnome-utils/gnc-tree-view-commodity.c 2006-05-14 00:09:26 UTC (rev 14036)
+++ gnucash/trunk/src/gnome-utils/gnc-tree-view-commodity.c 2006-05-14 02:07:52 UTC (rev 14037)
@@ -359,6 +359,7 @@
{
GncTreeView *view;
GtkTreeModel *model, *f_model, *s_model;
+ GtkTreeViewColumn *col;
gnc_commodity_table *ct;
va_list var_args;
@@ -389,65 +390,70 @@
/* 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);
+ 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);
- gnc_tree_view_configure_columns(view, "symbol", "name", "cusip_code",
- "fraction", NULL);
-
gtk_widget_show(GTK_WIDGET(view));
LEAVE(" %p", view);
return GTK_TREE_VIEW(view);
Modified: gnucash/trunk/src/gnome-utils/gnc-tree-view-price.c
===================================================================
--- gnucash/trunk/src/gnome-utils/gnc-tree-view-price.c 2006-05-14 00:09:26 UTC (rev 14036)
+++ gnucash/trunk/src/gnome-utils/gnc-tree-view-price.c 2006-05-14 02:07:52 UTC (rev 14037)
@@ -399,6 +399,7 @@
{
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 @@
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);
+ 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, "commodity", "currency",
- "date", "source", "type", "price", NULL);
+ gnc_tree_view_configure_columns(view);
gtk_widget_show(GTK_WIDGET(view));
LEAVE(" %p", view);
Modified: gnucash/trunk/src/gnome-utils/gnc-tree-view.c
===================================================================
--- gnucash/trunk/src/gnome-utils/gnc-tree-view.c 2006-05-14 00:09:26 UTC (rev 14036)
+++ gnucash/trunk/src/gnome-utils/gnc-tree-view.c 2006-05-14 02:07:52 UTC (rev 14037)
@@ -117,7 +117,6 @@
typedef struct GncTreeViewPrivate
{
GtkTooltips *title_tips;
- GSList *default_visible;
/* Spacer column */
GtkTreeViewColumn *spacer_column;
@@ -248,7 +247,6 @@
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 @@
{
GncTreeView *view;
GncTreeViewPrivate *priv;
- GSList *slist;
ENTER("view %p", object);
g_return_if_fail (object != NULL);
@@ -353,12 +350,6 @@
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 @@
*
* @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 @@
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 @@
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 @@
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 @@
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 @@
}
} 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 @@
/* 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 @@
}
}
-/** 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);
Modified: gnucash/trunk/src/gnome-utils/gnc-tree-view.h
===================================================================
--- gnucash/trunk/src/gnome-utils/gnc-tree-view.h 2006-05-14 00:09:26 UTC (rev 14036)
+++ gnucash/trunk/src/gnome-utils/gnc-tree-view.h 2006-05-14 02:07:52 UTC (rev 14037)
@@ -70,6 +70,11 @@
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 @@
*/
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 column_names A list of column names to make visible.
+ * @param view The visible tree widget.
+ *
+ * @param id The "pref name" to find.
+ *
*/
-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
Modified: gnucash/trunk/src/import-export/import-account-matcher.c
===================================================================
--- gnucash/trunk/src/import-export/import-account-matcher.c 2006-05-14 00:09:26 UTC (rev 14036)
+++ gnucash/trunk/src/import-export/import-account-matcher.c 2006-05-14 02:07:52 UTC (rev 14037)
@@ -64,6 +64,7 @@
build_acct_tree(struct _accountpickerdialog * picker)
{
GtkTreeView *account_tree;
+ GtkTreeViewColumn *col;
/* Build a new account tree */
TRACE("Begin");
@@ -71,16 +72,23 @@
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 */
More information about the gnucash-changes
mailing list