| 1211 } else { |
1211 } else { |
| 1212 return p->email; |
1212 return p->email; |
| 1213 } |
1213 } |
| 1214 } |
1214 } |
| 1215 |
1215 |
| |
1216 void list_onselection(UiEvent *event, void *userdata) { |
| |
1217 UiListSelection *sel = event->eventdata; |
| |
1218 for (int i=0;i<sel->count;i++) { |
| |
1219 printf("selection: %d\n", sel->rows[i]); |
| |
1220 } |
| |
1221 printf("\n"); |
| |
1222 fflush(stdout); |
| |
1223 } |
| |
1224 |
| 1216 void application_startup(UiEvent *event, void *data) { |
1225 void application_startup(UiEvent *event, void *data) { |
| 1217 UiObject *obj = ui_window("Test w32", NULL); |
1226 UiObject *obj = ui_window("Test w32", NULL); |
| 1218 |
1227 |
| 1219 UiList *list = ui_list_new(obj->ctx, "persons"); |
1228 UiList *list = ui_list_new(obj->ctx, "persons"); |
| 1220 ui_list_append(list, &person1); |
1229 ui_list_append(list, &person1); |
| 1221 ui_list_append(list, &person2); |
1230 ui_list_append(list, &person2); |
| 1222 |
1231 |
| 1223 ui_grid(obj, .margin = 10, .columnspacing = 10, .rowspacing = 10, .fill = TRUE) { |
1232 ui_grid(obj, .margin = 10, .columnspacing = 10, .rowspacing = 10, .fill = TRUE) { |
| 1224 UiModel *model = ui_model(obj->ctx, UI_STRING, "Name", UI_STRING, "Email", -1); |
1233 UiModel *model = ui_model(obj->ctx, UI_STRING, "Name", UI_STRING, "Email", -1); |
| 1225 ui_table(obj, .fill = TRUE, .varname = "persons", .model = model, .getvalue = person_getvalue); |
1234 ui_table(obj, .fill = TRUE, .varname = "persons", .model = model, .getvalue = person_getvalue, .onselection = list_onselection); |
| 1226 ui_model_free(obj->ctx, model); |
1235 ui_model_free(obj->ctx, model); |
| 1227 } |
1236 } |
| 1228 |
1237 |
| 1229 |
1238 |
| 1230 |
1239 |