1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #include "action.h"
30 #include "context.h"
31
32 #include <cx/string.h>
33
34 void uic_add_action(
35 UiContext *ctx,
36 const char *name,
37 ui_callback callback,
38 void *userdata,
39 const char *accelerator,
40 const char *accelerator_text)
41 {
42 if(!name) {
43 return;
44 }
45
46 UiAction action;
47 action.name = ui_strdup(ctx, name);
48 action.callback = callback;
49 action.userdata = userdata;
50 action.accelerator = accelerator ? ui_strdup(ctx, accelerator) :
NULL;
51 action.accelerator_text = accelerator_text ? ui_strdup(ctx, accelerator_text) :
NULL;
52 cxMapPut(ctx->actions, name, &action);
53 cxMapRehash(ctx->actions);
54 }
55
56 void uic_bind_action(
57 UiContext *ctx,
58 const char *action,
59 void *bind_obj,
60 ui_action_binding_set_enabled_func set_enabled,
61 ui_action_binding_set_accelerator_text_func set_accelerator_text)
62 {
63 if(!action) {
64 return;
65 }
66
67 UiActionBinding binding;
68 binding.action = ui_strdup(ctx, action);
69 binding.userdata = bind_obj;
70 binding.set_enabled = set_enabled;
71 binding.set_accelerator_text = set_accelerator_text;
72 cxListAdd(ctx->action_bindings, &binding);
73 }
74