133 lines
4.3 KiB
C++
133 lines
4.3 KiB
C++
/** @file
|
|
* @author Edouard DUPIN
|
|
* @copyright 2011, Edouard DUPIN, all right reserved
|
|
* @license MPL v2.0 (see license file)
|
|
*/
|
|
|
|
#include <ewol/widget/meta/StdPopUp.hpp>
|
|
#include <ewol/widget/Sizer.hpp>
|
|
#include <ewol/widget/Spacer.hpp>
|
|
#include <ewol/widget/Label.hpp>
|
|
#include <ewol/widget/Manager.hpp>
|
|
#include <etk/Vector.hpp>
|
|
|
|
#include <etk/typeInfo.hpp>
|
|
ETK_DECLARE_TYPE(ewol::widget::StdPopUp);
|
|
|
|
ewol::widget::StdPopUp::StdPopUp() :
|
|
propertyTitle(this, "title",
|
|
"<bold>Message</bold>",
|
|
"Title of the pop-up",
|
|
ewol::widget::StdPopUp::onChangePropertyTitle),
|
|
propertyComment(this, "comment",
|
|
"No Label",
|
|
"Comment of the pop-up",
|
|
ewol::widget::StdPopUp::onChangePropertyComment),
|
|
this.title(null),
|
|
this.comment(null),
|
|
this.subBar(null) {
|
|
addObjectType("ewol::widget::StdPopUp");
|
|
}
|
|
|
|
void ewol::widget::StdPopUp::init() {
|
|
ewol::widget::PopUp::init();
|
|
propertyMinSize.set(gale::Dimension(Vector2f(20,10),gale::distance::pourcent));
|
|
ewol::widget::Sizer mySizerVert;
|
|
ewol::widget::Spacer mySpacer;
|
|
|
|
mySizerVert = ewol::widget::Sizer::create();
|
|
// set it in the pop-up-system :
|
|
setSubWidget(mySizerVert);
|
|
mySizerVert.propertyMode.set(widget::Sizer::modeVert);
|
|
this.subBar = ewol::widget::Sizer::create();
|
|
this.subBar.propertyMode.set(widget::Sizer::modeHori);
|
|
this.subBar.propertyLockExpand.set(Vector2b(true,true));
|
|
this.subBar.propertyExpand.set(Vector2b(true,false));
|
|
mySizerVert.subWidgetAdd(this.subBar);
|
|
mySpacer = ewol::widget::Spacer::create();
|
|
mySpacer.propertyExpand.set(Vector2b(true,false));
|
|
this.subBar.subWidgetAdd(mySpacer);
|
|
|
|
mySpacer = ewol::widget::Spacer::create();
|
|
mySpacer.propertyExpand.set(Vector2b(true,false));
|
|
mySpacer.propertyColor.set(etk::Color<>(0x88, 0x88, 0x88, 0xFF));
|
|
mySpacer.propertyMinSize.set(gale::Dimension(Vector2f(0,3),gale::distance::pixel));
|
|
mySizerVert.subWidgetAdd(mySpacer);
|
|
|
|
mySpacer = ewol::widget::Spacer::create();
|
|
mySpacer.propertyExpand.set(Vector2b(true,false));
|
|
mySpacer.propertyMinSize.set(gale::Dimension(Vector2f(0,5),gale::distance::pixel));
|
|
mySizerVert.subWidgetAdd(mySpacer);
|
|
|
|
this.comment = ewol::widget::Label::create();
|
|
this.comment.propertyValue.set(*propertyComment);
|
|
this.comment.propertyExpand.set(Vector2b(true,true));
|
|
mySizerVert.subWidgetAdd(this.comment);
|
|
|
|
mySpacer = ewol::widget::Spacer::create();
|
|
mySpacer.propertyExpand.set(Vector2b(true,false));
|
|
mySpacer.propertyMinSize.set(gale::Dimension(Vector2f(0,5),gale::distance::pixel));
|
|
mySizerVert.subWidgetAdd(mySpacer);
|
|
|
|
mySpacer = ewol::widget::Spacer::create();
|
|
mySpacer.propertyExpand.set(Vector2b(true,false));
|
|
mySpacer.propertyColor.set(etk::Color<>(0x88, 0x88, 0x88, 0xFF));
|
|
mySpacer.propertyMinSize.set(gale::Dimension(Vector2f(0,3),gale::distance::pixel));
|
|
mySizerVert.subWidgetAdd(mySpacer);
|
|
|
|
this.title = ewol::widget::Label::create();
|
|
this.title.propertyValue.set(*propertyTitle);
|
|
this.title.propertyExpand.set(Vector2b(true,false));
|
|
this.title.propertyFill.set(Vector2b(true,true));
|
|
mySizerVert.subWidgetAdd(this.title);
|
|
}
|
|
|
|
ewol::widget::StdPopUp::~StdPopUp() {
|
|
|
|
}
|
|
|
|
void ewol::widget::StdPopUp::onChangePropertyTitle() {
|
|
if (this.title == null) {
|
|
return;
|
|
}
|
|
this.title.propertyValue.set(*propertyTitle);
|
|
markToRedraw();
|
|
}
|
|
|
|
void ewol::widget::StdPopUp::onChangePropertyComment() {
|
|
if (this.comment == null) {
|
|
return;
|
|
}
|
|
this.comment.propertyValue.set(*propertyComment);
|
|
markToRedraw();
|
|
}
|
|
|
|
ewol::widget::Button ewol::widget::StdPopUp::addButton( String _text, boolean _autoExit) {
|
|
if (this.subBar == null) {
|
|
Log.error("button-bar does not existed ...");
|
|
return null;
|
|
}
|
|
ewol::widget::Button myButton = widget::Button::create();
|
|
if (myButton == null) {
|
|
Log.error("Can not allocate new button ...");
|
|
return null;
|
|
}
|
|
ewol::widget::Label myLabel = ewol::widget::Label::create();
|
|
if (myLabel == null) {
|
|
Log.error("Can not allocate new label ...");
|
|
return null;
|
|
}
|
|
myLabel.propertyValue.set(_text);
|
|
myButton.setSubWidget(myLabel);
|
|
if(_autoExit == true) {
|
|
myButton.signalPressed.connect(sharedFromThis(), ewol::widget::StdPopUp::onCallBackButtonExit);
|
|
}
|
|
this.subBar.subWidgetAdd(myButton);
|
|
markToRedraw();
|
|
return myButton;
|
|
}
|
|
|
|
void ewol::widget::StdPopUp::onCallBackButtonExit() {
|
|
autoDestroy();
|
|
}
|