| 97 // public |
97 // public |
| 98 UIWIDGET ui_hbox_create(UiObject *obj, UiContainerArgs *args) { |
98 UIWIDGET ui_hbox_create(UiObject *obj, UiContainerArgs *args) { |
| 99 return box_create(obj, args, UI_BOX_HORIZONTAL); |
99 return box_create(obj, args, UI_BOX_HORIZONTAL); |
| 100 } |
100 } |
| 101 |
101 |
| 102 UiContainerX* ui_box_container_create(UiObject *obj, HWND hwnd, UiBoxOrientation orientation, short spacing, GridEdgeInsets padding) { |
102 UiContainer* ui_box_container_create(UiObject *obj, HWND hwnd, UiBoxOrientation orientation, short spacing, GridEdgeInsets padding) { |
| 103 UiBoxContainer *container = cxZalloc(obj->ctx->allocator, sizeof(UiBoxContainer)); |
103 UiBoxContainer *container = cxZalloc(obj->ctx->allocator, sizeof(UiBoxContainer)); |
| 104 container->container.hwnd = hwnd; |
104 container->container.hwnd = hwnd; |
| 105 container->container.add = ui_box_container_add; |
105 container->container.add = ui_box_container_add; |
| 106 container->layout = ui_grid_layout_create(obj->ctx->allocator, spacing, spacing); |
106 container->layout = ui_grid_layout_create(obj->ctx->allocator, spacing, spacing); |
| 107 container->layout->padding = padding; |
107 container->layout->padding = padding; |
| 108 container->orientation = orientation; |
108 container->orientation = orientation; |
| 109 return (UiContainerX*)container; |
109 return (UiContainer*)container; |
| 110 } |
110 } |
| 111 |
111 |
| 112 void ui_box_container_add(UiContainerPrivate *ctn, W32Widget *widget, UiLayout *layout) { |
112 void ui_box_container_add(UiContainerPrivate *ctn, W32Widget *widget, UiLayout *layout) { |
| 113 UiBoxContainer *box = (UiBoxContainer*)ctn; |
113 UiBoxContainer *box = (UiBoxContainer*)ctn; |
| 114 GridLayoutInfo gridLayout = (GridLayoutInfo) { |
114 GridLayoutInfo gridLayout = (GridLayoutInfo) { |
| 154 SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)ui_default_eventproc); |
154 SetWindowLongPtr(hwnd, GWLP_WNDPROC, (LONG_PTR)ui_default_eventproc); |
| 155 |
155 |
| 156 UiGridWidget *widget = w32_widget_create(&grid_layout_widget_class, hwnd, sizeof(UiGridWidget)); |
156 UiGridWidget *widget = w32_widget_create(&grid_layout_widget_class, hwnd, sizeof(UiGridWidget)); |
| 157 ui_container_add(container, (W32Widget*)widget, &layout); |
157 ui_container_add(container, (W32Widget*)widget, &layout); |
| 158 |
158 |
| 159 UiContainerX *gridContainer = ui_grid_container_create(obj, hwnd, args->columnspacing, args->rowspacing, INSETS_ZERO); |
159 UiContainer *gridContainer = ui_grid_container_create(obj, hwnd, args->columnspacing, args->rowspacing, INSETS_ZERO); |
| 160 uic_object_push_container(obj, gridContainer); |
160 uic_object_push_container(obj, gridContainer); |
| 161 |
161 |
| 162 UiGridLayoutContainer *grid = (UiGridLayoutContainer*)gridContainer; |
162 UiGridLayoutContainer *grid = (UiGridLayoutContainer*)gridContainer; |
| 163 widget->widget.layout = (W32LayoutFunc)ui_grid_layout; |
163 widget->widget.layout = (W32LayoutFunc)ui_grid_layout; |
| 164 widget->widget.layoutmanager = grid->layout; |
164 widget->widget.layoutmanager = grid->layout; |
| 167 grid->layout->preferred_height = 200; |
167 grid->layout->preferred_height = 200; |
| 168 |
168 |
| 169 return (W32Widget*)widget; |
169 return (W32Widget*)widget; |
| 170 } |
170 } |
| 171 |
171 |
| 172 UiContainerX* ui_grid_container_create(UiObject *obj, HWND hwnd, short columnspacing, short rowspacing, GridEdgeInsets padding) { |
172 UiContainer* ui_grid_container_create(UiObject *obj, HWND hwnd, short columnspacing, short rowspacing, GridEdgeInsets padding) { |
| 173 UiGridLayoutContainer *container = cxZalloc(obj->ctx->allocator, sizeof(UiGridLayoutContainer)); |
173 UiGridLayoutContainer *container = cxZalloc(obj->ctx->allocator, sizeof(UiGridLayoutContainer)); |
| 174 container->container.hwnd = hwnd; |
174 container->container.hwnd = hwnd; |
| 175 container->container.add = ui_grid_container_add; |
175 container->container.add = ui_grid_container_add; |
| 176 container->layout = ui_grid_layout_create(obj->ctx->allocator, columnspacing, rowspacing); |
176 container->layout = ui_grid_layout_create(obj->ctx->allocator, columnspacing, rowspacing); |
| 177 container->layout->padding = padding; |
177 container->layout->padding = padding; |
| 178 return (UiContainerX*)container; |
178 return (UiContainer*)container; |
| 179 } |
179 } |
| 180 |
180 |
| 181 void ui_grid_container_add(UiContainerPrivate *ctn, W32Widget *widget, UiLayout *layout) { |
181 void ui_grid_container_add(UiContainerPrivate *ctn, W32Widget *widget, UiLayout *layout) { |
| 182 UiGridLayoutContainer *grid = (UiGridLayoutContainer*)ctn; |
182 UiGridLayoutContainer *grid = (UiGridLayoutContainer*)ctn; |
| 183 if (ctn->container.newline) { |
183 if (ctn->container.newline) { |
| 202 |
202 |
| 203 |
203 |
| 204 /* ---------------------------- Container Helper ---------------------------- */ |
204 /* ---------------------------- Container Helper ---------------------------- */ |
| 205 |
205 |
| 206 void ui_container_begin_close(UiObject *obj) { |
206 void ui_container_begin_close(UiObject *obj) { |
| 207 UiContainerX *ct = obj->container_end; |
207 UiContainer *ct = obj->container_end; |
| 208 ct->close = 1; |
208 ct->close = 1; |
| 209 } |
209 } |
| 210 |
210 |
| 211 int ui_container_finish(UiObject *obj) { |
211 int ui_container_finish(UiObject *obj) { |
| 212 UiContainerX *ct = obj->container_end; |
212 UiContainer *ct = obj->container_end; |
| 213 if(ct->close) { |
213 if(ct->close) { |
| 214 ui_end_new(obj); |
214 ui_end_new(obj); |
| 215 return 0; |
215 return 0; |
| 216 } |
216 } |
| 217 return 1; |
217 return 1; |