--- a/application/main.c Tue Mar 18 17:47:40 2025 +0100 +++ b/application/main.c Sun Mar 23 18:09:24 2025 +0100 @@ -35,6 +35,7 @@ #include <cx/utils.h> #include "cx/string.h" +#include "cx/list.h" #if !defined(UI_COCOA) && !defined(UI_MOTIF) @@ -54,6 +55,7 @@ UiList *srclist2; UiList *items; UiGeneric *web; + UiString *list_input; } MyDocument; MyDocument *doc1; @@ -168,9 +170,9 @@ ui_list_append(doc->list, "test2"); ui_list_append(doc->list, "test3"); doc->list2 = ui_list_new(docctx, "list2"); - ui_list_append(doc->list2, "test1"); - ui_list_append(doc->list2, "test2"); - ui_list_append(doc->list2, "test3"); + ui_list_append(doc->list2, strdup("test1")); + ui_list_append(doc->list2, strdup("test2")); + ui_list_append(doc->list2, strdup("test3")); doc->radio = ui_int_new(docctx, "radio"); doc->tabview = ui_int_new(docctx, "tabview"); doc->image = ui_generic_new(docctx, "image"); @@ -190,6 +192,8 @@ doc->web = ui_generic_new(docctx, NULL); + doc->list_input = ui_string_new(docctx, "list_input"); + //doc->text = ui_text_new(docctx, "text"); return doc; } @@ -348,6 +352,17 @@ printf("dropdown[%d]: %s\n", event->intval, event->eventdata); } +static void action_update_list(UiEvent *event, void *userdata) { + MyDocument *doc = event->document; + + char *newvalue = ui_get(doc->list_input); + CxList *list2 = doc->list2->data; + cxListRemove(list2, 1); + cxListInsert(list2, 1, strdup(newvalue)); + + doc->list2->update(doc->list2, 1); +} + void application_startup(UiEvent *event, void *data) { // global list UiContext *global = ui_global_context(); @@ -436,6 +451,10 @@ ui_table(obj, .model = model, .list = doc->list2, .colspan = 2, .fill = UI_ON, .contextmenu = menubuilder, .multiselection = TRUE, .onactivate = action_table_activate, .onactivatedata = "activate", .onselection = action_table_activate, .onselectiondata = "selection"); + ui_hbox(obj, .fill = UI_OFF) { + ui_textfield(obj, .value = doc->list_input); + ui_button(obj, .label = "Update List Item 1", .onclick = action_update_list); + } } ui_tab(obj, "Tab 2") { ui_button(obj, .label = "Button 1 Start Thread", .onclick=action_start_thread);