ui/motif/container.c

changeset 1123
42ef3156ea09
parent 1064
f415387fff6f
equal deleted inserted replaced
1122:fd0f943ff5f3 1123:42ef3156ea09
85 85
86 Widget parent = ui_container_prepare(ctn, &layout, xargs, &n); 86 Widget parent = ui_container_prepare(ctn, &layout, xargs, &n);
87 Widget grid = XtCreateManagedWidget(args->name ? args->name : "boxcontainer", gridClass, parent, xargs, n); 87 Widget grid = XtCreateManagedWidget(args->name ? args->name : "boxcontainer", gridClass, parent, xargs, n);
88 ctn->add(ctn, grid); 88 ctn->add(ctn, grid);
89 89
90 UiContainerX *container = ui_box_container(obj, grid, orientation); 90 UiContainer *container = ui_box_container(obj, grid, orientation);
91 uic_object_push_container(obj, container); 91 uic_object_push_container(obj, container);
92 92
93 uic_widget_set_visibility_states(obj->ctx, grid, args->visibility_states); 93 uic_widget_set_visibility_states(obj->ctx, grid, args->visibility_states);
94 94
95 return grid; 95 return grid;
103 // public 103 // public
104 UIWIDGET ui_hbox_create(UiObject *obj, UiContainerArgs *args) { 104 UIWIDGET ui_hbox_create(UiObject *obj, UiContainerArgs *args) {
105 return box_create(obj, args, UI_BOX_HORIZONTAL); 105 return box_create(obj, args, UI_BOX_HORIZONTAL);
106 } 106 }
107 107
108 UiContainerX* ui_box_container(UiObject *obj, Widget grid, UiBoxOrientation orientation) { 108 UiContainer* ui_box_container(UiObject *obj, Widget grid, UiBoxOrientation orientation) {
109 UiBoxContainer *ctn = ui_malloc(obj->ctx, sizeof(UiBoxContainer)); 109 UiBoxContainer *ctn = ui_malloc(obj->ctx, sizeof(UiBoxContainer));
110 memset(ctn, 0, sizeof(UiBoxContainer)); 110 memset(ctn, 0, sizeof(UiBoxContainer));
111 ctn->container.prepare = orientation == UI_BOX_VERTICAL ? ui_vbox_prepare : ui_hbox_prepare; 111 ctn->container.prepare = orientation == UI_BOX_VERTICAL ? ui_vbox_prepare : ui_hbox_prepare;
112 ctn->container.add = ui_box_container_add; 112 ctn->container.add = ui_box_container_add;
113 ctn->container.widget = grid; 113 ctn->container.widget = grid;
114 ctn->n = 0; 114 ctn->n = 0;
115 return (UiContainerX*)ctn; 115 return (UiContainer*)ctn;
116 } 116 }
117 117
118 static Widget ui_box_container_prepare(UiBoxContainer *box, UiLayout *layout, Arg *args, int *n) { 118 static Widget ui_box_container_prepare(UiBoxContainer *box, UiLayout *layout, Arg *args, int *n) {
119 ui_container_apply_grid_margin(args, n, layout->margin_left, layout->margin_right, layout->margin_top, layout->margin_bottom); 119 ui_container_apply_grid_margin(args, n, layout->margin_left, layout->margin_right, layout->margin_top, layout->margin_bottom);
120 box->n++; 120 box->n++;
168 XtSetArg(xargs[n], gridColumnSpacing, args->columnspacing); n++; 168 XtSetArg(xargs[n], gridColumnSpacing, args->columnspacing); n++;
169 XtSetArg(xargs[n], gridRowSpacing, args->rowspacing); n++; 169 XtSetArg(xargs[n], gridRowSpacing, args->rowspacing); n++;
170 Widget grid = XtCreateManagedWidget(args->name ? args->name : "gridcontainer", gridClass, parent, xargs, n); 170 Widget grid = XtCreateManagedWidget(args->name ? args->name : "gridcontainer", gridClass, parent, xargs, n);
171 ui_container_add(ctn, grid); 171 ui_container_add(ctn, grid);
172 172
173 UiContainerX *container = ui_grid_container(obj, grid, args->def_hexpand, args->def_vexpand, args->def_hfill, args->def_vfill); 173 UiContainer *container = ui_grid_container(obj, grid, args->def_hexpand, args->def_vexpand, args->def_hfill, args->def_vfill);
174 uic_object_push_container(obj, container); 174 uic_object_push_container(obj, container);
175 175
176 uic_widget_set_visibility_states(obj->ctx, grid, args->visibility_states); 176 uic_widget_set_visibility_states(obj->ctx, grid, args->visibility_states);
177 177
178 return grid; 178 return grid;
179 } 179 }
180 180
181 UiContainerX* ui_grid_container( 181 UiContainer* ui_grid_container(
182 UiObject *obj, 182 UiObject *obj,
183 Widget grid, 183 Widget grid,
184 UiBool def_hexpand, 184 UiBool def_hexpand,
185 UiBool def_vexpand, 185 UiBool def_vexpand,
186 UiBool def_hfill, 186 UiBool def_hfill,
195 ctn->y = 0; 195 ctn->y = 0;
196 ctn->def_hexpand = def_hexpand; 196 ctn->def_hexpand = def_hexpand;
197 ctn->def_vexpand = def_vexpand; 197 ctn->def_vexpand = def_vexpand;
198 ctn->def_hfill = def_hfill; 198 ctn->def_hfill = def_hfill;
199 ctn->def_vfill = def_vfill; 199 ctn->def_vfill = def_vfill;
200 return (UiContainerX*)ctn; 200 return (UiContainer*)ctn;
201 } 201 }
202 202
203 Widget ui_grid_container_prepare(UiContainerPrivate *ctn, UiLayout *layout, Arg *args, int *n) { 203 Widget ui_grid_container_prepare(UiContainerPrivate *ctn, UiLayout *layout, Arg *args, int *n) {
204 UiGridContainer *grid = (UiGridContainer*)ctn; 204 UiGridContainer *grid = (UiGridContainer*)ctn;
205 if(ctn->container.newline) { 205 if(ctn->container.newline) {
273 Widget label = XmCreateLabel(frame, "frame_label", xargs, n); 273 Widget label = XmCreateLabel(frame, "frame_label", xargs, n);
274 XtManageChild(label); 274 XtManageChild(label);
275 XmStringFree(s); 275 XmStringFree(s);
276 } 276 }
277 277
278 UiContainerX *container = ui_frame_container(obj, frame); 278 UiContainer *container = ui_frame_container(obj, frame);
279 uic_object_push_container(obj, container); 279 uic_object_push_container(obj, container);
280 280
281 UiContainerArgs sub_args = { 281 UiContainerArgs sub_args = {
282 .spacing = args->spacing, 282 .spacing = args->spacing,
283 .columnspacing = args->columnspacing, 283 .columnspacing = args->columnspacing,
306 uic_widget_set_visibility_states(obj->ctx, frame, args->visibility_states); 306 uic_widget_set_visibility_states(obj->ctx, frame, args->visibility_states);
307 307
308 return frame; 308 return frame;
309 } 309 }
310 310
311 UiContainerX* ui_frame_container(UiObject *obj, Widget frame) { 311 UiContainer* ui_frame_container(UiObject *obj, Widget frame) {
312 UiContainerPrivate *ctn = ui_malloc(obj->ctx, sizeof(UiContainerPrivate)); 312 UiContainerPrivate *ctn = ui_malloc(obj->ctx, sizeof(UiContainerPrivate));
313 memset(ctn, 0, sizeof(UiContainerPrivate)); 313 memset(ctn, 0, sizeof(UiContainerPrivate));
314 ctn->prepare = ui_frame_container_prepare; 314 ctn->prepare = ui_frame_container_prepare;
315 ctn->add = ui_frame_container_add; 315 ctn->add = ui_frame_container_add;
316 ctn->widget = frame; 316 ctn->widget = frame;
317 return (UiContainerX*)ctn; 317 return (UiContainer*)ctn;
318 } 318 }
319 319
320 Widget ui_frame_container_prepare(UiContainerPrivate *ctn, UiLayout *layout, Arg *args, int *n) { 320 Widget ui_frame_container_prepare(UiContainerPrivate *ctn, UiLayout *layout, Arg *args, int *n) {
321 int a = *n; 321 int a = *n;
322 XtSetArg(args[a], XmNchildType, XmFRAME_WORKAREA_CHILD); 322 XtSetArg(args[a], XmNchildType, XmFRAME_WORKAREA_CHILD);
470 i->obj = tabview; 470 i->obj = tabview;
471 i->get = ui_tabview_get; 471 i->get = ui_tabview_get;
472 i->set = ui_tabview_set; 472 i->set = ui_tabview_set;
473 } 473 }
474 474
475 uic_object_push_container(obj, (UiContainerX*)ct); 475 uic_object_push_container(obj, (UiContainer*)ct);
476 476
477 uic_widget_set_visibility_states(obj->ctx, form, args->visibility_states); 477 uic_widget_set_visibility_states(obj->ctx, form, args->visibility_states);
478 478
479 return form; 479 return form;
480 } 480 }
554 Widget grid = XtCreateManagedWidget("vbox", gridClass, tabviewdata->content, args, n); 554 Widget grid = XtCreateManagedWidget("vbox", gridClass, tabviewdata->content, args, n);
555 555
556 UiObject *newobj = ui_calloc(tabviewdata->obj->ctx, 1, sizeof(UiObject)); 556 UiObject *newobj = ui_calloc(tabviewdata->obj->ctx, 1, sizeof(UiObject));
557 newobj->ctx = tabviewdata->obj->ctx; 557 newobj->ctx = tabviewdata->obj->ctx;
558 newobj->widget = grid; 558 newobj->widget = grid;
559 UiContainerX *container = ui_box_container(newobj, grid, UI_BOX_VERTICAL); 559 UiContainer *container = ui_box_container(newobj, grid, UI_BOX_VERTICAL);
560 newobj->container_begin = container; 560 newobj->container_begin = container;
561 newobj->container_end = container; 561 newobj->container_end = container;
562 return newobj; 562 return newobj;
563 } else { 563 } else {
564 fprintf(stderr, "ui_tabview_select: widget is not a tabview\n"); 564 fprintf(stderr, "ui_tabview_select: widget is not a tabview\n");
691 691
692 void ui_scrolledwindow_add(UiContainerPrivate *ctn, Widget widget) { 692 void ui_scrolledwindow_add(UiContainerPrivate *ctn, Widget widget) {
693 693
694 } 694 }
695 695
696 static UiContainerX* ui_scrolledwindow_container(UiObject *obj, Widget scrolledwindow) { 696 static UiContainer* ui_scrolledwindow_container(UiObject *obj, Widget scrolledwindow) {
697 UiContainerPrivate *ctn = ui_malloc(obj->ctx, sizeof(UiContainerPrivate)); 697 UiContainerPrivate *ctn = ui_malloc(obj->ctx, sizeof(UiContainerPrivate));
698 memset(ctn, 0, sizeof(UiContainerPrivate)); 698 memset(ctn, 0, sizeof(UiContainerPrivate));
699 ctn->prepare = ui_scrolledwindow_prepare; 699 ctn->prepare = ui_scrolledwindow_prepare;
700 ctn->add = ui_scrolledwindow_add; 700 ctn->add = ui_scrolledwindow_add;
701 ctn->widget = scrolledwindow; 701 ctn->widget = scrolledwindow;
702 return (UiContainerX*)ctn; 702 return (UiContainer*)ctn;
703 } 703 }
704 704
705 UIWIDGET ui_scrolledwindow_create(UiObject* obj, UiFrameArgs *args) { 705 UIWIDGET ui_scrolledwindow_create(UiObject* obj, UiFrameArgs *args) {
706 UiContainerPrivate *ctn = ui_obj_container(obj); 706 UiContainerPrivate *ctn = ui_obj_container(obj);
707 UiLayout layout = UI_ARGS2LAYOUT(args); 707 UiLayout layout = UI_ARGS2LAYOUT(args);
719 719
720 Widget parent = ui_container_prepare(ctn, &layout, xargs, &n); 720 Widget parent = ui_container_prepare(ctn, &layout, xargs, &n);
721 Widget scrolledwindow = XmCreateScrolledWindow(parent, "scrolledwindow", xargs, n); 721 Widget scrolledwindow = XmCreateScrolledWindow(parent, "scrolledwindow", xargs, n);
722 ui_container_add(ctn, scrolledwindow); 722 ui_container_add(ctn, scrolledwindow);
723 723
724 UiContainerX *container = ui_scrolledwindow_container(obj, scrolledwindow); 724 UiContainer *container = ui_scrolledwindow_container(obj, scrolledwindow);
725 uic_object_push_container(obj, container); 725 uic_object_push_container(obj, container);
726 726
727 return scrolledwindow; 727 return scrolledwindow;
728 } 728 }
729 729

mercurial