[Gnucash-changes] r13396 - gnucash/trunk - using new events with object argument

Neil Williams codehelp at cvs.gnucash.org
Sun Feb 26 13:59:39 EST 2006


Author: codehelp
Date: 2006-02-26 13:59:38 -0500 (Sun, 26 Feb 2006)
New Revision: 13396
Trac: http://svn.gnucash.org/trac/changeset/13396

Modified:
   gnucash/trunk/ChangeLog
   gnucash/trunk/lib/libqof/qof/deprecated.c
   gnucash/trunk/lib/libqof/qof/qofbook.c
   gnucash/trunk/lib/libqof/qof/qofevent-p.h
   gnucash/trunk/lib/libqof/qof/qofevent.c
   gnucash/trunk/lib/libqof/qof/qofevent.h
Log:
using new events with object argument

Modified: gnucash/trunk/ChangeLog
===================================================================
--- gnucash/trunk/ChangeLog	2006-02-26 18:36:05 UTC (rev 13395)
+++ gnucash/trunk/ChangeLog	2006-02-26 18:59:38 UTC (rev 13396)
@@ -1,3 +1,18 @@
+2006-02-26  Neil Williams <linux at codehelp.co.uk>
+
+	* qof/qof-be-utils.h : Replace macro to restore
+	programme flow.
+	* qof/qofevent.c : 
+	* qof/qofevent.h : Outline method to make application 
+	events easier to use.
+
+	* qof/deprecated.c : Define deprecated event functions
+	that call new QofEvents with a NULL event_data argument.
+	* qof/qofbook.c : Use new qof_event arguments.
+	* qof/qofevent.c : Allow events to be generated with an
+	optional event_data argument.
+	* qof/qofevent.h : Doxygen tweaks.
+
 2006-02-26  Joshua Sled  <jsled at asynchronous.org>
 
 	* src/report/utility-reports/Makefile.am (SCM_FILE_LINKS):
@@ -3006,4 +3021,3 @@
     * lots of control-flow simplification
     * factor one chunk out into get_any_account()
     * Comment some things that are bogus or need improvement
-	

Modified: gnucash/trunk/lib/libqof/qof/deprecated.c
===================================================================
--- gnucash/trunk/lib/libqof/qof/deprecated.c	2006-02-26 18:36:05 UTC (rev 13395)
+++ gnucash/trunk/lib/libqof/qof/deprecated.c	2006-02-26 18:59:38 UTC (rev 13396)
@@ -76,5 +76,5 @@
 }
 void gnc_engine_gen_event (QofEntity *entity, GNCEngineEventType event_type)
 {
-	qof_event_gen(entity, event_type);
+	qof_event_gen(entity, event_type, NULL);
 }

Modified: gnucash/trunk/lib/libqof/qof/qofbook.c
===================================================================
--- gnucash/trunk/lib/libqof/qof/qofbook.c	2006-02-26 18:36:05 UTC (rev 13395)
+++ gnucash/trunk/lib/libqof/qof/qofbook.c	2006-02-26 18:59:38 UTC (rev 13396)
@@ -86,7 +86,7 @@
   qof_book_init(book);
   qof_object_book_begin (book);
 
-  qof_event_gen (&book->inst.entity, QOF_EVENT_CREATE);
+  qof_event_gen (&book->inst.entity, QOF_EVENT_CREATE, NULL);
   LEAVE ("book=%p", book);
   return book;
 }
@@ -108,7 +108,7 @@
   ENTER ("book=%p", book);
 
   book->shutting_down = TRUE;
-  qof_event_force (&book->inst.entity, QOF_EVENT_DESTROY);
+  qof_event_force (&book->inst.entity, QOF_EVENT_DESTROY, NULL);
 
   /* Call the list of finalizers, let them do their thing. 
    * Do this before tearing into the rest of the book.

Modified: gnucash/trunk/lib/libqof/qof/qofevent-p.h
===================================================================
--- gnucash/trunk/lib/libqof/qof/qofevent-p.h	2006-02-26 18:36:05 UTC (rev 13395)
+++ gnucash/trunk/lib/libqof/qof/qofevent-p.h	2006-02-26 18:59:38 UTC (rev 13396)
@@ -30,7 +30,7 @@
 /* for backwards compatibility - to be moved back to qofevent.c in libqof2 */
 typedef struct
 {
-  GNCEngineEventHandler old_handler;
+  GNCEngineEventHandler old_handler;        /** \deprecated */
   QofEventHandler handler;
   gpointer user_data;
 
@@ -46,6 +46,6 @@
 					QofEventId event_id);
 
 /* generates an event even when events are suspended! */
-void qof_event_force (QofEntity *entity, QofEventId event_id);
+void qof_event_force (QofEntity *entity, QofEventId event_id, gpointer event_data);
 
 #endif

Modified: gnucash/trunk/lib/libqof/qof/qofevent.c
===================================================================
--- gnucash/trunk/lib/libqof/qof/qofevent.c	2006-02-26 18:36:05 UTC (rev 13395)
+++ gnucash/trunk/lib/libqof/qof/qofevent.c	2006-02-26 18:59:38 UTC (rev 13396)
@@ -125,7 +125,6 @@
   hi->handler_id = handler_id;
 
   handlers = g_list_prepend (handlers, hi);
-
   LEAVE ("(handler=%p, data=%p) handler_id=%d", handler, user_data, handler_id);
   return handler_id;
 }
@@ -197,7 +196,8 @@
 }
 
 static void
-qof_event_generate_internal (QofEntity *entity, QofEventId event_id)
+qof_event_generate_internal (QofEntity *entity, QofEventId event_id, 
+                            gpointer event_data)
 {
   GList *node;
   GList *next_node = NULL;
@@ -212,11 +212,11 @@
 	
   switch (event_id)
   {
-  case QOF_EVENT_NONE: { 
-    /* if none, don't log, just return. */
-    return;
+	  case QOF_EVENT_NONE: { 
+		/* if none, don't log, just return. */
+		return;
+	  }
   }
-  }
 
   handler_run_level++;
   for (node = handlers; node; node = next_node)
@@ -233,8 +233,9 @@
     }
     if (hi->handler)
     {
-      PINFO("id=%d hi=%p han=%p", hi->handler_id, hi, hi->handler);
-      hi->handler (entity, event_id, hi->user_data);
+      PINFO("id=%d hi=%p han=%p data=%p", hi->handler_id, hi, 
+            hi->handler, event_data);
+      hi->handler (entity, event_id, hi->user_data, event_data);
     }
   }
   handler_run_level--;
@@ -261,16 +262,16 @@
 }
 
 void
-qof_event_force (QofEntity *entity, QofEventId event_id)
+qof_event_force (QofEntity *entity, QofEventId event_id, gpointer event_data)
 {
   if (!entity)
     return;
 
-  qof_event_generate_internal (entity, event_id);
+  qof_event_generate_internal (entity, event_id, event_data);
 }
 
 void
-qof_event_gen (QofEntity *entity, QofEventId event_id)
+qof_event_gen (QofEntity *entity, QofEventId event_id, gpointer event_data)
 {
   if (!entity)
     return;
@@ -278,7 +279,7 @@
   if (suspend_counter)
     return;
 
-  qof_event_generate_internal (entity, event_id);
+  qof_event_generate_internal (entity, event_id, event_data);
 }
 
 /* deprecated */
@@ -291,7 +292,7 @@
   ent.e_type = e_type;
   if (suspend_counter) return;
   /* caution: this is an incomplete entity! */
-  qof_event_generate_internal (&ent, event_id);
+  qof_event_generate_internal (&ent, event_id, NULL);
 }
 
 /* =========================== END OF FILE ======================= */

Modified: gnucash/trunk/lib/libqof/qof/qofevent.h
===================================================================
--- gnucash/trunk/lib/libqof/qof/qofevent.h	2006-02-26 18:36:05 UTC (rev 13395)
+++ gnucash/trunk/lib/libqof/qof/qofevent.h	2006-02-26 18:59:38 UTC (rev 13396)
@@ -1,6 +1,7 @@
 /********************************************************************
  * qofevent.h -- QOF event handling interface                       *
  * Copyright 2000 Dave Peticolas <dave at krondo.com>                  *
+ * Copyright 2006 Neil Williams  <linux at codehelp.co.uk>             *
  *                                                                  *
  * This program is free software; you can redistribute it and/or    *
  * modify it under the terms of the GNU General Public License as   *
@@ -57,26 +58,27 @@
 event identifiers must be larger than this. */
 #define QOF_DEFAULT_EVENT_LIMIT  QOF_EVENT__LAST
 
-/** \brief Handler invoked when an engine event occurs.
+/** \brief Handler invoked when an event is generated.
  *
  * @param ent:      Entity generating the event
- * @param event_type:  The name of the event, including additional names and
+ * @param event_type:  The id of the event, including additional identifiers and
  	the older defaults.
- * @param user_data:   user_data supplied when handler was registered.
+ * @param handler_data:   data supplied when handler was registered.
+ * @param event_data:   data to be supplied when handler is invoked.
  */
 typedef void (*QofEventHandler) (QofEntity *ent,  QofEventId event_type,
-                                 gpointer user_data);
+                               gpointer handler_data, gpointer event_data);
 
-/** \brief Register a handler for engine events.
+/** \brief Register a handler for events.
  *
  * @param handler:   handler to register
- * @param user_data: data provided when handler is invoked
+ * @param handler_data: data provided when handler is invoked
  *
  * @return id identifying handler
  */
-gint qof_event_register_handler (QofEventHandler handler, gpointer user_data);
+gint qof_event_register_handler (QofEventHandler handler, gpointer handler_data);
 
-/** \brief Unregister an engine event handler.
+/** \brief Unregister an event handler.
  *
  * @param handler_id: the id of the handler to unregister
  */
@@ -100,8 +102,11 @@
 
  @param entity:     the entity generating the event
  @param event_type: the name of the event.
+ @param event_data: Data to be passed to the event handler just for
+ this one event. Can be NULL.
 */
-void qof_event_gen (QofEntity *entity, QofEventId event_type);
+void qof_event_gen (QofEntity *entity, QofEventId event_type, 
+                    gpointer event_data);
 
 /** \brief  Suspend all engine events.
  *



More information about the gnucash-changes mailing list