--- a/make/vs/testapp/main.c Tue Oct 03 21:10:15 2023 +0200 +++ b/make/vs/testapp/main.c Thu Oct 05 18:50:42 2023 +0200 @@ -41,6 +41,10 @@ UiString* text; UiString* password; UiList* list; + UiString* t1; + UiString* t2; + UiString* t3; + UiList* list2; } WindowData; void action1(UiEvent* event, void* data) { @@ -68,6 +72,8 @@ printf("onchange: %d\n", event->intval); } + + void action_listselection_changed(UiEvent* event, void* data) { printf("selection changed\n"); UiListSelection* sel = event->eventdata; @@ -86,6 +92,37 @@ } } +typedef struct TableData { + char* col1; + char* col2; + char* col3; +} TableData; + +void* table_getvalue(void* data, int i) { + TableData* t = data; + switch (i) { + case 0: return t->col1; + case 1: return t->col2; + case 2: return t->col3; + } + return NULL; +} + +void action_add(UiEvent* event, void* data) { + WindowData* wdata = event->window; + char* t1 = wdata->t1->get(wdata->t1); + char* t2 = wdata->t2->get(wdata->t2); + char* t3 = wdata->t3->get(wdata->t3); + + TableData* tdat = malloc(sizeof(TableData)); + tdat->col1 = _strdup(t1); + tdat->col2 = _strdup(t2); + tdat->col3 = _strdup(t3); + ui_list_append(wdata->list2, tdat); + wdata->list2->update(wdata->list2, 0); + +} + void application_startup(UiEvent* event, void* data) { UiObject* obj = ui_window("Test", NULL); WindowData* wdata = ui_malloc(obj->ctx, sizeof(WindowData)); @@ -96,6 +133,10 @@ wdata->text = ui_string_new(obj->ctx, "text"); wdata->password = ui_string_new(obj->ctx, "password"); wdata->list = ui_list_new(obj->ctx, "list"); + wdata->list2 = ui_list_new(obj->ctx, "list2"); + wdata->t1 = ui_string_new(obj->ctx, "t1"); + wdata->t2 = ui_string_new(obj->ctx, "t2"); + wdata->t3 = ui_string_new(obj->ctx, "t3"); ui_list_append(wdata->list, "Hello"); ui_list_append(wdata->list, "World"); @@ -104,6 +145,23 @@ ui_list_append(wdata->list, "Item5"); ui_list_append(wdata->list, "Item6"); + TableData* td1 = malloc(sizeof(TableData)); + TableData* td2 = malloc(sizeof(TableData)); + TableData* td3 = malloc(sizeof(TableData)); + td1->col1 = "a1"; + td1->col2 = "b1"; + td1->col3 = "c1"; + td2->col1 = "a2"; + td2->col2 = "b2"; + td2->col3 = "b3"; + td3->col1 = "a3"; + td3->col2 = "b3"; + td3->col3 = "c3"; + + ui_list_append(wdata->list2, td1); + ui_list_append(wdata->list2, td2); + ui_list_append(wdata->list2, td3); + ui_scrolledwindow0(obj) { ui_grid(obj, .margin = 10, .columnspacing = 5, .rowspacing = 20) { ui_button(obj, .label = "Button1", .onclick = action1, .onclickdata = "action1"); @@ -159,6 +217,22 @@ ui_button(obj, .label = "Tab 2 Button"); } } + + ui_newline(obj); + ui_textfield(obj, .value = wdata->t1); + ui_textfield(obj, .value = wdata->t2); + ui_textfield(obj, .value = wdata->t3); + ui_newline(obj); + ui_button(obj, .label = "Add", .onclick = action_add); + ui_newline(obj); + + + ui_newline(obj); + + UiModel* model = ui_model(obj->ctx, UI_STRING, "Col 1", UI_STRING, "Col 2", UI_STRING, "Col 3", -1); + model->getvalue = table_getvalue; + ui_table(obj, .colspan = 3, .model = model, .list = wdata->list2); + ui_model_free(obj->ctx, model); } }