| 67 // public |
67 // public |
| 68 UIWIDGET ui_hbox_create(UiObject *obj, UiContainerArgs *args) { |
68 UIWIDGET ui_hbox_create(UiObject *obj, UiContainerArgs *args) { |
| 69 return box_create(obj, args, UI_BOX_HORIZONTAL); |
69 return box_create(obj, args, UI_BOX_HORIZONTAL); |
| 70 } |
70 } |
| 71 |
71 |
| |
72 UiContainerX* ui_box_container_create(UiObject *obj, HWND hwnd, UiBoxOrientation orientation, short spacing, GridEdgeInsets padding) { |
| |
73 UiBoxContainer *container = cxZalloc(obj->ctx->allocator, sizeof(UiBoxContainer)); |
| |
74 container->container.hwnd = hwnd; |
| |
75 container->container.add = ui_box_container_add; |
| |
76 container->layout = ui_grid_layout_create(obj->ctx->allocator, spacing, spacing); |
| |
77 container->layout->padding = padding; |
| |
78 container->orientation = orientation; |
| |
79 return (UiContainerX*)container; |
| |
80 } |
| |
81 |
| |
82 void ui_box_container_add(UiContainerPrivate *ctn, W32Widget *widget, UiLayout *layout) { |
| |
83 UiBoxContainer *box = (UiBoxContainer*)ctn; |
| |
84 GridLayoutInfo gridLayout = (GridLayoutInfo) { |
| |
85 .margin = (GridEdgeInsets) { layout->margin_top, layout->margin_bottom, layout->margin_left, layout->margin_right }, |
| |
86 }; |
| |
87 if (box->orientation == UI_BOX_HORIZONTAL) { |
| |
88 gridLayout.vexpand = TRUE; |
| |
89 gridLayout.vfill = TRUE; |
| |
90 gridLayout.hexpand = layout->fill; |
| |
91 gridLayout.hfill = layout->fill; |
| |
92 } else { |
| |
93 gridLayout.hexpand = TRUE; |
| |
94 gridLayout.hfill = TRUE; |
| |
95 gridLayout.vexpand = layout->fill; |
| |
96 gridLayout.vfill = layout->fill; |
| |
97 } |
| |
98 ui_grid_add_widget(box->layout, box->x, box->y, widget, &gridLayout); |
| |
99 if (box->orientation == UI_BOX_HORIZONTAL) { |
| |
100 box->x++; |
| |
101 } else { |
| |
102 box->y++; |
| |
103 } |
| |
104 } |
| 72 |
105 |
| 73 /* ---------------------------- Grid Container ---------------------------- */ |
106 /* ---------------------------- Grid Container ---------------------------- */ |
| 74 |
107 |
| 75 UIWIDGET ui_grid_create(UiObject *obj, UiContainerArgs *args) { |
108 UIWIDGET ui_grid_create(UiObject *obj, UiContainerArgs *args) { |
| 76 return NULL; |
109 return NULL; |
| 78 |
111 |
| 79 UiContainerX* ui_grid_container_create(UiObject *obj, HWND hwnd, short columnspacing, short rowspacing, GridEdgeInsets padding) { |
112 UiContainerX* ui_grid_container_create(UiObject *obj, HWND hwnd, short columnspacing, short rowspacing, GridEdgeInsets padding) { |
| 80 UiGridLayoutContainer *container = cxZalloc(obj->ctx->allocator, sizeof(UiGridLayoutContainer)); |
113 UiGridLayoutContainer *container = cxZalloc(obj->ctx->allocator, sizeof(UiGridLayoutContainer)); |
| 81 container->container.hwnd = hwnd; |
114 container->container.hwnd = hwnd; |
| 82 container->container.add = ui_grid_container_add; |
115 container->container.add = ui_grid_container_add; |
| 83 container->layout = ui_grid_layout_create(obj->ctx->allocator, hwnd, columnspacing, rowspacing); |
116 container->layout = ui_grid_layout_create(obj->ctx->allocator, columnspacing, rowspacing); |
| 84 container->layout->padding = padding; |
117 container->layout->padding = padding; |
| 85 return (UiContainerX*)container; |
118 return (UiContainerX*)container; |
| 86 } |
119 } |
| 87 |
120 |
| 88 void ui_grid_container_add(UiContainerPrivate *ctn, W32Widget *widget, UiLayout *layout) { |
121 void ui_grid_container_add(UiContainerPrivate *ctn, W32Widget *widget, UiLayout *layout) { |