1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Wt examples: /home/koen/project/wt/public-git/wt/examples/javascript/JavascriptExample.C Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Wt examples
 <span id="projectnumber">3.2.1</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Generated by Doxygen 1.7.5.1 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File List</span></a></li>
<li><a href="globals.html"><span>File Members</span></a></li>
</ul>
</div>
<div class="header">
<div class="headertitle">
<div class="title">/home/koen/project/wt/public-git/wt/examples/javascript/JavascriptExample.C</div> </div>
</div>
<div class="contents">
<a href="JavascriptExample_8C.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2008 Emweb bvba, Kessel-Lo, Belgium.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * See the LICENSE file for terms of use.</span>
<a name="l00005"></a>00005 <span class="comment"> */</span>
<a name="l00006"></a>00006 <span class="preprocessor">#include <iostream></span>
<a name="l00007"></a>00007
<a name="l00008"></a>00008 <span class="preprocessor">#include <Wt/WApplication></span>
<a name="l00009"></a>00009 <span class="preprocessor">#include <Wt/WBreak></span>
<a name="l00010"></a>00010 <span class="preprocessor">#include <Wt/WContainerWidget></span>
<a name="l00011"></a>00011 <span class="preprocessor">#include <Wt/WText></span>
<a name="l00012"></a>00012 <span class="preprocessor">#include <Wt/WPushButton></span>
<a name="l00013"></a>00013
<a name="l00014"></a>00014 <span class="preprocessor">#include "<a class="code" href="JavascriptExample_8h.html">JavascriptExample.h</a>"</span>
<a name="l00015"></a>00015 <span class="preprocessor">#include "<a class="code" href="Popup_8h.html">Popup.h</a>"</span>
<a name="l00016"></a>00016
<a name="l00017"></a>00017 <span class="keyword">using namespace </span>Wt;
<a name="l00018"></a>00018
<a name="l00019"></a><a class="code" href="classJavascriptExample.html#a77b459948d455df5cdb17df2d7e290a6">00019</a> <a class="code" href="classJavascriptExample.html#a77b459948d455df5cdb17df2d7e290a6" title="Create the example application.">JavascriptExample::JavascriptExample</a>(<span class="keyword">const</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WEnvironment.html">WEnvironment</a>& env)
<a name="l00020"></a>00020 : <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WApplication.html">WApplication</a>(env)
<a name="l00021"></a>00021 {
<a name="l00022"></a>00022 <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WApplication.html#a71a3f7da5abb9a76df94fab69ba61670">setTitle</a>(<span class="stringliteral">"Javascript example"</span>);
<a name="l00023"></a>00023
<a name="l00024"></a>00024 <span class="comment">// Create a popup for prompting the amount of money, and connect the</span>
<a name="l00025"></a>00025 <span class="comment">// okPressed button to the slot for setting the amount of money.</span>
<a name="l00026"></a>00026 <span class="comment">//</span>
<a name="l00027"></a>00027 <span class="comment">// Note that the input provided by the user in the prompt box is passed as</span>
<a name="l00028"></a>00028 <span class="comment">// an argument to the slot.</span>
<a name="l00029"></a>00029 <a class="code" href="classJavascriptExample.html#a1e155e7b50393ba00fd2256a33ee5ef7" title="Popup for changing the amount.">promptAmount_</a> = <a class="code" href="classPopup.html#adf73b1320baaea8d1a090d4bb3e7f3ac" title="Create a prompt dialog with the given default value.">Popup::createPrompt</a>(<span class="stringliteral">"How much do you want to pay?"</span>, <span class="stringliteral">""</span>,
<a name="l00030"></a>00030 <span class="keyword">this</span>);
<a name="l00031"></a>00031 <a class="code" href="classJavascriptExample.html#a1e155e7b50393ba00fd2256a33ee5ef7" title="Popup for changing the amount.">promptAmount_</a>-><a class="code" href="classPopup.html#a3705ac1c6feedfbf737ae729ec097bab" title="Signal emitted when ok pressed.">okPressed</a>().<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1JSignal.html#aabb41837c09620b689972095b8a050fc">connect</a>(<span class="keyword">this</span>, &<a class="code" href="classJavascriptExample.html#aa75d161f232147d89a1c343f1e13b40d" title="Set the amount to be payed.">JavascriptExample::setAmount</a>);
<a name="l00032"></a>00032
<a name="l00033"></a>00033 <span class="comment">// Create a popup for confirming the payment.</span>
<a name="l00034"></a>00034 <span class="comment">//</span>
<a name="l00035"></a>00035 <span class="comment">// Since a confirm popup does not allow input, we ignore the</span>
<a name="l00036"></a>00036 <span class="comment">// argument carrying the input (which will be empty anyway).</span>
<a name="l00037"></a>00037 <a class="code" href="classJavascriptExample.html#ab169ca86f643cf5602c63d8fc88bbfc0" title="Popup for paying.">confirmPay_</a> = <a class="code" href="classPopup.html#a2ab31c6aca9d435eb734a8be24eea7b9" title="Create a confirm dialog.">Popup::createConfirm</a>(<span class="stringliteral">""</span>, <span class="keyword">this</span>);
<a name="l00038"></a>00038 <a class="code" href="classJavascriptExample.html#ab169ca86f643cf5602c63d8fc88bbfc0" title="Popup for paying.">confirmPay_</a>-><a class="code" href="classPopup.html#a3705ac1c6feedfbf737ae729ec097bab" title="Signal emitted when ok pressed.">okPressed</a>().<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1JSignal.html#aabb41837c09620b689972095b8a050fc">connect</a>(<span class="keyword">this</span>, &<a class="code" href="classJavascriptExample.html#a3a275b368e298b3d89c6d2729e1acd69" title="The user has confirmed the payment.">JavascriptExample::confirmed</a>);
<a name="l00039"></a>00039
<a name="l00040"></a>00040 <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WText.html">WText</a>(<span class="stringliteral">"<h2>Wt Javascript example</h2>"</span>
<a name="l00041"></a>00041 <span class="stringliteral">"<p>Wt makes abstraction of Javascript, and therefore allows you"</span>
<a name="l00042"></a>00042 <span class="stringliteral">" to develop web applications without any knowledge of Javascript,"</span>
<a name="l00043"></a>00043 <span class="stringliteral">" and which are not dependent on Javascript."</span>
<a name="l00044"></a>00044 <span class="stringliteral">" However, Wt does allow you to add custom Javascript code:</p>"</span>
<a name="l00045"></a>00045 <span class="stringliteral">" <ul>"</span>
<a name="l00046"></a>00046 <span class="stringliteral">" <li>To call custom JavaScript code from an event handler, "</span>
<a name="l00047"></a>00047 <span class="stringliteral">"connect the Wt::EventSignal to a Wt::JSlot.</li>"</span>
<a name="l00048"></a>00048 <span class="stringliteral">" <li>To call C++ code from custom JavaScript, use "</span>
<a name="l00049"></a>00049 <span class="stringliteral">"Wt.emit() to emit a Wt::JSignal.</li>"</span>
<a name="l00050"></a>00050 <span class="stringliteral">" <li>To call custom JavaScript code from C++, use "</span>
<a name="l00051"></a>00051 <span class="stringliteral">"WApplication::doJavascript() or Wt::JSlot::exec().</li>"</span>
<a name="l00052"></a>00052 <span class="stringliteral">" </ul>"</span>
<a name="l00053"></a>00053 <span class="stringliteral">"<p>This simple application shows how to interact between C++ and"</span>
<a name="l00054"></a>00054 <span class="stringliteral">" JavaScript using the JSlot and JSignal classes.</p>"</span>, <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WApplication.html#a17e118a04d962459484a12989a80bc05">root</a>());
<a name="l00055"></a>00055
<a name="l00056"></a>00056 <a class="code" href="classJavascriptExample.html#a6e4ca792d015d42f20578f1b05e3e282" title="WText for showing the current amount.">currentAmount_</a>
<a name="l00057"></a>00057 = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WText.html">WText</a>(<span class="stringliteral">"Current amount: $"</span> + <a class="code" href="classJavascriptExample.html#a1e155e7b50393ba00fd2256a33ee5ef7" title="Popup for changing the amount.">promptAmount_</a>-><a class="code" href="classPopup.html#a3069c5552a1ce6faeec9c580ae7f62ad" title="Get the default value for a prompt dialog.">defaultValue</a>(), <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WApplication.html#a17e118a04d962459484a12989a80bc05">root</a>());
<a name="l00058"></a>00058
<a name="l00059"></a>00059 <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WPushButton.html">WPushButton</a> *amountButton = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WPushButton.html">WPushButton</a>(<span class="stringliteral">"Change ..."</span>, <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WApplication.html#a17e118a04d962459484a12989a80bc05">root</a>());
<a name="l00060"></a>00060 amountButton->setMargin(10, <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/namespaceWt.html#a5a6f4636bcc6ab3c075165d249b3a5a3a6568fecac7c7d7223afaed240bcfdd9e">Left</a> | <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/namespaceWt.html#a5a6f4636bcc6ab3c075165d249b3a5a3acf431c3ce5eb6f14c0390feb14a68004">Right</a>);
<a name="l00061"></a>00061
<a name="l00062"></a>00062 <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WBreak.html">WBreak</a>(<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WApplication.html#a17e118a04d962459484a12989a80bc05">root</a>());
<a name="l00063"></a>00063
<a name="l00064"></a>00064 <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WPushButton.html">WPushButton</a> *confirmButton = <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WPushButton.html">WPushButton</a>(<span class="stringliteral">"Pay now."</span>, <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WApplication.html#a17e118a04d962459484a12989a80bc05">root</a>());
<a name="l00065"></a>00065 confirmButton-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WWebWidget.html#a9795c18e926b26b97fcbabc62a1dd4e3">setMargin</a>(10, <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/namespaceWt.html#a5a6f4636bcc6ab3c075165d249b3a5a3a68b058364f8c2380c1d369a321f22f92">Top</a> | <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/namespaceWt.html#a5a6f4636bcc6ab3c075165d249b3a5a3a87ae7d3cb692a5a4e8f18a7fea93a8a8">Bottom</a>);
<a name="l00066"></a>00066
<a name="l00067"></a>00067 <span class="comment">// Connect the event handlers to a JSlot: this will execute the JavaScript</span>
<a name="l00068"></a>00068 <span class="comment">// immediately, without a server round trip.</span>
<a name="l00069"></a>00069 amountButton->clicked().connect(<a class="code" href="classJavascriptExample.html#a1e155e7b50393ba00fd2256a33ee5ef7" title="Popup for changing the amount.">promptAmount_</a>-><a class="code" href="classPopup.html#a4fba40d8284a8022842f523dfa6318fa" title="Show the dialog.">show</a>);
<a name="l00070"></a>00070 confirmButton-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WInteractWidget.html#ae11e050cce0d4a8f742afa3ef92bfe8c">clicked</a>().connect(<a class="code" href="classJavascriptExample.html#ab169ca86f643cf5602c63d8fc88bbfc0" title="Popup for paying.">confirmPay_</a>-><a class="code" href="classPopup.html#a4fba40d8284a8022842f523dfa6318fa" title="Show the dialog.">show</a>);
<a name="l00071"></a>00071
<a name="l00072"></a>00072 <span class="comment">// Set the initial amount</span>
<a name="l00073"></a>00073 <a class="code" href="classJavascriptExample.html#aa75d161f232147d89a1c343f1e13b40d" title="Set the amount to be payed.">setAmount</a>(<span class="stringliteral">"1000"</span>);
<a name="l00074"></a>00074 }
<a name="l00075"></a>00075
<a name="l00076"></a><a class="code" href="classJavascriptExample.html#aa75d161f232147d89a1c343f1e13b40d">00076</a> <span class="keywordtype">void</span> <a class="code" href="classJavascriptExample.html#aa75d161f232147d89a1c343f1e13b40d" title="Set the amount to be payed.">JavascriptExample::setAmount</a>(<span class="keyword">const</span> std::string amount)
<a name="l00077"></a>00077 {
<a name="l00078"></a>00078 <span class="comment">// Change the confirmation message to include the amount.</span>
<a name="l00079"></a>00079 <a class="code" href="classJavascriptExample.html#ab169ca86f643cf5602c63d8fc88bbfc0" title="Popup for paying.">confirmPay_</a>-><a class="code" href="classPopup.html#a29f79258a69ee042dbf970b7883b2b97" title="Change the message.">setMessage</a>(<span class="stringliteral">"Are you sure you want to pay $"</span> + amount + <span class="stringliteral">" ?"</span>);
<a name="l00080"></a>00080
<a name="l00081"></a>00081 <span class="comment">// Change the default value for the prompt.</span>
<a name="l00082"></a>00082 <a class="code" href="classJavascriptExample.html#a1e155e7b50393ba00fd2256a33ee5ef7" title="Popup for changing the amount.">promptAmount_</a>-><a class="code" href="classPopup.html#a97c14de0bcf9ca764b29eceb7627f14c" title="Change the default value for a prompt dialog.">setDefaultValue</a>(amount);
<a name="l00083"></a>00083
<a name="l00084"></a>00084 <span class="comment">// Change the text that shows the current amount.</span>
<a name="l00085"></a>00085 <a class="code" href="classJavascriptExample.html#a6e4ca792d015d42f20578f1b05e3e282" title="WText for showing the current amount.">currentAmount_</a>-><a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WText.html#a2f788aa524d51b3962642c9f565e66e6">setText</a>(<span class="stringliteral">"Current amount: $"</span> + <a class="code" href="classJavascriptExample.html#a1e155e7b50393ba00fd2256a33ee5ef7" title="Popup for changing the amount.">promptAmount_</a>-><a class="code" href="classPopup.html#a3069c5552a1ce6faeec9c580ae7f62ad" title="Get the default value for a prompt dialog.">defaultValue</a>());
<a name="l00086"></a>00086 }
<a name="l00087"></a>00087
<a name="l00088"></a><a class="code" href="classJavascriptExample.html#a3a275b368e298b3d89c6d2729e1acd69">00088</a> <span class="keywordtype">void</span> <a class="code" href="classJavascriptExample.html#a3a275b368e298b3d89c6d2729e1acd69" title="The user has confirmed the payment.">JavascriptExample::confirmed</a>()
<a name="l00089"></a>00089 {
<a name="l00090"></a>00090 <span class="keyword">new</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WText.html">WText</a>(<span class="stringliteral">"<br/>Just payed $"</span> + <a class="code" href="classJavascriptExample.html#a1e155e7b50393ba00fd2256a33ee5ef7" title="Popup for changing the amount.">promptAmount_</a>-><a class="code" href="classPopup.html#a3069c5552a1ce6faeec9c580ae7f62ad" title="Get the default value for a prompt dialog.">defaultValue</a>() + <span class="stringliteral">"."</span>, <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WApplication.html#a17e118a04d962459484a12989a80bc05">root</a>());
<a name="l00091"></a>00091 }
<a name="l00092"></a>00092
<a name="l00093"></a><a class="code" href="JavascriptExample_8C.html#acb337c09cd35644b56da8b0e5bb17b9c">00093</a> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WApplication.html">WApplication</a> *<a class="code" href="ComposeExample_8C.html#acb337c09cd35644b56da8b0e5bb17b9c">createApplication</a>(<span class="keyword">const</span> <a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WEnvironment.html">WEnvironment</a>& env)
<a name="l00094"></a>00094 {
<a name="l00095"></a>00095 <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classJavascriptExample.html" title="An example showing how to interact custom JavaScript with Wt stuff.">JavascriptExample</a>(env);
<a name="l00096"></a>00096 }
<a name="l00097"></a>00097
<a name="l00098"></a><a class="code" href="JavascriptExample_8C.html#a3c04138a5bfe5d72780bb7e82a18e627">00098</a> <span class="keywordtype">int</span> <a class="code" href="ComposeExample_8C.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv)
<a name="l00099"></a>00099 {
<a name="l00100"></a>00100 <span class="keywordflow">return</span> WRun(argc, argv, &<a class="code" href="ComposeExample_8C.html#acb337c09cd35644b56da8b0e5bb17b9c">createApplication</a>);
<a name="l00101"></a>00101 }
<a name="l00102"></a>00102
</pre></div></div>
</div>
<hr size="1"><address style="text-align: right; margin: 3px"><small>
Generated on Fri Mar 30 2012 for <a href="http://www.webtoolkit.eu/wt">the
C++ Web Toolkit (Wt)</a> by <a
href="http://www.doxygen.org/index.html"><img src="doxygen.png"
alt="doxygen" border="0" style="vertical-align: middle; display:
inline-block; height: 2em"></a> 1.7.5.1</small></address>
</body>
</html>
|