ui/cocoa/container.m

changeset 1126
bd1fe6134c1a
parent 1084
cce6dad72164
equal deleted inserted replaced
1125:428ee5baec0e 1126:bd1fe6134c1a
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;
202 } 202 }
203 203
204 204
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;
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;

mercurial