#include "action.h"
#include "context.h"
#include <cx/string.h>
void uic_add_action(
UiContext *ctx,
const char *name,
ui_callback callback,
void *userdata,
const char *accelerator,
const char *accelerator_text)
{
if(!name) {
return;
}
UiAction action;
action.name = ui_strdup(ctx, name);
action.callback = callback;
action.userdata = userdata;
action.accelerator = accelerator ? ui_strdup(ctx, accelerator) :
NULL;
action.accelerator_text = accelerator_text ? ui_strdup(ctx, accelerator_text) :
NULL;
cxMapPut(ctx->actions, name, &action);
cxMapRehash(ctx->actions);
}
void uic_bind_action(
UiContext *ctx,
const char *action,
void *bind_obj,
ui_action_binding_set_enabled_func set_enabled,
ui_action_binding_set_accelerator_text_func set_accelerator_text)
{
if(!action) {
return;
}
UiActionBinding binding;
binding.action = ui_strdup(ctx, action);
binding.userdata = bind_obj;
binding.set_enabled = set_enabled;
binding.set_accelerator_text = set_accelerator_text;
cxListAdd(ctx->action_bindings, &binding);
}