[DEV] better test tools for widget
This commit is contained in:
parent
990894af6f
commit
01a9d6b1c5
@ -49,6 +49,7 @@ def create(target, module_name):
|
||||
my_module.copy_path('tools/visual_test/data/stone*','')
|
||||
my_module.copy_path('tools/visual_test/data/sphere.png','')
|
||||
my_module.copy_path('tools/visual_test/data/sphere.obj','')
|
||||
my_module.copy_path('tools/visual_test/data/gui.xml','')
|
||||
|
||||
my_module.add_path(os.path.join(tools.get_current_path(__file__), "tools/visual_test/"))
|
||||
|
||||
|
@ -31,6 +31,7 @@
|
||||
#include <appl/TestImage.h>
|
||||
#include <appl/TestDistanceField.h>
|
||||
#include <etk/os/FSNode.h>
|
||||
#include <ewol/parameter/Value.h>
|
||||
|
||||
|
||||
static const char * l_eventChangeTheme = "event-change-theme";
|
||||
@ -49,6 +50,19 @@ appl::MainWindows::MainWindows() :
|
||||
|
||||
void appl::MainWindows::init() {
|
||||
ewol::widget::Windows::init();
|
||||
|
||||
m_composer = ewol::widget::Composer::create(ewol::widget::Composer::file, "DATA:gui.xml");
|
||||
setSubWidget(m_composer);
|
||||
externSubBind(m_composer, ewol::widget::Button, "appl-theme-toggle", signalValue, shared_from_this(), &appl::MainWindows::onCallbackThemeChange);
|
||||
externSubBind(m_composer, ewol::widget::Button, "appl-previous-widget", signalPressed, shared_from_this(), &appl::MainWindows::onCallbackWidgetChange, -1);
|
||||
externSubBind(m_composer, ewol::widget::Button, "appl-next-widget", signalPressed, shared_from_this(), &appl::MainWindows::onCallbackWidgetChange, 1);
|
||||
|
||||
m_sizerVert = std::dynamic_pointer_cast<ewol::widget::Sizer>(m_composer->getSubObjectNamed("appl-upper-test-widget"));
|
||||
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;
|
||||
@ -107,6 +121,17 @@ void appl::MainWindows::init() {
|
||||
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");
|
||||
@ -134,6 +159,7 @@ void appl::MainWindows::init() {
|
||||
return;
|
||||
}
|
||||
mySizerHori->subWidgetAdd(m_sizerVert);
|
||||
*/
|
||||
}
|
||||
|
||||
void appl::MainWindows::onCallbackThemeChange(const bool& _value) {
|
||||
@ -149,79 +175,57 @@ void appl::MainWindows::onCallbackThemeChange(const bool& _value) {
|
||||
|
||||
void appl::MainWindows::onCallbackWidgetChange(int32_t _increment) {
|
||||
m_idWidget += _increment;
|
||||
|
||||
if (m_subWidget != nullptr) {
|
||||
m_subWidget->destroy();
|
||||
// in theory it must be removed ...
|
||||
m_subWidget.reset();
|
||||
}
|
||||
std::shared_ptr<ewol::Widget> oldWidget = m_subWidget;
|
||||
std::string tmpDescription;
|
||||
std::string tmpConstruct;
|
||||
switch(m_idWidget) {
|
||||
case 0:
|
||||
m_subWidget = appl::TestButton::create();
|
||||
if (m_subWidget != nullptr) {
|
||||
m_sizerVert->subWidgetAdd(m_subWidget);
|
||||
}
|
||||
if (m_testName!=nullptr) {
|
||||
m_testName->setLabel("TestButton");
|
||||
};
|
||||
tmpConstruct = std::string()
|
||||
+ "<button name='[TEST]Button:TO-TEST' expand='false,false' fill='false,false' >\n"
|
||||
+ " <label>My <font color='#FF0000'>Button</font> <br/> And Some under line<br/> plop <br/> and an other super long line ...</label>\n"
|
||||
+ "</button>\n";
|
||||
tmpDescription = "TestButton";
|
||||
break;
|
||||
case 1:
|
||||
tmpConstruct = "<ButtonColor/>";
|
||||
tmpDescription = "TestButtonColor";
|
||||
break;
|
||||
case 2:
|
||||
tmpConstruct = "<label>Simple string</label>\n";
|
||||
tmpDescription = "TestLabel";
|
||||
break;
|
||||
case 3:
|
||||
tmpConstruct = "<image src='DATA:sphere.png'/>\n";
|
||||
tmpDescription = "TestImage";
|
||||
break;
|
||||
case 4:
|
||||
tmpConstruct = "<checkbox/>\n";
|
||||
tmpDescription = "TestCheckbox";
|
||||
break;
|
||||
default:
|
||||
tmpConstruct = "<label expand=false fill=false>Simple string</label>\n";
|
||||
tmpDescription = "Test Label";
|
||||
m_idWidget = -1;
|
||||
break;
|
||||
/*
|
||||
break;
|
||||
case 1:
|
||||
m_subWidget = TestDistanceField::create();
|
||||
if (m_subWidget != nullptr) {
|
||||
m_sizerVert->subWidgetAdd(m_subWidget);
|
||||
}
|
||||
if (m_testName != nullptr) {
|
||||
m_testName->setLabel("Test Distance Field");
|
||||
};
|
||||
tmpDescription = "Test Distance Field";
|
||||
*/
|
||||
break;
|
||||
case 2:
|
||||
m_subWidget = TestButtonColor::create();
|
||||
}
|
||||
// create the widget with a xml generator (readable for test ...):
|
||||
m_subWidget = ewol::widget::composerGenerate(ewol::widget::Composer::String, tmpConstruct);
|
||||
if (m_subWidget != nullptr) {
|
||||
m_sizerVert->subWidgetAdd(m_subWidget);
|
||||
m_sizerVert->subWidgetReplace(oldWidget, m_subWidget);
|
||||
}
|
||||
if (m_testName!=nullptr) {
|
||||
m_testName->setLabel("TestButtonColor");
|
||||
m_testName->setLabel("TestButton");
|
||||
};
|
||||
break;
|
||||
case 3:
|
||||
m_subWidget = TestLabel::create();
|
||||
if (m_subWidget != nullptr) {
|
||||
m_sizerVert->subWidgetAdd(m_subWidget);
|
||||
}
|
||||
if (m_testName != nullptr) {
|
||||
m_testName->setLabel("TestLabel");
|
||||
};
|
||||
break;
|
||||
case 4:
|
||||
m_subWidget = TestImage::create();
|
||||
if (m_subWidget != nullptr) {
|
||||
m_sizerVert->subWidgetAdd(m_subWidget);
|
||||
}
|
||||
if (m_testName != nullptr) {
|
||||
m_testName->setLabel("TestImage");
|
||||
};
|
||||
break;
|
||||
case 5:
|
||||
m_subWidget = appl::TestCheckBox::create();
|
||||
if (m_subWidget != nullptr) {
|
||||
m_sizerVert->subWidgetAdd(m_subWidget);
|
||||
}
|
||||
if (m_testName != nullptr) {
|
||||
m_testName->setLabel("TestCheckbox");
|
||||
};
|
||||
break;
|
||||
default:
|
||||
m_subWidget = ewol::widget::Label::create("Test software for EWOL");
|
||||
if (m_subWidget != nullptr) {
|
||||
m_subWidget->setExpand(bvec2(true,true));
|
||||
m_sizerVert->subWidgetAdd(m_subWidget);
|
||||
}
|
||||
if (m_testName != nullptr) {
|
||||
m_testName->setLabel("Label");
|
||||
};
|
||||
m_idWidget = -1;
|
||||
break;
|
||||
}
|
||||
updateProperty();
|
||||
}
|
||||
|
||||
@ -317,7 +321,16 @@ void appl::MainWindows::updateProperty() {
|
||||
return;
|
||||
}
|
||||
APPL_INFO("set parameter : X name=" << param->getName() << " value=" << _value);
|
||||
//m_subWidget->parameterSet(param->getName(), etk::to_string(_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);
|
||||
return;
|
||||
});
|
||||
std::shared_ptr<ewol::widget::Label> widgetLabel = ewol::widget::Label::create("x");
|
||||
@ -331,7 +344,16 @@ void appl::MainWindows::updateProperty() {
|
||||
return;
|
||||
}
|
||||
APPL_INFO("set parameter : Y name=" << param->getName() << " value=" << _value);
|
||||
//m_subWidget->parameterSet(param->getName(), etk::to_string(_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);
|
||||
return;
|
||||
});
|
||||
widgetLabel = ewol::widget::Label::create("y");
|
||||
@ -384,14 +406,9 @@ void appl::MainWindows::updateProperty() {
|
||||
mySpacer->setExpand(bvec2(true,false));
|
||||
mySpacer->setFill(bvec2(true,false));
|
||||
mySpacer->setMinSize(vec2(3,3));
|
||||
mySpacer->setColor(0x000000AA);
|
||||
mySpacer->setColor(etk::color::blue);
|
||||
m_sizerDynamic->subWidgetAddStart(mySpacer);
|
||||
}
|
||||
}
|
||||
mySpacer = ewol::widget::Spacer::create();
|
||||
if (mySpacer != nullptr) {
|
||||
mySpacer->setExpand(bvec2(true,true));
|
||||
m_sizerDynamic->subWidgetAddStart(mySpacer);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -16,9 +16,11 @@
|
||||
#include <ewol/widget/Button.h>
|
||||
#include <ewol/widget/Label.h>
|
||||
#include <ewol/widget/Spacer.h>
|
||||
#include <ewol/widget/Composer.h>
|
||||
namespace appl {
|
||||
class MainWindows : public ewol::widget::Windows {
|
||||
private:
|
||||
std::shared_ptr<ewol::widget::Composer> m_composer;
|
||||
std::shared_ptr<ewol::widget::Sizer> m_sizerVert;
|
||||
std::shared_ptr<ewol::widget::Sizer> m_sizerDynamic;
|
||||
std::shared_ptr<ewol::Widget> m_subWidget;
|
||||
|
59
tools/visual_test/data/gui.xml
Normal file
59
tools/visual_test/data/gui.xml
Normal file
@ -0,0 +1,59 @@
|
||||
<composer>
|
||||
<sizer mode="vert"
|
||||
expand="true,true"
|
||||
fill="true,true">
|
||||
<sizer mode="hori"
|
||||
expand="true,false"
|
||||
lock="false,true"
|
||||
fill="true,true">
|
||||
<button name="appl-theme-toggle"
|
||||
toggle="true">
|
||||
<label expand="false,false" fill="true,true">default theme (cube)</label>
|
||||
<label expand="false,false" fill="true,true">rounded theme</label>
|
||||
</button>
|
||||
<button name="appl-previous-widget">
|
||||
<label expand="false,false" fill="true,true">Previous Widget</label>
|
||||
</button>
|
||||
<button name="appl-next-widget">
|
||||
<label expand="false,false" fill="true,true">Next Widget</label>
|
||||
</button>
|
||||
<label name="appl-label-test" expand="true,false" fill="true,true">Test :</label>
|
||||
<spacer expand="true,true"/>
|
||||
</sizer>
|
||||
<spacer min-size="(3,3)px" expand="true,false" fill="true" corlor="red"/>
|
||||
<sizer mode="hori"
|
||||
expand="true,true"
|
||||
lock="true,true"
|
||||
fill="true,true">
|
||||
<scroll fill="true"
|
||||
expand="false,true"
|
||||
gravity="top"
|
||||
lock="true,true"
|
||||
limit="0,0.75"
|
||||
min-size="25%">
|
||||
<sizer mode="vert"
|
||||
expand="false,false"
|
||||
fill="true"
|
||||
name="appl-dynamic-config">
|
||||
<label expand="true" fill="true">No config</label>
|
||||
</sizer>
|
||||
</scroll>
|
||||
<sizer mode="vert"
|
||||
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>
|
||||
</sizer>
|
||||
</sizer>
|
||||
</sizer>
|
||||
</composer>
|
Loading…
x
Reference in New Issue
Block a user