[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/stone*','')
|
||||||
my_module.copy_path('tools/visual_test/data/sphere.png','')
|
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/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/"))
|
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/TestImage.h>
|
||||||
#include <appl/TestDistanceField.h>
|
#include <appl/TestDistanceField.h>
|
||||||
#include <etk/os/FSNode.h>
|
#include <etk/os/FSNode.h>
|
||||||
|
#include <ewol/parameter/Value.h>
|
||||||
|
|
||||||
|
|
||||||
static const char * l_eventChangeTheme = "event-change-theme";
|
static const char * l_eventChangeTheme = "event-change-theme";
|
||||||
@ -49,6 +50,19 @@ appl::MainWindows::MainWindows() :
|
|||||||
|
|
||||||
void appl::MainWindows::init() {
|
void appl::MainWindows::init() {
|
||||||
ewol::widget::Windows::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> mySizerHori;
|
||||||
std::shared_ptr<ewol::widget::Sizer> mySizerVert;
|
std::shared_ptr<ewol::widget::Sizer> mySizerVert;
|
||||||
std::shared_ptr<ewol::widget::Button> myButton;
|
std::shared_ptr<ewol::widget::Button> myButton;
|
||||||
@ -107,6 +121,17 @@ void appl::MainWindows::init() {
|
|||||||
mySizerHori->setFill(bvec2(true,true));
|
mySizerHori->setFill(bvec2(true,true));
|
||||||
mySizerHori->lockExpand(bvec2(true,true));
|
mySizerHori->lockExpand(bvec2(true,true));
|
||||||
mySizerVert->subWidgetAdd(mySizerHori);
|
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);
|
m_sizerDynamic = ewol::widget::Sizer::create(ewol::widget::Sizer::modeVert);
|
||||||
if (m_sizerDynamic == nullptr) {
|
if (m_sizerDynamic == nullptr) {
|
||||||
APPL_ERROR("Allocation error mySizerHori");
|
APPL_ERROR("Allocation error mySizerHori");
|
||||||
@ -134,6 +159,7 @@ void appl::MainWindows::init() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
mySizerHori->subWidgetAdd(m_sizerVert);
|
mySizerHori->subWidgetAdd(m_sizerVert);
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void appl::MainWindows::onCallbackThemeChange(const bool& _value) {
|
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) {
|
void appl::MainWindows::onCallbackWidgetChange(int32_t _increment) {
|
||||||
m_idWidget += _increment;
|
m_idWidget += _increment;
|
||||||
|
std::shared_ptr<ewol::Widget> oldWidget = m_subWidget;
|
||||||
if (m_subWidget != nullptr) {
|
std::string tmpDescription;
|
||||||
m_subWidget->destroy();
|
std::string tmpConstruct;
|
||||||
// in theory it must be removed ...
|
|
||||||
m_subWidget.reset();
|
|
||||||
}
|
|
||||||
switch(m_idWidget) {
|
switch(m_idWidget) {
|
||||||
case 0:
|
case 0:
|
||||||
m_subWidget = appl::TestButton::create();
|
tmpConstruct = std::string()
|
||||||
if (m_subWidget != nullptr) {
|
+ "<button name='[TEST]Button:TO-TEST' expand='false,false' fill='false,false' >\n"
|
||||||
m_sizerVert->subWidgetAdd(m_subWidget);
|
+ " <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";
|
||||||
if (m_testName!=nullptr) {
|
tmpDescription = "TestButton";
|
||||||
m_testName->setLabel("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;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
m_subWidget = TestDistanceField::create();
|
m_subWidget = TestDistanceField::create();
|
||||||
if (m_subWidget != nullptr) {
|
if (m_subWidget != nullptr) {
|
||||||
m_sizerVert->subWidgetAdd(m_subWidget);
|
m_sizerVert->subWidgetAdd(m_subWidget);
|
||||||
}
|
}
|
||||||
if (m_testName != nullptr) {
|
tmpDescription = "Test Distance Field";
|
||||||
m_testName->setLabel("Test Distance Field");
|
*/
|
||||||
};
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
m_subWidget = TestButtonColor::create();
|
|
||||||
if (m_subWidget != nullptr) {
|
|
||||||
m_sizerVert->subWidgetAdd(m_subWidget);
|
|
||||||
}
|
|
||||||
if (m_testName != nullptr) {
|
|
||||||
m_testName->setLabel("TestButtonColor");
|
|
||||||
};
|
|
||||||
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;
|
break;
|
||||||
}
|
}
|
||||||
|
// 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->subWidgetReplace(oldWidget, m_subWidget);
|
||||||
|
}
|
||||||
|
if (m_testName!=nullptr) {
|
||||||
|
m_testName->setLabel("TestButton");
|
||||||
|
};
|
||||||
updateProperty();
|
updateProperty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -317,7 +321,16 @@ void appl::MainWindows::updateProperty() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
APPL_INFO("set parameter : X name=" << param->getName() << " value=" << _value);
|
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;
|
return;
|
||||||
});
|
});
|
||||||
std::shared_ptr<ewol::widget::Label> widgetLabel = ewol::widget::Label::create("x");
|
std::shared_ptr<ewol::widget::Label> widgetLabel = ewol::widget::Label::create("x");
|
||||||
@ -331,7 +344,16 @@ void appl::MainWindows::updateProperty() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
APPL_INFO("set parameter : Y name=" << param->getName() << " value=" << _value);
|
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;
|
return;
|
||||||
});
|
});
|
||||||
widgetLabel = ewol::widget::Label::create("y");
|
widgetLabel = ewol::widget::Label::create("y");
|
||||||
@ -384,14 +406,9 @@ void appl::MainWindows::updateProperty() {
|
|||||||
mySpacer->setExpand(bvec2(true,false));
|
mySpacer->setExpand(bvec2(true,false));
|
||||||
mySpacer->setFill(bvec2(true,false));
|
mySpacer->setFill(bvec2(true,false));
|
||||||
mySpacer->setMinSize(vec2(3,3));
|
mySpacer->setMinSize(vec2(3,3));
|
||||||
mySpacer->setColor(0x000000AA);
|
mySpacer->setColor(etk::color::blue);
|
||||||
m_sizerDynamic->subWidgetAddStart(mySpacer);
|
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/Button.h>
|
||||||
#include <ewol/widget/Label.h>
|
#include <ewol/widget/Label.h>
|
||||||
#include <ewol/widget/Spacer.h>
|
#include <ewol/widget/Spacer.h>
|
||||||
|
#include <ewol/widget/Composer.h>
|
||||||
namespace appl {
|
namespace appl {
|
||||||
class MainWindows : public ewol::widget::Windows {
|
class MainWindows : public ewol::widget::Windows {
|
||||||
private:
|
private:
|
||||||
|
std::shared_ptr<ewol::widget::Composer> m_composer;
|
||||||
std::shared_ptr<ewol::widget::Sizer> m_sizerVert;
|
std::shared_ptr<ewol::widget::Sizer> m_sizerVert;
|
||||||
std::shared_ptr<ewol::widget::Sizer> m_sizerDynamic;
|
std::shared_ptr<ewol::widget::Sizer> m_sizerDynamic;
|
||||||
std::shared_ptr<ewol::Widget> m_subWidget;
|
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