/** * @author Edouard DUPIN * * @copyright 2010, Edouard DUPIN, all right reserved * * @license BSD v3 (see license file) */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include 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; } }