| 98 |
98 |
| 99 return button; |
99 return button; |
| 100 } |
100 } |
| 101 |
101 |
| 102 UIWIDGET ui_button_create(UiObject *obj, UiButtonArgs *args) { |
102 UIWIDGET ui_button_create(UiObject *obj, UiButtonArgs *args) { |
| 103 UiObject* current = uic_current_obj(obj); |
|
| 104 GtkWidget *button = ui_create_button(obj, args->label, args->icon, args->onclick, args->onclickdata, 0, FALSE); |
103 GtkWidget *button = ui_create_button(obj, args->label, args->icon, args->onclick, args->onclickdata, 0, FALSE); |
| 105 ui_set_name_and_style(button, args->name, args->style_class); |
104 ui_set_name_and_style(button, args->name, args->style_class); |
| 106 ui_set_widget_groups(obj->ctx, button, args->groups); |
105 ui_set_widget_groups(obj->ctx, button, args->groups); |
| 107 UI_APPLY_LAYOUT2(current, args); |
106 UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; |
| 108 current->container->add(current->container, button); |
107 UiLayout layout = UI_ARGS2LAYOUT(args); |
| |
108 ct->add(ct, button, &layout); |
| 109 return button; |
109 return button; |
| 110 } |
110 } |
| 111 |
111 |
| 112 |
112 |
| 113 void ui_button_clicked(GtkWidget *widget, UiEventData *event) { |
113 void ui_button_clicked(GtkWidget *widget, UiEventData *event) { |
| 218 ui_callback onchange, |
218 ui_callback onchange, |
| 219 void *onchangedata, |
219 void *onchangedata, |
| 220 void (*enable_state_func)(void*, void*), |
220 void (*enable_state_func)(void*, void*), |
| 221 int enable_state) |
221 int enable_state) |
| 222 { |
222 { |
| 223 UiObject* current = uic_current_obj(obj); |
223 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, value, varname, UI_VAR_INTEGER); |
| 224 UiVar* var = uic_widget_var(obj->ctx, current->ctx, value, varname, UI_VAR_INTEGER); |
|
| 225 if (var) { |
224 if (var) { |
| 226 UiInteger* value = (UiInteger*)var->value; |
225 UiInteger* value = (UiInteger*)var->value; |
| 227 value->obj = widget; |
226 value->obj = widget; |
| 228 value->get = getfunc; |
227 value->get = getfunc; |
| 229 value->set = setfunc; |
228 value->set = setfunc; |
| 304 args->onchangedata, |
301 args->onchangedata, |
| 305 args->enable_group); |
302 args->enable_group); |
| 306 ui_set_name_and_style(widget, args->name, args->style_class); |
303 ui_set_name_and_style(widget, args->name, args->style_class); |
| 307 ui_set_widget_groups(obj->ctx, widget, args->groups); |
304 ui_set_widget_groups(obj->ctx, widget, args->groups); |
| 308 |
305 |
| 309 UI_APPLY_LAYOUT2(current, args); |
306 UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; |
| 310 current->container->add(current->container, widget); |
307 UiLayout layout = UI_ARGS2LAYOUT(args); |
| |
308 ct->add(ct, widget, &layout); |
| 311 |
309 |
| 312 return widget; |
310 return widget; |
| 313 } |
311 } |
| 314 |
312 |
| 315 UIWIDGET ui_togglebutton_create(UiObject* obj, UiToggleArgs *args) { |
313 UIWIDGET ui_togglebutton_create(UiObject* obj, UiToggleArgs *args) { |
| 348 } else { |
346 } else { |
| 349 ui_unset_group(event->obj->ctx, event->value); |
347 ui_unset_group(event->obj->ctx, event->value); |
| 350 } |
348 } |
| 351 } |
349 } |
| 352 |
350 |
| 353 UIWIDGET ui_checkbox_create(UiObject* obj, UiToggleArgs *args) { |
351 UIWIDGET ui_checkbox_create(UiObject* obj, UiToggleArgs *args) { |
| 354 UiObject* current = uic_current_obj(obj); |
|
| 355 |
|
| 356 GtkWidget *widget = gtk_check_button_new_with_label(args->label); |
352 GtkWidget *widget = gtk_check_button_new_with_label(args->label); |
| 357 ui_bind_togglebutton( |
353 ui_bind_togglebutton( |
| 358 obj, |
354 obj, |
| 359 widget, |
355 widget, |
| 360 ui_check_button_get, |
356 ui_check_button_get, |
| 368 args->enable_group); |
364 args->enable_group); |
| 369 |
365 |
| 370 ui_set_name_and_style(widget, args->name, args->style_class); |
366 ui_set_name_and_style(widget, args->name, args->style_class); |
| 371 ui_set_widget_groups(obj->ctx, widget, args->groups); |
367 ui_set_widget_groups(obj->ctx, widget, args->groups); |
| 372 |
368 |
| 373 UI_APPLY_LAYOUT2(current, args); |
369 UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; |
| 374 current->container->add(current->container, widget); |
370 UiLayout layout = UI_ARGS2LAYOUT(args); |
| |
371 ct->add(ct, widget, &layout); |
| 375 |
372 |
| 376 return widget; |
373 return widget; |
| 377 } |
374 } |
| 378 |
375 |
| 379 #else |
376 #else |
| 409 ui_notify_evt(i->observers, &e); |
406 ui_notify_evt(i->observers, &e); |
| 410 } |
407 } |
| 411 } |
408 } |
| 412 |
409 |
| 413 UIWIDGET ui_switch_create(UiObject* obj, UiToggleArgs *args) { |
410 UIWIDGET ui_switch_create(UiObject* obj, UiToggleArgs *args) { |
| 414 UiObject* current = uic_current_obj(obj); |
|
| 415 GtkWidget *widget = gtk_switch_new(); |
411 GtkWidget *widget = gtk_switch_new(); |
| 416 ui_set_name_and_style(widget, args->name, args->style_class); |
412 ui_set_name_and_style(widget, args->name, args->style_class); |
| 417 ui_set_widget_groups(obj->ctx, widget, args->groups); |
413 ui_set_widget_groups(obj->ctx, widget, args->groups); |
| 418 |
414 |
| 419 UiVar* var = uic_widget_var(obj->ctx, current->ctx, args->value, args->varname, UI_VAR_INTEGER); |
415 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_INTEGER); |
| 420 if(var) { |
416 if(var) { |
| 421 UiInteger *value = var->value; |
417 UiInteger *value = var->value; |
| 422 value->obj = widget; |
418 value->obj = widget; |
| 423 value->get = ui_switch_get; |
419 value->get = ui_switch_get; |
| 424 value->set = ui_switch_set; |
420 value->set = ui_switch_set; |
| 447 widget, |
443 widget, |
| 448 "destroy", |
444 "destroy", |
| 449 G_CALLBACK(ui_destroy_vardata), |
445 G_CALLBACK(ui_destroy_vardata), |
| 450 event); |
446 event); |
| 451 |
447 |
| 452 UI_APPLY_LAYOUT2(current, args); |
448 UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; |
| 453 current->container->add(current->container, widget); |
449 UiLayout layout = UI_ARGS2LAYOUT(args); |
| |
450 ct->add(ct, widget, &layout); |
| 454 |
451 |
| 455 return widget; |
452 return widget; |
| 456 } |
453 } |
| 457 |
454 |
| 458 int64_t ui_switch_get(UiInteger *value) { |
455 int64_t ui_switch_get(UiInteger *value) { |
| 517 } |
514 } |
| 518 free(data); |
515 free(data); |
| 519 } |
516 } |
| 520 |
517 |
| 521 UIWIDGET ui_radiobutton_create(UiObject *obj, UiToggleArgs *args) { |
518 UIWIDGET ui_radiobutton_create(UiObject *obj, UiToggleArgs *args) { |
| 522 UiObject* current = uic_current_obj(obj); |
|
| 523 |
|
| 524 GSList *rg = NULL; |
519 GSList *rg = NULL; |
| 525 UiInteger *rgroup; |
520 UiInteger *rgroup; |
| 526 |
521 |
| 527 UiVar* var = uic_widget_var(obj->ctx, current->ctx, args->value, args->varname, UI_VAR_INTEGER); |
522 UiVar* var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_INTEGER); |
| 528 |
523 |
| 529 UiBool first = FALSE; |
524 UiBool first = FALSE; |
| 530 if(var) { |
525 if(var) { |
| 531 rgroup = var->value; |
526 rgroup = var->value; |
| 532 rg = rgroup->obj; |
527 rg = rgroup->obj; |
| 598 "destroy", |
593 "destroy", |
| 599 G_CALLBACK(ui_destroy_userdata), |
594 G_CALLBACK(ui_destroy_userdata), |
| 600 event); |
595 event); |
| 601 } |
596 } |
| 602 |
597 |
| 603 UI_APPLY_LAYOUT2(current, args); |
598 UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; |
| 604 current->container->add(current->container, rbutton); |
599 UiLayout layout = UI_ARGS2LAYOUT(args); |
| |
600 ct->add(ct, rbutton, &layout); |
| 605 |
601 |
| 606 return rbutton; |
602 return rbutton; |
| 607 } |
603 } |
| 608 |
604 |
| 609 void ui_radio_obs(GtkToggleButton *widget, UiVarEventData *event) { |
605 void ui_radio_obs(GtkToggleButton *widget, UiVarEventData *event) { |
| 858 G_CALLBACK(ui_destroy_linkbutton), |
854 G_CALLBACK(ui_destroy_linkbutton), |
| 859 data); |
855 data); |
| 860 |
856 |
| 861 data->widget = button; |
857 data->widget = button; |
| 862 |
858 |
| 863 UiObject* current = uic_current_obj(obj); |
859 UiVar *var = uic_widget_var(obj->ctx, obj->ctx, args->value, args->varname, UI_VAR_STRING); |
| 864 UiVar *var = uic_widget_var(obj->ctx, current->ctx, args->value, args->varname, UI_VAR_STRING); |
|
| 865 if(var) { |
860 if(var) { |
| 866 UiString *str = var->value; |
861 UiString *str = var->value; |
| 867 char *current_value = ui_get(str); |
862 char *current_value = ui_get(str); |
| 868 if(current_value) { |
863 if(current_value) { |
| 869 linkbutton_apply_value(data, current_value); |
864 linkbutton_apply_value(data, current_value); |
| 874 str->set = ui_linkbutton_set; |
869 str->set = ui_linkbutton_set; |
| 875 } |
870 } |
| 876 |
871 |
| 877 ui_set_name_and_style(button, args->name, args->style_class); |
872 ui_set_name_and_style(button, args->name, args->style_class); |
| 878 ui_set_widget_groups(obj->ctx, button, args->groups); |
873 ui_set_widget_groups(obj->ctx, button, args->groups); |
| 879 UI_APPLY_LAYOUT2(current, args); |
874 UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; |
| 880 current->container->add(current->container, button); |
875 UiLayout layout = UI_ARGS2LAYOUT(args); |
| |
876 ct->add(ct, button, &layout); |
| 881 |
877 |
| 882 return button; |
878 return button; |
| 883 } |
879 } |
| 884 |
880 |
| 885 char* ui_linkbutton_get(UiString *s) { |
881 char* ui_linkbutton_get(UiString *s) { |