141 lines
3.9 KiB
C++
141 lines
3.9 KiB
C++
/**
|
|
* @author Edouard DUPIN
|
|
*
|
|
* @copyright 2011, Edouard DUPIN, all right reserved
|
|
*
|
|
* @license BSD v3 (see license file)
|
|
*/
|
|
|
|
#include <ewol/widget/meta/StdPopUp.h>
|
|
#include <ewol/widget/Sizer.h>
|
|
#include <ewol/widget/Spacer.h>
|
|
#include <ewol/widget/Label.h>
|
|
#include <ewol/widget/Manager.h>
|
|
#include <vector>
|
|
|
|
#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("<bold>Message</bold>");
|
|
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::Button> 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<ewol::Object> _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();
|
|
}
|
|
}
|