|
#include <Wt/WApplication.h>
|
|
#include <Wt/WPushButton.h>
|
|
#include <Wt/WContainerWidget.h>
|
|
#include <Wt/WPopupMenu.h>
|
|
|
|
|
|
class Raha : public Wt::WApplication
|
|
{
|
|
public:
|
|
Wt::Signal<int, int> sizeChanged_;
|
|
Wt::JSignal<int, int> jSizeChanged_;
|
|
|
|
Raha(const Wt::WEnvironment &env);
|
|
~Raha()
|
|
{
|
|
}
|
|
};
|
|
|
|
class Bar : public Wt::WContainerWidget
|
|
{
|
|
|
|
|
|
public:
|
|
Bar(){
|
|
|
|
auto app = dynamic_cast<Raha*>(Wt::WApplication::instance());
|
|
app->sizeChanged_.connect ([=](int w, int h){
|
|
createBar (w);
|
|
});
|
|
}
|
|
|
|
void createBar (int w)
|
|
{
|
|
|
|
clear();
|
|
auto menu = std::make_unique<Wt::WPopupMenu>();
|
|
menu->addItem ("item1");
|
|
menu->addItem ("item2");
|
|
auto subMenu = std::make_unique<Wt::WPopupMenu>();
|
|
subMenu->addItem ("subItem1");
|
|
subMenu->addItem ("subItem2");
|
|
menu->addMenu ("subMenu", std::move (subMenu));
|
|
menu->addItem ("item3");
|
|
auto btn = addWidget (std::make_unique<Wt::WPushButton>("Menu"));
|
|
btn->clicked().connect (menu.get(), &Wt::WPopupMenu::popup);
|
|
addWidget (std::move (menu));
|
|
}
|
|
};
|
|
|
|
Raha::Raha(const Wt::WEnvironment &env) :
|
|
Wt::WApplication(env),
|
|
jSizeChanged_(this, "jSizeChanged_")
|
|
{
|
|
|
|
|
|
|
|
jSizeChanged_.connect ([=](int w, int h){
|
|
sizeChanged_.emit(w, h);
|
|
});
|
|
doJavaScript("window.addEventListener('resize',function() {" +
|
|
jSizeChanged_.createCall({"Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0)", "Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0)"}) + "});" +
|
|
jSizeChanged_.createCall({"Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0)", "Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0)"}));
|
|
root()->addWidget(std::make_unique<Bar>());
|
|
}
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
|
|
/* code */
|
|
return Wt::WRun(argc, argv, [](const Wt::WEnvironment &env)
|
|
{ return (std::make_unique<Raha>(env)); });
|
|
}
|