[Gnucash-changes] r13954 - gnucash/trunk/src - Add begin/commit
edit blocks to budget setters. Change to using the
Chris Shoemaker
chris at cvs.gnucash.org
Sun May 7 22:54:04 EDT 2006
Author: chris
Date: 2006-05-07 22:54:03 -0400 (Sun, 07 May 2006)
New Revision: 13954
Trac: http://svn.gnucash.org/trac/changeset/13954
Modified:
gnucash/trunk/src/backend/file/gnc-budget-xml-v2.c
gnucash/trunk/src/engine/gnc-budget.c
gnucash/trunk/src/engine/gnc-budget.h
gnucash/trunk/src/gnome/gnc-plugin-page-budget.c
Log:
Add begin/commit edit blocks to budget setters. Change to using the
"destroy" method for budget deletion.
Modified: gnucash/trunk/src/backend/file/gnc-budget-xml-v2.c
===================================================================
--- gnucash/trunk/src/backend/file/gnc-budget-xml-v2.c 2006-05-08 00:24:40 UTC (rev 13953)
+++ gnucash/trunk/src/backend/file/gnc-budget-xml-v2.c 2006-05-08 02:54:03 UTC (rev 13954)
@@ -212,7 +212,7 @@
bgt = gnc_budget_new(book);
if (!dom_tree_generic_parse (node, budget_handlers, bgt)) {
PERR ("failed to parse budget tree");
- gnc_budget_free(bgt);
+ gnc_budget_destroy(bgt);
bgt = NULL;
}
return bgt;
Modified: gnucash/trunk/src/engine/gnc-budget.c
===================================================================
--- gnucash/trunk/src/engine/gnc-budget.c 2006-05-08 00:24:40 UTC (rev 13953)
+++ gnucash/trunk/src/engine/gnc-budget.c 2006-05-08 02:54:03 UTC (rev 13954)
@@ -46,6 +46,48 @@
guint num_periods;
};
+static inline void commit_err (QofInstance *inst, QofBackendError errcode)
+{
+ PERR ("Failed to commit: %d", errcode);
+}
+
+static void
+gnc_budget_free(QofInstance *inst)
+{
+ GncBudget *budget = GNC_BUDGET(inst);
+ if (budget == NULL)
+ return;
+
+ g_return_if_fail(GNC_IS_BUDGET(budget));
+
+ /* We first send the message that this object is about to be
+ * destroyed so that any GUI elements can remove it before it is
+ * actually gone. */
+ qof_event_gen( &budget->inst.entity, QOF_EVENT_DESTROY, NULL);
+
+ CACHE_REMOVE(budget->name);
+ CACHE_REMOVE(budget->description);
+
+ qof_instance_release (&budget->inst);
+ g_free(budget);
+}
+
+static inline void noop (QofInstance *inst) {}
+
+static void
+gnc_budget_begin_edit(GncBudget *bgt)
+{
+ qof_begin_edit(QOF_INSTANCE(bgt));
+}
+
+static void
+gnc_budget_commit_edit(GncBudget *bgt)
+{
+ if (!qof_commit_edit(QOF_INSTANCE(bgt))) return;
+ qof_commit_edit_part2(QOF_INSTANCE(bgt), commit_err,
+ noop, gnc_budget_free);
+}
+
GncBudget*
gnc_budget_new(QofBook *book)
{
@@ -72,24 +114,13 @@
}
void
-gnc_budget_free(GncBudget* budget)
+gnc_budget_destroy(GncBudget *budget)
{
- if (budget == NULL)
- return;
-
g_return_if_fail(GNC_IS_BUDGET(budget));
-
+ gnc_budget_begin_edit(budget);
qof_instance_set_dirty(&budget->inst);
- /* We first send the message that this object is about to be
- * destroyed so that any GUI elements can remove it before it is
- * actually gone. */
- qof_event_gen( &budget->inst.entity, QOF_EVENT_DESTROY, NULL);
-
- CACHE_REMOVE(budget->name);
- CACHE_REMOVE(budget->description);
-
- qof_instance_release (&budget->inst);
- g_free(budget);
+ budget->inst.do_free = TRUE;
+ gnc_budget_commit_edit(budget);
}
void
@@ -97,8 +128,10 @@
{
g_return_if_fail(GNC_IS_BUDGET(budget) && name);
+ gnc_budget_begin_edit(budget);
CACHE_REPLACE(budget->name, name);
qof_instance_set_dirty(&budget->inst);
+ gnc_budget_commit_edit(budget);
qof_event_gen( &budget->inst.entity, QOF_EVENT_MODIFY, NULL);
}
@@ -116,8 +149,10 @@
g_return_if_fail(GNC_IS_BUDGET(budget));
g_return_if_fail(description);
+ gnc_budget_begin_edit(budget);
CACHE_REPLACE(budget->description, description);
qof_instance_set_dirty(&budget->inst);
+ gnc_budget_commit_edit(budget);
qof_event_gen( &budget->inst.entity, QOF_EVENT_MODIFY, NULL);
}
@@ -133,8 +168,10 @@
gnc_budget_set_recurrence(GncBudget *budget, const Recurrence *r)
{
g_return_if_fail(budget && r);
+ gnc_budget_begin_edit(budget);
budget->recurrence = *r;
qof_instance_set_dirty(&budget->inst);
+ gnc_budget_commit_edit(budget);
qof_event_gen(&budget->inst.entity, QOF_EVENT_MODIFY, NULL);
}
@@ -158,8 +195,11 @@
gnc_budget_set_num_periods(GncBudget* budget, guint num_periods)
{
g_return_if_fail(GNC_IS_BUDGET(budget));
+
+ gnc_budget_begin_edit(budget);
budget->num_periods = num_periods;
qof_instance_set_dirty(&budget->inst);
+ gnc_budget_commit_edit(budget);
qof_event_gen( &budget->inst.entity, QOF_EVENT_MODIFY, NULL);
}
@@ -185,6 +225,7 @@
gchar path[BUF_SIZE];
gchar *bufend;
+ gnc_budget_begin_edit(budget);
frame = qof_instance_get_slots(QOF_INSTANCE(budget));
guid = xaccAccountGetGUID(account);
bufend = guid_to_string_buff(guid, path);
@@ -192,6 +233,7 @@
kvp_frame_set_numeric(frame, path, val);
qof_instance_set_dirty(&budget->inst);
+ gnc_budget_commit_edit(budget);
qof_event_gen( &budget->inst.entity, QOF_EVENT_MODIFY, NULL);
Modified: gnucash/trunk/src/engine/gnc-budget.h
===================================================================
--- gnucash/trunk/src/engine/gnc-budget.h 2006-05-08 00:24:40 UTC (rev 13953)
+++ gnucash/trunk/src/engine/gnc-budget.h 2006-05-08 02:54:03 UTC (rev 13954)
@@ -86,7 +86,7 @@
GncBudget *gnc_budget_new(QofBook *book);
/** Deletes the given budget object.*/
-void gnc_budget_free(GncBudget* budget);
+void gnc_budget_destroy(GncBudget* budget);
const GUID* gnc_budget_get_guid(GncBudget* budget);
#define gnc_budget_return_guid(X) \
Modified: gnucash/trunk/src/gnome/gnc-plugin-page-budget.c
===================================================================
--- gnucash/trunk/src/gnome/gnc-plugin-page-budget.c 2006-05-08 00:24:40 UTC (rev 13953)
+++ gnucash/trunk/src/gnome/gnc-plugin-page-budget.c 2006-05-08 02:54:03 UTC (rev 13954)
@@ -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), "Name", NULL);
+ gnc_tree_view_configure_columns(GNC_TREE_VIEW(tree_view), NULL);
priv->tree_view = tree_view;
selection = gtk_tree_view_get_selection(tree_view);
gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE);
@@ -852,7 +852,7 @@
if (gnc_verify_dialog (NULL, FALSE, _("Delete %s?"), name)) {
gnc_suspend_gui_refresh ();
- gnc_budget_free(budget);
+ gnc_budget_destroy(budget);
// Views should close themselves because the CM will notify them.
gnc_resume_gui_refresh ();
}
More information about the gnucash-changes
mailing list