ui/common/menu.c

branch
newapi
changeset 207
93b9f502cb88
parent 205
b1ac0dd1d38b
child 208
f632bc0589ab
equal deleted inserted replaced
206:7ebc5a747c6f 207:93b9f502cb88
72 72
73 menu->label = label; 73 menu->label = label;
74 menu->items_begin = NULL; 74 menu->items_begin = NULL;
75 menu->items_end = NULL; 75 menu->items_end = NULL;
76 menu->parent = NULL; 76 menu->parent = NULL;
77
78 menu->end = 0;
77 79
78 add_menu(menu); 80 add_menu(menu);
79 cxListAdd(current, menu); 81 cxListAdd(current, menu);
80 } 82 }
81 83
87 89
88 menu->label = label; 90 menu->label = label;
89 menu->items_begin = NULL; 91 menu->items_begin = NULL;
90 menu->items_end = NULL; 92 menu->items_end = NULL;
91 menu->parent = NULL; 93 menu->parent = NULL;
94
95 menu->end = 0;
92 96
93 // add submenu to current menu 97 // add submenu to current menu
94 add_item((UiMenuItemI*)menu); 98 add_item((UiMenuItemI*)menu);
95 99
96 // set the submenu to current menu 100 // set the submenu to current menu
97 cxListInsert(current, 0, menu); 101 uic_add_menu_to_stack(menu);
98 } 102 }
99 103
100 void ui_submenu_end() { 104 void ui_submenu_end() {
101 if(current->size < 2) { 105 if(current->size < 2) {
102 return; 106 return;
103 } 107 }
108 cxListRemove(current, 0);
109 }
110
111 UIEXPORT void ui_menu_end(void) {
104 cxListRemove(current, 0); 112 cxListRemove(current, 0);
105 } 113 }
106 114
107 void ui_menuitem(char *label, ui_callback f, void *userdata) { 115 void ui_menuitem(char *label, ui_callback f, void *userdata) {
108 ui_menuitem_gr(label, f, userdata, -1); 116 ui_menuitem_gr(label, f, userdata, -1);
246 item->varname = varname; 254 item->varname = varname;
247 255
248 add_item((UiMenuItemI*)item); 256 add_item((UiMenuItemI*)item);
249 } 257 }
250 258
251 259 void uic_add_menu_to_stack(UiMenu* menu) {
260 cxListInsert(current, 0, menu);
261 }
252 262
253 UiMenu* uic_get_menu_list(void) { 263 UiMenu* uic_get_menu_list(void) {
254 return menus_begin; 264 return menus_begin;
255 } 265 }
256 266
267
268
269
270 UIEXPORT void ui_menu_close(void) {
271 UiMenu* menu = cxListAt(current, 0);
272 menu->end = 1;
273 }
274
275 UIEXPORT int ui_menu_is_open(void) {
276 UiMenu* menu = cxListAt(current, 0);
277 if (menu->end) {
278 ui_menu_end();
279 return 0;
280 }
281 return 1;
282 }

mercurial