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 <stdio.h>
30 #include <stdlib.h>
31
32 #include "stock.h"
33 #include "../ui/properties.h"
34 #include <ucx/map.h>
35
36 static UcxMap *stock_items;
37
38 void ui_stock_init() {
39 stock_items = ucx_map_new(
64);
40
41 ui_add_stock_item(
UI_STOCK_NEW,
"New",
"Ctrl<Key>N",
"Ctrl+N",
NULL);
42 ui_add_stock_item(
UI_STOCK_OPEN,
"Open",
"Ctrl<Key>O",
"Ctrl+O",
NULL);
43 ui_add_stock_item(
UI_STOCK_SAVE,
"Save",
"Ctrl<Key>S",
"Ctrl+S",
NULL);
44 ui_add_stock_item(
UI_STOCK_SAVE_AS,
"Save as ...",
NULL,
NULL,
NULL);
45 ui_add_stock_item(
UI_STOCK_REVERT_TO_SAVED,
"Revert to saved",
NULL,
NULL,
NULL);
46 ui_add_stock_item(
UI_STOCK_CLOSE,
"Close",
"Ctrl<Key>W",
"Ctrl+W",
NULL);
47 ui_add_stock_item(
UI_STOCK_UNDO,
"Undo",
"Ctrl<Key>Z",
"Ctrl+Z",
NULL);
48 ui_add_stock_item(
UI_STOCK_REDO,
"Redo",
NULL,
NULL,
NULL);
49 ui_add_stock_item(
UI_STOCK_GO_BACK,
"Back",
NULL,
NULL,
NULL);
50 ui_add_stock_item(
UI_STOCK_GO_FORWARD,
"Forward",
NULL,
NULL,
NULL);
51 ui_add_stock_item(
UI_STOCK_CUT,
"Cut",
"Ctrl<Key>X",
"Ctrl+X",
NULL);
52 ui_add_stock_item(
UI_STOCK_COPY,
"Copy",
"Ctrl<Key>C",
"Ctrl+C",
NULL);
53 ui_add_stock_item(
UI_STOCK_PASTE,
"Paste",
"Ctrl<Key>V",
"Ctrl+V",
NULL);
54 ui_add_stock_item(
UI_STOCK_DELETE,
"Delete",
NULL,
NULL,
NULL);
55 }
56
57 void ui_add_stock_item(
char *id,
char *label,
char *accelerator,
char *accelerator_label,
void *icon) {
58 UiStockItem *i = malloc(
sizeof(UiStockItem));
59 i->label = label;
60 i->accelerator = accelerator;
61 i->accelerator_label = accelerator_label;
62
63
64 ucx_map_cstr_put(stock_items, id, i);
65 }
66
67 UiStockItem* ui_get_stock_item(
char *id) {
68 UiStockItem *item = ucx_map_cstr_get(stock_items, id);
69 if(item) {
70 char *label = uistr_n(id);
71 if(label) {
72 item->label = label;
73 }
74 }
75 return item;
76 }
77