r18590 - gnucash/trunk/src - Create qof_book_begin_edit()/qof_book_commit_edit() routines. These need to be added around lines which set kvp

Phil Longstaff plongstaff at code.gnucash.org
Sat Jan 30 17:59:37 EST 2010


Author: plongstaff
Date: 2010-01-30 17:59:37 -0500 (Sat, 30 Jan 2010)
New Revision: 18590
Trac: http://svn.gnucash.org/trac/changeset/18590

Modified:
   gnucash/trunk/src/app-utils/gnc-ui-util.c
   gnucash/trunk/src/backend/sql/gnc-book-sql.c
   gnucash/trunk/src/libqof/qof/qofbook.c
   gnucash/trunk/src/libqof/qof/qofbook.h
Log:
Create qof_book_begin_edit()/qof_book_commit_edit() routines.  These need to be added around lines which set kvp
values for the book, and the dirty flag does *not* need to be set.


Modified: gnucash/trunk/src/app-utils/gnc-ui-util.c
===================================================================
--- gnucash/trunk/src/app-utils/gnc-ui-util.c	2010-01-30 22:57:55 UTC (rev 18589)
+++ gnucash/trunk/src/app-utils/gnc-ui-util.c	2010-01-30 22:59:37 UTC (rev 18590)
@@ -203,8 +203,12 @@
 void
 gnc_set_current_book_tax_name (const gchar *tax_name)
 {
-    kvp_frame_set_string (qof_book_get_slots (gnc_get_current_book()),
+	QofBook* current_book = gnc_get_current_book();
+
+    qof_book_begin_edit(current_book);
+    kvp_frame_set_string (qof_book_get_slots (current_book),
                           "book/tax_US/name", tax_name);
+    qof_book_commit_edit(current_book);
 }
 
 const gchar *

Modified: gnucash/trunk/src/backend/sql/gnc-book-sql.c
===================================================================
--- gnucash/trunk/src/backend/sql/gnc-book-sql.c	2010-01-30 22:57:55 UTC (rev 18589)
+++ gnucash/trunk/src/backend/sql/gnc-book-sql.c	2010-01-30 22:59:37 UTC (rev 18590)
@@ -149,8 +149,10 @@
 	    pBook = gnc_book_new();
 	}
 
+	qof_book_begin_edit( pBook );
     gnc_sql_load_object( be, row, GNC_ID_BOOK, pBook, col_table );
     gnc_sql_slots_load( be, QOF_INSTANCE(pBook) );
+	qof_book_commit_edit( pBook );
 
     qof_instance_mark_clean( QOF_INSTANCE(pBook) );
 }

Modified: gnucash/trunk/src/libqof/qof/qofbook.c
===================================================================
--- gnucash/trunk/src/libqof/qof/qofbook.c	2010-01-30 22:57:55 UTC (rev 18589)
+++ gnucash/trunk/src/libqof/qof/qofbook.c	2010-01-30 22:59:37 UTC (rev 18590)
@@ -461,6 +461,36 @@
     return FALSE;
 }
 
+void
+qof_book_begin_edit (QofBook *book)
+{
+  qof_begin_edit(&book->inst);
+}
+
+static void commit_err (QofInstance *inst, QofBackendError errcode)
+{
+  PERR ("Failed to commit: %d", errcode);
+//  gnc_engine_signal_commit_error( errcode );
+}
+
+#if 0
+static void lot_free(QofInstance* inst)
+{
+	GNCLot* lot = GNC_LOT(inst);
+
+	gnc_lot_free(lot);
+}
+#endif
+
+static void noop (QofInstance *inst) {}
+
+void
+qof_book_commit_edit(QofBook *book)
+{
+  if (!qof_commit_edit (QOF_INSTANCE(book))) return;
+  qof_commit_edit_part2 (&book->inst, commit_err, noop, noop/*lot_free*/);
+}
+
 /* QofObject function implementation and registration */
 gboolean qof_book_register (void)
 {

Modified: gnucash/trunk/src/libqof/qof/qofbook.h
===================================================================
--- gnucash/trunk/src/libqof/qof/qofbook.h	2010-01-30 22:57:55 UTC (rev 18589)
+++ gnucash/trunk/src/libqof/qof/qofbook.h	2010-01-30 22:59:37 UTC (rev 18590)
@@ -278,6 +278,9 @@
  */
 gint64 qof_book_get_counter (const QofBook *book, const char *counter_name);
 
+void qof_book_begin_edit(QofBook *book);
+void qof_book_commit_edit(QofBook *book);
+
 /** deprecated */
 #define qof_book_get_guid(X) qof_entity_get_guid (QOF_INSTANCE(X))
 



More information about the gnucash-changes mailing list