implement radiobutton (Client)

Sun, 07 Dec 2025 19:20:48 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sun, 07 Dec 2025 19:20:48 +0100
changeset 976
e2763e880938
parent 975
e0ac49797a30
child 977
006d8f70467e

implement radiobutton (Client)

client/uiclient.c file | annotate | diff | comparison | revisions
ui/common/context.c file | annotate | diff | comparison | revisions
ui/common/context.h file | annotate | diff | comparison | revisions
ui/ui/toolkit.h file | annotate | diff | comparison | revisions
--- a/client/uiclient.c	Sun Dec 07 19:10:00 2025 +0100
+++ b/client/uiclient.c	Sun Dec 07 19:20:48 2025 +0100
@@ -277,7 +277,10 @@
     CxJsonValue *val = cxJsonObjGet(value, "value");
     UiInteger *i = NULL;
     if(val && val->type == CX_JSON_STRING) {
-        i = ui_int_new(obj->ctx, val->value.string.ptr);
+        i = ui_get_int_var(obj->ctx, val->value.string.ptr);
+        if(!i) {
+            i = ui_int_new(obj->ctx, val->value.string.ptr);
+        }
     }
     
     UiToggleArgs *args = json2toggle_args(args_value);
@@ -295,6 +298,10 @@
             w = ui_switch_create(obj, args);
             break;
         }
+        case 3: {
+            w = ui_radiobutton_create(obj, args);
+            break;
+        }
     }
     ui_toggle_args_free(args);
     client_reg_widget(obj, id, w);
--- a/ui/common/context.c	Sun Dec 07 19:10:00 2025 +0100
+++ b/ui/common/context.c	Sun Dec 07 19:20:48 2025 +0100
@@ -208,6 +208,14 @@
     return ctx_getvar(ctx, key);
 }
 
+UiVar* uic_get_var_t(UiContext *ctx,const char *name, UiVarType type) {
+    UiVar *var = uic_get_var(ctx, name);
+    if(var && var->type == type) {
+        return var;
+    }
+    return NULL;
+}
+
 UiVar* uic_create_var(UiContext *ctx, const char *name, UiVarType type) {
     UiVar *var = uic_get_var(ctx, name);
     if(var) {
@@ -685,3 +693,33 @@
 void  ui_set_destructor(void *mem, ui_destructor_func destr) {
     cxMempoolSetDestructor(mem, (cx_destructor_func)destr);
 }
+
+UiInteger* ui_get_int_var(UiContext *ctx, const char *name) {
+    UiVar *var = uic_get_var_t(ctx, name, UI_VAR_INTEGER);
+    return var ? var->value : NULL;
+}
+
+UiDouble* ui_get_double_var(UiContext *ctx, const char *name) {
+    UiVar *var = uic_get_var_t(ctx, name, UI_VAR_DOUBLE);
+    return var ? var->value : NULL;
+}
+
+UiString* ui_get_string_var(UiContext *ctx, const char *name) {
+    UiVar *var = uic_get_var_t(ctx, name, UI_VAR_STRING);
+    return var ? var->value : NULL;
+}
+
+UiText* ui_get_text_var(UiContext *ctx, const char *name) {
+    UiVar *var = uic_get_var_t(ctx, name, UI_VAR_TEXT);
+    return var ? var->value : NULL;
+}
+
+UiRange* ui_get_range_var(UiContext *ctx, const char *name) {
+    UiVar *var = uic_get_var_t(ctx, name, UI_VAR_RANGE);
+    return var ? var->value : NULL;
+}
+
+UiGeneric* ui_get_generic_var(UiContext *ctx, const char *name) {
+    UiVar *var = uic_get_var_t(ctx, name, UI_VAR_GENERIC);
+    return var ? var->value : NULL;
+}
--- a/ui/common/context.h	Sun Dec 07 19:10:00 2025 +0100
+++ b/ui/common/context.h	Sun Dec 07 19:20:48 2025 +0100
@@ -130,6 +130,7 @@
 void uic_context_detach_all(UiContext *ctx);
 
 UiVar* uic_get_var(UiContext *ctx, const char *name);
+UiVar* uic_get_var_t(UiContext *ctx, const char *name, UiVarType type);
 UiVar* uic_create_var(UiContext *ctx, const char *name, UiVarType type);
 UiVar* uic_create_value_var(UiContext *ctx, void *value);
 void* uic_create_value(UiContext *ctx, UiVarType type);
--- a/ui/ui/toolkit.h	Sun Dec 07 19:10:00 2025 +0100
+++ b/ui/ui/toolkit.h	Sun Dec 07 19:20:48 2025 +0100
@@ -635,6 +635,13 @@
 UIEXPORT void ui_var_set_string(UiContext *ctx, const char *name, char *value);
 UIEXPORT char* ui_var_get_string(UiContext *ctx, const char *name);
 
+UIEXPORT UiInteger* ui_get_int_var(UiContext *ctx, const char *name);
+UIEXPORT UiDouble* ui_get_double_var(UiContext *ctx, const char *name);
+UIEXPORT UiString* ui_get_string_var(UiContext *ctx, const char *name);
+UIEXPORT UiText* ui_get_text_var(UiContext *ctx, const char *name);
+UIEXPORT UiRange* ui_get_range_var(UiContext *ctx, const char *name);
+UIEXPORT UiGeneric* ui_get_generic_var(UiContext *ctx, const char *name);
+
 UIEXPORT UiObserver* ui_observer_new(ui_callback f, void *data);
 UIEXPORT UiObserver* ui_obsvlist_add(UiObserver *list, UiObserver *observer);
 UIEXPORT UiObserver* ui_add_observer(UiObserver *list, ui_callback f, void *data);

mercurial