|
#include <Wt/WJavaScript>
|
|
#include <Wt/WApplication>
|
|
#include <Wt/WBootstrapTheme>
|
|
#include <Wt/WContainerWidget>
|
|
|
|
using namespace Wt;
|
|
|
|
class TestJsCpp : public WApplication
|
|
{
|
|
public:
|
|
TestJsCpp(const WEnvironment& env)
|
|
: WApplication(env), m_jsBrowserSizeChanged(this, "BrowserSizeChanged")
|
|
{
|
|
setTheme(new WBootstrapTheme());
|
|
|
|
addMetaHeader("viewport", "width=device-width, initial-scale=1");
|
|
|
|
root()->addStyleClass("container-fluid");
|
|
|
|
m_jsBrowserSizeChanged.connect(this, &TestJsCpp::PrintBrowserSize);
|
|
|
|
declareJavaScriptFunction("jsBrowserSize",
|
|
"function() {" +
|
|
m_jsBrowserSizeChanged.createCall("$(window).width()", "$(window).height()") + ";"
|
|
" }"
|
|
);
|
|
|
|
//#define LAZY_SET_WINDOW_RESIZE
|
|
#ifdef LAZY_SET_WINDOW_RESIZE
|
|
log("##### TestJsCpp #####") << "Assign window resize handler after load.";
|
|
|
|
declareJavaScriptFunction("jsOnLoad",
|
|
"function() {"
|
|
"$(window).resize(" + javaScriptClass() + ".jsBrowserSize);" +
|
|
javaScriptClass() + ".jsBrowserSize();"
|
|
"}"
|
|
);
|
|
|
|
doJavaScript(
|
|
"$(document).ready(" + javaScriptClass() + ".jsOnLoad);"
|
|
);
|
|
#else
|
|
log("##### TestJsCpp #####") << "Assign window resize handler before load.";
|
|
|
|
doJavaScript(
|
|
"$(document).ready(" + javaScriptClass() + ".jsBrowserSize);"
|
|
"$(window).resize(" + javaScriptClass() + ".jsBrowserSize);"
|
|
);
|
|
#endif
|
|
}
|
|
|
|
protected:
|
|
void PrintBrowserSize(int iWidth, int iHeight)
|
|
{
|
|
log("##### TestJsCpp #####") << "Browser Size: w = " << iWidth << " h = " << iHeight;
|
|
}
|
|
|
|
private:
|
|
JSignal<int, int> m_jsBrowserSizeChanged;
|
|
};
|
|
|
|
WApplication* CreateApplication(const WEnvironment& env)
|
|
{
|
|
return new TestJsCpp(env);
|
|
}
|
|
|
|
int main(int iArgCount, char **ppArgs)
|
|
{
|
|
return WRun(iArgCount, ppArgs, &CreateApplication);
|
|
}
|
|
|