201 lines
5.6 KiB
C++
201 lines
5.6 KiB
C++
/**
|
|
* @author Edouard DUPIN
|
|
*
|
|
* @copyright 2010, Edouard DUPIN, all right reserved
|
|
*
|
|
* @license BSD v3 (see license file)
|
|
*/
|
|
|
|
|
|
#include <appl/Debug.h>
|
|
#include <appl/MainWindows.h>
|
|
|
|
#include <ewol/widget/Button.h>
|
|
#include <ewol/widget/CheckBox.h>
|
|
#include <ewol/widget/Sizer.h>
|
|
#include <ewol/widget/Label.h>
|
|
#include <ewol/widget/Entry.h>
|
|
#include <ewol/widget/List.h>
|
|
#include <ewol/widget/ContextMenu.h>
|
|
#include <ewol/widget/PopUp.h>
|
|
#include <ewol/widget/Slider.h>
|
|
#include <ewol/widget/Menu.h>
|
|
#include <ewol/widget/meta/FileChooser.h>
|
|
#include <ewol/widget/meta/Parameter.h>
|
|
#include <ewol/widget/WidgetManager.h>
|
|
#include <ewol/renderer/eContext.h>
|
|
#include <appl/TestButton.h>
|
|
#include <appl/TestButtonColor.h>
|
|
#include <appl/TestLabel.h>
|
|
#include <appl/TestImage.h>
|
|
//#include <appl/TestScene.h>
|
|
|
|
|
|
static const char * l_eventChangeTheme = "event-change-theme";
|
|
static const char * l_eventChangeWidgetNext = "event-change-widget-test-next";
|
|
static const char * l_eventChangeWidgetPrevious = "event-change-widget-test-previous";
|
|
|
|
|
|
#undef __class__
|
|
#define __class__ "MainWindows"
|
|
|
|
MainWindows::MainWindows(void) :
|
|
m_idWidget(0),
|
|
m_subWidget(NULL),
|
|
m_testName(NULL)
|
|
{
|
|
APPL_DEBUG("CREATE WINDOWS ... ");
|
|
widget::Sizer* mySizerHori = NULL;
|
|
widget::Button* myButton = NULL;
|
|
|
|
m_sizerVert = new widget::Sizer(widget::Sizer::modeVert);
|
|
if (NULL == m_sizerVert) {
|
|
APPL_DEBUG("Allocation error mySizerVert");
|
|
return;
|
|
}
|
|
SetSubWidget(m_sizerVert);
|
|
|
|
mySizerHori = new widget::Sizer(widget::Sizer::modeHori);
|
|
if (NULL == mySizerHori) {
|
|
APPL_DEBUG("Allocation error mySizerHori");
|
|
return;
|
|
}
|
|
m_sizerVert->SubWidgetAdd(mySizerHori);
|
|
myButton = new widget::Button();
|
|
if (NULL != myButton) {
|
|
myButton->SetSubWidget(new widget::Label("default theme (cube)"));
|
|
myButton->SetSubWidgetToggle(new widget::Label("rounded theme"));
|
|
myButton->SetToggleMode(true);
|
|
myButton->RegisterOnEvent(this, widget::Button::eventValue, l_eventChangeTheme);
|
|
mySizerHori->SubWidgetAdd(myButton);
|
|
}
|
|
myButton = new widget::Button();
|
|
if (NULL != myButton) {
|
|
myButton->SetSubWidget(new widget::Label("Previous Widget test"));
|
|
myButton->RegisterOnEvent(this, widget::Button::eventPressed, l_eventChangeWidgetPrevious);
|
|
mySizerHori->SubWidgetAdd(myButton);
|
|
}
|
|
myButton = new widget::Button();
|
|
if (NULL != myButton) {
|
|
myButton->SetSubWidget(new widget::Label("Next Widget test"));
|
|
myButton->RegisterOnEvent(this, widget::Button::eventPressed, l_eventChangeWidgetNext);
|
|
mySizerHori->SubWidgetAdd(myButton);
|
|
}
|
|
m_testName = new widget::Label("none");
|
|
if (NULL != m_testName) {
|
|
mySizerHori->SubWidgetAdd(m_testName);
|
|
}
|
|
widget::Spacer* mySpacer = new widget::Spacer();
|
|
if (NULL != mySpacer) {
|
|
mySpacer->SetExpand(bvec2(false,false));
|
|
mySpacer->SetFill(bvec2(true,false));
|
|
mySpacer->SetMinSize(vec2(3,3));
|
|
mySpacer->SetColor(0x000000FF);
|
|
m_sizerVert->SubWidgetAdd(mySpacer);
|
|
}
|
|
// add the basic widget with a strange methode ...
|
|
ewol::EMessage msg(NULL, NULL, "");
|
|
OnReceiveMessage(msg);
|
|
}
|
|
|
|
|
|
MainWindows::~MainWindows(void)
|
|
{
|
|
|
|
}
|
|
|
|
|
|
void MainWindows::OnReceiveMessage(const ewol::EMessage& _msg)
|
|
{
|
|
if( _msg.GetCaller() != this
|
|
&& _msg.GetCaller() != NULL) {
|
|
ewol::Windows::OnReceiveMessage(_msg);
|
|
}
|
|
APPL_INFO("Receive Event from the main windows ... : " << _msg );
|
|
if (_msg.GetMessage() == l_eventChangeTheme) {
|
|
if (_msg.GetData()=="1") {
|
|
etk::theme::SetName("GUI", "rounded");
|
|
} else {
|
|
etk::theme::SetName("GUI", "default");
|
|
}
|
|
// Reload shaders and graphic system ...
|
|
ewol::GetContext().GetResourcesManager().ReLoadResources();
|
|
return;
|
|
} else if (_msg.GetMessage() == l_eventChangeWidgetPrevious) {
|
|
m_idWidget--;
|
|
} else if (_msg.GetMessage() == l_eventChangeWidgetNext) {
|
|
m_idWidget++;
|
|
}
|
|
|
|
if (m_subWidget != NULL) {
|
|
delete (m_subWidget);
|
|
// inn theory it must be removed ...
|
|
m_subWidget = NULL;
|
|
}
|
|
// special init forcing ...
|
|
if(_msg.GetCaller() == NULL) {
|
|
m_idWidget = 1;
|
|
}
|
|
switch(m_idWidget)
|
|
{
|
|
default:
|
|
m_idWidget = 0;
|
|
case 0:
|
|
m_subWidget = (ewol::Widget*)new widget::Label("Test software for EWOL");
|
|
if (NULL != m_subWidget) {
|
|
m_subWidget->SetExpand(bvec2(true,true));
|
|
m_sizerVert->SubWidgetAdd(m_subWidget);
|
|
}
|
|
if (m_testName!=NULL) { m_testName->SetLabel("Label"); };
|
|
break;
|
|
case 1:
|
|
m_subWidget = (ewol::Widget*)new TestButton();
|
|
if (NULL != m_subWidget) {
|
|
m_sizerVert->SubWidgetAdd(m_subWidget);
|
|
}
|
|
if (m_testName!=NULL) { m_testName->SetLabel("TestButton"); };
|
|
break;
|
|
case 2:
|
|
m_subWidget = (ewol::Widget*)new TestButtonColor();
|
|
if (NULL != m_subWidget) {
|
|
m_sizerVert->SubWidgetAdd(m_subWidget);
|
|
}
|
|
if (m_testName!=NULL) { m_testName->SetLabel("TestButtonColor"); };
|
|
break;
|
|
case 3:
|
|
m_subWidget = (ewol::Widget*)new TestLabel();
|
|
if (NULL != m_subWidget) {
|
|
m_sizerVert->SubWidgetAdd(m_subWidget);
|
|
}
|
|
if (m_testName!=NULL) { m_testName->SetLabel("TestLabel"); };
|
|
break;
|
|
case 4:
|
|
m_subWidget = (ewol::Widget*)new TestImage();
|
|
if (NULL != m_subWidget) {
|
|
m_sizerVert->SubWidgetAdd(m_subWidget);
|
|
}
|
|
if (m_testName!=NULL) { m_testName->SetLabel("TestImage"); };
|
|
break;
|
|
/*case 5:
|
|
m_subWidget = (ewol::Widget*)new TestScene();
|
|
if (NULL != m_subWidget) {
|
|
m_sizerVert->SubWidgetAdd(m_subWidget);
|
|
}
|
|
if (m_testName!=NULL) { m_testName->SetLabel("TestScene"); };
|
|
break;
|
|
*/
|
|
}
|
|
}
|
|
|
|
void MainWindows::OnObjectRemove(ewol::EObject * removeObject)
|
|
{
|
|
ewol::Windows::OnObjectRemove(removeObject);
|
|
if (m_subWidget == removeObject) {
|
|
m_subWidget = NULL;
|
|
} else if (m_sizerVert == removeObject) {
|
|
m_sizerVert = NULL;
|
|
} else if (m_testName == removeObject) {
|
|
m_testName = NULL;
|
|
}
|
|
}
|