| 239 event->obj = obj; |
239 event->obj = obj; |
| 240 event->var = var; |
240 event->var = var; |
| 241 event->observers = NULL; |
241 event->observers = NULL; |
| 242 event->callback = NULL; |
242 event->callback = NULL; |
| 243 event->userdata = NULL; |
243 event->userdata = NULL; |
| |
244 event->customint1 = 0; |
| |
245 event->customint2 = 0; |
| 244 |
246 |
| 245 g_signal_connect( |
247 g_signal_connect( |
| 246 widget, |
248 widget, |
| 247 "toggled", |
249 "toggled", |
| 248 G_CALLBACK(ui_toggled_obs), |
250 G_CALLBACK(ui_toggled_obs), |
| 395 GObject *gobject, |
397 GObject *gobject, |
| 396 GParamSpec *pspec, |
398 GParamSpec *pspec, |
| 397 UiVarEventData *event) |
399 UiVarEventData *event) |
| 398 { |
400 { |
| 399 GtkSwitch *sw = GTK_SWITCH (gobject); |
401 GtkSwitch *sw = GTK_SWITCH (gobject); |
| 400 gboolean active = gtk_switch_get_active (sw); |
402 gboolean active = gtk_switch_get_active(sw); |
| 401 |
403 |
| 402 UiEvent e; |
404 UiEvent e; |
| 403 e.obj = event->obj; |
405 e.obj = event->obj; |
| 404 e.document = e.obj->ctx->document; |
406 e.document = e.obj->ctx->document; |
| 405 e.window = e.obj->window; |
407 e.window = e.obj->window; |
| 406 e.eventdata = NULL; |
408 e.eventdata = NULL; |
| 407 e.eventdatatype = 0; |
409 e.eventdatatype = 0; |
| |
410 e.intval = active; |
| 408 e.set = ui_get_setop(); |
411 e.set = ui_get_setop(); |
| 409 |
412 |
| 410 if(event->callback) { |
413 if(event->callback) { |
| 411 event->callback(&e, event->userdata); |
414 event->callback(&e, event->userdata); |
| 412 } |
415 } |
| 413 if(event->var) { |
416 if(event->var) { |
| 414 UiInteger *i = event->var->value; |
417 UiInteger *i = event->var->value; |
| 415 ui_notify_evt(i->observers, &e); |
418 ui_notify_evt(i->observers, &e); |
| |
419 } |
| |
420 if(event->customint1 > 0) { |
| |
421 if(active) { |
| |
422 ui_set_state(e.obj->ctx, event->customint1); |
| |
423 } else { |
| |
424 ui_unset_state(e.obj->ctx, event->customint1); |
| |
425 } |
| 416 } |
426 } |
| 417 } |
427 } |
| 418 |
428 |
| 419 UIWIDGET ui_switch_create(UiObject* obj, UiToggleArgs *args) { |
429 UIWIDGET ui_switch_create(UiObject* obj, UiToggleArgs *args) { |
| 420 GtkWidget *widget = gtk_switch_new(); |
430 GtkWidget *widget = gtk_switch_new(); |
| 434 |
444 |
| 435 |
445 |
| 436 } |
446 } |
| 437 |
447 |
| 438 UiVarEventData *event = malloc(sizeof(UiVarEventData)); |
448 UiVarEventData *event = malloc(sizeof(UiVarEventData)); |
| |
449 memset(event, 0, sizeof(UiVarEventData)); |
| 439 event->obj = obj; |
450 event->obj = obj; |
| 440 event->callback = args->onchange; |
451 event->callback = args->onchange; |
| 441 event->userdata = args->onchangedata; |
452 event->userdata = args->onchangedata; |
| 442 event->var = var; |
453 event->var = var; |
| 443 event->observers = NULL; |
454 event->observers = NULL; |
| |
455 event->customint1 = args->enable_state; |
| 444 |
456 |
| 445 g_signal_connect( |
457 g_signal_connect( |
| 446 widget, |
458 widget, |
| 447 "notify::active", |
459 "notify::active", |
| 448 G_CALLBACK(switch_changed), |
460 G_CALLBACK(switch_changed), |
| 451 g_signal_connect( |
463 g_signal_connect( |
| 452 widget, |
464 widget, |
| 453 "destroy", |
465 "destroy", |
| 454 G_CALLBACK(ui_destroy_vardata), |
466 G_CALLBACK(ui_destroy_vardata), |
| 455 event); |
467 event); |
| 456 |
468 |
| 457 UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; |
469 UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; |
| 458 UiLayout layout = UI_ARGS2LAYOUT(args); |
470 UiLayout layout = UI_ARGS2LAYOUT(args); |
| 459 ct->add(ct, widget, &layout); |
471 ct->add(ct, widget, &layout); |
| 460 |
472 |
| 461 return widget; |
473 return widget; |
| 563 event->obj = obj; |
575 event->obj = obj; |
| 564 event->var = var; |
576 event->var = var; |
| 565 event->observers = NULL; |
577 event->observers = NULL; |
| 566 event->callback = NULL; |
578 event->callback = NULL; |
| 567 event->userdata = NULL; |
579 event->userdata = NULL; |
| |
580 event->customint1 = 0; |
| |
581 event->customint2 = 0; |
| 568 |
582 |
| 569 UiRadioButtonData *rbdata = malloc(sizeof(UiRadioButtonData)); |
583 UiRadioButtonData *rbdata = malloc(sizeof(UiRadioButtonData)); |
| 570 rbdata->value = rgroup; |
584 rbdata->value = rgroup; |
| 571 rbdata->eventdata = event; |
585 rbdata->eventdata = event; |
| 572 rbdata->first = first; |
586 rbdata->first = first; |