[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