using new events with object argument

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@13396 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Neil Williams 2006-02-26 18:59:38 +00:00
parent cec7bb732c
commit 8fffaf8c7a
6 changed files with 48 additions and 28 deletions

View File

@ -1,3 +1,18 @@
2006-02-26 Neil Williams <linux@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@asynchronous.org>
* src/report/utility-reports/Makefile.am (SCM_FILE_LINKS):
@ -3006,4 +3021,3 @@ r12231 | chris | 2006-01-01 17:26:15 -0500 (Sun, 01 Jan 2006) | 9 lines
* lots of control-flow simplification
* factor one chunk out into get_any_account()
* Comment some things that are bogus or need improvement

View File

@ -76,5 +76,5 @@ void gnc_engine_resume_events (void)
}
void gnc_engine_gen_event (QofEntity *entity, GNCEngineEventType event_type)
{
qof_event_gen(entity, event_type);
qof_event_gen(entity, event_type, NULL);
}

View File

@ -86,7 +86,7 @@ qof_book_new (void)
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 @@ qof_book_destroy (QofBook *book)
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.

View File

@ -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 @@ qof_event_generate (const GUID *guid, QofIdType e_type,
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

View File

@ -125,7 +125,6 @@ qof_event_register_handler (QofEventHandler handler, gpointer user_data)
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 @@ qof_event_resume (void)
}
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;
@ -233,8 +233,9 @@ qof_event_generate_internal (QofEntity *entity, QofEventId event_id)
}
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 @@ qof_event_generate_internal (QofEntity *entity, QofEventId event_id)
}
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 @@ qof_event_gen (QofEntity *entity, QofEventId event_id)
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 @@ qof_event_generate (const GUID *guid, QofIdType e_type,
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 ======================= */

View File

@ -1,6 +1,7 @@
/********************************************************************
* qofevent.h -- QOF event handling interface *
* Copyright 2000 Dave Peticolas <dave@krondo.com> *
* Copyright 2006 Neil Williams <linux@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 @@ any process can define their own events.
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 @@ void qof_event_unregister_handler (gint handler_id);
@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.
*