[DEBUG] add missing declaration and corect segfault

This commit is contained in:
Edouard DUPIN 2016-02-15 22:10:33 +01:00
parent e6e817bfcd
commit 1bbc8c08cc
11 changed files with 228 additions and 30 deletions

View File

@ -159,6 +159,7 @@ std::shared_ptr<ewol::Object> ewol::Object::getObjectNamed(const std::string& _o
}
std::shared_ptr<ewol::Object> ewol::Object::getSubObjectNamed(const std::string& _objectName) {
EWOL_VERBOSE("check if name : " << _objectName << " ?= " << propertyName.get());
if (_objectName == propertyName.get()) {
return shared_from_this();
}
@ -166,7 +167,7 @@ std::shared_ptr<ewol::Object> ewol::Object::getSubObjectNamed(const std::string&
}
bool epropertySetOnObjectNamed(const std::string& _objectName, const std::string& _config, const std::string& _value) {
bool ewol::propertySetOnObjectNamed(const std::string& _objectName, const std::string& _config, const std::string& _value) {
std::shared_ptr<ewol::Object> object = ewol::getContext().getEObjectManager().get(_objectName);
if (object == nullptr) {
return false;

View File

@ -10,6 +10,7 @@
#include <ewol/resource/Colored3DObject.h>
#include <gale/resource/Manager.h>
#include <gale/renderer/openGL/openGL-include.h>
#include <esignal/details/Signal.hxx>
#undef __class__
#define __class__ "resource::Colored3DObject"
@ -229,4 +230,11 @@ void ewol::resource::Colored3DObject::drawSquare(const vec3& _size,
}
draw(tmpVertices, _tmpColor, _transformationMatrix);
}
template<> std::string etk::to_string(ewol::resource::Colored3DObject const&) {
return "!!ewol::resource::Colored3DObject!ERROR!CAN_NOT_BE_CONVERT!!";
}
// declare for signal event
template class esignal::Signal<ewol::resource::Colored3DObject>;
template class esignal::Signal<std::shared_ptr<ewol::resource::Colored3DObject>>;

View File

@ -171,16 +171,13 @@ void ewol::widget::CheckBox::CheckStatus() {
markToRedraw();
}
if (m_buttonPressed == true) {
EWOL_WARNING("SET state : PRESSED");
changeStatusIn(STATUS_PRESSED);
return;
}
if (true == m_mouseHover) {
EWOL_WARNING("SET state : HOVER");
changeStatusIn(STATUS_HOVER);
return;
}
EWOL_WARNING("SET state : UP");
changeStatusIn(STATUS_UP);
}

View File

@ -82,10 +82,10 @@ void ewol::widget::Container::subWidgetUnLink() {
std::shared_ptr<ewol::Object> ewol::widget::Container::getSubObjectNamed(const std::string& _objectName) {
std::shared_ptr<ewol::Object> tmpObject = ewol::Widget::getSubObjectNamed(_objectName);
if (nullptr!=tmpObject) {
if (tmpObject != nullptr) {
return tmpObject;
}
if (nullptr != m_subWidget) {
if (m_subWidget != nullptr) {
return m_subWidget->getSubObjectNamed(_objectName);
}
return nullptr;

View File

@ -62,12 +62,9 @@ void ewol::widget::ContainerN::subWidgetReplace(const std::shared_ptr<ewol::Widg
if (it != _oldWidget) {
continue;
}
EWOL_WARNING("Remove old");
it->removeParent();
it.reset();
EWOL_WARNING("Set New");
if (_newWidget != nullptr) {
EWOL_WARNING("set parrent");
_newWidget->setParent(shared_from_this());
}
it = _newWidget;

View File

@ -69,7 +69,6 @@ void ewol::widget::SpinBase::onPropertyChangeValue(const eproperty::Ref& _paramP
void ewol::widget::SpinBase::updateGui() {
EWOL_WARNING("updateGui [START]");
subWidgetRemoveAll();
markToRedraw();
requestUpdateSize();
@ -77,7 +76,7 @@ void ewol::widget::SpinBase::updateGui() {
std::string shaper;
if (m_config != nullptr) {
shaper = m_config->getString(m_confIdEntryShaper);
EWOL_INFO("shaper entry : " << shaper);
EWOL_VERBOSE("shaper entry : " << shaper);
}
m_widgetEntry = ewol::widget::Entry::create("", shaper);
if (m_widgetEntry != nullptr) {
@ -89,7 +88,7 @@ void ewol::widget::SpinBase::updateGui() {
std::string shaper;
if (m_config != nullptr) {
shaper = m_config->getString(m_confIdDownShaper);
EWOL_INFO("shaper button DOWN : " << shaper);
EWOL_VERBOSE("shaper button DOWN : " << shaper);
}
m_widgetButtonDown = ewol::widget::Button::create(shaper);
if (m_widgetButtonDown != nullptr) {
@ -104,7 +103,7 @@ void ewol::widget::SpinBase::updateGui() {
std::string shaper;
if (m_config != nullptr) {
shaper = m_config->getString(m_confIdUpShaper);
EWOL_INFO("shaper button UP : " << shaper);
EWOL_VERBOSE("shaper button UP : " << shaper);
}
m_widgetButtonUp = ewol::widget::Button::create(shaper);
if (m_widgetButtonUp != nullptr) {
@ -115,50 +114,34 @@ void ewol::widget::SpinBase::updateGui() {
m_widgetButtonUp->setSubWidget(widget);
}
}
EWOL_INFO("add ....");
switch (propertySpinMode) {
case ewol::widget::spinPosition_noneNone:
EWOL_INFO("add Entry");
subWidgetAdd(m_widgetEntry);
break;
case ewol::widget::spinPosition_noneRight:
EWOL_INFO("add Entry");
subWidgetAdd(m_widgetEntry);
EWOL_INFO("add Up");
subWidgetAdd(m_widgetButtonUp);
break;
case ewol::widget::spinPosition_leftNone:
EWOL_INFO("add Down");
subWidgetAdd(m_widgetButtonDown);
EWOL_INFO("add Entry");
subWidgetAdd(m_widgetEntry);
break;
case ewol::widget::spinPosition_leftRight:
EWOL_INFO("add Down");
subWidgetAdd(m_widgetButtonDown);
EWOL_INFO("add Entry");
subWidgetAdd(m_widgetEntry);
EWOL_INFO("add Up");
subWidgetAdd(m_widgetButtonUp);
break;
case ewol::widget::spinPosition_leftLeft:
EWOL_INFO("add Down");
subWidgetAdd(m_widgetButtonDown);
EWOL_INFO("add Up");
subWidgetAdd(m_widgetButtonUp);
EWOL_INFO("add Entry");
subWidgetAdd(m_widgetEntry);
break;
case ewol::widget::spinPosition_RightRight:
EWOL_INFO("add Entry");
subWidgetAdd(m_widgetEntry);
EWOL_INFO("add Down");
subWidgetAdd(m_widgetButtonDown);
EWOL_INFO("add Up");
subWidgetAdd(m_widgetButtonUp);
break;
}
EWOL_WARNING("updateGui [STOP]");
}
bool ewol::widget::SpinBase::loadXML(const std::shared_ptr<const exml::Element>& _node) {

View File

@ -31,7 +31,8 @@ def create(target, module_name):
'tools/visual_test/appl/debug.cpp',
'tools/visual_test/appl/init.cpp',
'tools/visual_test/appl/MainWindows.cpp',
'tools/visual_test/appl/TestDistanceField.cpp'
'tools/visual_test/appl/TestDistanceField.cpp',
'tools/visual_test/appl/widget/SizerColor.cpp'
])
my_module.add_module_depend(['ewol'])

View File

@ -56,8 +56,17 @@ void appl::MainWindows::init() {
externSubBind(m_composer, ewol::widget::Button, "appl-next-gravity", signalPressed, shared_from_this(), &appl::MainWindows::onCallbackGravityChange);
m_sizerVert = std::dynamic_pointer_cast<ewol::widget::Sizer>(m_composer->getSubObjectNamed("appl-upper-test-widget"));
if (m_sizerVert == nullptr) {
APPL_CRITICAL("Can not get vertical pointer");
}
m_sizerDynamic = std::dynamic_pointer_cast<ewol::widget::Sizer>(m_composer->getSubObjectNamed("appl-dynamic-config"));
if (m_sizerDynamic == nullptr) {
APPL_CRITICAL("Can not get dynamic pointer");
}
m_subWidget = std::dynamic_pointer_cast<ewol::Widget>(m_composer->getSubObjectNamed("[TEST]TO-TEST"));
if (m_subWidget == nullptr) {
APPL_CRITICAL("Can not get subWidget pointer");
}
}
void appl::MainWindows::onCallbackThemeChange(const bool& _value) {

View File

@ -16,6 +16,7 @@
#include <appl/debug.h>
#include <appl/MainWindows.h>
#include <appl/widget/SizerColor.h>
class MainApplication : public ewol::context::Application {
public:
@ -48,6 +49,8 @@ class MainApplication : public ewol::context::Application {
// set the application icon ...
_context.setIcon("DATA:icon.png");
appl::widget::SizerColor::createManagerWidget(_context.getWidgetManager());
APPL_INFO("==> CREATE ... (END)");
}

View File

@ -0,0 +1,149 @@
/**
* @author Edouard DUPIN
*
* @copyright 2011, Edouard DUPIN, all right reserved
*
* @license APACHE v2.0 (see license file)
*/
#include <appl/debug.h>
#include <appl/widget/SizerColor.h>
#undef __class__
#define __class__ "SizerColor"
appl::widget::SizerColor::SizerColor() :
m_borderColor(*this, "border-color", etk::color::none, "Color of the border"),
m_leftColor(*this, "color-left", etk::color::purple),
m_rightColor(*this, "color-right", etk::color::orange),
m_topColor(*this, "color-top", etk::color::cyan),
m_buttomColor(*this, "color-buttom", etk::color::brown) {
addObjectType("appl::widget::SizerColor");
}
void appl::widget::SizerColor::init(enum displayMode _mode) {
ewol::widget::Sizer::init();
}
appl::widget::SizerColor::~SizerColor() {
}
void appl::widget::SizerColor::onRegenerateDisplay() {
ewol::widget::Sizer::onRegenerateDisplay();
m_draw.clear();
vec2 tmpBorderSize = propertyBorderSize->getPixel();
if (tmpBorderSize == vec2(0.0f, 0.0f)) {
return;
}
if (m_borderColor->a() == 0) {
return;
}
m_draw.setColor(m_borderColor);
m_draw.setPos(vec3(0, 0, 0) );
m_draw.rectangleWidth(vec3(tmpBorderSize.x(), m_size.y(),0) );
m_draw.setPos(vec3(m_size.x() - tmpBorderSize.x(), 0, 0) );
m_draw.rectangleWidth(vec3(tmpBorderSize.x(), m_size.y(),0) );
m_draw.setPos(vec3(tmpBorderSize.x(), 0, 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.rectangleWidth(vec3(m_size.x()-tmpBorderSize.x()*2.0f, tmpBorderSize.y(),0) );
vec2 underSize(0,0);
vec2 underOrigin(999999999999.0,999999999999.0);
for (auto &it : m_subWidget) {
if (it == nullptr) {
continue;
}
vec2 size = it->getSize();
if (propertyMode == ewol::widget::Sizer::modeVert) {
underSize += vec2(0.0f, size.y());
underSize.setX(std::max(underSize.x(), size.x()));
} else {
underSize += vec2(size.x(), 0.0f);
underSize.setY(std::max(underSize.y(), size.y()));
}
underOrigin.setX(std::min(it->getOrigin().x(), underOrigin.x()));
underOrigin.setY(std::min(it->getOrigin().y(), underOrigin.y()));
}
vec2 localWidgetSize = m_size - tmpBorderSize*2.0f;
vec2 localWidgetOrigin = m_origin + tmpBorderSize;
for (auto &it : m_subWidget) {
if (it == nullptr) {
continue;
}
vec2 origin = it->getOrigin();
vec2 size = it->getSize();
// now we display around the widget every element needed
if (propertyMode == ewol::widget::Sizer::modeHori) {
if (size.y() < localWidgetSize.y()) {
// under
if ((uint32_t(propertyGravity) & uint32_t(ewol::gravity_buttom)) == 0) {
m_draw.setColor(m_buttomColor);
m_draw.setPos(vec2(origin.x(), localWidgetOrigin.y()) - m_origin);
m_draw.rectangleWidth(vec2(it->getSize().x(), origin.y()-localWidgetOrigin.y()) );
}
// upper
if ((uint32_t(propertyGravity) & uint32_t(ewol::gravity_top)) == 0) {
m_draw.setColor(m_topColor);
float startDraw = origin.y()+it->getSize().y() - m_origin.y();
m_draw.setPos(vec2(origin.x()-m_origin.x(), startDraw));
m_draw.rectangleWidth(vec2(it->getSize().x(), localWidgetSize.y()-startDraw+tmpBorderSize.y()) );
}
}
} else {
if (size.x() < localWidgetSize.x()) {
// left
if ((uint32_t(propertyGravity) & uint32_t(ewol::gravity_left)) == 0) {
m_draw.setColor(m_leftColor);
m_draw.setPos(vec2(localWidgetOrigin.x(), origin.y()) - m_origin);
m_draw.rectangleWidth(vec2(origin.x()-localWidgetOrigin.x(), it->getSize().y()) );
}
// right
if ((uint32_t(propertyGravity) & uint32_t(ewol::gravity_right)) == 0) {
m_draw.setColor(m_rightColor);
float startDraw = origin.x()+it->getSize().x() - m_origin.x();
m_draw.setPos(vec2(startDraw, origin.y()-m_origin.y()));
m_draw.rectangleWidth(vec2(localWidgetSize.x()-startDraw+tmpBorderSize.x(), it->getSize().y()) );
}
}
}
}
// now we do the rest of the sizer:
if (propertyMode == ewol::widget::Sizer::modeHori) {
if (underSize.x() < localWidgetSize.x()) {
// left
if ((uint32_t(propertyGravity) & uint32_t(ewol::gravity_left)) == 0) {
m_draw.setColor(m_leftColor);
m_draw.setPos(localWidgetOrigin - m_origin);
m_draw.rectangleWidth(vec2(underOrigin.x()-localWidgetOrigin.x(), localWidgetSize.y()) );
}
// right
if ((uint32_t(propertyGravity) & uint32_t(ewol::gravity_right)) == 0) {
m_draw.setColor(m_rightColor);
float startDraw = underOrigin.x() + underSize.x() - m_origin.x();
m_draw.setPos(vec2(startDraw, localWidgetOrigin.y()-m_origin.y()));
m_draw.rectangleWidth(vec2(localWidgetSize.x()-startDraw+tmpBorderSize.x(), localWidgetSize.y()) );
}
}
} else {
if (underSize.y() < localWidgetSize.y()) {
// under
if ((uint32_t(propertyGravity) & uint32_t(ewol::gravity_buttom)) == 0) {
m_draw.setColor(m_buttomColor);
m_draw.setPos(localWidgetOrigin - m_origin);
m_draw.rectangleWidth(vec2(localWidgetSize.x(), underOrigin.y()-localWidgetOrigin.y()) );
}
// upper
if ((uint32_t(propertyGravity) & uint32_t(ewol::gravity_top)) == 0) {
m_draw.setColor(m_topColor);
float startDraw = underOrigin.y() + underSize.y() - m_origin.y();
m_draw.setPos(vec2(localWidgetOrigin.x()-m_origin.x(), startDraw));
m_draw.rectangleWidth(vec2(localWidgetSize.x(), localWidgetSize.y()-startDraw+tmpBorderSize.y()) );
}
}
}
}
void appl::widget::SizerColor::onDraw() {
m_draw.draw();
ewol::widget::Sizer::onDraw();
}

View File

@ -0,0 +1,50 @@
/**
* @author Edouard DUPIN
*
* @copyright 2011, Edouard DUPIN, all right reserved
*
* @license APACHE v2.0 (see license file)
*/
#pragma once
#include <etk/types.h>
#include <ewol/widget/Sizer.h>
#include <etk/Color.h>
#include <ewol/compositing/Drawing.h>
namespace appl {
namespace widget {
class SizerColor : public ewol::widget::Sizer {
public:
/**
* @brief Main call of recording the widget on the List of "widget named creator"
*/
static void init(ewol::widget::Manager& _widgetManager);
protected:
/**
* @brief Constructor
* @param[in] _mode The mode to display the elements
*/
SizerColor();
void init(enum displayMode _mode=ewol::widget::Sizer::modeHori);
public:
DECLARE_WIDGET_FACTORY(SizerColor, "SizerColor");
/**
* @brief Desstructor
*/
virtual ~SizerColor();
private:
eproperty::Value<etk::Color<>> m_borderColor; //!< Border color.
eproperty::Value<etk::Color<>> m_leftColor; //!< Left color.
eproperty::Value<etk::Color<>> m_rightColor; //!< Right color.
eproperty::Value<etk::Color<>> m_topColor; //!< Top color.
eproperty::Value<etk::Color<>> m_buttomColor; //!< Buttom color.
private:
ewol::compositing::Drawing m_draw; //!< Compositing drawing element for display the border.
public:
virtual void onRegenerateDisplay();
virtual void onDraw();
};
}
}