| 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; |
| 771 } |
785 } |
| 772 |
786 |
| 773 static char* create_linkbutton_jsonvalue(const char *label, const char *uri, gboolean include_null, gboolean visited, gboolean set_visited) { |
787 static char* create_linkbutton_jsonvalue(const char *label, const char *uri, gboolean include_null, gboolean visited, gboolean set_visited) { |
| 774 CxJsonValue *obj = cxJsonCreateObj(NULL); |
788 CxJsonValue *obj = cxJsonCreateObj(NULL); |
| 775 if(label) { |
789 if(label) { |
| 776 cxJsonObjPutString(obj, CX_STR("label"), label); |
790 cxJsonObjPutString(obj, cx_str("label"), label); |
| 777 } else if(include_null) { |
791 } else if(include_null) { |
| 778 cxJsonObjPutLiteral(obj, CX_STR("label"), CX_JSON_NULL); |
792 cxJsonObjPutLiteral(obj, cx_str("label"), CX_JSON_NULL); |
| 779 } |
793 } |
| 780 |
794 |
| 781 if(uri) { |
795 if(uri) { |
| 782 cxJsonObjPutString(obj, CX_STR("uri"), uri); |
796 cxJsonObjPutString(obj, cx_str("uri"), uri); |
| 783 } else if(include_null) { |
797 } else if(include_null) { |
| 784 cxJsonObjPutLiteral(obj, CX_STR("uri"), CX_JSON_NULL); |
798 cxJsonObjPutLiteral(obj, cx_str("uri"), CX_JSON_NULL); |
| 785 } |
799 } |
| 786 |
800 |
| 787 if(set_visited) { |
801 if(set_visited) { |
| 788 cxJsonObjPutLiteral(obj, CX_STR("visited"), visited ? CX_JSON_TRUE : CX_JSON_FALSE); |
802 cxJsonObjPutLiteral(obj, cx_str("visited"), visited ? CX_JSON_TRUE : CX_JSON_FALSE); |
| 789 } |
803 } |
| 790 |
804 |
| 791 CxJsonWriter writer = cxJsonWriterCompact(); |
805 CxJsonWriter writer = cxJsonWriterCompact(); |
| 792 CxBuffer buf; |
806 CxBuffer buf; |
| 793 cxBufferInit(&buf, NULL, 128, NULL, CX_BUFFER_AUTO_EXTEND); |
807 cxBufferInit(&buf, NULL, NULL, 128, CX_BUFFER_AUTO_EXTEND); |
| 794 cxJsonWrite(&buf, obj, (cx_write_func)cxBufferWrite, &writer); |
808 cxJsonWrite(&buf, obj, (cx_write_func)cxBufferWrite, &writer); |
| 795 cxJsonValueFree(obj); |
809 cxJsonValueFree(obj); |
| 796 cxBufferTerminate(&buf); |
810 cxBufferTerminate(&buf); |
| 797 |
811 |
| 798 return buf.space; |
812 return buf.space; |