ui/motif/button.c

changeset 115
e57ca2747782
parent 112
c3f2f16fa4b8
equal deleted inserted replaced
114:3da24640513a 115:e57ca2747782
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;
75 (XtCallbackProc)ui_push_button_callback, 75 (XtCallbackProc)ui_push_button_callback,
76 eventdata); 76 eventdata);
77 XtAddCallback( 77 XtAddCallback(
78 button, 78 button,
79 XmNdestroyCallback, 79 XmNdestroyCallback,
80 (XtCallbackProc)ui_destroy_eventdata, 80 (XtCallbackProc)ui_destroy_data,
81 eventdata); 81 eventdata);
82 } 82 }
83 83
84 84
85 XmStringFree(label); 85 XmStringFree(label);
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
339 (XtCallbackProc)radiobutton_changed, 339 (XtCallbackProc)radiobutton_changed,
340 event); 340 event);
341 XtAddCallback( 341 XtAddCallback(
342 rbutton, 342 rbutton,
343 XmNdestroyCallback, 343 XmNdestroyCallback,
344 (XtCallbackProc)ui_destroy_eventdata, 344 (XtCallbackProc)ui_destroy_data,
345 event); 345 event);
346 } 346 }
347 347
348 UIWIDGET ui_radiobutton_create(UiObject* obj, UiToggleArgs *args) { 348 UIWIDGET ui_radiobutton_create(UiObject* obj, UiToggleArgs *args) {
349 Arg xargs[16]; 349 Arg xargs[16];
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

mercurial