6 Grid::Grid(Layout &l, size_t c):
18 if(row_bottom.empty())
19 throw arrangement_error("empty row not allowed");
24 void Grid::process_widget(Widget &wdg, Side side, bool aligned)
28 Edge &top_edge = (first_row ? edges[TOP] : row_top);
29 if(top_edge.aligned && aligned)
30 add_constraint(wdg, Layout::ALIGN_TOP, top_edge);
32 bool snug = (edges[BOTTOM].aligned && aligned);
33 add_constraint(wdg, (snug ? Layout::BELOW : Layout::FAR_BELOW), BOTTOM);
35 top_edge.add(wdg, aligned);
39 if(row_bottom.aligned && aligned)
40 add_constraint(wdg, Layout::ALIGN_BOTTOM, row_bottom);
42 row_bottom.add(wdg, aligned);
46 if(columns[column].left.aligned && aligned)
47 add_constraint(wdg, Layout::ALIGN_LEFT, columns[column].left);
50 bool snug = (columns[column-1].right.aligned && aligned);
51 add_constraint(wdg, (snug ? Layout::RIGHT_OF : Layout::FAR_RIGHT_OF), columns[column-1].right);
54 edges[LEFT].add(wdg, (aligned && !column));
55 columns[column].left.add(wdg, aligned);
59 if(columns[column].right.aligned && aligned)
60 add_constraint(wdg, Layout::ALIGN_RIGHT, columns[column].right);
62 edges[RIGHT].add(wdg, (aligned && column+1==columns.size()));
63 columns[column].right.add(wdg, aligned);
67 void Grid::finish_widget(Widget &wdg)
69 layout.set_gravity(wdg, -1, 1);
72 void Grid::finish_slot()
75 if(column==columns.size())
79 void Grid::finish_row()
81 edges[BOTTOM] = row_bottom;
89 Grid::Loader::Loader(Grid &g):
90 DataFile::ObjectLoader<Grid>(g)
92 add("next_row", &Loader::next_row);
93 add("skip", &Loader::skip);
96 void Grid::Loader::next_row()
101 void Grid::Loader::skip()