[DEV] Better interface

This commit is contained in:
Edouard DUPIN 2014-05-17 20:47:45 +02:00
parent 7aa87e0fcc
commit 23eb78c7f9
22 changed files with 55 additions and 52 deletions

View File

@ -99,6 +99,9 @@ namespace ewol {
T* operator->() const noexcept {
return m_pointer;
}
operator ewol::object::Owner<T>() const noexcept {
return m_pointer;
}
};
template<typename T> Shared<T> makeShared(T* _pointer) {
return Shared<T>(_pointer);

View File

@ -34,12 +34,12 @@ const char* const ewol::widget::Button::configShaper = "shaper";
#define STATUS_DOWN (3)
static ewol::Widget* Create() {
static ewol::Widget* create() {
return new ewol::widget::Button();
}
void ewol::widget::Button::init(ewol::widget::Manager& _widgetManager) {
_widgetManager.addWidgetCreator(__class__, &Create);
_widgetManager.addWidgetCreator(__class__, &create);
}
ewol::widget::Button::Button(const std::string& _shaperName) :

View File

@ -30,12 +30,12 @@ const char * const ewol::widget::ButtonColor::eventChange = "change";
static const char* const eventColorHasChange = "ewol-widget-ButtonColor-colorChange";
static ewol::Widget* Create() {
static ewol::Widget* create() {
return new ewol::widget::ButtonColor();
}
void ewol::widget::ButtonColor::init(ewol::widget::Manager& _widgetManager) {
_widgetManager.addWidgetCreator(__class__,&Create);
_widgetManager.addWidgetCreator(__class__, &create);
}
ewol::widget::ButtonColor::ButtonColor(etk::Color<> _baseColor, std::string _shaperName) :

View File

@ -27,12 +27,12 @@ const char* const ewol::widget::CheckBox::configShaper = "shaper";
#undef __class__
#define __class__ "CheckBox"
static ewol::Widget* Create() {
static ewol::Widget* create() {
return new ewol::widget::CheckBox();
}
void ewol::widget::CheckBox::init(ewol::widget::Manager& _widgetManager) {
_widgetManager.addWidgetCreator(__class__,&Create);
_widgetManager.addWidgetCreator(__class__, &create);
}
ewol::widget::CheckBox::CheckBox(const std::string& _shaperName) :

View File

@ -16,7 +16,7 @@
#define __class__ "Container"
ewol::widget::Container::Container(ewol::Widget* _subElement) :
ewol::widget::Container::Container(ewol::object::Shared<ewol::Widget> _subElement) :
m_subWidget(_subElement) {
addObjectType("ewol::widget::Container");
// nothing to do ...
@ -30,7 +30,7 @@ ewol::object::Shared<ewol::Widget> ewol::widget::Container::getSubWidget() {
return m_subWidget;
}
void ewol::widget::Container::setSubWidget(ewol::Widget* _newWidget) {
void ewol::widget::Container::setSubWidget(ewol::object::Shared<ewol::Widget> _newWidget) {
if (NULL == _newWidget) {
return;
}
@ -173,7 +173,7 @@ bool ewol::widget::Container::loadXML(exml::Element* _node) {
continue;
}
EWOL_DEBUG("try to create subwidget : '" << widgetName << "'");
ewol::Widget* tmpWidget = getWidgetManager().create(widgetName);
ewol::object::Shared<ewol::Widget> tmpWidget = getWidgetManager().create(widgetName);
if (tmpWidget == NULL) {
EWOL_ERROR ("(l "<<pNode->getPos()<<") Can not create the widget : \"" << widgetName << "\"");
continue;

View File

@ -26,7 +26,7 @@ namespace ewol {
/**
* @brief Constructor
*/
Container(ewol::Widget* _subElement=NULL);
Container(ewol::object::Shared<ewol::Widget> _subElement=NULL);
/**
* @brief Destructor
*/
@ -41,7 +41,7 @@ namespace ewol {
* @brief set the subWidget node widget.
* @param[in] _newWidget The widget to add.
*/
void setSubWidget(ewol::Widget* _newWidget);
void setSubWidget(ewol::object::Shared<ewol::Widget> _newWidget);
/**
* @brief remove the subWidget node (async).
*/

View File

@ -16,7 +16,7 @@
#define __class__ "Container2"
ewol::widget::Container2::Container2(ewol::Widget* _subElement, ewol::Widget* _subElementToggle) :
ewol::widget::Container2::Container2(ewol::object::Shared<ewol::Widget> _subElement, ewol::object::Shared<ewol::Widget> _subElementToggle) :
m_idWidgetDisplayed(0) {
m_subWidget[0] = _subElement;
m_subWidget[1] = _subElementToggle;
@ -29,7 +29,7 @@ ewol::widget::Container2::~Container2() {
subWidgetRemoveToggle();
}
void ewol::widget::Container2::setSubWidget(ewol::Widget* _newWidget, int32_t _idWidget) {
void ewol::widget::Container2::setSubWidget(ewol::object::Shared<ewol::Widget> _newWidget, int32_t _idWidget) {
subWidgetRemove(_idWidget);
m_subWidget[_idWidget] = _newWidget;
if (m_subWidget[_idWidget] != NULL) {
@ -213,7 +213,7 @@ bool ewol::widget::Container2::loadXML(exml::Element* _node) {
}
}
EWOL_DEBUG("try to create subwidget : '" << widgetName << "'");
ewol::Widget* tmpWidget = getWidgetManager().create(widgetName);
ewol::object::Shared<ewol::Widget> tmpWidget = getWidgetManager().create(widgetName);
if (tmpWidget == NULL) {
EWOL_ERROR ("(l "<<pNode->getPos()<<") Can not create the widget : \"" << widgetName << "\"");
continue;

View File

@ -30,7 +30,7 @@ namespace ewol {
* @param[in] _subElement Widget to set on the normal position
* @param[in] _subElementToggle Widget to set on the toggle position
*/
Container2(ewol::Widget* _subElement = nullptr, ewol::Widget* _subElementToggle = nullptr);
Container2(ewol::object::Shared<ewol::Widget> _subElement = nullptr, ewol::object::Shared<ewol::Widget> _subElementToggle = nullptr);
/**
* @brief Destructor
*/
@ -41,20 +41,20 @@ namespace ewol {
* @param[in] _subWidget Widget to add normal
* @param[in] _idWidget Id of the widget to set
*/
void setSubWidget(ewol::Widget* _subWidget, int32_t _idWidget);
void setSubWidget(ewol::object::Shared<ewol::Widget> _subWidget, int32_t _idWidget);
public:
/**
* @brief Specify the current widget
* @param[in] _subWidget Widget to add normal
*/
void setSubWidget(ewol::Widget* _subWidget) {
void setSubWidget(ewol::object::Shared<ewol::Widget> _subWidget) {
setSubWidget(_subWidget, 0);
}
/**
* @brief Specify the current toggle widget
* @param[in] _subWidget Widget to add Toggle
*/
void setSubWidgetToggle(ewol::Widget* _subWidget) {
void setSubWidgetToggle(ewol::object::Shared<ewol::Widget> _subWidget) {
setSubWidget(_subWidget, 1);
}
private:

View File

@ -52,7 +52,7 @@ void ewol::widget::ContainerN::lockExpand(const bvec2& _lockExpand) {
}
int32_t ewol::widget::ContainerN::subWidgetAdd(ewol::Widget* _newWidget) {
int32_t ewol::widget::ContainerN::subWidgetAdd(ewol::object::Shared<ewol::Widget> _newWidget) {
if (NULL == _newWidget) {
EWOL_ERROR("[" << getId() << "] {" << getObjectType() << "} Try to add An empty Widget ... ");
return -1;
@ -67,7 +67,7 @@ int32_t ewol::widget::ContainerN::subWidgetAdd(ewol::Widget* _newWidget) {
return _newWidget->getId();
}
int32_t ewol::widget::ContainerN::subWidgetAddStart(ewol::Widget* _newWidget) {
int32_t ewol::widget::ContainerN::subWidgetAddStart(ewol::object::Shared<ewol::Widget> _newWidget) {
if (NULL == _newWidget) {
EWOL_ERROR("[" << getId() << "] {" << getObjectType() << "} Try to add start An empty Widget ... ");
return -1;
@ -81,7 +81,7 @@ int32_t ewol::widget::ContainerN::subWidgetAddStart(ewol::Widget* _newWidget) {
return _newWidget->getId();
}
void ewol::widget::ContainerN::subWidgetRemove(ewol::Widget* _newWidget) {
void ewol::widget::ContainerN::subWidgetRemove(ewol::object::Shared<ewol::Widget> _newWidget) {
if (NULL == _newWidget) {
return;
}
@ -103,7 +103,7 @@ void ewol::widget::ContainerN::subWidgetRemove(ewol::Widget* _newWidget) {
}
}
void ewol::widget::ContainerN::subWidgetUnLink(ewol::Widget* _newWidget) {
void ewol::widget::ContainerN::subWidgetUnLink(ewol::object::Shared<ewol::Widget> _newWidget) {
if (NULL == _newWidget) {
return;
}
@ -298,7 +298,7 @@ bool ewol::widget::ContainerN::loadXML(exml::Element* _node) {
continue;
}
EWOL_DEBUG("[" << getId() << "] {" << getObjectType() << "} load new element : \"" << widgetName << "\"");
ewol::Widget* subWidget = getWidgetManager().create(widgetName);
ewol::object::Shared<ewol::Widget> subWidget = getWidgetManager().create(widgetName);
if (subWidget == NULL) {
EWOL_ERROR ("[" << getId() << "] {" << getObjectType() << "} (l "<<pNode->getPos()<<") Can not create the widget : \"" << widgetName << "\"");
continue;

View File

@ -56,13 +56,13 @@ namespace ewol {
* @param[in] _newWidget the element pointer
* @return the ID of the set element
*/
virtual int32_t subWidgetAdd(ewol::Widget* _newWidget);
virtual int32_t subWidgetAdd(ewol::object::Shared<ewol::Widget> _newWidget);
//! @previous
inline int32_t subWidgetAddBack(ewol::Widget* _newWidget) {
inline int32_t subWidgetAddBack(ewol::object::Shared<ewol::Widget> _newWidget) {
return subWidgetAdd(_newWidget);
};
//! @previous
inline int32_t subWidgetAddEnd(ewol::Widget* _newWidget) {
inline int32_t subWidgetAddEnd(ewol::object::Shared<ewol::Widget> _newWidget) {
return subWidgetAdd(_newWidget);
};
/**
@ -70,21 +70,21 @@ namespace ewol {
* @param[in] _newWidget the element pointer
* @return the ID of the set element
*/
virtual int32_t subWidgetAddStart(ewol::Widget* _newWidget);
virtual int32_t subWidgetAddStart(ewol::object::Shared<ewol::Widget> _newWidget);
//! @previous
inline int32_t subWidgetAddFront(ewol::Widget* _newWidget) {
inline int32_t subWidgetAddFront(ewol::object::Shared<ewol::Widget> _newWidget) {
return subWidgetAddStart(_newWidget);
};
/**
* @brief remove definitly a widget from the system and this layer.
* @param[in] _newWidget the element pointer.
*/
virtual void subWidgetRemove(ewol::Widget* _newWidget);
virtual void subWidgetRemove(ewol::object::Shared<ewol::Widget> _newWidget);
/**
* @brief Just unlick the specify widget, this function does not remove it from the system (if you can, do nt use it ...)
* @param[in] _newWidget the element pointer.
*/
virtual void subWidgetUnLink(ewol::Widget* _newWidget);
virtual void subWidgetUnLink(ewol::object::Shared<ewol::Widget> _newWidget);
public:// Derived function
virtual void systemDraw(const ewol::DrawProperty& _displayProp);
virtual void onRegenerateDisplay();

View File

@ -21,12 +21,12 @@ const char* const ewol::widget::ContextMenu::configArrowPosition = "arrow-positi
const char* const ewol::widget::ContextMenu::configArrowMode = "arrow-mode";
const char* const ewol::widget::ContextMenu::configShaper = "shaper";
static ewol::Widget* Create() {
static ewol::Widget* create() {
return new ewol::widget::ContextMenu();
}
void ewol::widget::ContextMenu::init(ewol::widget::Manager& _widgetManager) {
_widgetManager.addWidgetCreator(__class__,&Create);
_widgetManager.addWidgetCreator(__class__, &create);
}

View File

@ -216,7 +216,7 @@ void ewol::widget::Gird::subWidgetRemoveAll() {
}
void ewol::widget::Gird::subWidgetAdd(int32_t _colId, int32_t _rowId, ewol::Widget* _newWidget) {
void ewol::widget::Gird::subWidgetAdd(int32_t _colId, int32_t _rowId, ewol::object::Shared<ewol::Widget> _newWidget) {
if (NULL == _newWidget) {
return;
}

View File

@ -97,7 +97,7 @@ namespace ewol {
* @param[in] _rowId Id of the row [0..y].
* @param[in] _newWidget the element pointer
*/
virtual void subWidgetAdd(int32_t _colId, int32_t _rowId, ewol::Widget* _newWidget);
virtual void subWidgetAdd(int32_t _colId, int32_t _rowId, ewol::object::Shared<ewol::Widget> _newWidget);
/**
* @brief remove definitly a widget from the system and this Gird.
* @param[in] _newWidget the element pointer.

View File

@ -15,12 +15,12 @@
#undef __class__
#define __class__ "ListFileSystem"
static ewol::Widget* Create() {
static ewol::Widget* create() {
return new ewol::widget::ListFileSystem();
}
void ewol::widget::ListFileSystem::init(ewol::widget::Manager& _widgetManager) {
_widgetManager.addWidgetCreator(__class__,&Create);
_widgetManager.addWidgetCreator(__class__, &create);
}
const char * const ewol::widget::ListFileSystem::eventFileSelect = "file-select";

View File

@ -259,7 +259,7 @@ void ewol::widget::Manager::addWidgetCreator(const std::string& _name,
m_creatorList.add(nameLower, _pointer);
}
ewol::Widget* ewol::widget::Manager::create(const std::string& _name) {
ewol::object::Shared<ewol::Widget> ewol::widget::Manager::create(const std::string& _name) {
std::string nameLower = std::tolower(_name);
if (m_creatorList.exist(nameLower) == true) {
ewol::widget::Manager::creator_tf pointerFunction = m_creatorList[nameLower];

View File

@ -53,7 +53,7 @@ namespace ewol {
// element that generate the list of elements
void addWidgetCreator(const std::string& _name, creator_tf _pointer);
ewol::Widget* create(const std::string& _name);
ewol::object::Shared<ewol::Widget> create(const std::string& _name);
bool exist(const std::string& _name);
std::string list();
};

View File

@ -164,7 +164,7 @@ void ewol::widget::Sizer::calculateMinMaxSize() {
//EWOL_ERROR("[" << getId() << "] {" << getObjectType() << "} Result min size : " << m_minSize);
}
int32_t ewol::widget::Sizer::subWidgetAdd(ewol::Widget* _newWidget) {
int32_t ewol::widget::Sizer::subWidgetAdd(ewol::object::Shared<ewol::Widget> _newWidget) {
if (m_animation == animationNone) {
return ewol::widget::ContainerN::subWidgetAdd(_newWidget);
}
@ -172,7 +172,7 @@ int32_t ewol::widget::Sizer::subWidgetAdd(ewol::Widget* _newWidget) {
return ewol::widget::ContainerN::subWidgetAdd(_newWidget);
}
int32_t ewol::widget::Sizer::subWidgetAddStart(ewol::Widget* _newWidget) {
int32_t ewol::widget::Sizer::subWidgetAddStart(ewol::object::Shared<ewol::Widget> _newWidget) {
if (m_animation == animationNone) {
return ewol::widget::ContainerN::subWidgetAddStart(_newWidget);
}
@ -180,7 +180,7 @@ int32_t ewol::widget::Sizer::subWidgetAddStart(ewol::Widget* _newWidget) {
return ewol::widget::ContainerN::subWidgetAddStart(_newWidget);
}
void ewol::widget::Sizer::subWidgetRemove(ewol::Widget* _newWidget) {
void ewol::widget::Sizer::subWidgetRemove(ewol::object::Shared<ewol::Widget> _newWidget) {
if (m_animation == animationNone) {
ewol::widget::ContainerN::subWidgetRemove(_newWidget);
return;
@ -189,7 +189,7 @@ void ewol::widget::Sizer::subWidgetRemove(ewol::Widget* _newWidget) {
ewol::widget::ContainerN::subWidgetRemove(_newWidget);
}
void ewol::widget::Sizer::subWidgetUnLink(ewol::Widget* _newWidget) {
void ewol::widget::Sizer::subWidgetUnLink(ewol::object::Shared<ewol::Widget> _newWidget) {
if (m_animation == animationNone) {
ewol::widget::ContainerN::subWidgetUnLink(_newWidget);
return;

View File

@ -119,10 +119,10 @@ namespace ewol {
virtual void calculateSize(const vec2& _availlable);
virtual void calculateMinMaxSize();
// overwrite the set fuction to start annimations ...
virtual int32_t subWidgetAdd(ewol::Widget* _newWidget);
virtual int32_t subWidgetAddStart(ewol::Widget* _newWidget);
virtual void subWidgetRemove(ewol::Widget* _newWidget);
virtual void subWidgetUnLink(ewol::Widget* _newWidget);
virtual int32_t subWidgetAdd(ewol::object::Shared<ewol::Widget> _newWidget);
virtual int32_t subWidgetAddStart(ewol::object::Shared<ewol::Widget> _newWidget);
virtual void subWidgetRemove(ewol::object::Shared<ewol::Widget> _newWidget);
virtual void subWidgetUnLink(ewol::object::Shared<ewol::Widget> _newWidget);
virtual bool onSetConfig(const ewol::object::Config& _conf);
virtual bool onGetConfig(const char* _config, std::string& _result) const;
};

View File

@ -166,7 +166,7 @@ void ewol::widget::Windows::systemDraw(const ewol::DrawProperty& _displayProp) {
#endif
}
void ewol::widget::Windows::setSubWidget(ewol::Widget* _widget) {
void ewol::widget::Windows::setSubWidget(ewol::object::Shared<ewol::Widget> _widget) {
if (m_subWidget != NULL) {
EWOL_INFO("Remove current main windows Widget...");
m_subWidget.reset();
@ -176,7 +176,7 @@ void ewol::widget::Windows::setSubWidget(ewol::Widget* _widget) {
calculateSize(m_size);
}
void ewol::widget::Windows::popUpWidgetPush(ewol::Widget* _widget) {
void ewol::widget::Windows::popUpWidgetPush(ewol::object::Shared<ewol::Widget> _widget) {
if (_widget == NULL) {
// nothing to do an error appear :
EWOL_ERROR("can not set widget pop-up (null pointer)");

View File

@ -59,8 +59,8 @@ namespace ewol {
ewol::object::Owner<ewol::Widget> m_subWidget;
std::vector<ewol::object::Owner<ewol::Widget>> m_popUpWidgetList;
public:
void setSubWidget(ewol::Widget* _widget);
void popUpWidgetPush(ewol::Widget* _widget);
void setSubWidget(ewol::object::Shared<ewol::Widget> _widget);
void popUpWidgetPush(ewol::object::Shared<ewol::Widget> _widget);
void popUpWidgetPop();
size_t popUpCount() {
return m_popUpWidgetList.size();

View File

@ -232,7 +232,7 @@ void ewol::widget::Parameter::onObjectRemove(ewol::object::Shared<ewol::Object>
}
}
void ewol::widget::Parameter::menuAdd(std::string _label, std::string _image, ewol::Widget* _associateWidget) {
void ewol::widget::Parameter::menuAdd(std::string _label, std::string _image, ewol::object::Shared<ewol::Widget> _associateWidget) {
if (NULL != m_paramList) {
m_paramList->menuAdd(_label, m_currentIdList, _image);
if (NULL != m_wSlider) {

View File

@ -38,7 +38,7 @@ namespace ewol {
virtual void onObjectRemove(ewol::object::Shared<ewol::Object> _removeObject);
public:
void setTitle(std::string _label);
void menuAdd(std::string _label, std::string _image, ewol::Widget* _associateWidget);
void menuAdd(std::string _label, std::string _image, ewol::object::Shared<ewol::Widget> _associateWidget);
void menuAddGroup(std::string _label);
void menuClear();
void menuSeparator();