ui/gtk/button.c

changeset 801
e096c441e874
parent 771
155f8722b927
child 823
1e1df80772ed
equal deleted inserted replaced
800:814d374fb689 801:e096c441e874
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;
289 event); 288 event);
290 } 289 }
291 } 290 }
292 291
293 static UIWIDGET togglebutton_create(UiObject *obj, GtkWidget *widget, UiToggleArgs *args) { 292 static UIWIDGET togglebutton_create(UiObject *obj, GtkWidget *widget, UiToggleArgs *args) {
294 UiObject* current = uic_current_obj(obj);
295
296 ui_setup_togglebutton( 293 ui_setup_togglebutton(
297 obj, 294 obj,
298 widget, 295 widget,
299 args->label, 296 args->label,
300 args->icon, 297 args->icon,
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) {

mercurial