| 34 /* -------------------- public container functions --------------------- */ |
34 /* -------------------- public container functions --------------------- */ |
| 35 |
35 |
| 36 static UIWIDGET ui_box_create(UiObject *obj, UiContainerArgs *args, NSUserInterfaceLayoutOrientation orientation) { |
36 static UIWIDGET ui_box_create(UiObject *obj, UiContainerArgs *args, NSUserInterfaceLayoutOrientation orientation) { |
| 37 BoxContainer *box = [[BoxContainer alloc] init:orientation spacing:args->spacing]; |
37 BoxContainer *box = [[BoxContainer alloc] init:orientation spacing:args->spacing]; |
| 38 box.translatesAutoresizingMaskIntoConstraints = false; |
38 box.translatesAutoresizingMaskIntoConstraints = false; |
| 39 UiContainerX *container = ui_create_container(obj, box); |
39 UiContainer *container = ui_create_container(obj, box); |
| 40 |
40 |
| 41 // add box to the parent |
41 // add box to the parent |
| 42 UiLayout layout = UI_INIT_LAYOUT(args); |
42 UiLayout layout = UI_INIT_LAYOUT(args); |
| 43 ui_container_add(obj, box, &layout); |
43 ui_container_add(obj, box, &layout); |
| 44 |
44 |
| 59 UIWIDGET ui_grid_create(UiObject *obj, UiContainerArgs *args) { |
59 UIWIDGET ui_grid_create(UiObject *obj, UiContainerArgs *args) { |
| 60 GridLayout *grid = [[GridLayout alloc] init]; |
60 GridLayout *grid = [[GridLayout alloc] init]; |
| 61 grid.translatesAutoresizingMaskIntoConstraints = false; |
61 grid.translatesAutoresizingMaskIntoConstraints = false; |
| 62 grid.columnspacing = args->columnspacing; |
62 grid.columnspacing = args->columnspacing; |
| 63 grid.rowspacing = args->rowspacing; |
63 grid.rowspacing = args->rowspacing; |
| 64 UiContainerX *container = ui_create_container(obj, grid); |
64 UiContainer *container = ui_create_container(obj, grid); |
| 65 grid.container = container; |
65 grid.container = container; |
| 66 |
66 |
| 67 // add box to the parent |
67 // add box to the parent |
| 68 UiLayout layout = UI_INIT_LAYOUT(args); |
68 UiLayout layout = UI_INIT_LAYOUT(args); |
| 69 ui_container_add(obj, grid, &layout); |
69 ui_container_add(obj, grid, &layout); |
| 79 FrameContainer *frame = [[FrameContainer alloc] init:title]; |
79 FrameContainer *frame = [[FrameContainer alloc] init:title]; |
| 80 UiLayout layout = UI_ARGS2LAYOUT(args); |
80 UiLayout layout = UI_ARGS2LAYOUT(args); |
| 81 ui_container_add(obj, frame, &layout); |
81 ui_container_add(obj, frame, &layout); |
| 82 |
82 |
| 83 // add container to the chain |
83 // add container to the chain |
| 84 UiContainerX *container; |
84 UiContainer *container; |
| 85 UiLayout subLayout = {0}; |
85 UiLayout subLayout = {0}; |
| 86 switch(args->subcontainer) { |
86 switch(args->subcontainer) { |
| 87 default: { |
87 default: { |
| 88 // UI_CONTAINER_NO_SUB |
88 // UI_CONTAINER_NO_SUB |
| 89 container = ui_create_container(obj, frame); |
89 container = ui_create_container(obj, frame); |
| 135 scrollview.scrollerStyle = NSScrollerStyleOverlay; |
135 scrollview.scrollerStyle = NSScrollerStyleOverlay; |
| 136 scrollview.autohidesScrollers = YES; |
136 scrollview.autohidesScrollers = YES; |
| 137 UiLayout layout = UI_ARGS2LAYOUT(args); |
137 UiLayout layout = UI_ARGS2LAYOUT(args); |
| 138 ui_container_add(obj, scrollview, &layout); |
138 ui_container_add(obj, scrollview, &layout); |
| 139 |
139 |
| 140 UiContainerX *container = ui_create_container(obj, scrollview); |
140 UiContainer *container = ui_create_container(obj, scrollview); |
| 141 uic_object_push_container(obj, container); |
141 uic_object_push_container(obj, container); |
| 142 |
142 |
| 143 return (__bridge void*)scrollview; |
143 return (__bridge void*)scrollview; |
| 144 } |
144 } |
| 145 |
145 |
| 150 } |
150 } |
| 151 |
151 |
| 152 UiLayout layout = UI_ARGS2LAYOUT(args); |
152 UiLayout layout = UI_ARGS2LAYOUT(args); |
| 153 ui_container_add(obj, tabview, &layout); |
153 ui_container_add(obj, tabview, &layout); |
| 154 |
154 |
| 155 UiContainerX *container = ui_create_container(obj, tabview); |
155 UiContainer *container = ui_create_container(obj, tabview); |
| 156 uic_object_push_container(obj, container); |
156 uic_object_push_container(obj, container); |
| 157 |
157 |
| 158 return (__bridge void*)tabview; |
158 return (__bridge void*)tabview; |
| 159 } |
159 } |
| 160 |
160 |
| 161 void ui_tab_create(UiObject *obj, const char* title) { |
161 void ui_tab_create(UiObject *obj, const char* title) { |
| 162 UiContainerX *ctn = obj->container_end; |
162 UiContainer *ctn = obj->container_end; |
| 163 id<TabView> tabview = (__bridge id<TabView>)ctn->container; |
163 id<TabView> tabview = (__bridge id<TabView>)ctn->container; |
| 164 NSString *s = title ? [[NSString alloc]initWithUTF8String:title] : @""; |
164 NSString *s = title ? [[NSString alloc]initWithUTF8String:title] : @""; |
| 165 NSView<Container> *sub = [tabview createTab:-1 title:s]; |
165 NSView<Container> *sub = [tabview createTab:-1 title:s]; |
| 166 |
166 |
| 167 UiContainerX *container = ui_create_container(obj, sub); |
167 UiContainer *container = ui_create_container(obj, sub); |
| 168 uic_object_push_container(obj, container); |
168 uic_object_push_container(obj, container); |
| 169 } |
169 } |
| 170 |
170 |
| 171 void ui_tabview_select(UIWIDGET tabview, int tab) { |
171 void ui_tabview_select(UIWIDGET tabview, int tab) { |
| 172 id<TabView> tabv = (__bridge id<TabView>)tabview; |
172 id<TabView> tabv = (__bridge id<TabView>)tabview; |
| 305 |
305 |
| 306 @end |
306 @end |
| 307 |
307 |
| 308 /* ------------------------- private functions ------------------------- */ |
308 /* ------------------------- private functions ------------------------- */ |
| 309 |
309 |
| 310 UiContainerX* ui_create_container(UiObject *obj, id<Container> container) { |
310 UiContainer* ui_create_container(UiObject *obj, id<Container> container) { |
| 311 UiContainerX *ctn = ui_malloc(obj->ctx, sizeof(UiContainerX)); |
311 UiContainer *ctn = ui_malloc(obj->ctx, sizeof(UiContainer)); |
| 312 ctn->container = (__bridge void*)container; |
312 ctn->container = (__bridge void*)container; |
| 313 ctn->close = 0; |
313 ctn->close = 0; |
| 314 ctn->prev = NULL; |
314 ctn->prev = NULL; |
| 315 ctn->next = NULL; |
315 ctn->next = NULL; |
| 316 container.container = ctn; |
316 container.container = ctn; |
| 317 return ctn; |
317 return ctn; |
| 318 } |
318 } |
| 319 |
319 |
| 320 void ui_container_add(UiObject *obj, NSView *view, UiLayout *layout) { |
320 void ui_container_add(UiObject *obj, NSView *view, UiLayout *layout) { |
| 321 UiContainerX *ctn = obj->container_end; |
321 UiContainer *ctn = obj->container_end; |
| 322 id<Container> container = (__bridge id<Container>)ctn->container; |
322 id<Container> container = (__bridge id<Container>)ctn->container; |
| 323 UiLayout adjustedLayout = *layout; |
323 UiLayout adjustedLayout = *layout; |
| 324 if(adjustedLayout.margin > 0) { |
324 if(adjustedLayout.margin > 0) { |
| 325 adjustedLayout.margin_left = adjustedLayout.margin; |
325 adjustedLayout.margin_left = adjustedLayout.margin; |
| 326 adjustedLayout.margin_right = adjustedLayout.margin; |
326 adjustedLayout.margin_right = adjustedLayout.margin; |