1 |
/* |
2 |
* menu_riscos.c -- menu creation, RISC OS |
3 |
*/ |
4 |
|
5 |
#include "gui.h" |
6 |
|
7 |
wimp_menu *gui_menu(unsigned int base, unsigned int items) |
8 |
{ |
9 |
char *text; |
10 |
unsigned int line, i; |
11 |
wimp_menu *menu; |
12 |
|
13 |
menu = malloc(wimp_SIZEOF_MENU(items)); |
14 |
if (menu == NULL) gui_raise_error("out of memory"); |
15 |
|
16 |
menu->title_data.indirected_text.text = gui_message[base]; |
17 |
menu->title_fg = wimp_COLOUR_BLACK; |
18 |
menu->title_bg = wimp_COLOUR_VERY_LIGHT_GREY; |
19 |
menu->work_fg = wimp_COLOUR_RED; |
20 |
menu->work_bg = wimp_COLOUR_WHITE; |
21 |
menu->width = 300; |
22 |
menu->height = wimp_MENU_ITEM_HEIGHT; |
23 |
menu->gap = wimp_MENU_ITEM_GAP; |
24 |
|
25 |
for (i = 0; i < items; i++) |
26 |
{ |
27 |
text = gui_message[base + 1 + i]; |
28 |
|
29 |
line = (text[0] == '-'); if (line) text++; |
30 |
menu->entries[i].menu_flags = (i == 0 ? wimp_MENU_TITLE_INDIRECTED : 0) | |
31 |
(i == items-1 ? wimp_MENU_LAST : 0) | |
32 |
(line ? wimp_MENU_SEPARATE : 0); |
33 |
menu->entries[i].sub_menu = wimp_NO_SUB_MENU; |
34 |
menu->entries[i].icon_flags = wimp_ICON_TEXT | wimp_ICON_VCENTRED | wimp_ICON_INDIRECTED | |
35 |
wimp_COLOUR_BLACK << wimp_ICON_FG_COLOUR_SHIFT | |
36 |
wimp_COLOUR_WHITE << wimp_ICON_BG_COLOUR_SHIFT; |
37 |
menu->entries[i].data.indirected_text.text = text; |
38 |
menu->entries[i].data.indirected_text.validation = (char *) ""; |
39 |
} |
40 |
|
41 |
return menu; |
42 |
} |
43 |
|
44 |
void gui_menu_attach(wimp_menu *menu, unsigned int item, wimp_menu *submenu) |
45 |
{ |
46 |
menu->entries[item].sub_menu = submenu; |
47 |
} |