ui/gtk/container.c

changeset 803
f0c4322741c8
parent 802
cc73993a3ff9
child 804
ce992dbfbc39
equal deleted inserted replaced
802:cc73993a3ff9 803:f0c4322741c8
396 uic_object_push_container(obj, container); 396 uic_object_push_container(obj, container);
397 397
398 return widget; 398 return widget;
399 } 399 }
400 400
401 static void frame_create_subcontainer(UiObject *obj, UiFrameArgs *args) {
402 switch(args->subcontainer) {
403 default:
404 case UI_CONTAINER_VBOX: {
405 UiContainerArgs sub_args = { .spacing = args->spacing, .margin = args->padding };
406 ui_vbox_create(obj, &sub_args);
407 break;
408 }
409 case UI_CONTAINER_HBOX: {
410 UiContainerArgs sub_args = { .spacing = args->spacing, .margin = args->padding };
411 ui_hbox_create(obj, &sub_args);
412 break;
413 }
414 case UI_CONTAINER_GRID: {
415 UiContainerArgs sub_args = { .columnspacing = args->columnspacing, .rowspacing = args->rowspacing, .margin = args->padding };
416 ui_grid_create(obj, &sub_args);
417 break;
418 }
419 case UI_CONTAINER_NO_SUB: {
420 break; // NOOP
421 }
422 }
423 }
424
401 UIWIDGET ui_frame_create(UiObject *obj, UiFrameArgs *args) { 425 UIWIDGET ui_frame_create(UiObject *obj, UiFrameArgs *args) {
402 UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end; 426 UiContainerPrivate *ct = (UiContainerPrivate*)obj->container_end;
403 UiLayout layout = UI_ARGS2LAYOUT(args); 427 UiLayout layout = UI_ARGS2LAYOUT(args);
404 428
405 GtkWidget *frame = gtk_frame_new(args->label); 429 GtkWidget *frame = gtk_frame_new(args->label);
406 ct->add(ct, frame, &layout); 430 ct->add(ct, frame, &layout);
407 431
408 UiContainerX *container = ui_frame_container(obj, frame); 432 GtkWidget *sub = ui_subcontainer_create(
409 uic_object_push_container(obj, container); 433 args->subcontainer,
434 obj, args->spacing,
435 args->columnspacing,
436 args->rowspacing,
437 args->padding);
438 if(sub) {
439 FRAME_SET_CHILD(frame, sub);
440 } else {
441 UiContainerX *container = ui_frame_container(obj, frame);
442 uic_object_push_container(obj, container);
443 }
410 444
411 return frame; 445 return frame;
412 } 446 }
413 447
414 UIEXPORT UIWIDGET ui_expander_create(UiObject *obj, UiFrameArgs *args) { 448 UIEXPORT UIWIDGET ui_expander_create(UiObject *obj, UiFrameArgs *args) {
417 451
418 GtkWidget *expander = gtk_expander_new(args->label); 452 GtkWidget *expander = gtk_expander_new(args->label);
419 gtk_expander_set_expanded(GTK_EXPANDER(expander), args->isexpanded); 453 gtk_expander_set_expanded(GTK_EXPANDER(expander), args->isexpanded);
420 ct->add(ct, expander, &layout); 454 ct->add(ct, expander, &layout);
421 455
422 UiContainerX *container = ui_expander_container(obj, expander); 456 GtkWidget *sub = ui_subcontainer_create(
423 uic_object_push_container(obj, container); 457 args->subcontainer,
458 obj, args->spacing,
459 args->columnspacing,
460 args->rowspacing,
461 args->padding);
462 if(sub) {
463 EXPANDER_SET_CHILD(expander, sub);
464 } else {
465 UiContainerX *container = ui_expander_container(obj, expander);
466 uic_object_push_container(obj, container);
467 }
424 468
425 return expander; 469 return expander;
426 } 470 }
427 471
428 472
432 476
433 GtkWidget *sw = SCROLLEDWINDOW_NEW(); 477 GtkWidget *sw = SCROLLEDWINDOW_NEW();
434 ui_set_name_and_style(sw, args->name, args->style_class); 478 ui_set_name_and_style(sw, args->name, args->style_class);
435 ct->add(ct, sw, &layout); 479 ct->add(ct, sw, &layout);
436 480
437 UiContainerX *container = ui_scrolledwindow_container(obj, sw); 481 GtkWidget *sub = ui_subcontainer_create(
438 uic_object_push_container(obj, container); 482 args->subcontainer,
483 obj, args->spacing,
484 args->columnspacing,
485 args->rowspacing,
486 args->padding);
487 if(sub) {
488 SCROLLEDWINDOW_SET_CHILD(sw, sub);
489 } else {
490 UiContainerX *container = ui_scrolledwindow_container(obj, sw);
491 uic_object_push_container(obj, container);
492 }
439 493
440 return sw; 494 return sw;
441 } 495 }
442 496
443 497

mercurial