xmlNodePtr gnc_budget_dom_tree_create (GncBudget* bgt) { xmlNodePtr ret; ENTER ("(budget=%p)", bgt); ret = xmlNewNode (NULL, BAD_CAST gnc_budget_string); xmlSetProp (ret, BAD_CAST "version", BAD_CAST budget_version_string); /* field: GncGUID */ xmlAddChild (ret, guid_to_dom_tree (bgt_id_string, gnc_budget_get_guid (bgt))); /* field: char* name */ xmlAddChild (ret, text_to_dom_tree (bgt_name_string, gnc_budget_get_name (bgt))); /* field: char* description */ xmlAddChild (ret, text_to_dom_tree (bgt_description_string, gnc_budget_get_description (bgt))); /* field: guint num_periods */ xmlAddChild (ret, guint_to_dom_tree (bgt_num_periods_string, gnc_budget_get_num_periods (bgt))); /* field: Recurrence* */ xmlAddChild (ret, recurrence_to_dom_tree (bgt_recurrence_string, gnc_budget_get_recurrence (bgt))); /* xmlAddChild won't do anything with a NULL, so tests are superfluous. */ xmlAddChild (ret, qof_instance_slots_to_dom_tree (bgt_slots_string, QOF_INSTANCE (bgt))); LEAVE (" "); return ret; }
gboolean gnc_tree_model_budget_get_iter_for_budget(GtkTreeModel *tm, GtkTreeIter *iter, GncBudget *bgt) { GValue gv = { 0 }; const GncGUID *guid1; GncGUID *guid2; g_return_val_if_fail(GNC_BUDGET(bgt), FALSE); guid1 = gnc_budget_get_guid(bgt); if (!gtk_tree_model_get_iter_first(tm, iter)) return FALSE; while (gtk_list_store_iter_is_valid(GTK_LIST_STORE(tm), iter)) { gtk_tree_model_get_value(tm, iter, BUDGET_GUID_COLUMN, &gv); guid2 = (GncGUID *) g_value_get_pointer(&gv); g_value_unset(&gv); if (guid_equal(guid1, guid2)) return TRUE; if (!gtk_tree_model_iter_next(tm, iter)) return FALSE; } return FALSE; }
/*----------------------------------------------------------------*/ static GncBudget* load_single_budget (GncSqlBackend* sql_be, GncSqlRow& row) { const GncGUID* guid; GncBudget* pBudget = NULL; Recurrence* r; g_return_val_if_fail (sql_be != NULL, NULL); guid = gnc_sql_load_guid (sql_be, row); if (guid != NULL) { pBudget = gnc_budget_lookup (guid, sql_be->book()); } if (pBudget == NULL) { pBudget = gnc_budget_new (sql_be->book()); } gnc_budget_begin_edit (pBudget); gnc_sql_load_object (sql_be, row, GNC_ID_BUDGET, pBudget, col_table); load_budget_amounts (sql_be, pBudget); r = gnc_sql_recurrence_load (sql_be, gnc_budget_get_guid (pBudget)); if (r != NULL) { gnc_budget_set_recurrence (pBudget, r); g_free (r); } gnc_budget_commit_edit (pBudget); return pBudget; }
/* Add the new budget object to the tree model. */ static void add_budget_to_model(QofInstance* data, gpointer user_data ) { GtkTreeIter iter; GncBudget* budget = GNC_BUDGET(data); GtkTreeModel* treeModel = user_data; g_return_if_fail(GNC_IS_BUDGET(budget)); g_return_if_fail(budget && treeModel); gtk_list_store_append (GTK_LIST_STORE(treeModel), &iter); gtk_list_store_set (GTK_LIST_STORE(treeModel), &iter, BUDGET_GUID_COLUMN, gnc_budget_get_guid(budget), BUDGET_NAME_COLUMN, gnc_budget_get_name(budget), BUDGET_DESCRIPTION_COLUMN, gnc_budget_get_description(budget), -1); }