28 #include <glib/gi18n.h> 32 #include "gnc-component-manager.h" 39 #include "gnc-ui-balances.h" 42 #define TREE_MODEL_OWNER_CM_CLASS "tree-model-owner" 45 static QofLogModule log_module = GNC_MOD_GUI;
50 static void gnc_tree_model_owner_finalize (GObject *
object);
51 static void gnc_tree_model_owner_dispose (GObject *
object);
54 static void gnc_tree_model_owner_tree_model_init (GtkTreeModelIface *iface);
55 static GtkTreeModelFlags gnc_tree_model_owner_get_flags (GtkTreeModel *tree_model);
56 static int gnc_tree_model_owner_get_n_columns (GtkTreeModel *tree_model);
57 static GType gnc_tree_model_owner_get_column_type (GtkTreeModel *tree_model,
59 static gboolean gnc_tree_model_owner_get_iter (GtkTreeModel *tree_model,
62 static GtkTreePath *gnc_tree_model_owner_get_path (GtkTreeModel *tree_model,
64 static void gnc_tree_model_owner_get_value (GtkTreeModel *tree_model,
68 static gboolean gnc_tree_model_owner_iter_next (GtkTreeModel *tree_model,
70 static gboolean gnc_tree_model_owner_iter_children (GtkTreeModel *tree_model,
73 static gboolean gnc_tree_model_owner_iter_has_child (GtkTreeModel *tree_model,
75 static int gnc_tree_model_owner_iter_n_children (GtkTreeModel *tree_model,
77 static gboolean gnc_tree_model_owner_iter_nth_child (GtkTreeModel *tree_model,
81 static gboolean gnc_tree_model_owner_iter_parent (GtkTreeModel *tree_model,
86 static void gnc_tree_model_owner_event_handler (QofInstance *entity,
95 GncOwnerType owner_type;
97 gint event_handler_id;
98 const gchar *negative_color;
104 G_IMPLEMENT_INTERFACE(GTK_TYPE_TREE_MODEL,
105 gnc_tree_model_owner_tree_model_init))
107 #define GNC_TREE_MODEL_OWNER_GET_PRIVATE(o) \ 108 ((GncTreeModelOwnerPrivate*)gnc_tree_model_owner_get_instance_private((GncTreeModelOwner*)o)) 122 gnc_tree_model_owner_update_color (gpointer gsettings, gchar *key, gpointer user_data)
128 g_return_if_fail(GNC_IS_TREE_MODEL_OWNER(user_data));
130 priv = GNC_TREE_MODEL_OWNER_GET_PRIVATE(model);
132 priv->negative_color = use_red ?
"red" : NULL;
139 static GObjectClass *parent_class = NULL;
144 GObjectClass *o_class;
146 parent_class = g_type_class_peek_parent (klass);
148 o_class = G_OBJECT_CLASS (klass);
151 o_class->finalize = gnc_tree_model_owner_finalize;
152 o_class->dispose = gnc_tree_model_owner_dispose;
161 ENTER(
"model %p", model);
162 while (model->
stamp == 0)
164 model->
stamp = g_random_int ();
169 priv = GNC_TREE_MODEL_OWNER_GET_PRIVATE(model);
171 priv->owner_list = NULL;
172 priv->owner_type = GNC_OWNER_NONE;
173 priv->negative_color = red ?
"red" : NULL;
176 gnc_tree_model_owner_update_color,
183 gnc_tree_model_owner_finalize (GObject *
object)
188 g_return_if_fail (
object != NULL);
189 g_return_if_fail (GNC_IS_TREE_MODEL_OWNER (
object));
191 ENTER(
"model %p",
object);
193 model = GNC_TREE_MODEL_OWNER (
object);
194 priv = GNC_TREE_MODEL_OWNER_GET_PRIVATE(model);
196 if (priv->owner_list)
197 g_list_free_full (priv->owner_list, (GDestroyNotify) gncOwnerFree);
200 priv->owner_list = NULL;
202 if (G_OBJECT_CLASS (parent_class)->finalize)
203 G_OBJECT_CLASS(parent_class)->finalize (
object);
208 gnc_tree_model_owner_dispose (GObject *
object)
213 g_return_if_fail (
object != NULL);
214 g_return_if_fail (GNC_IS_TREE_MODEL_OWNER (
object));
216 ENTER(
"model %p",
object);
218 model = GNC_TREE_MODEL_OWNER (
object);
219 priv = GNC_TREE_MODEL_OWNER_GET_PRIVATE(model);
221 if (priv->event_handler_id)
224 priv->event_handler_id = 0;
228 gnc_tree_model_owner_update_color,
231 if (G_OBJECT_CLASS (parent_class)->dispose)
232 G_OBJECT_CLASS (parent_class)->dispose (
object);
248 ENTER(
"owner_type %d", owner_type);
250 for ( ; item; item = g_list_next(item))
253 priv = GNC_TREE_MODEL_OWNER_GET_PRIVATE(model);
254 if (priv->owner_type == owner_type)
256 g_object_ref(G_OBJECT(model));
257 LEAVE(
"returning existing model %p", model);
258 return GTK_TREE_MODEL(model);
262 model = g_object_new (GNC_TYPE_TREE_MODEL_OWNER,
265 priv = GNC_TREE_MODEL_OWNER_GET_PRIVATE(model);
266 priv->book = gnc_get_current_book();
267 priv->owner_type = owner_type;
273 LEAVE(
"model %p", model);
274 return GTK_TREE_MODEL (model);
282 #define ITER_STRING_LEN 128 285 iter_to_string (GtkTreeIter *iter)
287 #ifdef G_THREADS_ENABLED 288 static GPrivate gtmits_buffer_key = G_PRIVATE_INIT(g_free);
291 string = g_private_get (>mits_buffer_key);
294 string = g_malloc(ITER_STRING_LEN + 1);
295 g_private_set (>mits_buffer_key,
string);
298 static char string[ITER_STRING_LEN + 1];
302 snprintf(
string, ITER_STRING_LEN,
303 "[stamp:%x data:%p (%s), %p, %d]",
304 iter->stamp, iter->user_data,
305 gncOwnerGetName ((
GncOwner *) iter->user_data),
306 iter->user_data2, GPOINTER_TO_INT(iter->user_data3));
308 strcpy(
string,
"(null)");
318 gnc_tree_model_owner_tree_model_init (GtkTreeModelIface *iface)
320 iface->get_flags = gnc_tree_model_owner_get_flags;
321 iface->get_n_columns = gnc_tree_model_owner_get_n_columns;
322 iface->get_column_type = gnc_tree_model_owner_get_column_type;
323 iface->get_iter = gnc_tree_model_owner_get_iter;
324 iface->get_path = gnc_tree_model_owner_get_path;
325 iface->get_value = gnc_tree_model_owner_get_value;
326 iface->iter_next = gnc_tree_model_owner_iter_next;
327 iface->iter_children = gnc_tree_model_owner_iter_children;
328 iface->iter_has_child = gnc_tree_model_owner_iter_has_child;
329 iface->iter_n_children = gnc_tree_model_owner_iter_n_children;
330 iface->iter_nth_child = gnc_tree_model_owner_iter_nth_child;
331 iface->iter_parent = gnc_tree_model_owner_iter_parent;
334 static GtkTreeModelFlags
335 gnc_tree_model_owner_get_flags (GtkTreeModel *tree_model)
341 gnc_tree_model_owner_get_n_columns (GtkTreeModel *tree_model)
343 g_return_val_if_fail(GNC_IS_TREE_MODEL_OWNER(tree_model), -1);
345 return GNC_TREE_MODEL_OWNER_NUM_COLUMNS;
349 gnc_tree_model_owner_get_column_type (GtkTreeModel *tree_model,
352 g_return_val_if_fail (GNC_IS_TREE_MODEL_OWNER (tree_model), G_TYPE_INVALID);
353 g_return_val_if_fail ((index < GNC_TREE_MODEL_OWNER_NUM_COLUMNS) && (index >= 0), G_TYPE_INVALID);
357 case GNC_TREE_MODEL_OWNER_COL_NAME:
358 case GNC_TREE_MODEL_OWNER_COL_TYPE:
359 case GNC_TREE_MODEL_OWNER_COL_CURRENCY:
360 case GNC_TREE_MODEL_OWNER_COL_ID:
361 case GNC_TREE_MODEL_OWNER_COL_ADDRESS_NAME:
362 case GNC_TREE_MODEL_OWNER_COL_ADDRESS_1:
363 case GNC_TREE_MODEL_OWNER_COL_ADDRESS_2:
364 case GNC_TREE_MODEL_OWNER_COL_ADDRESS_3:
365 case GNC_TREE_MODEL_OWNER_COL_ADDRESS_4:
366 case GNC_TREE_MODEL_OWNER_COL_PHONE:
367 case GNC_TREE_MODEL_OWNER_COL_FAX:
368 case GNC_TREE_MODEL_OWNER_COL_EMAIL:
369 case GNC_TREE_MODEL_OWNER_COL_BALANCE:
370 case GNC_TREE_MODEL_OWNER_COL_BALANCE_REPORT:
371 case GNC_TREE_MODEL_OWNER_COL_NOTES:
373 case GNC_TREE_MODEL_OWNER_COL_COLOR_BALANCE:
374 return G_TYPE_STRING;
376 case GNC_TREE_MODEL_OWNER_COL_ACTIVE:
377 return G_TYPE_BOOLEAN;
380 g_assert_not_reached ();
381 return G_TYPE_INVALID;
386 gnc_tree_model_owner_get_iter (GtkTreeModel *tree_model,
395 g_return_val_if_fail (GNC_IS_TREE_MODEL_OWNER (tree_model), FALSE);
398 gchar *path_string = gtk_tree_path_to_string(path);
399 ENTER(
"model %p, iter %p, path %s", tree_model, iter, path_string);
403 model = GNC_TREE_MODEL_OWNER (tree_model);
404 priv = GNC_TREE_MODEL_OWNER_GET_PRIVATE(model);
407 if (gtk_tree_path_get_depth (path) != 1)
413 indices = gtk_tree_path_get_indices (path);
415 owner = g_list_nth_data (priv->owner_list, indices[0]);
423 iter->stamp = model->
stamp;
424 iter->user_data = owner;
425 iter->user_data2 = GINT_TO_POINTER (indices[0]);
426 iter->user_data3 = NULL;
428 LEAVE(
"iter %s", iter_to_string (iter));
433 gnc_tree_model_owner_get_path (GtkTreeModel *tree_model,
442 g_return_val_if_fail (GNC_IS_TREE_MODEL_OWNER (model), NULL);
443 g_return_val_if_fail (iter != NULL, NULL);
444 g_return_val_if_fail (iter->user_data != NULL, NULL);
445 g_return_val_if_fail (iter->stamp == model->
stamp, NULL);
447 ENTER(
"model %p, iter %s", model, iter_to_string(iter));
449 priv = GNC_TREE_MODEL_OWNER_GET_PRIVATE(model);
450 if (priv->owner_list == NULL)
456 owner = (
GncOwner *) iter->user_data;
458 path = gtk_tree_path_new ();
459 i = g_list_index (priv->owner_list, owner);
462 gtk_tree_path_free (path);
466 gtk_tree_path_prepend_index (path, i);
469 gchar *path_string = gtk_tree_path_to_string(path);
470 LEAVE(
"path (4) %s", path_string);
483 priv = GNC_TREE_MODEL_OWNER_GET_PRIVATE(model);
485 g_value_set_static_string (value, priv->negative_color);
487 g_value_set_static_string (value, NULL);
491 gnc_tree_model_owner_get_value (GtkTreeModel *tree_model,
499 gchar *
string = NULL;
501 g_return_if_fail (GNC_IS_TREE_MODEL_OWNER (model));
502 g_return_if_fail (iter != NULL);
503 g_return_if_fail (iter->user_data != NULL);
504 g_return_if_fail (iter->stamp == model->
stamp);
506 ENTER(
"model %p, iter %s, col %d", tree_model,
507 iter_to_string(iter), column);
509 owner = (
GncOwner *) iter->user_data;
513 case GNC_TREE_MODEL_OWNER_COL_NAME:
514 g_value_init (value, G_TYPE_STRING);
515 g_value_set_string (value, gncOwnerGetName (owner));
517 case GNC_TREE_MODEL_OWNER_COL_TYPE:
518 g_value_init (value, G_TYPE_STRING);
519 g_value_set_string (value,
522 case GNC_TREE_MODEL_OWNER_COL_ID:
523 g_value_init (value, G_TYPE_STRING);
524 g_value_set_string (value, gncOwnerGetID (owner));
526 case GNC_TREE_MODEL_OWNER_COL_CURRENCY:
527 g_value_init (value, G_TYPE_STRING);
528 g_value_set_string (value,
531 case GNC_TREE_MODEL_OWNER_COL_ADDRESS_NAME:
532 g_value_init (value, G_TYPE_STRING);
533 string = g_strdup (gncAddressGetName (gncOwnerGetAddr (owner)));
535 g_value_take_string (value,
string);
537 g_value_set_static_string (value,
"");
539 case GNC_TREE_MODEL_OWNER_COL_ADDRESS_1:
540 g_value_init (value, G_TYPE_STRING);
541 string = g_strdup (gncAddressGetAddr1 (gncOwnerGetAddr (owner)));
543 g_value_take_string (value,
string);
545 g_value_set_static_string (value,
"");
547 case GNC_TREE_MODEL_OWNER_COL_ADDRESS_2:
548 g_value_init (value, G_TYPE_STRING);
549 string = g_strdup (gncAddressGetAddr2 (gncOwnerGetAddr (owner)));
551 g_value_take_string (value,
string);
553 g_value_set_static_string (value,
"");
555 case GNC_TREE_MODEL_OWNER_COL_ADDRESS_3:
556 g_value_init (value, G_TYPE_STRING);
557 string = g_strdup (gncAddressGetAddr3 (gncOwnerGetAddr (owner)));
559 g_value_take_string (value,
string);
561 g_value_set_static_string (value,
"");
563 case GNC_TREE_MODEL_OWNER_COL_ADDRESS_4:
564 g_value_init (value, G_TYPE_STRING);
565 string = g_strdup (gncAddressGetAddr4 (gncOwnerGetAddr (owner)));
567 g_value_take_string (value,
string);
569 g_value_set_static_string (value,
"");
571 case GNC_TREE_MODEL_OWNER_COL_PHONE:
572 g_value_init (value, G_TYPE_STRING);
573 string = g_strdup (gncAddressGetPhone (gncOwnerGetAddr (owner)));
575 g_value_take_string (value,
string);
577 g_value_set_static_string (value,
"");
579 case GNC_TREE_MODEL_OWNER_COL_FAX:
580 g_value_init (value, G_TYPE_STRING);
581 string = g_strdup (gncAddressGetFax (gncOwnerGetAddr (owner)));
583 g_value_take_string (value,
string);
585 g_value_set_static_string (value,
"");
587 case GNC_TREE_MODEL_OWNER_COL_EMAIL:
588 g_value_init (value, G_TYPE_STRING);
589 string = g_strdup (gncAddressGetEmail (gncOwnerGetAddr (owner)));
591 g_value_take_string (value,
string);
593 g_value_set_static_string (value,
"");
596 case GNC_TREE_MODEL_OWNER_COL_BALANCE:
597 g_value_init (value, G_TYPE_STRING);
598 string = gnc_ui_owner_get_print_balance(owner, &negative);
599 g_value_take_string (value,
string);
602 case GNC_TREE_MODEL_OWNER_COL_BALANCE_REPORT:
603 g_value_init (value, G_TYPE_STRING);
604 string = gnc_ui_owner_get_print_report_balance(owner, &negative);
605 g_value_take_string (value,
string);
607 case GNC_TREE_MODEL_OWNER_COL_COLOR_BALANCE:
608 g_value_init (value, G_TYPE_STRING);
609 string = gnc_ui_owner_get_print_balance(owner, &negative);
610 gnc_tree_model_owner_set_color(model, negative, value);
614 case GNC_TREE_MODEL_OWNER_COL_NOTES:
615 g_value_init (value, G_TYPE_STRING);
619 case GNC_OWNER_UNDEFINED:
620 case GNC_OWNER_EMPLOYEE:
623 g_value_set_static_string (value,
"");
625 case GNC_OWNER_VENDOR:
628 case GNC_OWNER_CUSTOMER:
634 case GNC_TREE_MODEL_OWNER_COL_ACTIVE:
635 g_value_init (value, G_TYPE_BOOLEAN);
636 g_value_set_boolean (value, gncOwnerGetActive (owner));
640 g_assert_not_reached ();
646 gnc_tree_model_owner_iter_next (GtkTreeModel *tree_model,
654 g_return_val_if_fail (GNC_IS_TREE_MODEL_OWNER (model), FALSE);
655 g_return_val_if_fail (iter != NULL, FALSE);
656 g_return_val_if_fail (iter->user_data != NULL, FALSE);
657 g_return_val_if_fail (iter->stamp == model->
stamp, FALSE);
659 ENTER(
"model %p, iter %s", tree_model, iter_to_string (iter));
661 priv = GNC_TREE_MODEL_OWNER_GET_PRIVATE(model);
664 i = GPOINTER_TO_INT (iter->user_data2);
665 owner = g_list_nth_data (priv->owner_list, i + 1);
673 iter->user_data = owner;
674 iter->user_data2 = GINT_TO_POINTER (i + 1);
675 iter->user_data3 = NULL;
677 LEAVE(
"iter %s", iter_to_string(iter));
682 gnc_tree_model_owner_iter_children (GtkTreeModel *tree_model,
684 GtkTreeIter *parent_iter)
689 g_return_val_if_fail (GNC_IS_TREE_MODEL_OWNER (tree_model), FALSE);
690 ENTER(
"model %p, iter %p (to be filed in), parent %s",
691 tree_model, iter, (parent_iter ? iter_to_string(parent_iter) :
"(null)"));
693 model = GNC_TREE_MODEL_OWNER (tree_model);
694 priv = GNC_TREE_MODEL_OWNER_GET_PRIVATE(model);
701 iter->user_data = g_list_nth_data (priv->owner_list, 0);
702 iter->user_data2 = GINT_TO_POINTER (0);
703 iter->user_data3 = NULL;
704 iter->stamp = model->
stamp;
705 LEAVE(
"iter (2) %s", iter_to_string(iter));
711 LEAVE(
"failed (owners don't have children)");
717 gnc_tree_model_owner_iter_has_child (GtkTreeModel *tree_model,
725 gnc_tree_model_owner_iter_n_children (GtkTreeModel *tree_model,
731 g_return_val_if_fail (GNC_IS_TREE_MODEL_OWNER (tree_model), -1);
733 model = GNC_TREE_MODEL_OWNER (tree_model);
734 priv = GNC_TREE_MODEL_OWNER_GET_PRIVATE (model);
741 return (gint) g_list_length (priv->owner_list);
743 g_return_val_if_fail (
744 GNC_TREE_MODEL_OWNER (tree_model)->stamp == iter->stamp, -1);
750 gnc_tree_model_owner_iter_nth_child (GtkTreeModel *tree_model,
752 GtkTreeIter *parent_iter,
760 gchar *parent_string;
761 parent_string = g_strdup(iter_to_string(parent_iter));
762 ENTER(
"model %p, iter %s, parent_iter %s, n %d",
763 tree_model, iter_to_string(iter),
765 g_free(parent_string);
769 ENTER(
"model %p, iter %s, parent_iter (null), n %d",
770 tree_model, iter_to_string(iter), n);
774 model = GNC_TREE_MODEL_OWNER (tree_model);
775 priv = GNC_TREE_MODEL_OWNER_GET_PRIVATE(model);
782 iter->user_data = g_list_nth_data (priv->owner_list, n);
783 iter->user_data2 = GINT_TO_POINTER (n);
784 iter->user_data3 = NULL;
785 iter->stamp = model->
stamp;
786 LEAVE(
"iter (2) %s", iter_to_string(iter));
792 LEAVE(
"failed (owners don't have children)");
798 gnc_tree_model_owner_iter_parent (GtkTreeModel *tree_model,
820 g_return_val_if_fail (GNC_IS_TREE_MODEL_OWNER (model), NULL);
821 g_return_val_if_fail (iter != NULL, NULL);
822 g_return_val_if_fail (iter->user_data != NULL, NULL);
823 g_return_val_if_fail (iter->stamp == model->
stamp, NULL);
825 return (
GncOwner *) iter->user_data;
839 GList *owner_in_list;
841 ENTER(
"model %p, owner %p, iter %p", model, owner, iter);
847 priv = GNC_TREE_MODEL_OWNER_GET_PRIVATE(model);
848 owner_in_list = g_list_find_custom (priv->owner_list, (gconstpointer)owner, (GCompareFunc)
gncOwnerGCompareFunc);
851 iter->stamp = model->
stamp;
852 iter->user_data = owner_in_list->data;
853 iter->user_data2 = GINT_TO_POINTER (g_list_position (priv->owner_list, owner_in_list));
854 iter->user_data3 = NULL;
855 LEAVE(
"iter %s", iter_to_string (iter));
861 iter->user_data = NULL;
862 LEAVE(
"Owner not found in list");
876 GtkTreeIter tree_iter;
877 GtkTreePath *tree_path;
879 ENTER(
"model %p, owner %p", model, owner);
890 tree_path = gtk_tree_model_get_path (GTK_TREE_MODEL(model), &tree_iter);
893 gchar *path_string = gtk_tree_path_to_string(tree_path);
894 LEAVE(
"path (2) %s", path_string);
912 while (!model->
stamp);
944 gnc_tree_model_owner_event_handler (QofInstance *entity,
950 GtkTreePath *path = NULL;
954 g_return_if_fail(model);
959 ENTER(
"entity %p of type %d, model %p, event_data %p",
960 entity, event_type, model, ed);
961 priv = GNC_TREE_MODEL_OWNER_GET_PRIVATE(model);
966 LEAVE(
"model type and owner type differ");
972 LEAVE(
"not in this book");
981 DEBUG(
"add owner %p (%s)", &owner, gncOwnerGetName(&owner));
983 if (priv->owner_list)
984 g_list_free_full (priv->owner_list, (GDestroyNotify) gncOwnerFree);
988 increment_stamp(model);
991 LEAVE(
"can't generate iter");
994 path = gnc_tree_model_owner_get_path(GTK_TREE_MODEL(model), &iter);
997 DEBUG(
"can't generate path");
1000 gtk_tree_model_row_inserted (GTK_TREE_MODEL(model), path, &iter);
1003 case QOF_EVENT_REMOVE:
1006 DEBUG(
"remove owner %d (%s) from owner_list %p", ed->idx,
1007 gncOwnerGetName(&owner), priv->owner_list);
1008 path = gtk_tree_path_new();
1011 DEBUG(
"can't generate path");
1014 increment_stamp(model);
1015 gtk_tree_path_append_index (path, ed->idx);
1016 gtk_tree_model_row_deleted (GTK_TREE_MODEL(model), path);
1019 case QOF_EVENT_MODIFY:
1020 DEBUG(
"modify owner %p (%s)", &owner, gncOwnerGetName(&owner));
1023 LEAVE(
"can't generate iter");
1026 path = gnc_tree_model_owner_get_path(GTK_TREE_MODEL(model), &iter);
1029 DEBUG(
"can't generate path");
1032 gtk_tree_model_row_changed(GTK_TREE_MODEL(model), path, &iter);
1036 LEAVE(
"unknown event type");
1041 gtk_tree_path_free(path);
OwnerList * gncBusinessGetOwnerList(QofBook *book, QofIdTypeConst type_name, gboolean all_including_inactive)
Returns a GList of all objects of the given type_name in the given book, but each object is wrapped i...
The instance data structure for an owner tree model.
Business Interface: Object OWNERs.
const GList * gnc_gobject_tracking_get_list(const gchar *name)
Get a list of all known objects of a specified type.
gulong gnc_prefs_register_cb(const char *group, const gchar *pref_name, gpointer func, gpointer user_data)
Register a callback that gets triggered when the given preference changes.
GtkTreeModel implementation for gnucash owner tree.
QofBook * qof_instance_get_book(gconstpointer inst)
Return the book pointer.
void(* QofEventHandler)(QofInstance *ent, QofEventId event_type, gpointer handler_data, gpointer event_data)
Handler invoked when an event is generated.
utility functions for the GnuCash UI
#define DEBUG(format, args...)
Print a debugging message.
The instance private data for an owner tree model.
#define ENTER(format, args...)
Print a function entry debugging message.
#define gnc_leave_return_val_if_fail(test, val)
Replacement for g_return_val_if_fail, but calls LEAVE if the test fails.
The class data structure for an owner tree model.
gint qof_event_register_handler(QofEventHandler handler, gpointer user_data)
Register a handler for events.
int gncOwnerGCompareFunc(const GncOwner *a, const GncOwner *b)
Same as gncOwnerEqual, but returns 0 if equal to be used as a GList custom compare function...
GtkTreeModel * gnc_tree_model_owner_new(GncOwnerType owner_type)
Create a new GtkTreeModel for manipulating gnucash owners.
gint QofEventId
Define the type of events allowed.
void qof_event_unregister_handler(gint handler_id)
Unregister an event handler.
void qofOwnerSetEntity(GncOwner *owner, QofInstance *ent)
set the owner from the entity.
const char * gnc_commodity_get_fullname(const gnc_commodity *cm)
Retrieve the full name for the specified commodity.
QofIdTypeConst gncOwnerTypeToQofIdType(GncOwnerType t)
Returns the QofIdType of the given GncOwnerType, or NULL if no suitable one exists.
GtkTreePath * gnc_tree_model_owner_get_path_from_owner(GncTreeModelOwner *model, GncOwner *owner)
Convert a model/owner pair into a gtk_tree_model_path.
GncOwner * gnc_tree_model_owner_get_owner(GncTreeModelOwner *model, GtkTreeIter *iter)
Convert a model/iter pair to a gnucash owner.
Additional event handling code.
All type declarations for the whole Gnucash engine.
Generic api to store and retrieve preferences.
gboolean GNC_IS_OWNER(QofInstance *ent)
Check if entity is an owner kind.
GncOwnerType gncOwnerGetType(const GncOwner *owner)
Returns the GncOwnerType of this owner.
int stamp
The state of the model.
gboolean gnc_prefs_get_bool(const gchar *group, const gchar *pref_name)
Get a boolean value from the preferences backend.
gboolean gnc_tree_model_owner_get_iter_from_owner(GncTreeModelOwner *model, GncOwner *owner, GtkTreeIter *iter)
Convert a model/owner pair into a gtk_tree_model_iter.
#define LEAVE(format, args...)
Print a function exit debugging message.
GncVendor * gncOwnerGetVendor(const GncOwner *owner)
If the given owner is of type GNC_OWNER_VENDOR, returns the pointer to the vendor object...
GncCustomer * gncOwnerGetCustomer(const GncOwner *owner)
If the given owner is of type GNC_OWNER_CUSTOMER, returns the pointer to the customer object...
Commodity handling public routines.
void gnc_prefs_remove_cb_by_func(const gchar *group, const gchar *pref_name, gpointer func, gpointer user_data)
Remove a function that was registered for a callback when the given preference changed.
GList OwnerList
For SWIG: A GList containing GncOwner.