make/vs/testapp/main.c

branch
newapi
changeset 203
0e94be3d9722
parent 202
9f309d1914a2
child 204
4a258d47f964
--- 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);
         }
     }   
 

mercurial