[DEV] continue integration af an introspection of the widget parameter
This commit is contained in:
parent
293cce1fd0
commit
632fafaa3d
@ -50,21 +50,22 @@ appl::MainWindows::MainWindows() :
|
|||||||
void appl::MainWindows::init() {
|
void appl::MainWindows::init() {
|
||||||
ewol::widget::Windows::init();
|
ewol::widget::Windows::init();
|
||||||
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::Button> myButton;
|
std::shared_ptr<ewol::widget::Button> myButton;
|
||||||
|
|
||||||
m_sizerVert = ewol::widget::Sizer::create(ewol::widget::Sizer::modeVert);
|
mySizerVert = ewol::widget::Sizer::create(ewol::widget::Sizer::modeVert);
|
||||||
if (m_sizerVert == nullptr) {
|
if (mySizerVert == nullptr) {
|
||||||
APPL_ERROR("Allocation error mySizerVert");
|
APPL_ERROR("Allocation error mySizerVert");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
setSubWidget(m_sizerVert);
|
setSubWidget(mySizerVert);
|
||||||
|
|
||||||
mySizerHori = ewol::widget::Sizer::create(ewol::widget::Sizer::modeHori);
|
mySizerHori = ewol::widget::Sizer::create(ewol::widget::Sizer::modeHori);
|
||||||
if (mySizerHori == nullptr) {
|
if (mySizerHori == nullptr) {
|
||||||
APPL_ERROR("Allocation error mySizerHori");
|
APPL_ERROR("Allocation error mySizerHori");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
m_sizerVert->subWidgetAdd(mySizerHori);
|
mySizerVert->subWidgetAdd(mySizerHori);
|
||||||
myButton = ewol::widget::Button::create();
|
myButton = ewol::widget::Button::create();
|
||||||
if (myButton != nullptr) {
|
if (myButton != nullptr) {
|
||||||
myButton->setSubWidget(ewol::widget::Label::create("default theme (cube)"));
|
myButton->setSubWidget(ewol::widget::Label::create("default theme (cube)"));
|
||||||
@ -95,8 +96,44 @@ void appl::MainWindows::init() {
|
|||||||
mySpacer->setFill(bvec2(true,false));
|
mySpacer->setFill(bvec2(true,false));
|
||||||
mySpacer->setMinSize(vec2(3,3));
|
mySpacer->setMinSize(vec2(3,3));
|
||||||
mySpacer->setColor(0x000000FF);
|
mySpacer->setColor(0x000000FF);
|
||||||
m_sizerVert->subWidgetAdd(mySpacer);
|
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);
|
||||||
|
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) {
|
||||||
@ -185,5 +222,176 @@ void appl::MainWindows::onCallbackWidgetChange(int32_t _increment) {
|
|||||||
m_idWidget = -1;
|
m_idWidget = -1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
updateProperty();
|
||||||
|
}
|
||||||
|
|
||||||
|
void appl::MainWindows::updateProperty() {
|
||||||
|
// remove all elements:
|
||||||
|
m_sizerDynamic->subWidgetRemoveAll();
|
||||||
|
if (m_subWidget == nullptr) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
std::shared_ptr<ewol::widget::Label> widget = ewol::widget::Label::create(m_subWidget->getObjectType());
|
||||||
|
m_sizerDynamic->subWidgetAdd(widget);
|
||||||
|
std::shared_ptr<ewol::widget::Spacer> mySpacer = ewol::widget::Spacer::create();
|
||||||
|
if (mySpacer != nullptr) {
|
||||||
|
mySpacer->setExpand(bvec2(true,false));
|
||||||
|
mySpacer->setFill(bvec2(true,false));
|
||||||
|
mySpacer->setMinSize(vec2(3,3));
|
||||||
|
mySpacer->setColor(0x000000AA);
|
||||||
|
m_sizerDynamic->subWidgetAddStart(mySpacer);
|
||||||
|
}
|
||||||
|
for (size_t iii=0; iii<m_subWidget->getParameterCount(); ++iii) {
|
||||||
|
ewol::parameter::Parameter* param = m_subWidget->getParameterRaw(iii);
|
||||||
|
if (param == nullptr) {
|
||||||
|
APPL_WARNING("Parameter EMPTY . " << iii << " : nullptr");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
std::string type = param->getType();
|
||||||
|
if (type == typeid(std::string).name()) {
|
||||||
|
type = "std::string";
|
||||||
|
} else if (type == typeid(gale::Dimension).name()) {
|
||||||
|
type = "gale::Dimension";
|
||||||
|
} else if (type == typeid(bvec2).name()) {
|
||||||
|
type = "bvec2";
|
||||||
|
} else if (type == typeid(ivec2).name()) {
|
||||||
|
type = "ivec2";
|
||||||
|
} else if (type == typeid(uivec2).name()) {
|
||||||
|
type = "uivec2";
|
||||||
|
} else if (type == typeid(vec2).name()) {
|
||||||
|
type = "vec2";
|
||||||
|
} else if (type == typeid(bool).name()) {
|
||||||
|
type = "bool";
|
||||||
|
} else if (type == typeid(int64_t).name()) {
|
||||||
|
type = "int64_t";
|
||||||
|
} else if (type == typeid(int32_t).name()) {
|
||||||
|
type = "int32_t";
|
||||||
|
} else if (type == typeid(int16_t).name()) {
|
||||||
|
type = "int16_t";
|
||||||
|
} else if (type == typeid(int8_t).name()) {
|
||||||
|
type = "int8_t";
|
||||||
|
} else if (type == typeid(uint64_t).name()) {
|
||||||
|
type = "uint64_t";
|
||||||
|
} else if (type == typeid(uint32_t).name()) {
|
||||||
|
type = "uint32_t";
|
||||||
|
} else if (type == typeid(uint16_t).name()) {
|
||||||
|
type = "uint16_t";
|
||||||
|
} else if (type == typeid(uint8_t).name()) {
|
||||||
|
type = "uint8_t";
|
||||||
|
} else if (type == typeid(float).name()) {
|
||||||
|
type = "float";
|
||||||
|
} else if (type == typeid(double).name()) {
|
||||||
|
type = "double";
|
||||||
|
} else if (type == typeid(enum ewol::gravity).name()) {
|
||||||
|
type = "enum ewol::gravity";
|
||||||
|
}
|
||||||
|
// / " + param->getParameterType() + "<" + type + "> / " + param->getString()
|
||||||
|
std::shared_ptr<ewol::widget::Sizer> widgetSizer = ewol::widget::Sizer::create(ewol::widget::Sizer::modeHori);
|
||||||
|
if (widgetSizer != nullptr) {
|
||||||
|
widgetSizer->setExpand(bvec2(true,false));
|
||||||
|
widgetSizer->setFill(bvec2(true,true));
|
||||||
|
m_sizerDynamic->subWidgetAddStart(widgetSizer);
|
||||||
|
|
||||||
|
std::shared_ptr<ewol::widget::Label> widget = ewol::widget::Label::create(param->getName() + ":");
|
||||||
|
widgetSizer->subWidgetAdd(widget);
|
||||||
|
mySpacer = ewol::widget::Spacer::create();
|
||||||
|
if (mySpacer != nullptr) {
|
||||||
|
mySpacer->setExpand(bvec2(true,false));
|
||||||
|
mySpacer->setFill(bvec2(true,false));
|
||||||
|
mySpacer->setMinSize(vec2(3,3));
|
||||||
|
widgetSizer->subWidgetAdd(mySpacer);
|
||||||
|
}
|
||||||
|
// Main part to do ...
|
||||||
|
std::string type = param->getType();
|
||||||
|
if (type == typeid(std::string).name()) {
|
||||||
|
type = "std::string";
|
||||||
|
} else if (type == typeid(gale::Dimension).name()) {
|
||||||
|
type = "gale::Dimension";
|
||||||
|
} else if (type == typeid(bvec2).name()) {
|
||||||
|
//type = "bvec2";
|
||||||
|
std::shared_ptr<ewol::widget::CheckBox> widgetTmp = ewol::widget::CheckBox::create();
|
||||||
|
widgetSizer->subWidgetAdd(widgetTmp);
|
||||||
|
widgetTmp->signalValue.connect([=](const bool& _value) {
|
||||||
|
if (m_subWidget == nullptr) {
|
||||||
|
APPL_ERROR("nullptr...");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
APPL_INFO("set parameter : X name=" << param->getName() << " value=" << _value);
|
||||||
|
//m_subWidget->parameterSet(param->getName(), etk::to_string(_value));
|
||||||
|
return;
|
||||||
|
});
|
||||||
|
std::shared_ptr<ewol::widget::Label> widgetLabel = ewol::widget::Label::create("x");
|
||||||
|
widgetTmp->setSubWidget(widgetLabel);
|
||||||
|
|
||||||
|
widgetTmp = ewol::widget::CheckBox::create();
|
||||||
|
widgetSizer->subWidgetAdd(widgetTmp);
|
||||||
|
widgetTmp->signalValue.connect([=](const bool& _value) {
|
||||||
|
if (m_subWidget == nullptr) {
|
||||||
|
APPL_ERROR("nullptr...");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
APPL_INFO("set parameter : Y name=" << param->getName() << " value=" << _value);
|
||||||
|
//m_subWidget->parameterSet(param->getName(), etk::to_string(_value));
|
||||||
|
return;
|
||||||
|
});
|
||||||
|
widgetLabel = ewol::widget::Label::create("y");
|
||||||
|
widgetTmp->setSubWidget(widgetLabel);
|
||||||
|
} else if (type == typeid(ivec2).name()) {
|
||||||
|
type = "ivec2";
|
||||||
|
} else if (type == typeid(uivec2).name()) {
|
||||||
|
type = "uivec2";
|
||||||
|
} else if (type == typeid(vec2).name()) {
|
||||||
|
type = "vec2";
|
||||||
|
} else if (type == typeid(bool).name()) {
|
||||||
|
type = "bool";
|
||||||
|
std::shared_ptr<ewol::widget::CheckBox> widgetTmp = ewol::widget::CheckBox::create();
|
||||||
|
widgetSizer->subWidgetAdd(widgetTmp);
|
||||||
|
widgetTmp->signalValue.connect([=](const bool& _value) {
|
||||||
|
if (m_subWidget == nullptr) {
|
||||||
|
APPL_ERROR("nullptr...");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
APPL_INFO("set parameter : name=" << param->getName() << " value=" << _value);
|
||||||
|
m_subWidget->parameterSet(param->getName(), etk::to_string(_value));
|
||||||
|
return;
|
||||||
|
});
|
||||||
|
} else if (type == typeid(int64_t).name()) {
|
||||||
|
type = "int64_t";
|
||||||
|
} else if (type == typeid(int32_t).name()) {
|
||||||
|
type = "int32_t";
|
||||||
|
} else if (type == typeid(int16_t).name()) {
|
||||||
|
type = "int16_t";
|
||||||
|
} else if (type == typeid(int8_t).name()) {
|
||||||
|
type = "int8_t";
|
||||||
|
} else if (type == typeid(uint64_t).name()) {
|
||||||
|
type = "uint64_t";
|
||||||
|
} else if (type == typeid(uint32_t).name()) {
|
||||||
|
type = "uint32_t";
|
||||||
|
} else if (type == typeid(uint16_t).name()) {
|
||||||
|
type = "uint16_t";
|
||||||
|
} else if (type == typeid(uint8_t).name()) {
|
||||||
|
type = "uint8_t";
|
||||||
|
} else if (type == typeid(float).name()) {
|
||||||
|
type = "float";
|
||||||
|
} else if (type == typeid(double).name()) {
|
||||||
|
type = "double";
|
||||||
|
} else if (type == typeid(enum ewol::gravity).name()) {
|
||||||
|
type = "enum ewol::gravity";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mySpacer = ewol::widget::Spacer::create();
|
||||||
|
if (mySpacer != nullptr) {
|
||||||
|
mySpacer->setExpand(bvec2(true,false));
|
||||||
|
mySpacer->setFill(bvec2(true,false));
|
||||||
|
mySpacer->setMinSize(vec2(3,3));
|
||||||
|
mySpacer->setColor(0x000000AA);
|
||||||
|
m_sizerDynamic->subWidgetAddStart(mySpacer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mySpacer = ewol::widget::Spacer::create();
|
||||||
|
if (mySpacer != nullptr) {
|
||||||
|
mySpacer->setExpand(bvec2(true,true));
|
||||||
|
m_sizerDynamic->subWidgetAddStart(mySpacer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@ namespace appl {
|
|||||||
class MainWindows : public ewol::widget::Windows {
|
class MainWindows : public ewol::widget::Windows {
|
||||||
private:
|
private:
|
||||||
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> m_subWidget;
|
std::shared_ptr<ewol::Widget> m_subWidget;
|
||||||
std::shared_ptr<ewol::widget::Label> m_testName;
|
std::shared_ptr<ewol::widget::Label> m_testName;
|
||||||
int32_t m_idWidget;
|
int32_t m_idWidget;
|
||||||
@ -33,6 +34,7 @@ namespace appl {
|
|||||||
protected:
|
protected:
|
||||||
void onCallbackThemeChange(const bool& _value);
|
void onCallbackThemeChange(const bool& _value);
|
||||||
void onCallbackWidgetChange(int32_t _increment);
|
void onCallbackWidgetChange(int32_t _increment);
|
||||||
|
void updateProperty();
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user