[Gnucash-changes] File rewrite from Chris Shoemaker.

David Hampton hampton at cvs.gnucash.org
Fri Oct 14 09:23:17 EDT 2005


Log Message:
-----------
File rewrite from Chris Shoemaker.  Adds an API for accessing a static
shared program-wide account-type tree model for simple tree usage.
Adds convenience functions for mapping between the selection state of
a treeview using the static account-type tree model and a account-type
selection bitfield.

Tags:
----
gnucash-gnome2-dev

Modified Files:
--------------
    gnucash:
        ChangeLog
    gnucash/src/gnome-utils:
        gnc-tree-model-account-types.c
        gnc-tree-model-account-types.h

Revision Data
-------------
Index: ChangeLog
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/ChangeLog,v
retrieving revision 1.1487.2.336
retrieving revision 1.1487.2.337
diff -LChangeLog -LChangeLog -u -r1.1487.2.336 -r1.1487.2.337
--- ChangeLog
+++ ChangeLog
@@ -1,5 +1,17 @@
 2005-10-14  David Hampton  <hampton at employees.org>
 
+	* src/gnome-utils/gnc-tree-model-account-types.[ch]: File rewrite
+	from Chris Shoemaker.  Adds an API for accessing a static shared
+	program-wide account-type tree model for simple tree usage.  Adds
+	convenience functions for mapping between the selection state of a
+	treeview using the static account-type tree model and a
+	account-type selection bitfield.
+
+	* src/engine/FreqSpec.c: Line wrapping fixes from Chris Shoemaker.
+	
+	* src/engine/test/test-freq-spec.c: Patch from Chris Shoemaker to
+	add a new negative test case.
+
 	* src/app-utils/gnc-component-manager.c:
 	* src/business/business-core/gncAddress.c:
 	* src/business/business-core/gncBillTerm.c:
Index: gnc-tree-model-account-types.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/gnome-utils/Attic/gnc-tree-model-account-types.h,v
retrieving revision 1.1.2.4
retrieving revision 1.1.2.5
diff -Lsrc/gnome-utils/gnc-tree-model-account-types.h -Lsrc/gnome-utils/gnc-tree-model-account-types.h -u -r1.1.2.4 -r1.1.2.5
--- src/gnome-utils/gnc-tree-model-account-types.h
+++ src/gnome-utils/gnc-tree-model-account-types.h
@@ -3,6 +3,7 @@
  *	to display account types in a GtkTreeView.
  *
  * Copyright (C) 2003 Jan Arne Petersen
+ * Copyright (C) 2005, Chris Shoemaker <c.shoemaker at cox.net>
  * Author: Jan Arne Petersen <jpetersen at uni-bonn.de>
  *
  * This program is free software; you can redistribute it and/or
@@ -36,7 +37,7 @@
 #ifndef __GNC_TREE_MODEL_ACCOUNT_TYPES_H
 #define __GNC_TREE_MODEL_ACCOUNT_TYPES_H
 
-#include <gtk/gtktreemodel.h>
+#include <gtk/gtk.h>
 
 G_BEGIN_DECLS
 
@@ -71,13 +72,56 @@
 } GncTreeModelAccountTypesClass;
 
 /* function prototypes */
-GType           gnc_tree_model_account_types_get_type     (void);
+GType gnc_tree_model_account_types_get_type (void);
 
-GtkTreeModel   *gnc_tree_model_account_types_new          (guint32 selected);
+/* Choose one of two methods to use the GncTreeModelAccountTypes
+   objects defined here, depending on how you want to deal with
+   selection state.  Method 1 is simpler and light-weight, but Method
+   2 is more flexible.
 
-guint32		gnc_tree_model_account_types_get_selected (GncTreeModelAccountTypes *model);
-void		gnc_tree_model_account_types_set_selected (GncTreeModelAccountTypes *model,
-							   guint32 selected);
+   Method 1: If you just want to allow selection of a subset of all
+   account types while showing all account types, use
+   gnc_tree_model_account_types_master() to get the treemodel.
+   Connect it to your tree view and use
+   gnc_tree_view_account_types_{sg}et_selection() to convert between
+   bitmasks and GtkTreeView states.  No need to free the treemodel.
+
+   Method 2: If you must store selection state in the model for some
+   reason (maybe you want to use a checkbox column to indicate
+   selection?)  then you need your own instance from
+   gnc_tree_model_account_types_new().  Use
+   gnc_tree_model_account_types_{gs}et_selected() to get and set the
+   models "SELECTED" column values.  You must free the model when
+   you're done with it.
+
+*/
+
+/*************** Method 1 functions ***************/
+
+/* Get the static GtkTreeModel representing the list of all possible
+   account types.  You may not modify this model, but you can use if
+   for multiple views. */
+GtkTreeModel * gnc_tree_model_account_types_master(void);
+
+/* Return the bitmask of the account type enums reflecting the state
+   of the tree selection */
+guint32 gnc_tree_model_account_types_get_selection(GtkTreeView *view);
+
+/* Set the selection state of the tree selection to match the bitmask
+   of account-type enums in 'selected' */
+void gnc_tree_model_account_types_set_selection(GtkTreeView *view,
+                                                guint32 selected);
+
+
+/**************** Method 2 functions **************/
+
+GtkTreeModel *gnc_tree_model_account_types_new(guint32 selected);
+
+guint32 gnc_tree_model_account_types_get_selected(
+    GncTreeModelAccountTypes * model);
+
+void gnc_tree_model_account_types_set_selected(
+    GncTreeModelAccountTypes * model, guint32 selected);
 
 
 G_END_DECLS
Index: gnc-tree-model-account-types.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/gnome-utils/Attic/gnc-tree-model-account-types.c,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -Lsrc/gnome-utils/gnc-tree-model-account-types.c -Lsrc/gnome-utils/gnc-tree-model-account-types.c -u -r1.1.2.2 -r1.1.2.3
--- src/gnome-utils/gnc-tree-model-account-types.c
+++ src/gnome-utils/gnc-tree-model-account-types.c
@@ -3,6 +3,7 @@
  *	to display account types in a GtkTreeView.
  *
  * Copyright (C) 2003 Jan Arne Petersen
+ * Copyright (C) 2005, Chris Shoemaker <c.shoemaker at cox.net>
  * Author: Jan Arne Petersen <jpetersen at uni-bonn.de>
  *
  * This program is free software; you can redistribute it and/or
@@ -24,37 +25,70 @@
  */
 
 #include "config.h"
-
+#include "gnc-trace.h"
 #include "gnc-tree-model-account-types.h"
 
 #include "Account.h"
 
-static void gnc_tree_model_account_types_class_init (GncTreeModelAccountTypesClass * klass);
-static void gnc_tree_model_account_types_init (GncTreeModelAccountTypes * model);
-static void gnc_tree_model_account_types_finalize (GObject * object);
-
-static void gnc_tree_model_account_types_tree_model_init (GtkTreeModelIface * iface);
-static guint gnc_tree_model_account_types_get_flags (GtkTreeModel * tree_model);
-static int gnc_tree_model_account_types_get_n_columns (GtkTreeModel * tree_model);
-static GType gnc_tree_model_account_types_get_column_type (GtkTreeModel * tree_model, int index);
-static gboolean gnc_tree_model_account_types_get_iter (GtkTreeModel * tree_model,
-						       GtkTreeIter * iter, GtkTreePath * path);
-static GtkTreePath *gnc_tree_model_account_types_get_path (GtkTreeModel * tree_model, GtkTreeIter * iter);
-static void gnc_tree_model_account_types_get_value (GtkTreeModel * tree_model,
-						    GtkTreeIter * iter, int column, GValue * value);
-static gboolean gnc_tree_model_account_types_iter_next (GtkTreeModel * tree_model, GtkTreeIter * iter);
-static gboolean gnc_tree_model_account_types_iter_children (GtkTreeModel * tree_model,
-							    GtkTreeIter * iter, GtkTreeIter * parent);
-static gboolean gnc_tree_model_account_types_iter_has_child (GtkTreeModel * tree_model, GtkTreeIter * iter);
-static int gnc_tree_model_account_types_iter_n_children (GtkTreeModel * tree_model, GtkTreeIter * iter);
-static gboolean gnc_tree_model_account_types_iter_nth_child (GtkTreeModel * tree_model,
-							     GtkTreeIter * iter, GtkTreeIter * parent, int n);
-static gboolean gnc_tree_model_account_types_iter_parent (GtkTreeModel * tree_model,
-							  GtkTreeIter * iter, GtkTreeIter * child);
+static QofLogModule log_module = GNC_MOD_GUI;
+
+/* Functions for the type system */
+static void
+gnc_tree_model_account_types_class_init (GncTreeModelAccountTypesClass *klass);
+static void
+gnc_tree_model_account_types_init (GncTreeModelAccountTypes * model);
+static void
+gnc_tree_model_account_types_finalize (GObject * object);
+
+
+/* Functions implementing GtkTreeModel */
+static void
+gnc_tree_model_account_types_tree_model_init (GtkTreeModelIface * iface);
+
+/*
+static guint
+gnc_tree_model_account_types_get_flags (GtkTreeModel * tree_model);
+static int
+gnc_tree_model_account_types_get_n_columns (GtkTreeModel * tree_model);
+static GType
+gnc_tree_model_account_types_get_column_type (GtkTreeModel * tree_model,
+                                              int index);
+static gboolean
+gnc_tree_model_account_types_get_iter (GtkTreeModel * tree_model,
+                                       GtkTreeIter * iter, GtkTreePath * path);
+static GtkTreePath *
+gnc_tree_model_account_types_get_path (GtkTreeModel * tree_model,
+                                       GtkTreeIter * iter);
+static void
+gnc_tree_model_account_types_get_value (GtkTreeModel * tree_model,
+                                        GtkTreeIter * iter, int column,
+                                        GValue * value);
+static gboolean
+gnc_tree_model_account_types_iter_next (GtkTreeModel * tree_model,
+                                        GtkTreeIter * iter);
+static gboolean
+gnc_tree_model_account_types_iter_children (GtkTreeModel * tree_model,
+                                            GtkTreeIter * iter,
+                                            GtkTreeIter * parent);
+static gboolean
+gnc_tree_model_account_types_iter_has_child (GtkTreeModel * tree_model,
+                                             GtkTreeIter * iter);
+static int
+gnc_tree_model_account_types_iter_n_children (GtkTreeModel * tree_model,
+                                              GtkTreeIter * iter);
+static gboolean
+gnc_tree_model_account_types_iter_nth_child (GtkTreeModel * tree_model,
+                                             GtkTreeIter * iter,
+                                             GtkTreeIter * parent, int n);
+static gboolean
+gnc_tree_model_account_types_iter_parent (GtkTreeModel * tree_model,
+                                          GtkTreeIter * iter,
+                                          GtkTreeIter * child);
+*/
 
 struct GncTreeModelAccountTypesPrivate
 {
-	guint32 selected;
+    guint32 selected;
 };
 
 static GObjectClass *parent_class = NULL;
@@ -62,87 +96,98 @@
 GType
 gnc_tree_model_account_types_get_type (void)
 {
-	static GType gnc_tree_model_account_types_type = 0;
+    static GType gnc_tree_model_account_types_type = 0;
 
-	if (gnc_tree_model_account_types_type == 0) {
-		static const GTypeInfo our_info = {
-			sizeof (GncTreeModelAccountTypesClass),
-			NULL,
-			NULL,
-			(GClassInitFunc) gnc_tree_model_account_types_class_init,
-			NULL,
-			NULL,
-			sizeof (GncTreeModelAccountTypes),
-			0,
-			(GInstanceInitFunc) gnc_tree_model_account_types_init
-		};
-
-		static const GInterfaceInfo tree_model_info = {
-			(GInterfaceInitFunc) gnc_tree_model_account_types_tree_model_init,
-			NULL,
-			NULL
-		};
-
-		gnc_tree_model_account_types_type = g_type_register_static (G_TYPE_OBJECT,
-									    "GncTreeModelAccountTypes",
-									    &our_info, 0);
-
-		g_type_add_interface_static (gnc_tree_model_account_types_type,
-					     GTK_TYPE_TREE_MODEL, &tree_model_info);
-	}
+    if (gnc_tree_model_account_types_type == 0) {
+        static const GTypeInfo our_info = {
+            sizeof (GncTreeModelAccountTypesClass),
+            NULL,
+            NULL,
+            (GClassInitFunc) gnc_tree_model_account_types_class_init,
+            NULL,
+            NULL,
+            sizeof (GncTreeModelAccountTypes),
+            0,
+            (GInstanceInitFunc) gnc_tree_model_account_types_init
+        };
+
+        static const GInterfaceInfo tree_model_info = {
+            (GInterfaceInitFunc) gnc_tree_model_account_types_tree_model_init,
+            NULL,
+            NULL
+        };
+
+        gnc_tree_model_account_types_type =
+            g_type_register_static (G_TYPE_OBJECT,
+                                    "GncTreeModelAccountTypes",
+                                    &our_info, 0);
+
+        g_type_add_interface_static (gnc_tree_model_account_types_type,
+                                     GTK_TYPE_TREE_MODEL, &tree_model_info);
+    }
 
-	return gnc_tree_model_account_types_type;
+    return gnc_tree_model_account_types_type;
 }
 
 static void
 gnc_tree_model_account_types_class_init (GncTreeModelAccountTypesClass * klass)
 {
-	GObjectClass *object_class = G_OBJECT_CLASS (klass);
+    GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
-	parent_class = g_type_class_peek_parent (klass);
+    parent_class = g_type_class_peek_parent (klass);
 
-	object_class->finalize = gnc_tree_model_account_types_finalize;
+    object_class->finalize = gnc_tree_model_account_types_finalize;
 }
 
 static void
 gnc_tree_model_account_types_init (GncTreeModelAccountTypes * model)
 {
-	while (model->stamp == 0) {
-		model->stamp = g_random_int ();
-	}
+    while (model->stamp == 0) {
+        model->stamp = g_random_int ();
+    }
 
-	model->priv = g_new0 (GncTreeModelAccountTypesPrivate, 1);
+    model->priv = g_new0 (GncTreeModelAccountTypesPrivate, 1);
 }
 
 static void
 gnc_tree_model_account_types_finalize (GObject * object)
 {
-	GncTreeModelAccountTypes *model;
+    GncTreeModelAccountTypes *model;
 
-	g_return_if_fail (object != NULL);
-	g_return_if_fail (GNC_IS_TREE_MODEL_ACCOUNT_TYPES (object));
+    g_return_if_fail (object != NULL);
+    g_return_if_fail (GNC_IS_TREE_MODEL_ACCOUNT_TYPES (object));
 
-	model = GNC_TREE_MODEL_ACCOUNT_TYPES (object);
+    model = GNC_TREE_MODEL_ACCOUNT_TYPES (object);
 
-	g_return_if_fail (model->priv != NULL);
+    g_return_if_fail (model->priv != NULL);
 
-	g_free (model->priv);
+    g_free (model->priv);
 
-	G_OBJECT_CLASS (parent_class)->finalize (object);
+    G_OBJECT_CLASS (parent_class)->finalize (object);
 }
 
 GtkTreeModel *
 gnc_tree_model_account_types_new (guint32 selected)
 {
-	GncTreeModelAccountTypes *model;
+    GncTreeModelAccountTypes *model;
 
-	model = g_object_new (GNC_TYPE_TREE_MODEL_ACCOUNT_TYPES, NULL);
+    model = g_object_new (GNC_TYPE_TREE_MODEL_ACCOUNT_TYPES, NULL);
+    model->priv->selected = selected;
 
-	model->priv->selected = selected;
+    return GTK_TREE_MODEL (model);
+}
+
+static GtkTreeModel *account_types_tree_model = NULL;
 
-	return GTK_TREE_MODEL (model);
+GtkTreeModel *
+gnc_tree_model_account_types_master(void)
+{
+    if (!account_types_tree_model)
+        account_types_tree_model = gnc_tree_model_account_types_new(0);
+    return account_types_tree_model;
 }
 
+
 guint32
 gnc_tree_model_account_types_get_selected (GncTreeModelAccountTypes * model)
 {
@@ -162,209 +207,279 @@
 	model->priv->selected = selected;
 }
 
-static void
-gnc_tree_model_account_types_tree_model_init (GtkTreeModelIface * iface)
+guint32
+gnc_tree_model_account_types_get_selection (GtkTreeView *view)
 {
-	iface->get_flags = gnc_tree_model_account_types_get_flags;
-	iface->get_n_columns = gnc_tree_model_account_types_get_n_columns;
-	iface->get_column_type = gnc_tree_model_account_types_get_column_type;
-	iface->get_iter = gnc_tree_model_account_types_get_iter;
-	iface->get_path = gnc_tree_model_account_types_get_path;
-	iface->get_value = gnc_tree_model_account_types_get_value;
-	iface->iter_next = gnc_tree_model_account_types_iter_next;
-	iface->iter_children = gnc_tree_model_account_types_iter_children;
-	iface->iter_has_child = gnc_tree_model_account_types_iter_has_child;
-	iface->iter_n_children = gnc_tree_model_account_types_iter_n_children;
-	iface->iter_nth_child = gnc_tree_model_account_types_iter_nth_child;
-	iface->iter_parent = gnc_tree_model_account_types_iter_parent;
+    GtkTreeModel *model;
+    GtkTreePath *path;
+    GList *list, *iter;
+    GtkTreeSelection *sel;
+    guint32 bits = 0;
+
+    g_return_val_if_fail(GTK_IS_TREE_VIEW(view), 0);
+    sel = gtk_tree_view_get_selection(view);
+    g_return_val_if_fail (sel, 0);
+
+    list = gtk_tree_selection_get_selected_rows(sel, &model);
+    if (model != account_types_tree_model)
+       PERR("TreeSelection's TreeModel is not the account-types Model");
+    else {
+        for (iter = list; iter; iter = iter->next) {
+            path = (GtkTreePath *)iter->data;
+            if (gtk_tree_path_get_depth(path) != 1) {
+                PERR("Account-types TreePath depth != 1 ?!?");
+                continue;
+            }
+            bits |= (1 << gtk_tree_path_get_indices(path)[0]);
+        }
+    }
+
+    g_list_foreach (list, (GFunc)gtk_tree_path_free, NULL);
+    g_list_free (list);
+
+    return bits;
+}
+
+void
+gnc_tree_model_account_types_set_selection (GtkTreeView *view,
+                                            guint32 selected)
+{
+    GtkTreePath *path;
+    gint *path_idx;
+    guint i;
+    GtkTreeSelection *sel;
+
+
+    g_return_if_fail(GTK_IS_TREE_VIEW(view));
+    sel = gtk_tree_view_get_selection(view);
+    g_return_if_fail (sel);
+    gtk_tree_selection_unselect_all(sel);
+    path = gtk_tree_path_new_first();
+    path_idx = gtk_tree_path_get_indices(path);
+
+    for (i = 0; i < NUM_ACCOUNT_TYPES; i++) {
+        if (selected & (1 << i)) {
+            path_idx[0] = i;
+            gtk_tree_selection_select_path(sel, path);
+        }
+    }
+    gtk_tree_path_free(path);
 }
 
+
+/* Static functions implementing GtkTreeModel */
+
 static guint
 gnc_tree_model_account_types_get_flags (GtkTreeModel * tree_model)
 {
-	return 0;
+    return 0;
 }
 
 static int
 gnc_tree_model_account_types_get_n_columns (GtkTreeModel * tree_model)
 {
-	return GNC_TREE_MODEL_ACCOUNT_TYPES_NUM_COLUMNS;
+    return GNC_TREE_MODEL_ACCOUNT_TYPES_NUM_COLUMNS;
 }
 
 static GType
-gnc_tree_model_account_types_get_column_type (GtkTreeModel * tree_model, int index)
+gnc_tree_model_account_types_get_column_type (GtkTreeModel * tree_model,
+                                              int index)
 {
-	g_return_val_if_fail (GNC_IS_TREE_MODEL_ACCOUNT_TYPES (tree_model), G_TYPE_INVALID);
-	g_return_val_if_fail ((index < GNC_TREE_MODEL_ACCOUNT_TYPES_NUM_COLUMNS)
-			      && (index >= 0), G_TYPE_INVALID);
-
-	switch (index) {
-		case GNC_TREE_MODEL_ACCOUNT_TYPES_COL_TYPE:
-			return G_TYPE_UINT;
-	       	case GNC_TREE_MODEL_ACCOUNT_TYPES_COL_NAME:
-			return G_TYPE_STRING;
-		case GNC_TREE_MODEL_ACCOUNT_TYPES_COL_SELECTED:
-			return G_TYPE_BOOLEAN;
-		default:
-			g_assert_not_reached ();
-			return G_TYPE_INVALID;
-	}
+    g_return_val_if_fail(GNC_IS_TREE_MODEL_ACCOUNT_TYPES (tree_model),
+                         G_TYPE_INVALID);
+    g_return_val_if_fail((index < GNC_TREE_MODEL_ACCOUNT_TYPES_NUM_COLUMNS)
+                         && (index >= 0), G_TYPE_INVALID);
+
+    switch (index) {
+    case GNC_TREE_MODEL_ACCOUNT_TYPES_COL_TYPE:
+        return G_TYPE_UINT;
+    case GNC_TREE_MODEL_ACCOUNT_TYPES_COL_NAME:
+        return G_TYPE_STRING;
+    case GNC_TREE_MODEL_ACCOUNT_TYPES_COL_SELECTED:
+        return G_TYPE_BOOLEAN;
+    default:
+        g_assert_not_reached ();
+        return G_TYPE_INVALID;
+    }
 }
 
 static gboolean
-gnc_tree_model_account_types_get_iter (GtkTreeModel * tree_model, GtkTreeIter * iter, GtkTreePath * path)
+gnc_tree_model_account_types_get_iter (GtkTreeModel * tree_model,
+                                       GtkTreeIter * iter, GtkTreePath * path)
 {
-	GncTreeModelAccountTypes *model = GNC_TREE_MODEL_ACCOUNT_TYPES (tree_model);
-	gint i;
-
-	g_return_val_if_fail (GNC_IS_TREE_MODEL_ACCOUNT_TYPES (model), FALSE);
-	g_return_val_if_fail (gtk_tree_path_get_depth (path) > 0, FALSE);
+    GncTreeModelAccountTypes *model = GNC_TREE_MODEL_ACCOUNT_TYPES(tree_model);
+    gint i;
 
-	i = gtk_tree_path_get_indices (path)[0];
+    g_return_val_if_fail (GNC_IS_TREE_MODEL_ACCOUNT_TYPES (model), FALSE);
+    g_return_val_if_fail (gtk_tree_path_get_depth (path) > 0, FALSE);
 
-	if (i > NO_TYPE && i < NUM_ACCOUNT_TYPES) {
-		iter->stamp = 0;
+    i = gtk_tree_path_get_indices (path)[0];
 
-		return FALSE;		
-	}
+    if (i > NO_TYPE && i < NUM_ACCOUNT_TYPES) {
+        iter->stamp = model->stamp;
+        iter->user_data = GINT_TO_POINTER (i);
+        return TRUE;
+    }
 
-	iter->stamp = model->stamp;
-	iter->user_data = GINT_TO_POINTER (i);
-
-	return TRUE;
+    iter->stamp = 0;
+    return FALSE;
 }
 
 static GtkTreePath *
-gnc_tree_model_account_types_get_path (GtkTreeModel * tree_model, GtkTreeIter * iter)
+gnc_tree_model_account_types_get_path (GtkTreeModel * tree_model,
+                                       GtkTreeIter * iter)
 {
-	GncTreeModelAccountTypes *model = GNC_TREE_MODEL_ACCOUNT_TYPES (tree_model);
-	GtkTreePath *path;
+    GncTreeModelAccountTypes *model = GNC_TREE_MODEL_ACCOUNT_TYPES(tree_model);
+    GtkTreePath *path;
 
-	g_return_val_if_fail (GNC_IS_TREE_MODEL_ACCOUNT_TYPES (model), NULL);
-	g_return_val_if_fail (iter != NULL, NULL);
-	g_return_val_if_fail (iter->stamp == model->stamp, NULL);
+    g_return_val_if_fail (GNC_IS_TREE_MODEL_ACCOUNT_TYPES (model), NULL);
+    g_return_val_if_fail (iter != NULL, NULL);
+    g_return_val_if_fail (iter->stamp == model->stamp, NULL);
 
-	path = gtk_tree_path_new ();
+    path = gtk_tree_path_new ();
 
-	gtk_tree_path_append_index (path, GPOINTER_TO_INT (iter->user_data));
+    gtk_tree_path_append_index (path, GPOINTER_TO_INT (iter->user_data));
 
-	return path;
+    return path;
 }
 
 static void
 gnc_tree_model_account_types_get_value (GtkTreeModel * tree_model,
-					GtkTreeIter * iter, int column, GValue * value)
+					GtkTreeIter * iter, int column,
+                                        GValue * value)
 {
-	GncTreeModelAccountTypes *model = GNC_TREE_MODEL_ACCOUNT_TYPES (tree_model);
-
-	g_return_if_fail (GNC_IS_TREE_MODEL_ACCOUNT_TYPES (model));
-	g_return_if_fail (model->priv != NULL);
-	g_return_if_fail (iter != NULL);
-	g_return_if_fail (iter->stamp == model->stamp);
-
-	switch (column) {
-		case GNC_TREE_MODEL_ACCOUNT_TYPES_COL_TYPE:
-			g_value_init (value, G_TYPE_INT);
-
-			g_value_set_int (value, GPOINTER_TO_INT (iter->user_data));
-			break;
-		case GNC_TREE_MODEL_ACCOUNT_TYPES_COL_NAME:
-			g_value_init (value, G_TYPE_STRING);
+    GncTreeModelAccountTypes *model = GNC_TREE_MODEL_ACCOUNT_TYPES(tree_model);
 
-			g_value_set_string (value, xaccAccountGetTypeStr (GPOINTER_TO_INT (iter->user_data)));
-			break;
-		case GNC_TREE_MODEL_ACCOUNT_TYPES_COL_SELECTED:
-			g_value_init (value, G_TYPE_BOOLEAN);
-
-			g_value_set_boolean (value, model->priv->selected & (1 << GPOINTER_TO_INT (iter->user_data)));
-			break;
-		default:
-			g_assert_not_reached ();
-	}
+    g_return_if_fail (GNC_IS_TREE_MODEL_ACCOUNT_TYPES (model));
+    g_return_if_fail (model->priv != NULL);
+    g_return_if_fail (iter != NULL);
+    g_return_if_fail (iter->stamp == model->stamp);
+
+    switch (column) {
+    case GNC_TREE_MODEL_ACCOUNT_TYPES_COL_TYPE:
+        g_value_init (value, G_TYPE_INT);
+        g_value_set_int (value, GPOINTER_TO_INT (iter->user_data));
+        break;
+    case GNC_TREE_MODEL_ACCOUNT_TYPES_COL_NAME:
+        g_value_init (value, G_TYPE_STRING);
+        g_value_set_string (value, xaccAccountGetTypeStr (
+                                GPOINTER_TO_INT (iter->user_data)));
+        break;
+    case GNC_TREE_MODEL_ACCOUNT_TYPES_COL_SELECTED:
+        g_value_init (value, G_TYPE_BOOLEAN);
+        g_value_set_boolean (value, model->priv->selected &
+                             (1 << GPOINTER_TO_INT (iter->user_data)));
+        break;
+    default:
+        g_assert_not_reached ();
+    }
 }
 
 static gboolean
-gnc_tree_model_account_types_iter_next (GtkTreeModel * tree_model, GtkTreeIter * iter)
+gnc_tree_model_account_types_iter_next (GtkTreeModel * tree_model,
+                                        GtkTreeIter * iter)
 {
-	GncTreeModelAccountTypes *model = GNC_TREE_MODEL_ACCOUNT_TYPES (tree_model);
-
-	g_return_val_if_fail (GNC_IS_TREE_MODEL_ACCOUNT_TYPES (model), FALSE);
-	g_return_val_if_fail (iter != NULL, FALSE);
-	g_return_val_if_fail (iter->stamp == model->stamp, FALSE);
+    GncTreeModelAccountTypes *model = GNC_TREE_MODEL_ACCOUNT_TYPES(tree_model);
 
-	if (GPOINTER_TO_INT (iter->user_data) < NUM_ACCOUNT_TYPES - 1) {
-		iter->user_data = GINT_TO_POINTER (GPOINTER_TO_INT (iter->user_data) + 1);
-		
-		return TRUE;
-	}
+    g_return_val_if_fail (GNC_IS_TREE_MODEL_ACCOUNT_TYPES (model), FALSE);
+    g_return_val_if_fail (iter != NULL, FALSE);
+    g_return_val_if_fail (iter->stamp == model->stamp, FALSE);
+
+    if (GPOINTER_TO_INT (iter->user_data) < NUM_ACCOUNT_TYPES - 1) {
+        iter->user_data = GINT_TO_POINTER(
+            GPOINTER_TO_INT(iter->user_data) + 1);
+        return TRUE;
+    }
 
-	iter->stamp = 0;
-
-	return FALSE;
+    iter->stamp = 0;
+    return FALSE;
 }
 
 static gboolean
 gnc_tree_model_account_types_iter_children (GtkTreeModel * tree_model,
-					    GtkTreeIter * iter, GtkTreeIter * parent)
+					    GtkTreeIter * iter,
+                                            GtkTreeIter * parent)
 {
 
-	g_return_val_if_fail (GNC_IS_TREE_MODEL_ACCOUNT_TYPES (tree_model), FALSE);
+    g_return_val_if_fail (GNC_IS_TREE_MODEL_ACCOUNT_TYPES(tree_model), FALSE);
 
-	if (parent != NULL)
-		return FALSE;
+    if (parent != NULL)
+        return FALSE;
 
-	iter->stamp = GNC_TREE_MODEL_ACCOUNT_TYPES (tree_model)->stamp;
-	iter->user_data = GINT_TO_POINTER (0);
+    iter->stamp = GNC_TREE_MODEL_ACCOUNT_TYPES (tree_model)->stamp;
+    iter->user_data = GINT_TO_POINTER (0);
 
-	return TRUE;
+    return TRUE;
 }
 
 static gboolean
-gnc_tree_model_account_types_iter_has_child (GtkTreeModel * tree_model, GtkTreeIter * iter)
+gnc_tree_model_account_types_iter_has_child (GtkTreeModel * tree_model,
+                                             GtkTreeIter * iter)
 {
-	return FALSE;
+    return FALSE;
 }
 
 static int
-gnc_tree_model_account_types_iter_n_children (GtkTreeModel * tree_model, GtkTreeIter * iter)
+gnc_tree_model_account_types_iter_n_children (GtkTreeModel * tree_model,
+                                              GtkTreeIter * iter)
 {
-	g_return_val_if_fail (GNC_IS_TREE_MODEL_ACCOUNT_TYPES (tree_model), -1);
+    g_return_val_if_fail (GNC_IS_TREE_MODEL_ACCOUNT_TYPES (tree_model), -1);
 
-	if (iter == NULL)
-		return NUM_ACCOUNT_TYPES;
+    if (iter == NULL)
+        return NUM_ACCOUNT_TYPES;
 
-	g_return_val_if_fail (GNC_TREE_MODEL_ACCOUNT_TYPES (tree_model)->stamp == iter->stamp, -1);
+    g_return_val_if_fail (
+        GNC_TREE_MODEL_ACCOUNT_TYPES (tree_model)->stamp == iter->stamp, -1);
 
-	return 0;
+    return 0;
 }
 
 static gboolean
 gnc_tree_model_account_types_iter_nth_child (GtkTreeModel * tree_model,
-					     GtkTreeIter * iter, GtkTreeIter * parent, int n)
+					     GtkTreeIter * iter,
+                                             GtkTreeIter * parent, int n)
 {
-	GncTreeModelAccountTypes *model;
-
-	g_return_val_if_fail (GNC_IS_TREE_MODEL_ACCOUNT_TYPES (tree_model), FALSE);
-
-	if (parent != NULL)
-		return FALSE;
+    GncTreeModelAccountTypes *model;
 
-	model = GNC_TREE_MODEL_ACCOUNT_TYPES (tree_model);
+    g_return_val_if_fail (GNC_IS_TREE_MODEL_ACCOUNT_TYPES (tree_model), FALSE);
 
-	if (n > NO_TYPE && n < NUM_ACCOUNT_TYPES) {
-		iter->stamp = 0;
+    if (parent != NULL)
+        return FALSE;
 
-		return FALSE;		
-	}
+    model = GNC_TREE_MODEL_ACCOUNT_TYPES (tree_model);
 
+    if (n > NO_TYPE && n < NUM_ACCOUNT_TYPES) {
 	iter->stamp = model->stamp;
 	iter->user_data = GINT_TO_POINTER (n);
-
 	return TRUE;
+    }
+
+    iter->stamp = 0;
+    return FALSE;
 }
 
 static gboolean
-gnc_tree_model_account_types_iter_parent (GtkTreeModel * tree_model, GtkTreeIter * iter, GtkTreeIter * child)
+gnc_tree_model_account_types_iter_parent (GtkTreeModel * tree_model,
+                                          GtkTreeIter * iter,
+                                          GtkTreeIter * child)
+{
+    return FALSE;
+}
+
+static void
+gnc_tree_model_account_types_tree_model_init (GtkTreeModelIface * iface)
 {
-	return FALSE;
+    iface->get_flags = gnc_tree_model_account_types_get_flags;
+    iface->get_n_columns = gnc_tree_model_account_types_get_n_columns;
+    iface->get_column_type = gnc_tree_model_account_types_get_column_type;
+    iface->get_iter = gnc_tree_model_account_types_get_iter;
+    iface->get_path = gnc_tree_model_account_types_get_path;
+    iface->get_value = gnc_tree_model_account_types_get_value;
+    iface->iter_next = gnc_tree_model_account_types_iter_next;
+    iface->iter_children = gnc_tree_model_account_types_iter_children;
+    iface->iter_has_child = gnc_tree_model_account_types_iter_has_child;
+    iface->iter_n_children = gnc_tree_model_account_types_iter_n_children;
+    iface->iter_nth_child = gnc_tree_model_account_types_iter_nth_child;
+    iface->iter_parent = gnc_tree_model_account_types_iter_parent;
 }
+


More information about the gnucash-changes mailing list