| 29 #include "container.h" |
29 #include "container.h" |
| 30 #include "grid.h" |
30 #include "grid.h" |
| 31 |
31 |
| 32 #include "../common/context.h" |
32 #include "../common/context.h" |
| 33 #include "../common/container.h" |
33 #include "../common/container.h" |
| |
34 #include "../motif/container.h" |
| |
35 |
| |
36 |
| |
37 static W32WidgetClass grid_layout_widget_class = { |
| |
38 .eventproc = NULL, |
| |
39 .enable = NULL, |
| |
40 .show = w32_widget_default_show, |
| |
41 .get_preferred_size = ui_grid_layout_get_preferred_size, |
| |
42 .destroy = w32_widget_default_destroy |
| |
43 }; |
| 34 |
44 |
| 35 UiContainerPrivate* ui_obj_container(UiObject *obj) { |
45 UiContainerPrivate* ui_obj_container(UiObject *obj) { |
| 36 return (UiContainerPrivate*)obj->container_end; |
46 return (UiContainerPrivate*)obj->container_end; |
| 37 } |
47 } |
| 38 |
48 |
| 48 layout2.margin_top = layout2.margin; |
58 layout2.margin_top = layout2.margin; |
| 49 layout2.margin_bottom = layout2.margin; |
59 layout2.margin_bottom = layout2.margin; |
| 50 } |
60 } |
| 51 ctn->add(ctn, widget, &layout2); |
61 ctn->add(ctn, widget, &layout2); |
| 52 ctn->container.newline = FALSE; |
62 ctn->container.newline = FALSE; |
| |
63 } |
| |
64 |
| |
65 W32Size ui_grid_layout_get_preferred_size(W32Widget *widget) { |
| |
66 UiGridLayout *grid = widget->layoutmanager; |
| |
67 W32Size size; |
| |
68 size.width = grid->preferred_width; |
| |
69 size.height = grid->preferred_height; |
| |
70 return size; |
| 53 } |
71 } |
| 54 |
72 |
| 55 |
73 |
| 56 /* ---------------------------- Box Container ---------------------------- */ |
74 /* ---------------------------- Box Container ---------------------------- */ |
| 57 |
75 |
| 104 } |
122 } |
| 105 |
123 |
| 106 /* ---------------------------- Grid Container ---------------------------- */ |
124 /* ---------------------------- Grid Container ---------------------------- */ |
| 107 |
125 |
| 108 UIWIDGET ui_grid_create(UiObject *obj, UiContainerArgs *args) { |
126 UIWIDGET ui_grid_create(UiObject *obj, UiContainerArgs *args) { |
| 109 return NULL; |
127 HINSTANCE hInstance = GetModuleHandle(NULL); |
| |
128 UiContainerPrivate *container = ui_obj_container(obj); |
| |
129 HWND parent = ui_container_get_parent(container); |
| |
130 UiLayout layout = UI_ARGS2LAYOUT(args); |
| |
131 |
| |
132 HWND hwnd = CreateWindowEx( |
| |
133 0, |
| |
134 TEXT("STATIC"), |
| |
135 NULL, |
| |
136 WS_CHILD | WS_VISIBLE | WS_BORDER, |
| |
137 0, 0, 100, 100, |
| |
138 parent, |
| |
139 NULL, |
| |
140 hInstance, |
| |
141 NULL); |
| |
142 |
| |
143 W32Widget *widget = w32_widget_new(&grid_layout_widget_class, hwnd); |
| |
144 ui_container_add(container, widget, &layout); |
| |
145 |
| |
146 UiContainerX *gridContainer = ui_grid_container_create(obj, hwnd, args->columnspacing, args->rowspacing, INSETS_ZERO); |
| |
147 uic_object_push_container(obj, gridContainer); |
| |
148 |
| |
149 UiGridLayoutContainer *grid = (UiGridLayoutContainer*)gridContainer; |
| |
150 widget->layout = (W32LayoutFunc)ui_grid_layout; |
| |
151 widget->layoutmanager = grid->layout; |
| |
152 grid->layout->preferred_width = 200; |
| |
153 grid->layout->preferred_height = 200; |
| |
154 |
| |
155 return widget; |
| 110 } |
156 } |
| 111 |
157 |
| 112 UiContainerX* ui_grid_container_create(UiObject *obj, HWND hwnd, short columnspacing, short rowspacing, GridEdgeInsets padding) { |
158 UiContainerX* ui_grid_container_create(UiObject *obj, HWND hwnd, short columnspacing, short rowspacing, GridEdgeInsets padding) { |
| 113 UiGridLayoutContainer *container = cxZalloc(obj->ctx->allocator, sizeof(UiGridLayoutContainer)); |
159 UiGridLayoutContainer *container = cxZalloc(obj->ctx->allocator, sizeof(UiGridLayoutContainer)); |
| 114 container->container.hwnd = hwnd; |
160 container->container.hwnd = hwnd; |
| 137 }; |
183 }; |
| 138 ui_grid_add_widget(grid->layout, grid->x, grid->y, widget, &gridLayout); |
184 ui_grid_add_widget(grid->layout, grid->x, grid->y, widget, &gridLayout); |
| 139 |
185 |
| 140 grid->x++; |
186 grid->x++; |
| 141 } |
187 } |
| |
188 |
| |
189 |
| |
190 /* ---------------------------- Container Helper ---------------------------- */ |
| |
191 |
| |
192 void ui_container_begin_close(UiObject *obj) { |
| |
193 UiContainerX *ct = obj->container_end; |
| |
194 ct->close = 1; |
| |
195 } |
| |
196 |
| |
197 int ui_container_finish(UiObject *obj) { |
| |
198 UiContainerX *ct = obj->container_end; |
| |
199 if(ct->close) { |
| |
200 ui_end_new(obj); |
| |
201 return 0; |
| |
202 } |
| |
203 return 1; |
| |
204 } |