| 59 char *name = args->name ? (char*)args->name : "button"; |
59 char *name = args->name ? (char*)args->name : "button"; |
| 60 Widget button = XmCreatePushButton(parent, name, xargs, n); |
60 Widget button = XmCreatePushButton(parent, name, xargs, n); |
| 61 XtManageChild(button); |
61 XtManageChild(button); |
| 62 ui_container_add(ctn, button); |
62 ui_container_add(ctn, button); |
| 63 |
63 |
| 64 ui_set_widget_groups(obj->ctx, button, args->groups); |
64 ui_set_widget_groups(obj->ctx, button, args->states); |
| 65 |
65 |
| 66 if(args->onclick) { |
66 if(args->onclick) { |
| 67 UiEventData *eventdata = malloc(sizeof(UiEventData)); |
67 UiEventData *eventdata = malloc(sizeof(UiEventData)); |
| 68 eventdata->callback = args->onclick; |
68 eventdata->callback = args->onclick; |
| 69 eventdata->userdata = args->onclickdata; |
69 eventdata->userdata = args->onclickdata; |
| 116 char *name = args->name ? (char*)args->name : "togglebutton"; |
116 char *name = args->name ? (char*)args->name : "togglebutton"; |
| 117 Widget button = XmCreateToggleButton(parent, name, xargs, n); |
117 Widget button = XmCreateToggleButton(parent, name, xargs, n); |
| 118 XtManageChild(button); |
118 XtManageChild(button); |
| 119 ui_container_add(ctn, button); |
119 ui_container_add(ctn, button); |
| 120 |
120 |
| 121 ui_set_widget_groups(obj->ctx, button, args->groups); |
121 ui_set_widget_groups(obj->ctx, button, args->states); |
| 122 |
122 |
| 123 ui_bind_togglebutton(obj, button, args->varname, args->value, args->onchange, args->onchangedata, args->enable_group); |
123 ui_bind_togglebutton(obj, button, args->varname, args->value, args->onchange, args->onchangedata, args->enable_state); |
| 124 |
124 |
| 125 XmStringFree(label); |
125 XmStringFree(label); |
| 126 return button; |
126 return button; |
| 127 } |
127 } |
| 128 |
128 |
| 144 char *name = args->name ? (char*)args->name : "button"; |
144 char *name = args->name ? (char*)args->name : "button"; |
| 145 Widget button = XmCreateToggleButton(parent, name, xargs, n); |
145 Widget button = XmCreateToggleButton(parent, name, xargs, n); |
| 146 XtManageChild(button); |
146 XtManageChild(button); |
| 147 ui_container_add(ctn, button); |
147 ui_container_add(ctn, button); |
| 148 |
148 |
| 149 ui_set_widget_groups(obj->ctx, button, args->groups); |
149 ui_set_widget_groups(obj->ctx, button, args->states); |
| 150 |
150 |
| 151 ui_bind_togglebutton(obj, button, args->varname, args->value, args->onchange, args->onchangedata, args->enable_group); |
151 ui_bind_togglebutton(obj, button, args->varname, args->value, args->onchange, args->onchangedata, args->enable_state); |
| 152 |
152 |
| 153 XmStringFree(label); |
153 XmStringFree(label); |
| 154 return button; |
154 return button; |
| 155 } |
155 } |
| 156 |
156 |
| 160 |
160 |
| 161 static void togglebutton_changed(Widget w, UiVarEventData *event, XmToggleButtonCallbackStruct *tb) { |
161 static void togglebutton_changed(Widget w, UiVarEventData *event, XmToggleButtonCallbackStruct *tb) { |
| 162 if(event->value > 0) { |
162 if(event->value > 0) { |
| 163 // button in configured to enable/disable states |
163 // button in configured to enable/disable states |
| 164 if(tb->set) { |
164 if(tb->set) { |
| 165 ui_set_group(event->obj->ctx, event->value); |
165 ui_set_state(event->obj->ctx, event->value); |
| 166 } else { |
166 } else { |
| 167 ui_unset_group(event->obj->ctx, event->value); |
167 ui_unset_state(event->obj->ctx, event->value); |
| 168 } |
168 } |
| 169 } |
169 } |
| 170 |
170 |
| 171 UiEvent e; |
171 UiEvent e; |
| 172 e.obj = event->obj; |
172 e.obj = event->obj; |
| 222 (XtCallbackProc)togglebutton_changed, |
222 (XtCallbackProc)togglebutton_changed, |
| 223 event); |
223 event); |
| 224 XtAddCallback( |
224 XtAddCallback( |
| 225 widget, |
225 widget, |
| 226 XmNdestroyCallback, |
226 XmNdestroyCallback, |
| 227 (XtCallbackProc)ui_destroy_eventdata, |
227 (XtCallbackProc)ui_destroy_data, |
| 228 event); |
228 event); |
| 229 } |
229 } |
| 230 |
230 |
| 231 int64_t ui_togglebutton_get(UiInteger *i) { |
231 int64_t ui_togglebutton_get(UiInteger *i) { |
| 232 Widget togglebutton = i->obj; |
232 Widget togglebutton = i->obj; |
| 247 |
247 |
| 248 static void radiobutton_changed(Widget w, UiVarEventData *event, XmToggleButtonCallbackStruct *tb) { |
248 static void radiobutton_changed(Widget w, UiVarEventData *event, XmToggleButtonCallbackStruct *tb) { |
| 249 if(event->value > 0) { |
249 if(event->value > 0) { |
| 250 // button in configured to enable/disable states |
250 // button in configured to enable/disable states |
| 251 if(tb->set) { |
251 if(tb->set) { |
| 252 ui_set_group(event->obj->ctx, event->value); |
252 ui_set_state(event->obj->ctx, event->value); |
| 253 } else { |
253 } else { |
| 254 ui_unset_group(event->obj->ctx, event->value); |
254 ui_unset_state(event->obj->ctx, event->value); |
| 255 } |
255 } |
| 256 } |
256 } |
| 257 |
257 |
| 258 if(!tb->set) { |
258 if(!tb->set) { |
| 259 return; // only handle set-events |
259 return; // only handle set-events |
| 363 char *name = args->name ? (char*)args->name : "button"; |
363 char *name = args->name ? (char*)args->name : "button"; |
| 364 Widget button = XmCreateToggleButton(parent, name, xargs, n); |
364 Widget button = XmCreateToggleButton(parent, name, xargs, n); |
| 365 XtManageChild(button); |
365 XtManageChild(button); |
| 366 ui_container_add(ctn, button); |
366 ui_container_add(ctn, button); |
| 367 |
367 |
| 368 ui_set_widget_groups(obj->ctx, button, args->groups); |
368 ui_set_widget_groups(obj->ctx, button, args->states); |
| 369 |
369 |
| 370 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_INTEGER); |
370 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_INTEGER); |
| 371 if(var) { |
371 if(var) { |
| 372 UiInteger *value = var->value; |
372 UiInteger *value = var->value; |
| 373 CxList *rb = value->obj; |
373 CxList *rb = value->obj; |
| 400 event->obj = obj; |
400 event->obj = obj; |
| 401 event->callback = args->onchange; |
401 event->callback = args->onchange; |
| 402 event->userdata = args->onchangedata; |
402 event->userdata = args->onchangedata; |
| 403 event->observers = NULL; |
403 event->observers = NULL; |
| 404 event->var = var; |
404 event->var = var; |
| 405 event->value = args->enable_group; |
405 event->value = args->enable_state; |
| 406 XtAddCallback( |
406 XtAddCallback( |
| 407 button, |
407 button, |
| 408 XmNvalueChangedCallback, |
408 XmNvalueChangedCallback, |
| 409 (XtCallbackProc)radiobutton_changed, |
409 (XtCallbackProc)radiobutton_changed, |
| 410 event); |
410 event); |
| 411 XtAddCallback( |
411 XtAddCallback( |
| 412 button, |
412 button, |
| 413 XmNdestroyCallback, |
413 XmNdestroyCallback, |
| 414 (XtCallbackProc)ui_destroy_eventdata, |
414 (XtCallbackProc)ui_destroy_data, |
| 415 event); |
415 event); |
| 416 |
416 |
| 417 XmStringFree(label); |
417 XmStringFree(label); |
| 418 return button; |
418 return button; |
| 419 |
419 |