ui/gtk/button.c

changeset 1015
b459361d98ad
parent 973
aa39a986da78
equal deleted inserted replaced
1014:83c83a7aa552 1015:b459361d98ad
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;

mercurial