diff -r 8d490d97aab8 -r f72c4f01bf4a ui/qt/container.cpp --- a/ui/qt/container.cpp Wed Jan 07 17:25:33 2015 +0100 +++ b/ui/qt/container.cpp Wed Jan 07 20:11:36 2015 +0100 @@ -57,8 +57,7 @@ QSpacerItem *newspace = new QSpacerItem(0, 0, QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); box->removeItem(space); box->addSpacerItem(newspace); - space = newspace; - + space = newspace; } if(fill) { @@ -91,6 +90,51 @@ +/* -------------------- UiGridContainer -------------------- */ + +UiGridContainer::UiGridContainer(QGridLayout* grid) { + this->grid = grid; + grid->setContentsMargins(QMargins(0,0,0,0)); + grid->setSpacing(0); + ui_reset_layout(layout); +} + +void UiGridContainer::add(QWidget* widget, bool fill) { + if(layout.newline) { + QSpacerItem *s = new QSpacerItem(0, 0, QSizePolicy::MinimumExpanding, QSizePolicy::Minimum); + grid->addItem(s, y, x); + x = 0; + y++; + } + if(x == 0) { + if(space) { + grid->removeItem(space); + } + QSpacerItem *s = new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding); + grid->addItem(s, y+1, 0); + space = s; + } + + grid->addWidget(widget, y, x); + x++; + + ui_reset_layout(layout); +} + +UIWIDGET ui_grid(UiObject *obj) { + UiContainer *ct = uic_get_current_container(obj); + QWidget *widget = new QWidget(); + QGridLayout *grid = new QGridLayout(); + widget->setLayout(grid); + ct->add(widget, true); + + UiObject *newobj = uic_object_new(obj, widget); + newobj->container = new UiGridContainer(grid); + uic_obj_add(obj, newobj); + + return widget; +} + /* -------------------- layout functions -------------------- */ @@ -98,3 +142,8 @@ UiContainer *ct = uic_get_current_container(obj); ct->layout.fill = ui_bool2lb(fill); } + +void ui_newline(UiObject *obj) { + UiContainer *ct = uic_get_current_container(obj); + ct->layout.newline = TRUE; +}