| 186 e.document = event->obj->ctx->document; |
186 e.document = event->obj->ctx->document; |
| 187 e.eventdata = NULL; |
187 e.eventdata = NULL; |
| 188 e.eventdatatype = 0; |
188 e.eventdatatype = 0; |
| 189 e.intval = gtk_toggle_button_get_active(widget); |
189 e.intval = gtk_toggle_button_get_active(widget); |
| 190 e.set = ui_get_setop(); |
190 e.set = ui_get_setop(); |
| 191 event->callback(&e, event->userdata); |
191 |
| |
192 if(event->callback) { |
| |
193 event->callback(&e, event->userdata); |
| |
194 } |
| |
195 |
| |
196 if(event->action) { |
| |
197 uic_action_callback(&e, event->action); |
| |
198 } |
| 192 } |
199 } |
| 193 |
200 |
| 194 static void ui_togglebutton_enable_state_callback(GtkToggleButton *widget, UiEventData *event) { |
201 static void ui_togglebutton_enable_state_callback(GtkToggleButton *widget, UiEventData *event) { |
| 195 if(gtk_toggle_button_get_active(widget)) { |
202 if(gtk_toggle_button_get_active(widget)) { |
| 196 ui_set_state(event->obj->ctx, event->value); |
203 ui_set_state(event->obj->ctx, event->value); |
| 207 const char *tooltip, |
214 const char *tooltip, |
| 208 const char *varname, |
215 const char *varname, |
| 209 UiInteger *value, |
216 UiInteger *value, |
| 210 ui_callback onchange, |
217 ui_callback onchange, |
| 211 void *onchangedata, |
218 void *onchangedata, |
| |
219 const char *action, |
| 212 int enable_state) |
220 int enable_state) |
| 213 { |
221 { |
| 214 if(label) { |
222 if(label) { |
| 215 gtk_button_set_label(GTK_BUTTON(togglebutton), label); |
223 gtk_button_set_label(GTK_BUTTON(togglebutton), label); |
| 216 } |
224 } |
| 217 ui_button_set_icon_name(togglebutton, icon); |
225 ui_button_set_icon_name(togglebutton, icon); |
| 218 if(tooltip) { |
226 if(tooltip) { |
| 219 gtk_widget_set_tooltip_text(togglebutton, tooltip); |
227 gtk_widget_set_tooltip_text(togglebutton, tooltip); |
| |
228 } |
| |
229 |
| |
230 if(action) { |
| |
231 uic_bind_action(obj->ctx, action, togglebutton, (ui_enablefunc)ui_set_enabled); |
| |
232 UiAction *ui_action = uic_resolve_action(obj->ctx, action); |
| |
233 if(!ui_action) { |
| |
234 ui_set_enabled(togglebutton, FALSE); |
| |
235 } |
| 220 } |
236 } |
| 221 |
237 |
| 222 ui_bind_togglebutton( |
238 ui_bind_togglebutton( |
| 223 obj, |
239 obj, |
| 224 togglebutton, |
240 togglebutton, |
| 242 const char *varname, |
259 const char *varname, |
| 243 UiInteger *value, |
260 UiInteger *value, |
| 244 void (*toggled_callback)(void*, void*), |
261 void (*toggled_callback)(void*, void*), |
| 245 ui_callback onchange, |
262 ui_callback onchange, |
| 246 void *onchangedata, |
263 void *onchangedata, |
| |
264 const char *action, |
| 247 void (*enable_state_func)(void*, void*), |
265 void (*enable_state_func)(void*, void*), |
| 248 int enable_state) |
266 int enable_state) |
| 249 { |
267 { |
| 250 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, value, varname, UI_VAR_INTEGER); |
268 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, value, varname, UI_VAR_INTEGER); |
| 251 if (var) { |
269 if (var) { |
| 278 if(onchange) { |
296 if(onchange) { |
| 279 UiEventData *event = malloc(sizeof(UiEventData)); |
297 UiEventData *event = malloc(sizeof(UiEventData)); |
| 280 event->obj = obj; |
298 event->obj = obj; |
| 281 event->userdata = onchangedata; |
299 event->userdata = onchangedata; |
| 282 event->callback = onchange; |
300 event->callback = onchange; |
| |
301 event->action = action ? strdup(action) : NULL, |
| 283 event->value = 0; |
302 event->value = 0; |
| 284 event->customdata = NULL; |
303 event->customdata = NULL; |
| 285 event->customint = 0; |
304 event->customint = 0; |
| 286 |
305 |
| 287 g_signal_connect( |
306 g_signal_connect( |
| 290 G_CALLBACK(toggled_callback), |
309 G_CALLBACK(toggled_callback), |
| 291 event); |
310 event); |
| 292 g_signal_connect( |
311 g_signal_connect( |
| 293 widget, |
312 widget, |
| 294 "destroy", |
313 "destroy", |
| 295 G_CALLBACK(ui_destroy_userdata), |
314 G_CALLBACK(ui_destroy_eventdata), |
| 296 event); |
315 event); |
| 297 } |
316 } |
| 298 |
317 |
| 299 if(enable_state > 0) { |
318 if(enable_state > 0) { |
| 300 UiEventData *event = malloc(sizeof(UiEventData)); |
319 UiEventData *event = malloc(sizeof(UiEventData)); |
| 301 event->obj = obj; |
320 event->obj = obj; |
| 302 event->userdata = NULL; |
321 event->userdata = NULL; |
| 303 event->callback = NULL; |
322 event->callback = NULL; |
| 327 args->tooltip, |
346 args->tooltip, |
| 328 args->varname, |
347 args->varname, |
| 329 args->value, |
348 args->value, |
| 330 args->onchange, |
349 args->onchange, |
| 331 args->onchangedata, |
350 args->onchangedata, |
| |
351 args->action, |
| 332 args->enable_state); |
352 args->enable_state); |
| 333 ui_set_name_and_style(widget, args->name, args->style_class); |
353 ui_set_name_and_style(widget, args->name, args->style_class); |
| 334 ui_set_widget_states(obj->ctx, widget, args->states); |
354 ui_set_widget_states(obj->ctx, widget, args->states); |
| 335 |
355 |
| 336 UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; |
356 UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; |
| 389 args->varname, |
409 args->varname, |
| 390 args->value, |
410 args->value, |
| 391 (ui_toggled_func)ui_checkbox_callback, |
411 (ui_toggled_func)ui_checkbox_callback, |
| 392 args->onchange, |
412 args->onchange, |
| 393 args->onchangedata, |
413 args->onchangedata, |
| |
414 args->action, |
| 394 (ui_toggled_func)ui_checkbox_enable_state, |
415 (ui_toggled_func)ui_checkbox_enable_state, |
| 395 args->enable_state); |
416 args->enable_state); |
| 396 |
417 |
| 397 ui_set_name_and_style(widget, args->name, args->style_class); |
418 ui_set_name_and_style(widget, args->name, args->style_class); |
| 398 ui_set_widget_states(obj->ctx, widget, args->states); |
419 ui_set_widget_states(obj->ctx, widget, args->states); |