/** * @author Edouard DUPIN * * @copyright 2011, Edouard DUPIN, all right reserved * * @license BSD v3 (see license file) */ #include #include #include #include #include #include #undef __class__ #define __class__ "ewol::StdPopUp" static const char * const eventButtonExit = "ewol-event-pop-up-exit-button"; ewol::Widget::StdPopUp::StdPopUp() : m_title(NULL), m_comment(NULL), m_subBar(NULL) { addObjectType("ewol::Widget::StdPopUp"); setMinSize(ewol::Dimension(vec2(20,10),ewol::Dimension::Pourcent)); ewol::widget::Sizer* mySizerVert = NULL; ewol::Widget::Spacer* mySpacer = NULL; mySizerVert = new ewol::widget::Sizer(widget::Sizer::modeVert); // set it in the pop-up-system : setSubWidget(mySizerVert); m_subBar = new ewol::widget::Sizer(widget::Sizer::modeHori); m_subBar->lockExpand(bvec2(true,true)); m_subBar->setExpand(bvec2(true,false)); mySizerVert->subWidgetAdd(m_subBar->get()); mySpacer = new ewol::Widget::Spacer(); mySpacer->setExpand(bvec2(true,false)); m_subBar->subWidgetAdd(mySpacer); mySpacer = new ewol::Widget::Spacer(); mySpacer->setExpand(bvec2(true,false)); mySpacer->setColor(etk::Color<>(0x888888FF)); mySpacer->setMinSize(ewol::Dimension(vec2(0,3),ewol::Dimension::Pixel)); mySizerVert->subWidgetAdd(mySpacer); mySpacer = new ewol::Widget::Spacer(); mySpacer->setExpand(bvec2(true,false)); mySpacer->setMinSize(ewol::Dimension(vec2(0,5),ewol::Dimension::Pixel)); mySizerVert->subWidgetAdd(mySpacer); m_comment = new ewol::widget::Label("No Label"); m_comment->setExpand(bvec2(true,true)); mySizerVert->subWidgetAdd(m_comment->get()); mySpacer = new ewol::Widget::Spacer(); mySpacer->setExpand(bvec2(true,false)); mySpacer->setMinSize(ewol::Dimension(vec2(0,5),ewol::Dimension::Pixel)); mySizerVert->subWidgetAdd(mySpacer); mySpacer = new ewol::Widget::Spacer(); mySpacer->setExpand(bvec2(true,false)); mySpacer->setColor(etk::Color<>(0x888888FF)); mySpacer->setMinSize(ewol::Dimension(vec2(0,3),ewol::Dimension::Pixel)); mySizerVert->subWidgetAdd(mySpacer); m_title = new ewol::widget::Label("Message"); m_title->setExpand(bvec2(true,false)); m_title->setFill(bvec2(true,true)); mySizerVert->subWidgetAdd(m_title->get()); } ewol::Widget::StdPopUp::~StdPopUp() { } void ewol::Widget::StdPopUp::setTitle(const std::string& _text) { if (m_title == NULL) { return; } m_title->setLabel(_text); markToRedraw(); } void ewol::Widget::StdPopUp::setComment(const std::string& _text) { if (m_comment == NULL) { return; } m_comment->setLabel(_text); markToRedraw(); } ewol::object::Shared ewol::Widget::StdPopUp::addButton(const std::string& _text, bool _autoExit) { if (m_subBar == NULL) { EWOL_ERROR("button-bar does not existed ..."); return NULL; } ewol::widget::Button* myButton = new widget::Button(); if (myButton == NULL) { EWOL_ERROR("Can not allocate new button ..."); return NULL; } myButton->setSubWidget(new ewol::widget::Label(_text)); if(_autoExit == true) { myButton->registerOnEvent(this, ewol::widget::Button::eventPressed, eventButtonExit); } m_subBar->subWidgetAdd(myButton); markToRedraw(); return myButton; } void ewol::Widget::StdPopUp::onObjectRemove(ewol::object::Shared _removeObject) { // call parent: ewol::Widget::PopUp::onObjectRemove(_removeObject); if (_removeObject == m_subBar) { m_subBar = NULL; markToRedraw(); return; } if (_removeObject == m_comment) { m_comment = NULL; markToRedraw(); return; } if (_removeObject == m_title) { m_title = NULL; markToRedraw(); return; } } void ewol::Widget::StdPopUp::onReceiveMessage(const ewol::object::Message& _msg) { // call parent: ewol::Widget::PopUp::onReceiveMessage(_msg); if (_msg.getMessage() == eventButtonExit) { autoDestroy(); } }