mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
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:
parent
cec7bb732c
commit
8fffaf8c7a
16
ChangeLog
16
ChangeLog
@ -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>
|
2006-02-26 Joshua Sled <jsled@asynchronous.org>
|
||||||
|
|
||||||
* src/report/utility-reports/Makefile.am (SCM_FILE_LINKS):
|
* 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
|
* lots of control-flow simplification
|
||||||
* factor one chunk out into get_any_account()
|
* factor one chunk out into get_any_account()
|
||||||
* Comment some things that are bogus or need improvement
|
* Comment some things that are bogus or need improvement
|
||||||
|
|
||||||
|
@ -76,5 +76,5 @@ void gnc_engine_resume_events (void)
|
|||||||
}
|
}
|
||||||
void gnc_engine_gen_event (QofEntity *entity, GNCEngineEventType event_type)
|
void gnc_engine_gen_event (QofEntity *entity, GNCEngineEventType event_type)
|
||||||
{
|
{
|
||||||
qof_event_gen(entity, event_type);
|
qof_event_gen(entity, event_type, NULL);
|
||||||
}
|
}
|
||||||
|
@ -86,7 +86,7 @@ qof_book_new (void)
|
|||||||
qof_book_init(book);
|
qof_book_init(book);
|
||||||
qof_object_book_begin (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);
|
LEAVE ("book=%p", book);
|
||||||
return book;
|
return book;
|
||||||
}
|
}
|
||||||
@ -108,7 +108,7 @@ qof_book_destroy (QofBook *book)
|
|||||||
ENTER ("book=%p", book);
|
ENTER ("book=%p", book);
|
||||||
|
|
||||||
book->shutting_down = TRUE;
|
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.
|
/* Call the list of finalizers, let them do their thing.
|
||||||
* Do this before tearing into the rest of the book.
|
* Do this before tearing into the rest of the book.
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
/* for backwards compatibility - to be moved back to qofevent.c in libqof2 */
|
/* for backwards compatibility - to be moved back to qofevent.c in libqof2 */
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
GNCEngineEventHandler old_handler;
|
GNCEngineEventHandler old_handler; /** \deprecated */
|
||||||
QofEventHandler handler;
|
QofEventHandler handler;
|
||||||
gpointer user_data;
|
gpointer user_data;
|
||||||
|
|
||||||
@ -46,6 +46,6 @@ qof_event_generate (const GUID *guid, QofIdType e_type,
|
|||||||
QofEventId event_id);
|
QofEventId event_id);
|
||||||
|
|
||||||
/* generates an event even when events are suspended! */
|
/* 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
|
#endif
|
||||||
|
@ -125,7 +125,6 @@ qof_event_register_handler (QofEventHandler handler, gpointer user_data)
|
|||||||
hi->handler_id = handler_id;
|
hi->handler_id = handler_id;
|
||||||
|
|
||||||
handlers = g_list_prepend (handlers, hi);
|
handlers = g_list_prepend (handlers, hi);
|
||||||
|
|
||||||
LEAVE ("(handler=%p, data=%p) handler_id=%d", handler, user_data, handler_id);
|
LEAVE ("(handler=%p, data=%p) handler_id=%d", handler, user_data, handler_id);
|
||||||
return handler_id;
|
return handler_id;
|
||||||
}
|
}
|
||||||
@ -197,7 +196,8 @@ qof_event_resume (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static 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 *node;
|
||||||
GList *next_node = NULL;
|
GList *next_node = NULL;
|
||||||
@ -212,10 +212,10 @@ qof_event_generate_internal (QofEntity *entity, QofEventId event_id)
|
|||||||
|
|
||||||
switch (event_id)
|
switch (event_id)
|
||||||
{
|
{
|
||||||
case QOF_EVENT_NONE: {
|
case QOF_EVENT_NONE: {
|
||||||
/* if none, don't log, just return. */
|
/* if none, don't log, just return. */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
handler_run_level++;
|
handler_run_level++;
|
||||||
@ -233,8 +233,9 @@ qof_event_generate_internal (QofEntity *entity, QofEventId event_id)
|
|||||||
}
|
}
|
||||||
if (hi->handler)
|
if (hi->handler)
|
||||||
{
|
{
|
||||||
PINFO("id=%d hi=%p han=%p", hi->handler_id, hi, hi->handler);
|
PINFO("id=%d hi=%p han=%p data=%p", hi->handler_id, hi,
|
||||||
hi->handler (entity, event_id, hi->user_data);
|
hi->handler, event_data);
|
||||||
|
hi->handler (entity, event_id, hi->user_data, event_data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
handler_run_level--;
|
handler_run_level--;
|
||||||
@ -261,16 +262,16 @@ qof_event_generate_internal (QofEntity *entity, QofEventId event_id)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
qof_event_force (QofEntity *entity, QofEventId event_id)
|
qof_event_force (QofEntity *entity, QofEventId event_id, gpointer event_data)
|
||||||
{
|
{
|
||||||
if (!entity)
|
if (!entity)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
qof_event_generate_internal (entity, event_id);
|
qof_event_generate_internal (entity, event_id, event_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
qof_event_gen (QofEntity *entity, QofEventId event_id)
|
qof_event_gen (QofEntity *entity, QofEventId event_id, gpointer event_data)
|
||||||
{
|
{
|
||||||
if (!entity)
|
if (!entity)
|
||||||
return;
|
return;
|
||||||
@ -278,7 +279,7 @@ qof_event_gen (QofEntity *entity, QofEventId event_id)
|
|||||||
if (suspend_counter)
|
if (suspend_counter)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
qof_event_generate_internal (entity, event_id);
|
qof_event_generate_internal (entity, event_id, event_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* deprecated */
|
/* deprecated */
|
||||||
@ -291,7 +292,7 @@ qof_event_generate (const GUID *guid, QofIdType e_type,
|
|||||||
ent.e_type = e_type;
|
ent.e_type = e_type;
|
||||||
if (suspend_counter) return;
|
if (suspend_counter) return;
|
||||||
/* caution: this is an incomplete entity! */
|
/* caution: this is an incomplete entity! */
|
||||||
qof_event_generate_internal (&ent, event_id);
|
qof_event_generate_internal (&ent, event_id, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* =========================== END OF FILE ======================= */
|
/* =========================== END OF FILE ======================= */
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/********************************************************************
|
/********************************************************************
|
||||||
* qofevent.h -- QOF event handling interface *
|
* qofevent.h -- QOF event handling interface *
|
||||||
* Copyright 2000 Dave Peticolas <dave@krondo.com> *
|
* 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 *
|
* This program is free software; you can redistribute it and/or *
|
||||||
* modify it under the terms of the GNU General Public License as *
|
* 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. */
|
event identifiers must be larger than this. */
|
||||||
#define QOF_DEFAULT_EVENT_LIMIT QOF_EVENT__LAST
|
#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 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.
|
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,
|
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 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
|
* @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
|
* @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 entity: the entity generating the event
|
||||||
@param event_type: the name of 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.
|
/** \brief Suspend all engine events.
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user