diff --git a/ewol/widget/Sizer.cpp b/ewol/widget/Sizer.cpp index 370076ad..e6a72c37 100644 --- a/ewol/widget/Sizer.cpp +++ b/ewol/widget/Sizer.cpp @@ -121,27 +121,28 @@ void ewol::widget::Sizer::calculateMinMaxSize() { EWOL_VERBOSE("[" << getId() << "] {" << getObjectType() << "} set min size : " << m_minSize); m_minSize += tmpBorderSize*2; for (auto &it : m_subWidget) { - if (it != nullptr) { - it->calculateMinMaxSize(); - if (it->canExpand().x() == true) { - m_subExpend.setX(true); + if (it == nullptr) { + continue; + } + it->calculateMinMaxSize(); + if (it->canExpand().x() == true) { + m_subExpend.setX(true); + } + if (it->canExpand().y() == true) { + m_subExpend.setY(true); + } + vec2 tmpSize = it->getCalculateMinSize(); + EWOL_VERBOSE("[" << getId() << "] NewMinSize=" << tmpSize); + EWOL_VERBOSE("[" << getId() << "] {" << getObjectType() << "} Get minSize="<< tmpSize); + if (m_mode == ewol::widget::Sizer::modeVert) { + m_minSize.setY(m_minSize.y() + tmpSize.y()); + if (tmpSize.x()>m_minSize.x()) { + m_minSize.setX(tmpSize.x()); } - if (it->canExpand().y() == true) { - m_subExpend.setY(true); - } - vec2 tmpSize = it->getCalculateMinSize(); - EWOL_VERBOSE("[" << getId() << "] NewMinSize=" << tmpSize); - EWOL_VERBOSE("[" << getId() << "] {" << getObjectType() << "} Get minSize="<< tmpSize); - if (m_mode == ewol::widget::Sizer::modeVert) { - m_minSize.setY(m_minSize.y() + tmpSize.y()); - if (tmpSize.x()>m_minSize.x()) { - m_minSize.setX(tmpSize.x()); - } - } else { - m_minSize.setX(m_minSize.x() + tmpSize.x()); - if (tmpSize.y()>m_minSize.y()) { - m_minSize.setY(tmpSize.y()); - } + } else { + m_minSize.setX(m_minSize.x() + tmpSize.x()); + if (tmpSize.y()>m_minSize.y()) { + m_minSize.setY(tmpSize.y()); } } } @@ -167,6 +168,33 @@ void ewol::widget::Sizer::onRegenerateDisplay() { m_draw.rectangleWidth(vec3(m_size.x()-tmpBorderSize.x()*2.0f, tmpBorderSize.y(),0) ); m_draw.setPos(vec3(tmpBorderSize.x(), m_size.y()-tmpBorderSize.y(), 0) ); m_draw.rectangleWidth(vec3(m_size.x()-tmpBorderSize.x()*2.0f, tmpBorderSize.y(),0) ); + for (auto &it : m_subWidget) { + if (it == nullptr) { + continue; + } + vec2 deltaOrigin = it->getOrigin() - (m_origin ); + vec2 size = it->getSize(); + // now we display around the widget every element needed + if (m_mode == ewol::widget::Sizer::modeHori) { + // under + + // upper + if (size.y() < m_size.y()-tmpBorderSize.y()*2.0f) { + m_draw.setColor(etk::color::orange); + m_draw.setPos(deltaOrigin + vec2(0, it->getSize().y()) ); + m_draw.rectangleWidth(vec2(it->getSize().x(), m_size.y()-tmpBorderSize.y()*2.0f-it->getSize().y()) ); + } + } else { + // left + + // right + if (size.x() < m_size.x()-tmpBorderSize.x()*2.0f) { + m_draw.setColor(etk::color::orange); + m_draw.setPos(deltaOrigin + vec2(it->getSize().x(), 0) ); + m_draw.rectangleWidth(vec2(m_size.x()-tmpBorderSize.x()*2.0f-it->getSize().x(), it->getSize().y()) ); + } + } + } } void ewol::widget::Sizer::onDraw() { m_draw.draw(); diff --git a/tools/visual_test/appl/MainWindows.cpp b/tools/visual_test/appl/MainWindows.cpp index d748392b..902242d3 100644 --- a/tools/visual_test/appl/MainWindows.cpp +++ b/tools/visual_test/appl/MainWindows.cpp @@ -61,105 +61,6 @@ void appl::MainWindows::init() { m_sizerDynamic = std::dynamic_pointer_cast(m_composer->getSubObjectNamed("appl-dynamic-config")); m_subWidget = std::dynamic_pointer_cast(m_composer->getSubObjectNamed("[TEST]TO-TEST")); m_testName = std::dynamic_pointer_cast(m_composer->getSubObjectNamed("appl-label-test")); - - /* - std::shared_ptr mySizerHori; - std::shared_ptr mySizerVert; - std::shared_ptr myButton; - - mySizerVert = ewol::widget::Sizer::create(ewol::widget::Sizer::modeVert); - if (mySizerVert == nullptr) { - APPL_ERROR("Allocation error mySizerVert"); - return; - } - setSubWidget(mySizerVert); - - mySizerHori = ewol::widget::Sizer::create(ewol::widget::Sizer::modeHori); - if (mySizerHori == nullptr) { - APPL_ERROR("Allocation error mySizerHori"); - return; - } - mySizerVert->subWidgetAdd(mySizerHori); - myButton = ewol::widget::Button::create(); - if (myButton != nullptr) { - myButton->setSubWidget(ewol::widget::Label::create("default theme (cube)")); - myButton->setSubWidgetToggle(ewol::widget::Label::create("rounded theme")); - myButton->setToggleMode(true); - myButton->signalValue.bind(shared_from_this(), &appl::MainWindows::onCallbackThemeChange); - mySizerHori->subWidgetAdd(myButton); - } - myButton = ewol::widget::Button::create(); - if (myButton != nullptr) { - myButton->setSubWidget(ewol::widget::Label::create("Previous Widget test")); - myButton->signalPressed.bind(shared_from_this(), &appl::MainWindows::onCallbackWidgetChange, -1); - mySizerHori->subWidgetAdd(myButton); - } - myButton = ewol::widget::Button::create(); - if (myButton != nullptr) { - myButton->setSubWidget(ewol::widget::Label::create("Next Widget test")); - myButton->signalPressed.bind(shared_from_this(), &appl::MainWindows::onCallbackWidgetChange, 1); - mySizerHori->subWidgetAdd(myButton); - } - m_testName = ewol::widget::Label::create("none"); - if (m_testName != nullptr) { - mySizerHori->subWidgetAdd(m_testName); - } - std::shared_ptr mySpacer = ewol::widget::Spacer::create(); - if (mySpacer != nullptr) { - mySpacer->setExpand(bvec2(false,false)); - mySpacer->setFill(bvec2(true,false)); - mySpacer->setMinSize(vec2(3,3)); - mySpacer->setColor(0x000000FF); - mySizerVert->subWidgetAdd(mySpacer); - } - mySizerHori = ewol::widget::Sizer::create(ewol::widget::Sizer::modeHori); - if (mySizerHori == nullptr) { - APPL_ERROR("Allocation error mySizerVert"); - return; - } - mySizerHori->setExpand(bvec2(true,true)); - mySizerHori->setFill(bvec2(true,true)); - mySizerHori->lockExpand(bvec2(true,true)); - mySizerVert->subWidgetAdd(mySizerHori); - - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - + " \n" - - m_sizerDynamic = ewol::widget::Sizer::create(ewol::widget::Sizer::modeVert); - if (m_sizerDynamic == nullptr) { - APPL_ERROR("Allocation error mySizerHori"); - return; - } - m_sizerDynamic->setExpand(bvec2(false,true)); - m_sizerDynamic->setFill(bvec2(true,true)); - m_sizerDynamic->setMinSize(gale::Dimension::Dimension(vec2(12,0), gale::Dimension::Pourcent)); - m_sizerDynamic->lockExpand(bvec2(true,true)); - mySizerHori->subWidgetAdd(m_sizerDynamic); - mySpacer = ewol::widget::Spacer::create(); - if (mySpacer == nullptr) { - APPL_ERROR("Allocation error mySizerHori"); - return; - } - mySpacer->setExpand(bvec2(false,true)); - mySpacer->setFill(bvec2(false,true)); - mySpacer->setMinSize(vec2(3,3)); - mySpacer->setColor(0x000000FF); - mySizerHori->subWidgetAdd(mySpacer); - - m_sizerVert = ewol::widget::Sizer::create(ewol::widget::Sizer::modeVert); - if (m_sizerVert == nullptr) { - APPL_ERROR("Allocation error mySizerVert"); - return; - } - mySizerHori->subWidgetAdd(m_sizerVert); - */ } void appl::MainWindows::onCallbackThemeChange(const bool& _value) { @@ -315,19 +216,16 @@ void appl::MainWindows::updateProperty() { //type = "bvec2"; std::shared_ptr widgetTmp = ewol::widget::CheckBox::create(); widgetSizer->subWidgetAdd(widgetTmp); + ewol::parameter::Parameter* param = m_subWidget->getParameterRaw(iii); + ewol::parameter::Value* paramValue = dynamic_cast*>(param); + if (paramValue == nullptr) { + APPL_ERROR("nullptr... 2 "); + return; + } + bvec2 value = paramValue->get(); + widgetTmp->setValue(value.x()); widgetTmp->signalValue.connect([=](const bool& _value) { - if (m_subWidget == nullptr) { - APPL_ERROR("nullptr..."); - return; - } APPL_INFO("set parameter : X name=" << param->getName() << " value=" << _value); - ewol::parameter::Parameter* param = m_subWidget->getParameterRaw(iii); - ewol::parameter::Value* paramValue = dynamic_cast*>(param); - if (paramValue == nullptr) { - APPL_ERROR("nullptr... 2 "); - return; - } - std::string lastValue = m_subWidget->parameterGet(param->getName()); bvec2 lastValueInterpreted = paramValue->get(); lastValueInterpreted.setX(_value); paramValue->set(lastValueInterpreted); @@ -338,19 +236,9 @@ void appl::MainWindows::updateProperty() { widgetTmp = ewol::widget::CheckBox::create(); widgetSizer->subWidgetAdd(widgetTmp); + widgetTmp->setValue(value.y()); widgetTmp->signalValue.connect([=](const bool& _value) { - if (m_subWidget == nullptr) { - APPL_ERROR("nullptr..."); - return; - } APPL_INFO("set parameter : Y name=" << param->getName() << " value=" << _value); - ewol::parameter::Parameter* param = m_subWidget->getParameterRaw(iii); - ewol::parameter::Value* paramValue = dynamic_cast*>(param); - if (paramValue == nullptr) { - APPL_ERROR("nullptr... 2 "); - return; - } - std::string lastValue = m_subWidget->parameterGet(param->getName()); bvec2 lastValueInterpreted = paramValue->get(); lastValueInterpreted.setY(_value); paramValue->set(lastValueInterpreted); diff --git a/tools/visual_test/data/gui.xml b/tools/visual_test/data/gui.xml index 9217b333..41b8e1f3 100644 --- a/tools/visual_test/data/gui.xml +++ b/tools/visual_test/data/gui.xml @@ -42,17 +42,9 @@ expand="true,true" fill="true,true" border="10px" - border-color="#F008"> - - - - - - - - - + border-color="#F008" + name="appl-upper-test-widget"> +