File: JavascriptExample_8C_source.html

package info (click to toggle)
witty 3.2.1-2%2Bdeb7u1
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 70,436 kB
  • sloc: cpp: 117,095; ansic: 77,999; xml: 7,564; sh: 1,037; perl: 208; makefile: 144; java: 86; sql: 14
file content (169 lines) | stat: -rw-r--r-- 19,989 bytes parent folder | download
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
   &#160;<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&#160;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&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;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 &lt;iostream&gt;</span>
<a name="l00007"></a>00007 
<a name="l00008"></a>00008 <span class="preprocessor">#include &lt;Wt/WApplication&gt;</span>
<a name="l00009"></a>00009 <span class="preprocessor">#include &lt;Wt/WBreak&gt;</span>
<a name="l00010"></a>00010 <span class="preprocessor">#include &lt;Wt/WContainerWidget&gt;</span>
<a name="l00011"></a>00011 <span class="preprocessor">#include &lt;Wt/WText&gt;</span>
<a name="l00012"></a>00012 <span class="preprocessor">#include &lt;Wt/WPushButton&gt;</span>
<a name="l00013"></a>00013 
<a name="l00014"></a>00014 <span class="preprocessor">#include &quot;<a class="code" href="JavascriptExample_8h.html">JavascriptExample.h</a>&quot;</span>
<a name="l00015"></a>00015 <span class="preprocessor">#include &quot;<a class="code" href="Popup_8h.html">Popup.h</a>&quot;</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>&amp; 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">&quot;Javascript example&quot;</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">&quot;How much do you want to pay?&quot;</span>, <span class="stringliteral">&quot;&quot;</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>-&gt;<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>, &amp;<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">&quot;&quot;</span>, <span class="keyword">this</span>);
<a name="l00038"></a>00038   <a class="code" href="classJavascriptExample.html#ab169ca86f643cf5602c63d8fc88bbfc0" title="Popup for paying.">confirmPay_</a>-&gt;<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>, &amp;<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">&quot;&lt;h2&gt;Wt Javascript example&lt;/h2&gt;&quot;</span>
<a name="l00041"></a>00041             <span class="stringliteral">&quot;&lt;p&gt;Wt makes abstraction of Javascript, and therefore allows you&quot;</span>
<a name="l00042"></a>00042             <span class="stringliteral">&quot; to develop web applications without any knowledge of Javascript,&quot;</span>
<a name="l00043"></a>00043             <span class="stringliteral">&quot; and which are not dependent on Javascript.&quot;</span>
<a name="l00044"></a>00044             <span class="stringliteral">&quot; However, Wt does allow you to add custom Javascript code:&lt;/p&gt;&quot;</span>
<a name="l00045"></a>00045             <span class="stringliteral">&quot; &lt;ul&gt;&quot;</span>
<a name="l00046"></a>00046             <span class="stringliteral">&quot;   &lt;li&gt;To call custom JavaScript code from an event handler, &quot;</span>
<a name="l00047"></a>00047             <span class="stringliteral">&quot;connect the Wt::EventSignal to a Wt::JSlot.&lt;/li&gt;&quot;</span>
<a name="l00048"></a>00048             <span class="stringliteral">&quot;   &lt;li&gt;To call C++ code from custom JavaScript, use &quot;</span>
<a name="l00049"></a>00049             <span class="stringliteral">&quot;Wt.emit() to emit a Wt::JSignal.&lt;/li&gt;&quot;</span>
<a name="l00050"></a>00050             <span class="stringliteral">&quot;   &lt;li&gt;To call custom JavaScript code from C++, use &quot;</span>
<a name="l00051"></a>00051             <span class="stringliteral">&quot;WApplication::doJavascript() or Wt::JSlot::exec().&lt;/li&gt;&quot;</span>
<a name="l00052"></a>00052             <span class="stringliteral">&quot; &lt;/ul&gt;&quot;</span>
<a name="l00053"></a>00053             <span class="stringliteral">&quot;&lt;p&gt;This simple application shows how to interact between C++ and&quot;</span>
<a name="l00054"></a>00054             <span class="stringliteral">&quot; JavaScript using the JSlot and JSignal classes.&lt;/p&gt;&quot;</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">&quot;Current amount: $&quot;</span> + <a class="code" href="classJavascriptExample.html#a1e155e7b50393ba00fd2256a33ee5ef7" title="Popup for changing the amount.">promptAmount_</a>-&gt;<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">&quot;Change ...&quot;</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-&gt;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">&quot;Pay now.&quot;</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-&gt;<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-&gt;clicked().connect(<a class="code" href="classJavascriptExample.html#a1e155e7b50393ba00fd2256a33ee5ef7" title="Popup for changing the amount.">promptAmount_</a>-&gt;<a class="code" href="classPopup.html#a4fba40d8284a8022842f523dfa6318fa" title="Show the dialog.">show</a>);
<a name="l00070"></a>00070   confirmButton-&gt;<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>-&gt;<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">&quot;1000&quot;</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>-&gt;<a class="code" href="classPopup.html#a29f79258a69ee042dbf970b7883b2b97" title="Change the message.">setMessage</a>(<span class="stringliteral">&quot;Are you sure you want to pay $&quot;</span> + amount + <span class="stringliteral">&quot; ?&quot;</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>-&gt;<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>-&gt;<a class="codeRef" doxygen="wt.tags:../../reference/html" href="../../reference/html/classWt_1_1WText.html#a2f788aa524d51b3962642c9f565e66e6">setText</a>(<span class="stringliteral">&quot;Current amount: $&quot;</span> + <a class="code" href="classJavascriptExample.html#a1e155e7b50393ba00fd2256a33ee5ef7" title="Popup for changing the amount.">promptAmount_</a>-&gt;<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">&quot;&lt;br/&gt;Just payed $&quot;</span> + <a class="code" href="classJavascriptExample.html#a1e155e7b50393ba00fd2256a33ee5ef7" title="Popup for changing the amount.">promptAmount_</a>-&gt;<a class="code" href="classPopup.html#a3069c5552a1ce6faeec9c580ae7f62ad" title="Get the default value for a prompt dialog.">defaultValue</a>() + <span class="stringliteral">&quot;.&quot;</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>&amp; 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, &amp;<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&nbsp;<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>