241 |
241 |
242 ls->object = obj; |
242 ls->object = obj; |
243 ls->menu = GTK_MENU_SHELL(p); |
243 ls->menu = GTK_MENU_SHELL(p); |
244 ls->index = index; |
244 ls->index = index; |
245 ls->oldcount = 0; |
245 ls->oldcount = 0; |
|
246 ls->getvalue = il->getvalue; |
246 |
247 |
247 UiVar* var = uic_create_var(ui_global_context(), il->varname, UI_VAR_LIST); |
248 UiVar* var = uic_create_var(ui_global_context(), il->varname, UI_VAR_LIST); |
248 ls->list = var->value; |
249 ls->list = var->value; |
249 |
250 |
250 ls->callback = il->callback; |
251 ls->callback = il->callback; |
272 mi = mi->next; |
273 mi = mi->next; |
273 i++; |
274 i++; |
274 } |
275 } |
275 } |
276 } |
276 |
277 |
277 char *str = ui_list_first(list->list); |
278 void* elm = ui_list_first(list->list); |
278 if(str) { |
279 if(elm) { |
279 GtkWidget *widget = gtk_separator_menu_item_new(); |
280 GtkWidget *widget = gtk_separator_menu_item_new(); |
280 gtk_menu_shell_insert(list->menu, widget, list->index); |
281 gtk_menu_shell_insert(list->menu, widget, list->index); |
281 gtk_widget_show(widget); |
282 gtk_widget_show(widget); |
282 } |
283 } |
|
284 |
|
285 ui_getvaluefunc getvalue = list->getvalue; |
283 int i = 1; |
286 int i = 1; |
284 while(str) { |
287 while(elm) { |
285 GtkWidget *widget = gtk_menu_item_new_with_label(str); |
288 char *label = (char*) (getvalue ? getvalue(elm, 0) : elm); |
|
289 |
|
290 GtkWidget *widget = gtk_menu_item_new_with_label(label); |
286 gtk_menu_shell_insert(list->menu, widget, list->index + i); |
291 gtk_menu_shell_insert(list->menu, widget, list->index + i); |
287 gtk_widget_show(widget); |
292 gtk_widget_show(widget); |
288 |
293 |
289 if(list->callback) { |
294 if(list->callback) { |
290 // TODO: use mempool |
295 // TODO: use mempool |