|
#include <Wt/WBootstrap3Theme.h>
|
|
#include <Wt/WDialog.h>
|
|
#include <Wt/WEnvironment.h>
|
|
#include <Wt/WPushButton.h>
|
|
#include <Wt/WServer.h>
|
|
#include <Wt/WVBoxLayout.h>
|
|
|
|
Wt::WContainerWidget *m_displayedLayout = nullptr;
|
|
|
|
void setContainerActive(Wt::WVBoxLayout *layout, std::unique_ptr<Wt::WContainerWidget> container)
|
|
{
|
|
if (m_displayedLayout != nullptr)
|
|
{
|
|
m_displayedLayout->removeFromParent();
|
|
m_displayedLayout = nullptr;
|
|
}
|
|
|
|
m_displayedLayout = layout->addWidget(std::move(container), 1);
|
|
}
|
|
|
|
std::unique_ptr<Wt::WContainerWidget> buildContainer()
|
|
{
|
|
auto container = std::make_unique<Wt::WContainerWidget>();
|
|
auto gridLayout = container->setLayout(std::make_unique<Wt::WGridLayout>());
|
|
|
|
gridLayout->addWidget(
|
|
std::make_unique<Wt::WText>("Text1"), 0, 0, Wt::AlignmentFlag::Justify | Wt::AlignmentFlag::Top);
|
|
gridLayout->addWidget(
|
|
std::make_unique<Wt::WText>("Text2"), 1, 0, Wt::AlignmentFlag::Justify | Wt::AlignmentFlag::Top);
|
|
gridLayout->addWidget(
|
|
std::make_unique<Wt::WText>("Text3"), 2, 0, Wt::AlignmentFlag::Justify | Wt::AlignmentFlag::Top);
|
|
gridLayout->addWidget(
|
|
std::make_unique<Wt::WText>("Text4"), 3, 0, Wt::AlignmentFlag::Justify | Wt::AlignmentFlag::Top);
|
|
|
|
gridLayout->addWidget(
|
|
std::make_unique<Wt::WText>("Value1"), 0, 1, Wt::AlignmentFlag::Justify | Wt::AlignmentFlag::Top);
|
|
gridLayout->addWidget(
|
|
std::make_unique<Wt::WText>("Value2"), 1, 1, Wt::AlignmentFlag::Justify | Wt::AlignmentFlag::Top);
|
|
gridLayout->addWidget(
|
|
std::make_unique<Wt::WText>("Value3"), 2, 1, Wt::AlignmentFlag::Justify | Wt::AlignmentFlag::Top);
|
|
gridLayout->addWidget(
|
|
std::make_unique<Wt::WText>("Value4"), 3, 1, Wt::AlignmentFlag::Justify | Wt::AlignmentFlag::Top);
|
|
|
|
return container;
|
|
}
|
|
|
|
std::unique_ptr<Wt::WApplication> createApplication(const Wt::WEnvironment &env)
|
|
{
|
|
auto app = std::make_unique<Wt::WApplication>(env);
|
|
|
|
auto appTheme = std::make_shared<Wt::WBootstrap3Theme>();
|
|
|
|
app->setTheme(appTheme);
|
|
|
|
auto layout = app->root()->setLayout(std::make_unique<Wt::WVBoxLayout>());
|
|
auto button = layout->addWidget(std::make_unique<Wt::WPushButton>("Update Container"));
|
|
|
|
auto container = buildContainer();
|
|
setContainerActive(layout, std::move(container));
|
|
|
|
button->clicked().connect([layout]() {
|
|
auto container = buildContainer();
|
|
setContainerActive(layout, std::move(container));
|
|
});
|
|
|
|
return app;
|
|
}
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
try
|
|
{
|
|
Wt::WServer server(argc, argv, WTHTTP_CONFIGURATION);
|
|
|
|
server.addEntryPoint(Wt::EntryPointType::Application, std::bind(createApplication, std::placeholders::_1));
|
|
|
|
server.run();
|
|
}
|
|
catch (Wt::WException &e)
|
|
{
|
|
std::cerr << "Exception: " << e.what() << std::endl;
|
|
}
|
|
}
|