[DEV] add tool a better display of the widgets

This commit is contained in:
Edouard DUPIN 2016-01-29 23:57:29 +01:00
parent 8ccb93508d
commit 44749e4a6f
3 changed files with 60 additions and 152 deletions

View File

@ -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();

View File

@ -61,105 +61,6 @@ void appl::MainWindows::init() {
m_sizerDynamic = std::dynamic_pointer_cast<ewol::widget::Sizer>(m_composer->getSubObjectNamed("appl-dynamic-config"));
m_subWidget = std::dynamic_pointer_cast<ewol::Widget>(m_composer->getSubObjectNamed("[TEST]TO-TEST"));
m_testName = std::dynamic_pointer_cast<ewol::widget::Label>(m_composer->getSubObjectNamed("appl-label-test"));
/*
std::shared_ptr<ewol::widget::Sizer> mySizerHori;
std::shared_ptr<ewol::widget::Sizer> mySizerVert;
std::shared_ptr<ewol::widget::Button> 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<ewol::widget::Spacer> 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);
+ " <sizer mode='hori'>\n"
+ " <spacer expand='false,false' fill='true,false' min-size='10,10px' color='#F008'/>\n"
+ " <sizer mode='vert'>\n"
+ " <spacer expand='false,false' fill='false,true' min-size='10,10px' color='#FF08'/>\n"
+ " <ButtonColor name='[TEST]TO-TEST' expand='false,false' fill='false,false' />\n"
+ " <spacer expand='false,false' fill='false,true' min-size='10,10px' color='#0FF8'/>\n"
+ " </sizer>\n"
+ " <spacer expand='false,false' fill='true,false' min-size='10,10px' color='#0F08'/>\n"
+ " </sizer>\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<ewol::widget::CheckBox> widgetTmp = ewol::widget::CheckBox::create();
widgetSizer->subWidgetAdd(widgetTmp);
ewol::parameter::Parameter* param = m_subWidget->getParameterRaw(iii);
ewol::parameter::Value<bvec2>* paramValue = dynamic_cast<ewol::parameter::Value<bvec2>*>(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<bvec2>* paramValue = dynamic_cast<ewol::parameter::Value<bvec2>*>(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<bvec2>* paramValue = dynamic_cast<ewol::parameter::Value<bvec2>*>(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);

View File

@ -42,17 +42,9 @@
expand="true,true"
fill="true,true"
border="10px"
border-color="#F008">
<sizer mode="hori">
<spacer expand="false,false" fill="true" min-size="10,10px" color="#F008"/>
<sizer mode="vert"
name="appl-upper-test-widget">
<spacer expand="false,false" fill="true" min-size="10,10px" color="#FF08"/>
<label name="[TEST]TO-TEST" expand="true" fill="true">No widget</label>
<spacer expand='false,false' fill='true' min-size='10,10px' color="#0FF8"/>
</sizer>
<spacer expand="false,false" fill="true" min-size="10,10px" color="#0F08"/>
</sizer>
border-color="#F008"
name="appl-upper-test-widget">
<label name="[TEST]TO-TEST" expand="true" fill="true">No widget</label>
</sizer>
</sizer>
</sizer>