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-01-17 01:01:38 +03:00
|
|
|
#ifndef MC__EVENT_H
|
|
|
|
#define MC__EVENT_H
|
|
|
|
|
2011-01-17 12:44:25 +03:00
|
|
|
#include "event-types.h"
|
|
|
|
|
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-01-17 01:01:38 +03:00
|
|
|
/*** typedefs(not structures) and defined constants **********************************************/
|
|
|
|
|
|
|
|
typedef gboolean (*mc_event_callback_func_t) (const gchar *, const gchar *, gpointer, gpointer);
|
|
|
|
|
|
|
|
/*** enums ***************************************************************************************/
|
|
|
|
|
|
|
|
/*** structures declarations (and typedefs of structures)*****************************************/
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
const char *event_group_name;
|
|
|
|
const char *event_name;
|
|
|
|
mc_event_callback_func_t cb;
|
|
|
|
gpointer init_data;
|
|
|
|
} event_init_t;
|
|
|
|
|
|
|
|
/*** global variables defined in .c file *********************************************************/
|
|
|
|
|
|
|
|
/*** declarations of public functions ************************************************************/
|
|
|
|
|
|
|
|
/* event.c: */
|
|
|
|
gboolean mc_event_init (GError **);
|
|
|
|
gboolean mc_event_deinit (GError **);
|
|
|
|
|
|
|
|
|
|
|
|
/* manage.c: */
|
|
|
|
gboolean mc_event_add (const gchar *, const gchar *, mc_event_callback_func_t, gpointer, GError **);
|
|
|
|
void mc_event_del (const gchar *, const gchar *, mc_event_callback_func_t);
|
|
|
|
void mc_event_destroy (const gchar *, const gchar *);
|
|
|
|
void mc_event_group_del (const gchar *);
|
|
|
|
gboolean mc_event_present (const gchar *, const gchar *);
|
|
|
|
gboolean mc_event_mass_add (event_init_t *, GError **);
|
|
|
|
|
|
|
|
/* raise.c: */
|
|
|
|
gboolean mc_event_raise (const gchar *, const gchar *, gpointer);
|
|
|
|
|
|
|
|
|
|
|
|
/*** inline functions ****************************************************************************/
|
|
|
|
|
|
|
|
#endif /* MC__EVENT_H */
|