ui/gtk/container.c

changeset 117
b174e721663e
parent 115
e57ca2747782
equal deleted inserted replaced
116:376ef91111f6 117:b174e721663e
168 } 168 }
169 169
170 #else 170 #else
171 gtk_box_pack_start(GTK_BOX(ct->widget), widget, expand, fill, 0); 171 gtk_box_pack_start(GTK_BOX(ct->widget), widget, expand, fill, 0);
172 #endif 172 #endif
173
174 ct->current = widget;
175 } 173 }
176 174
177 UiContainerX* ui_grid_container( 175 UiContainerX* ui_grid_container(
178 UiObject *obj, 176 UiObject *obj,
179 GtkWidget *grid, 177 GtkWidget *grid,
224 int colspan = layout->colspan > 0 ? layout->colspan : 1; 222 int colspan = layout->colspan > 0 ? layout->colspan : 1;
225 int rowspan = layout->rowspan > 0 ? layout->rowspan : 1; 223 int rowspan = layout->rowspan > 0 ? layout->rowspan : 1;
226 224
227 gtk_grid_attach(GTK_GRID(ct->widget), widget, grid->x, grid->y, colspan, rowspan); 225 gtk_grid_attach(GTK_GRID(ct->widget), widget, grid->x, grid->y, colspan, rowspan);
228 grid->x += colspan; 226 grid->x += colspan;
229
230 grid->container.current = widget;
231 } 227 }
232 #endif 228 #endif
233 #ifdef UI_GTK2 229 #ifdef UI_GTK2
234 void ui_grid_container_add(UiContainerPrivate *ct, GtkWidget *widget) { 230 void ui_grid_container_add(UiContainerPrivate *ct, GtkWidget *widget) {
235 UiGridContainer *grid = (UiGridContainer*)ct; 231 UiGridContainer *grid = (UiGridContainer*)ct;
286 } 282 }
287 283
288 void ui_frame_container_add(UiContainerPrivate *ct, GtkWidget *widget, UiLayout *layout) { 284 void ui_frame_container_add(UiContainerPrivate *ct, GtkWidget *widget, UiLayout *layout) {
289 widget = ui_gtk_set_margin(widget, layout->margin, layout->margin_left, layout->margin_right, layout->margin_top, layout->margin_bottom); 285 widget = ui_gtk_set_margin(widget, layout->margin, layout->margin_left, layout->margin_right, layout->margin_top, layout->margin_bottom);
290 FRAME_SET_CHILD(ct->widget, widget); 286 FRAME_SET_CHILD(ct->widget, widget);
291 ct->current = widget;
292 } 287 }
293 288
294 UiContainerX* ui_expander_container(UiObject *obj, GtkWidget *expander) { 289 UiContainerX* ui_expander_container(UiObject *obj, GtkWidget *expander) {
295 UiContainerPrivate *ct = cxCalloc( 290 UiContainerPrivate *ct = cxCalloc(
296 obj->ctx->allocator, 291 obj->ctx->allocator,
302 } 297 }
303 298
304 void ui_expander_container_add(UiContainerPrivate *ct, GtkWidget *widget, UiLayout *layout) { 299 void ui_expander_container_add(UiContainerPrivate *ct, GtkWidget *widget, UiLayout *layout) {
305 widget = ui_gtk_set_margin(widget, layout->margin, layout->margin_left, layout->margin_right, layout->margin_top, layout->margin_bottom); 300 widget = ui_gtk_set_margin(widget, layout->margin, layout->margin_left, layout->margin_right, layout->margin_top, layout->margin_bottom);
306 EXPANDER_SET_CHILD(ct->widget, widget); 301 EXPANDER_SET_CHILD(ct->widget, widget);
307 ct->current = widget;
308 } 302 }
309 303
310 void ui_scrolledwindow_container_add(UiContainerPrivate *ct, GtkWidget *widget, UiLayout *layout) { 304 void ui_scrolledwindow_container_add(UiContainerPrivate *ct, GtkWidget *widget, UiLayout *layout) {
311 widget = ui_gtk_set_margin(widget, layout->margin, layout->margin_left, layout->margin_right, layout->margin_top, layout->margin_bottom); 305 widget = ui_gtk_set_margin(widget, layout->margin, layout->margin_left, layout->margin_right, layout->margin_top, layout->margin_bottom);
312 // TODO: check if the widget implements GtkScrollable 306 // TODO: check if the widget implements GtkScrollable
313 SCROLLEDWINDOW_SET_CHILD(ct->widget, widget); 307 SCROLLEDWINDOW_SET_CHILD(ct->widget, widget);
314 ct->current = widget;
315 } 308 }
316 309
317 UiContainerX* ui_scrolledwindow_container(UiObject *obj, GtkWidget *scrolledwindow) { 310 UiContainerX* ui_scrolledwindow_container(UiObject *obj, GtkWidget *scrolledwindow) {
318 UiContainerPrivate *ct = cxCalloc( 311 UiContainerPrivate *ct = cxCalloc(
319 obj->ctx->allocator, 312 obj->ctx->allocator,
340 fprintf(stderr, "UI Error: widget is not a tabview"); 333 fprintf(stderr, "UI Error: widget is not a tabview");
341 return; 334 return;
342 } 335 }
343 widget = ui_gtk_set_margin(widget, layout->margin, layout->margin_left, layout->margin_right, layout->margin_top, layout->margin_bottom); 336 widget = ui_gtk_set_margin(widget, layout->margin, layout->margin_left, layout->margin_right, layout->margin_top, layout->margin_bottom);
344 data->add_tab(ct->widget, -1, layout->label, widget); 337 data->add_tab(ct->widget, -1, layout->label, widget);
345
346 ct->current = widget;
347 } 338 }
348 339
349 #ifdef UI_GTK2 340 #ifdef UI_GTK2
350 341
351 static void alignment_child_visibility_changed(GtkWidget *widget, gpointer user_data) { 342 static void alignment_child_visibility_changed(GtkWidget *widget, gpointer user_data) {
1160 memset(ct, 0, sizeof(UiSplitPane)); 1151 memset(ct, 0, sizeof(UiSplitPane));
1161 ct->current_pane = pane; 1152 ct->current_pane = pane;
1162 ct->orientation = orientation; 1153 ct->orientation = orientation;
1163 ct->max = max; 1154 ct->max = max;
1164 ct->initial_position = init; 1155 ct->initial_position = init;
1165 ct->children = cxArrayListCreateSimple(CX_STORE_POINTERS, 4); 1156 ct->children = cxArrayListCreate(NULL, CX_STORE_POINTERS, 4);
1166 return ct; 1157 return ct;
1167 } 1158 }
1168 1159
1169 UiContainerX* ui_splitpane_container(UiObject *obj, GtkWidget *pane, UiSplitPane *data) { 1160 UiContainerX* ui_splitpane_container(UiObject *obj, GtkWidget *pane, UiSplitPane *data) {
1170 UiSplitPaneContainer *ct = ui_calloc(obj->ctx, 1, sizeof(UiSplitPaneContainer)); 1161 UiSplitPaneContainer *ct = ui_calloc(obj->ctx, 1, sizeof(UiSplitPaneContainer));
1244 } 1235 }
1245 1236
1246 static void update_itemlist(UiList *list, int c) { 1237 static void update_itemlist(UiList *list, int c) {
1247 UiGtkItemListContainer *ct = list->obj; 1238 UiGtkItemListContainer *ct = list->obj;
1248 1239
1249 CxMap *new_items = cxHashMapCreateSimple(CX_STORE_POINTERS); 1240 CxMap *new_items = cxHashMapCreate(NULL, CX_STORE_POINTERS, 32);
1250 new_items->collection.advanced_destructor = remove_item; 1241 new_items->collection.advanced_destructor = remove_item;
1251 new_items->collection.destructor_data = ct; 1242 new_items->collection.destructor_data = ct;
1252 1243
1253 // only create new widgets for new elements, so at first we have 1244 // only create new widgets for new elements, so at first we have
1254 // to find which elements are new 1245 // to find which elements are new
1329 container->widget = box; 1320 container->widget = box;
1330 container->container = (UiContainerPrivate*)ui_box_container(obj, box, args->container); 1321 container->container = (UiContainerPrivate*)ui_box_container(obj, box, args->container);
1331 container->create_ui = args->create_ui; 1322 container->create_ui = args->create_ui;
1332 container->userdata = args->userdata; 1323 container->userdata = args->userdata;
1333 container->subcontainer = args->subcontainer; 1324 container->subcontainer = args->subcontainer;
1334 container->current_items = cxHashMapCreateSimple(CX_STORE_POINTERS); 1325 container->current_items = cxHashMapCreate(NULL, CX_STORE_POINTERS, 32);
1335 container->current_items->collection.advanced_destructor = remove_item; 1326 container->current_items->collection.advanced_destructor = remove_item;
1336 container->current_items->collection.destructor_data = container; 1327 container->current_items->collection.destructor_data = container;
1337 container->margin = args->sub_margin; 1328 container->margin = args->sub_margin;
1338 container->spacing = args->sub_spacing; 1329 container->spacing = args->sub_spacing;
1339 container->columnspacing = args->sub_columnspacing; 1330 container->columnspacing = args->sub_columnspacing;

mercurial