mc/lib/event/internal.h
Slava Zanko a5195d285a Added new engine for universal event system.
Example:

gboolean mkdir_callback(const gchar *event_group, const gchar *event_name, gpointer init_data, gpointer event_data)
{
    ... /* some action for handle event */
    return TRUE; /* got chance to run other callbacks for this event or */
    return FALSE; /* break execution for other callbacks */
}

mc_event_add ("filesystem", "mkdir", mkdir_callback, "some init data", NULL);
mc_event_add ("filesystem", "mkdir", mkdir_log_callback, "some init data", NULL);
mc_event_add ("filesystem", "mkdir", third_callback, NULL, NULL);

/*
    Last add - first run. In this case execution order is
 * third_callback
 * mkdir_log_callback
 * mkdir_callback
 if third_callback fuctions will return FALSE, then other callbacks
 (mkdir_log_callback and mkdir_callback) never run!
*/

... /* some code */

/* for example, after pressing F7 */
mc_event_raise("filesystem", "mkdir", "some event_data... path to directory");

Signed-off-by: Slava Zanko <slavazanko@gmail.com>
2011-03-21 11:46:40 +02:00

32 lines
1.2 KiB
C

#ifndef MC_EVENT_INTERNAL_H
#define MC_EVENT_INTERNAL_H
/*** typedefs(not structures) and defined constants ********************/
/*** enums *************************************************************/
/*** structures declarations (and typedefs of structures)***************/
typedef struct mc_event_callback_struct
{
gpointer init_data;
mc_event_callback_func_t callback;
} mc_event_callback_t;
/*** global variables defined in .c file *******************************/
extern GTree *mc_event_grouplist;
/*** declarations of public functions **********************************/
GTree *mc_event_get_event_group_by_name (const gchar * event_group_name, gboolean create_new,
GError ** mcerror);
GPtrArray *mc_event_get_event_by_name (GTree * event_group, const gchar * event_name,
gboolean create_new, GError ** mcerror);
mc_event_callback_t *mc_event_is_callback_in_array (GPtrArray * callbacks,
mc_event_callback_func_t event_callback);
/*** inline functions ****************************************************************************/
#endif /* MC_EVENT_INTERNAL_H */