ewol/test/human/appl/MainWindows.cpp

174 lines
4.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/SizerHori.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 <appl/TestButton.h>
#include <appl/TestButtonColor.h>
#include <appl/TestLabel.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";
static const char * l_basicLabel = "Test software for EWOL";
#undef __class__
#define __class__ "MainWindows"
MainWindows::MainWindows(void) :
m_idWidget(0),
m_subWidget(NULL)
{
APPL_DEBUG("CREATE WINDOWS ... ");
widget::SizerHori* mySizerHori = NULL;
widget::Button* myButton = NULL;
m_sizerVert = new widget::SizerVert();
if (NULL == m_sizerVert) {
APPL_DEBUG("Allocation error mySizerVert");
return;
}
SetSubWidget(m_sizerVert);
mySizerHori = new widget::SizerHori();
if (NULL == mySizerHori) {
APPL_DEBUG("Allocation error mySizerHori");
return;
}
m_sizerVert->SubWidgetAdd(mySizerHori);
myButton = new widget::Button("default theme (cube)");
if (NULL != myButton) {
myButton->SetToggleMode(true);
myButton->SetLabelToggle("rounded theme");
myButton->RegisterOnEvent(this, ewolEventButtonValue, l_eventChangeTheme);
mySizerHori->SubWidgetAdd(myButton);
}
myButton = new widget::Button("Previous Widget test");
if (NULL != myButton) {
myButton->RegisterOnEvent(this, ewolEventButtonPressed, l_eventChangeWidgetPrevious);
mySizerHori->SubWidgetAdd(myButton);
}
myButton = new widget::Button("Next Widget test");
if (NULL != myButton) {
myButton->RegisterOnEvent(this, ewolEventButtonPressed, l_eventChangeWidgetNext);
mySizerHori->SubWidgetAdd(myButton);
}
widget::Spacer* mySpacer = new widget::Spacer();
if (NULL != mySpacer) {
mySpacer->SetExpendX(false);
mySpacer->SetExpendY(false);
mySpacer->SetFillX(true);
mySpacer->SetFillY(false);
mySpacer->SetSize(3);
mySpacer->SetColor(0x000000FF);
m_sizerVert->SubWidgetAdd(mySpacer);
}
// basic generation ...
m_subWidget = (ewol::Widget*)new widget::Label(l_basicLabel);
if (NULL != m_subWidget) {
m_subWidget->SetExpendX(true);
m_subWidget->SetExpendY(true);
m_sizerVert->SubWidgetAdd(m_subWidget);
}
}
MainWindows::~MainWindows(void)
{
}
void MainWindows::OnReceiveMessage(ewol::EObject * CallerObject, const char * eventId, etk::UString data)
{
ewol::Windows::OnReceiveMessage(CallerObject, eventId, data);
APPL_INFO("Receive Event from the main windows ... : \"" << eventId << "\" ==> data=\"" << data << "\"" );
if (eventId == l_eventChangeTheme) {
if (data=="1") {
etk::theme::SetName("GUI", "rounded");
} else {
etk::theme::SetName("GUI", "default");
}
// Reload shaders and graphic system ...
ewol::resource::ReLoadResources();
return;
} else if (eventId == l_eventChangeWidgetPrevious) {
m_idWidget--;
} else if (eventId == l_eventChangeWidgetNext) {
m_idWidget++;
}
if (m_subWidget != NULL) {
delete (m_subWidget);
// inn theory it must be removed ...
m_subWidget = NULL;
}
switch(m_idWidget)
{
default:
m_idWidget = 0;
case 0:
m_subWidget = (ewol::Widget*)new widget::Label(l_basicLabel);
if (NULL != m_subWidget) {
m_subWidget->SetExpendX(true);
m_subWidget->SetExpendY(true);
m_sizerVert->SubWidgetAdd(m_subWidget);
}
break;
case 1:
m_subWidget = (ewol::Widget*)new TestButton();
if (NULL != m_subWidget) {
m_sizerVert->SubWidgetAdd(m_subWidget);
}
break;
case 2:
m_subWidget = (ewol::Widget*)new TestButtonColor();
if (NULL != m_subWidget) {
m_sizerVert->SubWidgetAdd(m_subWidget);
}
break;
case 3:
m_subWidget = (ewol::Widget*)new TestLabel();
if (NULL != m_subWidget) {
m_sizerVert->SubWidgetAdd(m_subWidget);
}
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;
}
}