[DEV] add tool a better display of the widgets
This commit is contained in:
parent
8ccb93508d
commit
44749e4a6f
@ -121,27 +121,28 @@ void ewol::widget::Sizer::calculateMinMaxSize() {
|
|||||||
EWOL_VERBOSE("[" << getId() << "] {" << getObjectType() << "} set min size : " << m_minSize);
|
EWOL_VERBOSE("[" << getId() << "] {" << getObjectType() << "} set min size : " << m_minSize);
|
||||||
m_minSize += tmpBorderSize*2;
|
m_minSize += tmpBorderSize*2;
|
||||||
for (auto &it : m_subWidget) {
|
for (auto &it : m_subWidget) {
|
||||||
if (it != nullptr) {
|
if (it == nullptr) {
|
||||||
it->calculateMinMaxSize();
|
continue;
|
||||||
if (it->canExpand().x() == true) {
|
}
|
||||||
m_subExpend.setX(true);
|
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) {
|
} else {
|
||||||
m_subExpend.setY(true);
|
m_minSize.setX(m_minSize.x() + tmpSize.x());
|
||||||
}
|
if (tmpSize.y()>m_minSize.y()) {
|
||||||
vec2 tmpSize = it->getCalculateMinSize();
|
m_minSize.setY(tmpSize.y());
|
||||||
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());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -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.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.setPos(vec3(tmpBorderSize.x(), m_size.y()-tmpBorderSize.y(), 0) );
|
||||||
m_draw.rectangleWidth(vec3(m_size.x()-tmpBorderSize.x()*2.0f, 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() {
|
void ewol::widget::Sizer::onDraw() {
|
||||||
m_draw.draw();
|
m_draw.draw();
|
||||||
|
@ -61,105 +61,6 @@ void appl::MainWindows::init() {
|
|||||||
m_sizerDynamic = std::dynamic_pointer_cast<ewol::widget::Sizer>(m_composer->getSubObjectNamed("appl-dynamic-config"));
|
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_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"));
|
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) {
|
void appl::MainWindows::onCallbackThemeChange(const bool& _value) {
|
||||||
@ -315,19 +216,16 @@ void appl::MainWindows::updateProperty() {
|
|||||||
//type = "bvec2";
|
//type = "bvec2";
|
||||||
std::shared_ptr<ewol::widget::CheckBox> widgetTmp = ewol::widget::CheckBox::create();
|
std::shared_ptr<ewol::widget::CheckBox> widgetTmp = ewol::widget::CheckBox::create();
|
||||||
widgetSizer->subWidgetAdd(widgetTmp);
|
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) {
|
widgetTmp->signalValue.connect([=](const bool& _value) {
|
||||||
if (m_subWidget == nullptr) {
|
|
||||||
APPL_ERROR("nullptr...");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
APPL_INFO("set parameter : X name=" << param->getName() << " value=" << _value);
|
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();
|
bvec2 lastValueInterpreted = paramValue->get();
|
||||||
lastValueInterpreted.setX(_value);
|
lastValueInterpreted.setX(_value);
|
||||||
paramValue->set(lastValueInterpreted);
|
paramValue->set(lastValueInterpreted);
|
||||||
@ -338,19 +236,9 @@ void appl::MainWindows::updateProperty() {
|
|||||||
|
|
||||||
widgetTmp = ewol::widget::CheckBox::create();
|
widgetTmp = ewol::widget::CheckBox::create();
|
||||||
widgetSizer->subWidgetAdd(widgetTmp);
|
widgetSizer->subWidgetAdd(widgetTmp);
|
||||||
|
widgetTmp->setValue(value.y());
|
||||||
widgetTmp->signalValue.connect([=](const bool& _value) {
|
widgetTmp->signalValue.connect([=](const bool& _value) {
|
||||||
if (m_subWidget == nullptr) {
|
|
||||||
APPL_ERROR("nullptr...");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
APPL_INFO("set parameter : Y name=" << param->getName() << " value=" << _value);
|
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();
|
bvec2 lastValueInterpreted = paramValue->get();
|
||||||
lastValueInterpreted.setY(_value);
|
lastValueInterpreted.setY(_value);
|
||||||
paramValue->set(lastValueInterpreted);
|
paramValue->set(lastValueInterpreted);
|
||||||
|
@ -42,17 +42,9 @@
|
|||||||
expand="true,true"
|
expand="true,true"
|
||||||
fill="true,true"
|
fill="true,true"
|
||||||
border="10px"
|
border="10px"
|
||||||
border-color="#F008">
|
border-color="#F008"
|
||||||
<sizer mode="hori">
|
name="appl-upper-test-widget">
|
||||||
<spacer expand="false,false" fill="true" min-size="10,10px" color="#F008"/>
|
<label name="[TEST]TO-TEST" expand="true" fill="true">No widget</label>
|
||||||
<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>
|
|
||||||
</sizer>
|
</sizer>
|
||||||
</sizer>
|
</sizer>
|
||||||
</sizer>
|
</sizer>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user