QWidget* GUIBuilder::addVerticalLayout(model::gui::VerticalLayout *root, QWidget *parent) { QWidget* widget = new QWidget(parent); doVerticalLayout( root, widget ); return widget; }
QWidget* GUIBuilder::addElementGroup(model::gui::ElementGroup *root, QWidget *parent) { QGroupBox* widget = new QGroupBox( parent ); //widget->setFlat( true ); const std::string key = root->key(); if( root->showLabel() && !root->key().empty() ) { widget->setTitle( (prettyName( root->key(), m_model ) ).c_str() ); } model::gui::Element* child = root->child(); if( child != NULL ) { if( child->type() == model::gui::GRID ) { doGridLayout( static_cast<model::gui::Grid*>( child ), widget ); } else if( child->type() == model::gui::HORIZONTAL_LAYOUT ) { doHorizontalLayout( static_cast<model::gui::HorizontalLayout*>( child ), widget ); } else if( child->type() == model::gui::VERTICAL_LAYOUT ) { doVerticalLayout( static_cast<model::gui::VerticalLayout*>( child ), widget ); } else { QHBoxLayout* layout = new QHBoxLayout( widget ); widget->setLayout( layout ); addChildren( static_cast<model::gui::Container0D<model::gui::Element>*>( root ), widget, layout ); } } return widget; }
std::string _test_vertical_layout() { struct LayoutProperties layoutProperties; layoutPropertiesInitialize(&layoutProperties); struct Element* e1 = createElement(composite); // Device - top level window layoutProperties.width.valueType = fill; layoutProperties.width.value = NAN; layoutProperties.height.valueType = fill; layoutProperties.height.value = NAN; struct Element* e2 = createElement(composite); measureNodeForVerticalLayout(layoutProperties, e2); layoutProperties.width = {fixed, 100}; layoutProperties.height = {fixed, 100}; struct Element* e3 = createElement(composite); measureNodeForVerticalLayout(layoutProperties, e3); addChildElement(e1, e2); addChildElement(e2, e3); doVerticalLayout((*e1)._children, 449, 662, false, false); ut_assert("error, absolute position top e2", (*e3)._measuredTop == 281); ut_assert("error, absolute position left e2", (*e3)._measuredLeft == 174.5); ut_assert("error, absolute width e2", (*e3)._measuredWidth == 100); ut_assert("error, absolute height e2", (*e3)._measuredHeight == 100); ut_assert("error, absolute position top e3", (*e2)._measuredTop == 0); ut_assert("error, absolute position left e3", (*e2)._measuredLeft == 0); ut_assert("error, absolute position width e3", (*e2)._measuredWidth == 449); ut_assert("error, absolute position height e3", (*e2)._measuredHeight == 662); return ""; }