[Gnucash-changes] qof_begin_edit implementation (changed in qof sync)

Neil Williams codehelp at cvs.gnucash.org
Thu Oct 13 08:42:36 EDT 2005


Log Message:
-----------
qof_begin_edit implementation (changed in qof sync)

Tags:
----
gnucash-gnome2-dev

Modified Files:
--------------
    gnucash/src/engine:
        Account.c
        Transaction.c

Revision Data
-------------
Index: Transaction.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/Transaction.c,v
retrieving revision 1.261.4.18
retrieving revision 1.261.4.19
diff -Lsrc/engine/Transaction.c -Lsrc/engine/Transaction.c -u -r1.261.4.18 -r1.261.4.19
--- src/engine/Transaction.c
+++ src/engine/Transaction.c
@@ -686,6 +686,16 @@
   mark_split (s);
 }
 
+static void
+qofSplitSetSharePrice (Split *split, gnc_numeric price)
+{
+	g_return_if_fail(split);
+	g_return_if_fail(split->parent);
+	g_return_if_fail(qof_begin_edit(&split->parent->inst));
+	xaccSplitSetSharePrice (split, price);
+	qof_commit_edit(&split->parent->inst);
+}
+
 void 
 xaccSplitSetSharePrice (Split *s, gnc_numeric price) 
 {
@@ -732,6 +742,15 @@
   mark_split (s);
 }
 
+static void
+qofSplitSetAmount (Split *split, gnc_numeric amt)
+{
+	g_return_if_fail(split);
+	g_return_if_fail(split->parent);
+	g_return_if_fail(qof_begin_edit(&split->parent->inst));
+	xaccSplitSetAmount (split, amt);
+	qof_commit_edit(&split->parent->inst);
+}
 
 void 
 xaccSplitSetAmount (Split *s, gnc_numeric amt) 
@@ -748,6 +767,15 @@
   mark_split (s);
 }
 
+static void
+qofSplitSetValue (Split *split, gnc_numeric amt)
+{
+	g_return_if_fail(split);
+	g_return_if_fail(split->parent);
+	g_return_if_fail(qof_begin_edit(&split->parent->inst));
+	xaccSplitSetValue (split, amt);
+	qof_commit_edit(&split->parent->inst);
+}
 
 void 
 xaccSplitSetValue (Split *s, gnc_numeric amt) 
@@ -1453,7 +1481,8 @@
 void
 xaccTransBeginEdit (Transaction *trans)
 {
-    QOF_BEGIN_EDIT(&trans->inst);
+   if(!trans) { return; }
+   if(!qof_begin_edit(&trans->inst)) { return; }
 
    if (qof_book_shutting_down(trans->inst.book))
      return;
@@ -2382,7 +2411,7 @@
 {
 	if (!trans) { return; }
 	if((ts.tv_nsec == 0)&&(ts.tv_sec == 0)) { return; }
-	qof_begin_edit(&trans->inst);
+	if(!qof_begin_edit(&trans->inst)) { return; }
 	xaccTransSetDateInternal(trans, &trans->date_posted, ts);
 	set_gains_date_dirty(trans);
 	qof_commit_edit(&trans->inst);
@@ -2401,7 +2430,7 @@
 {
 	if (!trans) { return; }
 	if((ts.tv_nsec == 0)&&(ts.tv_sec == 0)) { return; }
-	qof_begin_edit(&trans->inst);
+	if(!qof_begin_edit(&trans->inst)) { return; }
 	xaccTransSetDateInternal(trans, &trans->date_entered, ts);
 	qof_commit_edit(&trans->inst);
 }
@@ -2430,20 +2459,14 @@
    kvp_frame_set_timespec (trans->inst.kvp_data, TRANS_DATE_DUE_KVP, *ts);
 }
 
-static void
-qofTransSetTxnType (Transaction *trans, char type)
-{
-	qof_begin_edit(&trans->inst);
-	xaccTransSetTxnType(trans, type);
-	qof_commit_edit(&trans->inst);
-}
-
 void
 xaccTransSetTxnType (Transaction *trans, char type)
 {
   char s[2] = {type, '\0'};
-  if (!trans) return;
+  g_return_if_fail(trans);
+  if(!qof_begin_edit(&trans->inst)) { return; }
   kvp_frame_set_str (trans->inst.kvp_data, TRANS_TXN_TYPE_KVP, s);
+  qof_commit_edit(&trans->inst);
 }
 
 void xaccTransClearReadOnly (Transaction *trans)
@@ -2462,10 +2485,12 @@
 /********************************************************************\
 \********************************************************************/
 
+/* QOF does not open the trans before setting a parameter,
+but the call uses check_open so we cannot use the call directly. */
 static void
 qofTransSetNum (Transaction *trans, const char *xnum)
 {
-	qof_begin_edit(&trans->inst);
+	if(!qof_begin_edit(&trans->inst)) { return; }
 	xaccTransSetNum(trans, xnum);
 	qof_commit_edit(&trans->inst);
 }
@@ -2485,7 +2510,7 @@
 static void
 qofTransSetDescription (Transaction *trans, const char *desc)
 {
-	qof_begin_edit(&trans->inst);
+	if(!qof_begin_edit(&trans->inst)) { return; }
 	xaccTransSetDescription(trans, desc);
 	qof_commit_edit(&trans->inst);
 }
@@ -2505,7 +2530,7 @@
 static void
 qofTransSetNotes (Transaction *trans, const char *notes)
 {
-	qof_begin_edit(&trans->inst);
+	if(!qof_begin_edit(&trans->inst)) { return; }
 	xaccTransSetNotes(trans, notes);
 	qof_commit_edit(&trans->inst);
 }
@@ -2717,6 +2742,16 @@
 /********************************************************************\
 \********************************************************************/
 
+static void
+qofSplitSetMemo (Split *split, const char* memo)
+{
+	g_return_if_fail(split);
+	g_return_if_fail(split->parent);
+	if(!qof_begin_edit(&split->parent->inst)) { return; }
+	xaccSplitSetMemo(split, memo);
+	qof_commit_edit(&split->parent->inst);
+}
+
 void
 xaccSplitSetMemo (Split *split, const char *memo)
 {
@@ -2729,6 +2764,16 @@
    split->memo = tmp;
 }
 
+static void
+qofSplitSetAction (Split *split, const char *actn)
+{
+	g_return_if_fail(split);
+	g_return_if_fail(split->parent);
+	if(!qof_begin_edit(&split->parent->inst)) { return; }
+	xaccSplitSetAction (split, actn);
+	qof_commit_edit(&split->parent->inst);
+}
+
 void
 xaccSplitSetAction (Split *split, const char *actn)
 {
@@ -2741,6 +2786,16 @@
    split->action = tmp;
 }
 
+static void
+qofSplitSetReconcile (Split *split, char recn)
+{
+	g_return_if_fail(split);
+	g_return_if_fail(split->parent);
+	if(!qof_begin_edit(&split->parent->inst)) { return; }
+	xaccSplitSetReconcile(split, recn);
+	qof_commit_edit(&split->parent->inst);
+}
+
 void
 xaccSplitSetReconcile (Split *split, char recn)
 {
@@ -3329,12 +3384,12 @@
     { SPLIT_BALANCE, QOF_TYPE_NUMERIC, (QofAccessFunc)xaccSplitGetBalance, NULL },
     { SPLIT_CLEARED_BALANCE, QOF_TYPE_NUMERIC,(QofAccessFunc)xaccSplitGetClearedBalance, NULL },
     { SPLIT_RECONCILED_BALANCE, QOF_TYPE_NUMERIC,(QofAccessFunc)xaccSplitGetReconciledBalance, NULL },
-    { SPLIT_MEMO, QOF_TYPE_STRING, (QofAccessFunc)xaccSplitGetMemo, (QofSetterFunc)xaccSplitSetMemo },
-    { SPLIT_ACTION, QOF_TYPE_STRING, (QofAccessFunc)xaccSplitGetAction, (QofSetterFunc)xaccSplitSetAction },
-    { SPLIT_RECONCILE, QOF_TYPE_CHAR, (QofAccessFunc)xaccSplitGetReconcile, (QofSetterFunc)xaccSplitSetReconcile },
-    { SPLIT_AMOUNT, QOF_TYPE_NUMERIC, (QofAccessFunc)xaccSplitGetAmount, (QofSetterFunc)xaccSplitSetAmount },
-    { SPLIT_SHARE_PRICE, QOF_TYPE_NUMERIC,(QofAccessFunc)xaccSplitGetSharePrice, (QofSetterFunc)xaccSplitSetSharePrice },
-    { SPLIT_VALUE, QOF_TYPE_DEBCRED, (QofAccessFunc)xaccSplitGetValue, (QofSetterFunc)xaccSplitSetValue },
+    { SPLIT_MEMO, QOF_TYPE_STRING, (QofAccessFunc)xaccSplitGetMemo, (QofSetterFunc)qofSplitSetMemo },
+    { SPLIT_ACTION, QOF_TYPE_STRING, (QofAccessFunc)xaccSplitGetAction, (QofSetterFunc)qofSplitSetAction },
+    { SPLIT_RECONCILE, QOF_TYPE_CHAR, (QofAccessFunc)xaccSplitGetReconcile, (QofSetterFunc)qofSplitSetReconcile },
+    { SPLIT_AMOUNT, QOF_TYPE_NUMERIC, (QofAccessFunc)xaccSplitGetAmount, (QofSetterFunc)qofSplitSetAmount },
+    { SPLIT_SHARE_PRICE, QOF_TYPE_NUMERIC,(QofAccessFunc)xaccSplitGetSharePrice, (QofSetterFunc)qofSplitSetSharePrice },
+    { SPLIT_VALUE, QOF_TYPE_DEBCRED, (QofAccessFunc)xaccSplitGetValue, (QofSetterFunc)qofSplitSetValue },
     { SPLIT_TYPE, QOF_TYPE_STRING, (QofAccessFunc)xaccSplitGetType, NULL },
     { SPLIT_VOIDED_AMOUNT, QOF_TYPE_NUMERIC, (QofAccessFunc)xaccSplitVoidFormerAmount, NULL },
     { SPLIT_VOIDED_VALUE, QOF_TYPE_NUMERIC,  (QofAccessFunc)xaccSplitVoidFormerValue, NULL },
@@ -3347,7 +3402,7 @@
     { SPLIT_ACCT_FULLNAME, SPLIT_ACCT_FULLNAME, no_op, NULL },
     { SPLIT_CORR_ACCT_NAME, SPLIT_CORR_ACCT_NAME, no_op, NULL },
     { SPLIT_CORR_ACCT_CODE, SPLIT_CORR_ACCT_CODE, no_op, NULL },
-    { SPLIT_KVP, QOF_TYPE_KVP, (QofAccessFunc)xaccSplitGetSlots, (QofSetterFunc)xaccSplitSetSlots_nc },
+    { SPLIT_KVP, QOF_TYPE_KVP, (QofAccessFunc)xaccSplitGetSlots, NULL },
     { QOF_PARAM_BOOK, QOF_ID_BOOK, (QofAccessFunc)xaccSplitGetBook, NULL },
     { QOF_PARAM_GUID, QOF_TYPE_GUID, (QofAccessFunc)qof_entity_get_guid, NULL },
     { NULL },
@@ -3400,7 +3455,7 @@
     { TRANS_IMBALANCE, QOF_TYPE_NUMERIC, (QofAccessFunc)xaccTransGetImbalance,NULL },
     { TRANS_NOTES, QOF_TYPE_STRING, (QofAccessFunc)xaccTransGetNotes, (QofSetterFunc)qofTransSetNotes },
     { TRANS_IS_BALANCED, QOF_TYPE_BOOLEAN, (QofAccessFunc)trans_is_balanced_p, NULL },
-    { TRANS_TYPE, QOF_TYPE_CHAR, (QofAccessFunc)xaccTransGetTxnType, (QofSetterFunc)qofTransSetTxnType },
+    { TRANS_TYPE, QOF_TYPE_CHAR, (QofAccessFunc)xaccTransGetTxnType, (QofSetterFunc)xaccTransSetTxnType },
     { TRANS_VOID_STATUS, QOF_TYPE_BOOLEAN, (QofAccessFunc)xaccTransGetVoidStatus,NULL },
     { TRANS_VOID_REASON, QOF_TYPE_STRING, (QofAccessFunc)xaccTransGetVoidReason,NULL },
     { TRANS_VOID_TIME, QOF_TYPE_DATE,    (QofAccessFunc)xaccTransGetVoidTime,   NULL },
Index: Account.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/Account.c,v
retrieving revision 1.222.4.21
retrieving revision 1.222.4.22
diff -Lsrc/engine/Account.c -Lsrc/engine/Account.c -u -r1.222.4.21 -r1.222.4.22
--- src/engine/Account.c
+++ src/engine/Account.c
@@ -322,7 +322,7 @@
 void 
 xaccAccountCommitEdit (Account *acc) 
 {
-  QOF_COMMIT_EDIT_PART1 (&acc->inst);
+  if(!qof_commit_edit(&acc->inst)) { return;}
 
   /* If marked for deletion, get rid of subaccounts first,
    * and then the splits ... */
@@ -840,7 +840,7 @@
   old_amt = xaccSplitGetAmount (split);
 
   xaccAccountBeginEdit(acc);
-  xaccTransBeginEdit(trans);
+  if(trans) { xaccTransBeginEdit(trans); }
 
   acc->balance_dirty = TRUE;
   acc->sort_dirty = TRUE;
@@ -876,12 +876,12 @@
       mark_account (acc);
   }
 
-  /* Setting the amount casues a conversion to the new account's 
+  /* Setting the amount causes a conversion to the new account's
    * denominator AKA 'SCU Smallest Currency Unit'. */
   /* xaccSplitSetAmount(split, old_amt); */
   split->amount = gnc_numeric_convert (old_amt,
                 xaccAccountGetCommoditySCU(acc), GNC_HOW_RND_ROUND);
-  xaccTransCommitEdit(trans);
+  if(trans) { xaccTransCommitEdit(trans); }
   xaccAccountCommitEdit(acc);
   LEAVE ("(acc=%p, split=%p)", acc, split);
 }


More information about the gnucash-changes mailing list