/** * @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 #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" appl::MainWindows::MainWindows() : m_idWidget(0) { APPL_DEBUG("CREATE WINDOWS ... "); addObjectType("appl::MainWindows"); } void appl::MainWindows::init() { ewol::widget::Windows::init(); std::shared_ptr mySizerHori; std::shared_ptr myButton; m_sizerVert = ewol::widget::Sizer::create(ewol::widget::Sizer::modeVert); if (m_sizerVert == nullptr) { APPL_ERROR("Allocation error mySizerVert"); return; } setSubWidget(m_sizerVert); mySizerHori = ewol::widget::Sizer::create(ewol::widget::Sizer::modeHori); if (mySizerHori == nullptr) { APPL_ERROR("Allocation error mySizerHori"); return; } m_sizerVert->subWidgetAdd(mySizerHori); myButton = ewol::widget::Button::create(); if (myButton != nullptr) { myButton->setSubWidget(ewol::widget::Label::create("default theme (cube)")); myButton->setSubWidgetToggle(ewol::widget::Label::create("rounded theme")); myButton->setToggleMode(true); myButton->signalValue.bind(shared_from_this(), &appl::MainWindows::onCallbackThemeChange); mySizerHori->subWidgetAdd(myButton); } myButton = ewol::widget::Button::create(); if (myButton != nullptr) { myButton->setSubWidget(ewol::widget::Label::create("Previous Widget test")); myButton->signalPressed.bind(shared_from_this(), &appl::MainWindows::onCallbackWidgetChange, -1); mySizerHori->subWidgetAdd(myButton); } myButton = ewol::widget::Button::create(); if (myButton != nullptr) { myButton->setSubWidget(ewol::widget::Label::create("Next Widget test")); myButton->signalPressed.bind(shared_from_this(), &appl::MainWindows::onCallbackWidgetChange, 1); mySizerHori->subWidgetAdd(myButton); } m_testName = ewol::widget::Label::create("none"); if (m_testName != nullptr) { mySizerHori->subWidgetAdd(m_testName); } std::shared_ptr mySpacer = ewol::widget::Spacer::create(); if (mySpacer != nullptr) { mySpacer->setExpand(bvec2(false,false)); mySpacer->setFill(bvec2(true,false)); mySpacer->setMinSize(vec2(3,3)); mySpacer->setColor(0x000000FF); m_sizerVert->subWidgetAdd(mySpacer); } } void appl::MainWindows::onCallbackThemeChange(const bool& _value) { if (_value == true) { etk::theme::setName("GUI", "shape/round/"); } else { etk::theme::setName("GUI", "shape/square/"); } // Reload shaders and graphic system ... ewol::getContext().getResourcesManager().reLoadResources(); ewol::getContext().forceRedrawAll(); } void appl::MainWindows::onCallbackWidgetChange(int32_t _increment) { m_idWidget += _increment; if (m_subWidget != nullptr) { m_subWidget->destroy(); // in theory it must be removed ... m_subWidget.reset(); } switch(m_idWidget) { case 0: m_subWidget = appl::TestButton::create(); if (m_subWidget != nullptr) { m_sizerVert->subWidgetAdd(m_subWidget); } if (m_testName!=nullptr) { m_testName->setLabel("TestButton"); }; break; case 1: m_subWidget = TestDistanceField::create(); if (m_subWidget != nullptr) { m_sizerVert->subWidgetAdd(m_subWidget); } if (m_testName != nullptr) { m_testName->setLabel("Test Distance Field"); }; break; case 2: m_subWidget = TestButtonColor::create(); if (m_subWidget != nullptr) { m_sizerVert->subWidgetAdd(m_subWidget); } if (m_testName != nullptr) { m_testName->setLabel("TestButtonColor"); }; break; case 3: m_subWidget = TestLabel::create(); if (m_subWidget != nullptr) { m_sizerVert->subWidgetAdd(m_subWidget); } if (m_testName != nullptr) { m_testName->setLabel("TestLabel"); }; break; case 4: m_subWidget = TestImage::create(); if (m_subWidget != nullptr) { m_sizerVert->subWidgetAdd(m_subWidget); } if (m_testName != nullptr) { m_testName->setLabel("TestImage"); }; break; case 5: m_subWidget = appl::TestCheckBox::create(); if (m_subWidget != nullptr) { m_sizerVert->subWidgetAdd(m_subWidget); } if (m_testName != nullptr) { m_testName->setLabel("TestCheckbox"); }; break; default: m_subWidget = ewol::widget::Label::create("Test software for EWOL"); if (m_subWidget != nullptr) { m_subWidget->setExpand(bvec2(true,true)); m_sizerVert->subWidgetAdd(m_subWidget); } if (m_testName != nullptr) { m_testName->setLabel("Label"); }; m_idWidget = -1; break; } }