ui/common/menu.c

changeset 1107
22d58a28fea7
parent 1092
0accf125a65f
equal deleted inserted replaced
1106:785c2c75b2a5 1107:22d58a28fea7
42 static int menu_item_counter = 0; 42 static int menu_item_counter = 0;
43 43
44 static void *tmp_eventdata; 44 static void *tmp_eventdata;
45 static int tmp_eventdata_type; 45 static int tmp_eventdata_type;
46 46
47
48 static void* getvalue_wrapper(UiList *list, void *elm, int row, int col, void *userdata, UiBool *freeResult) {
49 ui_getvaluefunc getvalue = (ui_getvaluefunc)userdata;
50 return getvalue(elm, col);
51 }
52
53 static void* str_getvalue(UiList *list, void *elm, int row, int col, void *userdata, UiBool *freeResult) {
54 return elm;
55 }
56
57
47 void uic_set_tmp_eventdata(void *eventdata, int type) { 58 void uic_set_tmp_eventdata(void *eventdata, int type) {
48 tmp_eventdata = eventdata; 59 tmp_eventdata = eventdata;
49 tmp_eventdata_type = type; 60 tmp_eventdata_type = type;
50 } 61 }
51 62
206 UiMenuItemList*item = malloc(sizeof(UiMenuItemList)); 217 UiMenuItemList*item = malloc(sizeof(UiMenuItemList));
207 mitem_set_id(&item->item); 218 mitem_set_id(&item->item);
208 item->item.prev = NULL; 219 item->item.prev = NULL;
209 item->item.next = NULL; 220 item->item.next = NULL;
210 item->item.type = UI_MENU_ITEM_LIST; 221 item->item.type = UI_MENU_ITEM_LIST;
211 item->getvalue = args->getvalue; 222 if(args->getvalue2) {
223 item->getvalue = args->getvalue2;
224 item->getvaluedata = args->getvaluedata;
225 } else if(args->getvalue) {
226 item->getvalue = getvalue_wrapper;
227 item->getvaluedata = (void*)args->getvalue;
228 } else {
229 item->getvalue = str_getvalue;
230 }
212 item->callback = args->onselect; 231 item->callback = args->onselect;
213 item->userdata = args->onselectdata; 232 item->userdata = args->onselectdata;
214 item->varname = nl_strdup(args->varname); 233 item->varname = nl_strdup(args->varname);
215 item->addseparator = args->addseparator; 234 item->addseparator = args->addseparator;
216 235
221 UiMenuItemList* item = malloc(sizeof(UiMenuItemList)); 240 UiMenuItemList* item = malloc(sizeof(UiMenuItemList));
222 mitem_set_id(&item->item); 241 mitem_set_id(&item->item);
223 item->item.prev = NULL; 242 item->item.prev = NULL;
224 item->item.next = NULL; 243 item->item.next = NULL;
225 item->item.type = UI_MENU_CHECKITEM_LIST; 244 item->item.type = UI_MENU_CHECKITEM_LIST;
245 if(args->getvalue2) {
246 item->getvalue = args->getvalue2;
247 item->getvaluedata = args->getvaluedata;
248 } else if(args->getvalue) {
249 item->getvalue = getvalue_wrapper;
250 item->getvaluedata = (void*)args->getvalue;
251 } else {
252 item->getvalue = str_getvalue;
253 }
226 item->callback = args->onselect; 254 item->callback = args->onselect;
227 item->userdata = args->onselectdata; 255 item->userdata = args->onselectdata;
228 item->varname = nl_strdup(args->varname); 256 item->varname = nl_strdup(args->varname);
229 257
230 add_item((UiMenuItemI*)item); 258 add_item((UiMenuItemI*)item);
234 UiMenuItemList* item = malloc(sizeof(UiMenuItemList)); 262 UiMenuItemList* item = malloc(sizeof(UiMenuItemList));
235 mitem_set_id(&item->item); 263 mitem_set_id(&item->item);
236 item->item.prev = NULL; 264 item->item.prev = NULL;
237 item->item.next = NULL; 265 item->item.next = NULL;
238 item->item.type = UI_MENU_RADIOITEM_LIST; 266 item->item.type = UI_MENU_RADIOITEM_LIST;
267 if(args->getvalue2) {
268 item->getvalue = args->getvalue2;
269 item->getvaluedata = args->getvaluedata;
270 } else if(args->getvalue) {
271 item->getvalue = getvalue_wrapper;
272 item->getvaluedata = (void*)args->getvalue;
273 } else {
274 item->getvalue = str_getvalue;
275 }
239 item->callback = args->onselect; 276 item->callback = args->onselect;
240 item->userdata = args->onselectdata; 277 item->userdata = args->onselectdata;
241 item->varname = nl_strdup(args->varname); 278 item->varname = nl_strdup(args->varname);
242 279
243 add_item((UiMenuItemI*)item); 280 add_item((UiMenuItemI*)item);

mercurial