ui/win32/container.c

changeset 1219
86ed681698aa
parent 938
be4c88ded783
equal deleted inserted replaced
1218:943fc009bd1c 1219:86ed681698aa
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;

mercurial