summaryrefslogtreecommitdiffstats
path: root/sca-cpp
diff options
context:
space:
mode:
authorjsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68>2011-06-13 07:57:30 +0000
committerjsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68>2011-06-13 07:57:30 +0000
commitd3bdc051ec4a6499c73d00e80f744aa375a01687 (patch)
tree859ef5c6e4ca93b6a72d40febe0d6dd0ace33d09 /sca-cpp
parentba223e693c0f6e652fd70c05d83d69956262ff09 (diff)
Minor refactoring and cleanup of edit module and its test composites. Add HTML generation and messaging components and a few more tests.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1135048 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-cpp')
-rw-r--r--sca-cpp/trunk/modules/edit/apps/me360/app.composite11
-rw-r--r--sca-cpp/trunk/modules/edit/apps/new/app.composite12
-rw-r--r--sca-cpp/trunk/modules/edit/apps/new/htdocs/app.html6
-rw-r--r--sca-cpp/trunk/modules/edit/apps/ourphotos/app.composite49
-rw-r--r--sca-cpp/trunk/modules/edit/apps/shoppingcart/app.composite194
-rw-r--r--sca-cpp/trunk/modules/edit/apps/slice/app.composite336
-rw-r--r--sca-cpp/trunk/modules/edit/apps/slice/htdocs/app.html24
-rw-r--r--sca-cpp/trunk/modules/edit/apps/testanimation/app.composite187
-rw-r--r--sca-cpp/trunk/modules/edit/apps/testanimation/app.stats1
-rw-r--r--sca-cpp/trunk/modules/edit/apps/testanimation/htdocs/app.html27
-rw-r--r--sca-cpp/trunk/modules/edit/apps/testhttp/app.composite18
-rw-r--r--sca-cpp/trunk/modules/edit/apps/testsms/app.composite98
-rw-r--r--sca-cpp/trunk/modules/edit/apps/testsms/app.stats1
-rw-r--r--sca-cpp/trunk/modules/edit/apps/testsms/htdocs/app.html24
-rw-r--r--sca-cpp/trunk/modules/edit/apps/testwidgets/app.composite67
-rw-r--r--sca-cpp/trunk/modules/edit/apps/testwidgets/htdocs/app.html11
-rw-r--r--sca-cpp/trunk/modules/edit/apps/testwidgets2/app.composite87
-rw-r--r--sca-cpp/trunk/modules/edit/apps/testwidgets2/htdocs/app.html12
-rw-r--r--sca-cpp/trunk/modules/edit/apps/testwidgets3/app.composite206
-rw-r--r--sca-cpp/trunk/modules/edit/apps/testwidgets3/app.stats1
-rw-r--r--sca-cpp/trunk/modules/edit/apps/testwidgets3/htdocs/app.html39
-rw-r--r--sca-cpp/trunk/modules/edit/apps/twsms/app.composite171
-rw-r--r--sca-cpp/trunk/modules/edit/apps/twsms/app.stats1
-rw-r--r--sca-cpp/trunk/modules/edit/apps/twsms/htdocs/app.html33
-rw-r--r--sca-cpp/trunk/modules/edit/dashboards/jane@localhost/user.apps2
-rw-r--r--sca-cpp/trunk/modules/edit/dashboards/jane@sca-store.com/user.apps2
-rw-r--r--sca-cpp/trunk/modules/edit/dashboards/john@localhost/user.apps2
-rw-r--r--sca-cpp/trunk/modules/edit/dashboards/john@sca-store.com/user.apps2
-rw-r--r--sca-cpp/trunk/modules/edit/htdocs/account/index.html45
-rw-r--r--sca-cpp/trunk/modules/edit/htdocs/app/index.html279
-rw-r--r--sca-cpp/trunk/modules/edit/htdocs/graph/index.html1
-rw-r--r--sca-cpp/trunk/modules/edit/htdocs/page/page.js5
-rw-r--r--sca-cpp/trunk/modules/edit/htdocs/store/index.html3
-rw-r--r--sca-cpp/trunk/modules/edit/palettes/animation/palette.composite45
-rw-r--r--sca-cpp/trunk/modules/edit/palettes/control/palette.composite21
-rw-r--r--sca-cpp/trunk/modules/edit/palettes/math/palette.composite5
-rw-r--r--sca-cpp/trunk/modules/edit/palettes/talk/palette.composite13
-rw-r--r--sca-cpp/trunk/modules/edit/palettes/text/palette.composite2
-rw-r--r--sca-cpp/trunk/modules/edit/store/all/store.apps2
-rw-r--r--sca-cpp/trunk/modules/edit/store/featured/store.apps2
-rw-r--r--sca-cpp/trunk/modules/edit/store/new/store.apps2
-rw-r--r--sca-cpp/trunk/modules/edit/store/top/store.apps2
42 files changed, 1741 insertions, 310 deletions
diff --git a/sca-cpp/trunk/modules/edit/apps/me360/app.composite b/sca-cpp/trunk/modules/edit/apps/me360/app.composite
index f7991a117d..8fe4825f8a 100644
--- a/sca-cpp/trunk/modules/edit/apps/me360/app.composite
+++ b/sca-cpp/trunk/modules/edit/apps/me360/app.composite
@@ -53,12 +53,6 @@
<reference target="bzprofile" name="value"/>
<property>buzzprofile</property>
</component>
- <component name="list" title="list" color="yellow1">
- <implementation.python script="nuvem/list_.py"/>
- <service name="list"/>
- <reference target="text5" name="item" clonable="true"/>
- <reference name="item" clonable="true"/>
- </component>
<component name="list2" title="list" color="yellow1">
<implementation.python script="nuvem/list_.py"/>
<service name="list"/>
@@ -84,11 +78,6 @@
<service name="text"/>
<property>jsdelfino</property>
</component>
- <component name="text3" title=" '{propval}'" color="orange1">
- <implementation.python script="nuvem/text.py"/>
- <service name="text"/>
- <property>https://www.googleapis.com/buzz/v1/people/{0}/@self?alt=json</property>
- </component>
<component name="text4" title=" '{propval}'" color="orange1">
<implementation.python script="nuvem/text.py"/>
<service name="text"/>
diff --git a/sca-cpp/trunk/modules/edit/apps/new/app.composite b/sca-cpp/trunk/modules/edit/apps/new/app.composite
index 253168ff21..7cfa7629ac 100644
--- a/sca-cpp/trunk/modules/edit/apps/new/app.composite
+++ b/sca-cpp/trunk/modules/edit/apps/new/app.composite
@@ -31,24 +31,12 @@
<reference target="user1" name="value"/>
<property>me</property>
</component>
- <component name="item2" title="{propval} :" color="orange1">
- <implementation.python script="nuvem/item.py"/>
- <service name="item"/>
- <reference target="now1" name="value"/>
- <property>time</property>
- </component>
<component name="list2" title="list" color="yellow1">
<implementation.python script="nuvem/list_.py"/>
<service name="list"/>
<reference target="item1" name="item" clonable="true"/>
- <reference target="item2" name="item" clonable="true"/>
<reference name="item" clonable="true"/>
</component>
- <component name="now1" title="now" color="orange1">
- <implementation.python script="nuvem/now.py"/>
- <service name="now"/>
- <reference name="format"/>
- </component>
<component x="10" y="40" name="start1" title="start" color="green1">
<implementation.python script="nuvem/start.py"/>
<service name="start" visible="false">
diff --git a/sca-cpp/trunk/modules/edit/apps/new/htdocs/app.html b/sca-cpp/trunk/modules/edit/apps/new/htdocs/app.html
index de39e20956..eeb7becae5 100644
--- a/sca-cpp/trunk/modules/edit/apps/new/htdocs/app.html
+++ b/sca-cpp/trunk/modules/edit/apps/new/htdocs/app.html
@@ -24,10 +24,4 @@
<SPAN id="me" class="h1" style="position: absolute; top: 0px; left: 56px; ">
<H1>=me</H1>
</SPAN>
- <SPAN id="page:text" class="text" style="position: absolute; top: 36px; left: 2px; ">
- <SPAN>The time is:</SPAN>
- </SPAN>
- <SPAN id="time" class="text" style="position: absolute; top: 36px; left: 74px; ">
- <SPAN>=time</SPAN>
- </SPAN>
</DIV>
diff --git a/sca-cpp/trunk/modules/edit/apps/ourphotos/app.composite b/sca-cpp/trunk/modules/edit/apps/ourphotos/app.composite
index 13ed9a2248..e0c5e5ceca 100644
--- a/sca-cpp/trunk/modules/edit/apps/ourphotos/app.composite
+++ b/sca-cpp/trunk/modules/edit/apps/ourphotos/app.composite
@@ -37,19 +37,42 @@
<implementation.python script="nuvem/map_.py"/>
<service name="foreach"/>
<reference target="name5" name="item"/>
- <reference target="format" name="transform"/>
+ <reference target="htimg1" name="transform"/>
<reference target="shuffle" name="list"/>
</component>
- <component name="format" title="format" color="magenta1">
- <implementation.python script="nuvem/format_.py"/>
- <service name="format"/>
- <reference target="text2" name="pattern"/>
- <reference target="list" name="values"/>
+ <component x="180" y="50" name="htimg1" title="html img" color="magenta1">
+ <implementation.python script="nuvem/htimg.py"/>
+ <service name="htimg"/>
+ <reference target="list" name="value"/>
+ </component>
+ <component x="280" y="80" name="htstyle1" title="html style" color="magenta1">
+ <implementation.python script="nuvem/htstyle.py"/>
+ <service name="htstyle"/>
+ <reference target="list1" name="value"/>
+ </component>
+ <component name="item" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="foreach2" name="value"/>
+ <property>images</property>
+ </component>
+ <component x="390" y="80" name="item1" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="text1" name="value"/>
+ <property>width</property>
</component>
<component name="list" title="list" color="yellow1">
<implementation.python script="nuvem/list_.py"/>
<service name="list"/>
<reference target="valueof2" name="item" clonable="true"/>
+ <reference target="htstyle1" name="item" clonable="true"/>
+ <reference name="item" clonable="true"/>
+ </component>
+ <component name="list1" title="list" color="yellow1">
+ <implementation.python script="nuvem/list_.py"/>
+ <service name="list"/>
+ <reference target="item1" name="item" clonable="true"/>
<reference name="item" clonable="true"/>
</component>
<component name="name3" title="" color="orange1">
@@ -75,12 +98,6 @@
<binding.http uri="https://picasaweb.google.com/data/feed/api/user"/>
</reference>
</component>
- <component name="item" title="{propval} :" color="orange1">
- <implementation.python script="nuvem/item.py"/>
- <service name="item"/>
- <reference target="foreach2" name="value"/>
- <property>images</property>
- </component>
<component name="select" title="select" color="yellow1">
<implementation.python script="nuvem/select.py"/>
<service name="select"/>
@@ -93,22 +110,22 @@
<reference target="name4" name="path"/>
<reference target="flkalbum" name="list"/>
</component>
- <component name="shuffle" title="shuffle" color="yellow1">
+ <component x="180" y="180" name="shuffle" title="shuffle" color="yellow1">
<implementation.python script="nuvem/shuffle_.py"/>
<service name="shuffle"/>
<reference target="append" name="list"/>
</component>
- <component x="14" y="19" name="start" title="start" color="green1">
+ <component x="20" y="10" name="start" title="start" color="green1">
<implementation.python script="nuvem/start.py"/>
<service name="start" visible="false">
<binding.http uri="start"/>
</service>
<reference target="item" name="content"/>
</component>
- <component name="text2" title=" '{propval}'" color="orange1">
+ <component x="440" y="80" name="text1" title=" '{propval}'" color="orange1">
<implementation.python script="nuvem/text.py"/>
<service name="text"/>
- <property>&lt;img src=&quot;{0}&quot; width=&quot;320&quot;/&gt;</property>
+ <property>320px</property>
</component>
<component name="text5" title=" '{propval}'" color="orange1">
<implementation.python script="nuvem/text.py"/>
diff --git a/sca-cpp/trunk/modules/edit/apps/shoppingcart/app.composite b/sca-cpp/trunk/modules/edit/apps/shoppingcart/app.composite
index 565bffa371..0d626d09a6 100644
--- a/sca-cpp/trunk/modules/edit/apps/shoppingcart/app.composite
+++ b/sca-cpp/trunk/modules/edit/apps/shoppingcart/app.composite
@@ -28,17 +28,17 @@
<service name="order" promote="order"/>
<service name="start" promote="start"/>
<service name="total" promote="total"/>
- <component x="342" y="359" name="Add to cart" title="{compname}" color="green1">
+ <component x="330" y="410" name="Add to cart" title="{compname}" color="green1">
<implementation.python script="nuvem/service.py"/>
<service name="service" visible="false"/>
<reference target="list6" name="content"/>
</component>
- <component name="Check out" x="12" y="758" title="{compname}" color="green1">
+ <component x="10" y="850" name="Check out" title="{compname}" color="green1">
<implementation.python script="nuvem/service.py"/>
<service name="service" visible="false"/>
<reference target="list3" name="content"/>
</component>
- <component name="Empty" x="10" y="560" title="{compname}" color="green1">
+ <component x="10" y="640" name="Empty" title="{compname}" color="green1">
<implementation.python script="nuvem/service.py"/>
<service name="service" visible="false"/>
<reference target="list5" name="content"/>
@@ -145,13 +145,13 @@
<reference target="name11" name="name"/>
<reference name="proxy" wiredByImpl="true" visible="false"/>
</component>
- <component name="call9" title="call" color="green1">
+ <component x="210" y="280" name="call9" title="call" color="green1">
<implementation.python script="nuvem/call.py"/>
<service name="call"/>
<reference target="name2" name="name"/>
<reference name="proxy" wiredByImpl="true" visible="false"/>
</component>
- <component x="12" y="388" name="carthtml" title="{compname}" color="green1">
+ <component x="10" y="460" name="carthtml" title="{compname}" color="green1">
<implementation.python script="nuvem/service.py"/>
<service name="service" visible="false"/>
<reference target="item6" name="content"/>
@@ -161,7 +161,7 @@
<service name="service" visible="false"/>
<reference target="list" name="content"/>
</component>
- <component x="12" y="221" name="cataloghtml" title="{compname}" color="green1">
+ <component x="10" y="220" name="cataloghtml" title="{compname}" color="green1">
<implementation.python script="nuvem/service.py"/>
<service name="service" visible="false"/>
<reference target="item" name="content"/>
@@ -200,7 +200,7 @@
<implementation.python script="nuvem/map_.py"/>
<service name="foreach"/>
<reference target="name" name="item"/>
- <reference target="format2" name="transform"/>
+ <reference target="htcheck1" name="transform"/>
<reference target="call9" name="list"/>
</component>
<component name="foreach2" title="foreach" color="yellow1">
@@ -216,7 +216,7 @@
<reference target="text4" name="pattern"/>
<reference target="call8" name="values"/>
</component>
- <component name="format2" title="format" color="magenta1">
+ <component x="350" y="270" name="format1" title="format" color="magenta1">
<implementation.python script="nuvem/format_.py"/>
<service name="format"/>
<reference target="text5" name="pattern"/>
@@ -239,6 +239,11 @@
<service name="service" visible="false"/>
<reference target="get" name="content"/>
</component>
+ <component x="210" y="240" name="htcheck1" title="html checkbox" color="magenta1">
+ <implementation.python script="nuvem/htcheck.py"/>
+ <service name="htcheck"/>
+ <reference target="pair1" name="value"/>
+ </component>
<component name="if" title="if" color="magenta1">
<implementation.python script="nuvem/if_.py"/>
<service name="if"/>
@@ -246,6 +251,72 @@
<reference target="number5" name="then"/>
<reference target="round" name="else"/>
</component>
+ <component name="item" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="foreach" name="value"/>
+ <property>catalog</property>
+ </component>
+ <component name="item10" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="number4" name="value"/>
+ <property>Kiwi</property>
+ </component>
+ <component name="item11" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="delete2" name="value"/>
+ <property>delresult</property>
+ </component>
+ <component name="item12" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="sendgtalk" name="value"/>
+ <property>sendresult</property>
+ </component>
+ <component name="item2" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="if" name="value"/>
+ <property>total</property>
+ </component>
+ <component name="item4" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="call11" name="value"/>
+ <property>message</property>
+ </component>
+ <component name="item5" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="text2" name="value"/>
+ <property>message</property>
+ </component>
+ <component name="item6" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="foreach2" name="value"/>
+ <property>cart</property>
+ </component>
+ <component name="item7" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="put" name="value"/>
+ <property>putresult</property>
+ </component>
+ <component name="item8" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="number" name="value"/>
+ <property>Mango</property>
+ </component>
+ <component name="item9" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="number2" name="value"/>
+ <property>Passion</property>
+ </component>
<component name="list" title="list" color="yellow1">
<implementation.python script="nuvem/list_.py"/>
<service name="list"/>
@@ -290,7 +361,7 @@
<component name="lookup" title="lookup" color="yellow1">
<implementation.python script="nuvem/lookup.py"/>
<service name="lookup"/>
- <reference target="param" name="name"/>
+ <reference target="second1" name="name"/>
<reference target="call15" name="list"/>
</component>
<component name="name" title="" color="orange1">
@@ -417,83 +488,23 @@
<service name="number"/>
<property>0</property>
</component>
- <component x="425" y="832" name="order" title="{compname}" color="green1">
+ <component x="430" y="760" name="order" title="{compname}" color="green1">
<implementation.python script="nuvem/service.py"/>
<service name="service" visible="false"/>
<reference target="format" name="content"/>
</component>
- <component name="param" title="?param" color="green1">
+ <component x="310" y="250" name="pair1" title="pair" color="yellow1">
+ <implementation.python script="nuvem/pair.py"/>
+ <service name="pair"/>
+ <reference target="text8" name="name"/>
+ <reference target="format1" name="value"/>
+ </component>
+ <component x="840" y="100" name="param" title="?param" color="green1">
<implementation.python script="nuvem/param.py"/>
<service name="param"/>
<property>fruit</property>
<property name="query" visible="false"/>
</component>
- <component name="item" title="{propval} :" color="orange1">
- <implementation.python script="nuvem/item.py"/>
- <service name="item"/>
- <reference target="foreach" name="value"/>
- <property>catalog</property>
- </component>
- <component name="item10" title="{propval} :" color="orange1">
- <implementation.python script="nuvem/item.py"/>
- <service name="item"/>
- <reference target="number4" name="value"/>
- <property>Kiwi</property>
- </component>
- <component name="item11" title="{propval} :" color="orange1">
- <implementation.python script="nuvem/item.py"/>
- <service name="item"/>
- <reference target="delete2" name="value"/>
- <property>delresult</property>
- </component>
- <component name="item12" title="{propval} :" color="orange1">
- <implementation.python script="nuvem/item.py"/>
- <service name="item"/>
- <reference target="sendgtalk" name="value"/>
- <property>sendresult</property>
- </component>
- <component name="item2" title="{propval} :" color="orange1">
- <implementation.python script="nuvem/item.py"/>
- <service name="item"/>
- <reference target="if" name="value"/>
- <property>total</property>
- </component>
- <component name="item4" title="{propval} :" color="orange1">
- <implementation.python script="nuvem/item.py"/>
- <service name="item"/>
- <reference target="call11" name="value"/>
- <property>message</property>
- </component>
- <component name="item5" title="{propval} :" color="orange1">
- <implementation.python script="nuvem/item.py"/>
- <service name="item"/>
- <reference target="text2" name="value"/>
- <property>message</property>
- </component>
- <component name="item6" title="{propval} :" color="orange1">
- <implementation.python script="nuvem/item.py"/>
- <service name="item"/>
- <reference target="foreach2" name="value"/>
- <property>cart</property>
- </component>
- <component name="item7" title="{propval} :" color="orange1">
- <implementation.python script="nuvem/item.py"/>
- <service name="item"/>
- <reference target="put" name="value"/>
- <property>putresult</property>
- </component>
- <component name="item8" title="{propval} :" color="orange1">
- <implementation.python script="nuvem/item.py"/>
- <service name="item"/>
- <reference target="number" name="value"/>
- <property>Mango</property>
- </component>
- <component name="item9" title="{propval} :" color="orange1">
- <implementation.python script="nuvem/item.py"/>
- <service name="item"/>
- <reference target="number2" name="value"/>
- <property>Passion</property>
- </component>
<component name="put" title="put" color="red1">
<implementation.python script="nuvem/put.py"/>
<service name="put"/>
@@ -507,6 +518,11 @@
<reference target="number3" name="n"/>
<reference target="sum" name="x"/>
</component>
+ <component x="650" y="450" name="second1" title="second" color="yellow1">
+ <implementation.python script="nuvem/second.py"/>
+ <service name="second"/>
+ <reference target="split1" name="list"/>
+ </component>
<component name="sendgtalk" title="gtalk" color="blue1">
<implementation.cpp path="lib/chat" library="libchat-sender2"/>
<service name="sendgtalk"/>
@@ -515,6 +531,12 @@
<reference target="text3" name="to"/>
<reference target="call12" name="msg"/>
</component>
+ <component x="720" y="70" name="split1" title="split" color="magenta1">
+ <implementation.python script="nuvem/split.py"/>
+ <service name="split"/>
+ <reference target="text1" name="separator"/>
+ <reference target="param" name="string"/>
+ </component>
<component x="13" y="15" name="start" title="start" color="green1">
<implementation.python script="nuvem/start.py"/>
<service name="start" visible="false">
@@ -532,6 +554,11 @@
<service name="text"/>
<property>xmppsca.1@gmail.com</property>
</component>
+ <component x="790" y="70" name="text1" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property> - </property>
+ </component>
<component name="text2" title=" '{propval}'" color="orange1">
<implementation.python script="nuvem/text.py"/>
<service name="text"/>
@@ -547,10 +574,10 @@
<service name="text"/>
<property>Your order has been processed. Your total: ${1}</property>
</component>
- <component name="text5" title=" '{propval}'" color="orange1">
+ <component x="1220" y="310" name="text5" title=" '{propval}'" color="orange1">
<implementation.python script="nuvem/text.py"/>
<service name="text"/>
- <property>&lt;span id=&quot;fruit&quot; class=&quot;checkbox&quot;&gt;&lt;input type=&quot;checkbox&quot; value=&quot;{0}&quot;/&gt;${1} - {0}&lt;/span&gt;</property>
+ <property>${1} - {0}</property>
</component>
<component name="text6" title=" '{propval}'" color="orange1">
<implementation.python script="nuvem/text.py"/>
@@ -562,7 +589,12 @@
<service name="text"/>
<property>xmpp4sca</property>
</component>
- <component x="760" y="300" name="total" title="{compname}" color="green1">
+ <component x="350" y="250" name="text8" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>fruit</property>
+ </component>
+ <component x="660" y="160" name="total" title="{compname}" color="green1">
<implementation.python script="nuvem/service.py"/>
<service name="service" visible="false"/>
<reference target="item2" name="content"/>
@@ -582,7 +614,7 @@
<service name="user"/>
<property name="user" visible="false"/>
</component>
- <component name="valueof" title="valueof" color="orange1">
+ <component x="1220" y="340" name="valueof" title="valueof" color="orange1">
<implementation.python script="nuvem/valueof.py"/>
<service name="valueof"/>
<property>fruit</property>
diff --git a/sca-cpp/trunk/modules/edit/apps/slice/app.composite b/sca-cpp/trunk/modules/edit/apps/slice/app.composite
index 847d9c4892..af61c11d26 100644
--- a/sca-cpp/trunk/modules/edit/apps/slice/app.composite
+++ b/sca-cpp/trunk/modules/edit/apps/slice/app.composite
@@ -18,23 +18,345 @@
* under the License.
-->
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" name="app" targetNamespace="http://app">
+ <service name="angle" promote="angle"/>
+ <service name="animation1" promote="animation1"/>
<service name="start" promote="start"/>
- <component name="number" title="#" color="orange1">
- <implementation.python script="nuvem/number.py"/>
- <service name="number"/>
- <property>0</property>
+ <service name="xpos" promote="xpos"/>
+ <service name="ypos" promote="ypos"/>
+ <component x="670" y="370" name="angle" title="{compname}" color="green1">
+ <implementation.python script="nuvem/service.py"/>
+ <service name="service" visible="false"/>
+ <reference target="format1" name="content"/>
+ </component>
+ <component x="10" y="140" name="animation1" title="animation" color="green1">
+ <implementation.python script="nuvem/animation.py"/>
+ <service name="animation" visible="false">
+ <binding.http uri="animation"/>
+ </service>
+ <reference target="number6" name="n"/>
+ <reference target="true1" name="loop"/>
+ <reference target="foreach1" name="content"/>
+ </component>
+ <component x="450" y="160" name="call1" title="call" color="green1">
+ <implementation.python script="nuvem/call.py"/>
+ <service name="call"/>
+ <reference target="name2" name="name"/>
+ <reference name="proxy" wiredByImpl="true" visible="false"/>
+ </component>
+ <component x="440" y="200" name="call2" title="call" color="green1">
+ <implementation.python script="nuvem/call.py"/>
+ <service name="call"/>
+ <reference target="name3" name="name"/>
+ <reference name="proxy" wiredByImpl="true" visible="false"/>
+ </component>
+ <component x="520" y="250" name="call3" title="call" color="green1">
+ <implementation.python script="nuvem/call.py"/>
+ <service name="call"/>
+ <reference target="name4" name="name"/>
+ <reference name="proxy" wiredByImpl="true" visible="false"/>
+ </component>
+ <component x="660" y="170" name="divide1" title="/" color="magenta1">
+ <implementation.python script="nuvem/divide.py"/>
+ <service name="divide">
+ <documentation>/</documentation>
+ </service>
+ <reference target="valueof3" name="value1"/>
+ <reference target="number3" name="value2"/>
+ </component>
+ <component x="80" y="130" name="foreach1" title="foreach" color="yellow1">
+ <implementation.python script="nuvem/map_.py"/>
+ <service name="foreach"/>
+ <reference target="name1" name="item"/>
+ <reference target="list1" name="transform"/>
+ <reference target="range1" name="list"/>
+ </component>
+ <component x="780" y="380" name="format1" title="format" color="magenta1">
+ <implementation.python script="nuvem/format_.py"/>
+ <service name="format"/>
+ <reference target="text1" name="pattern"/>
+ <reference target="list3" name="values"/>
+ </component>
+ <component x="390" y="90" name="htattrs1" title="html attrs:" color="magenta1">
+ <implementation.python script="nuvem/htattrs.py"/>
+ <service name="htattrs"/>
+ <reference target="htstyle1" name="value"/>
+ </component>
+ <component x="110" y="0" name="htattrs2" title="html attrs:" color="magenta1">
+ <implementation.python script="nuvem/htattrs.py"/>
+ <service name="htattrs"/>
+ <reference target="list5" name="value"/>
+ </component>
+ <component x="300" y="150" name="htstyle1" title="html style" color="magenta1">
+ <implementation.python script="nuvem/htstyle.py"/>
+ <service name="htstyle"/>
+ <reference target="list2" name="value"/>
</component>
<component name="item" title="{propval} :" color="orange1">
<implementation.python script="nuvem/item.py"/>
<service name="item"/>
- <reference target="number" name="value"/>
- <property>slice</property>
+ <reference target="htattrs2" name="value"/>
+ <property>sprite</property>
+ </component>
+ <component x="400" y="160" name="item1" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="call1" name="value"/>
+ <property>left</property>
+ </component>
+ <component x="400" y="190" name="item2" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="call2" name="value"/>
+ <property>top</property>
+ </component>
+ <component x="220" y="0" name="item3" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="text3" name="value"/>
+ <property>src</property>
+ </component>
+ <component x="180" y="160" name="item4" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="htattrs1" name="value"/>
+ <property>sprite</property>
+ </component>
+ <component x="410" y="490" name="item5" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="text4" name="value"/>
+ <property>position</property>
+ </component>
+ <component x="400" y="250" name="item6" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="call3" name="value"/>
+ <property>-webkit-transform</property>
+ </component>
+ <component x="220" y="40" name="item7" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="text2" name="value"/>
+ <property>onclick</property>
+ </component>
+ <component name="list1" title="list" color="yellow1">
+ <implementation.python script="nuvem/list_.py"/>
+ <service name="list"/>
+ <reference target="item4" name="item" clonable="true"/>
+ <reference name="item" clonable="true"/>
+ </component>
+ <component name="list2" title="list" color="yellow1">
+ <implementation.python script="nuvem/list_.py"/>
+ <service name="list"/>
+ <reference target="item5" name="item" clonable="true"/>
+ <reference target="item1" name="item" clonable="true"/>
+ <reference target="item2" name="item" clonable="true"/>
+ <reference target="item6" name="item" clonable="true"/>
+ <reference name="item" clonable="true"/>
+ </component>
+ <component name="list3" title="list" color="yellow1">
+ <implementation.python script="nuvem/list_.py"/>
+ <service name="list"/>
+ <reference target="multiply4" name="item" clonable="true"/>
+ <reference name="item" clonable="true"/>
+ </component>
+ <component name="list5" title="list" color="yellow1">
+ <implementation.python script="nuvem/list_.py"/>
+ <service name="list"/>
+ <reference target="item3" name="item" clonable="true"/>
+ <reference target="item7" name="item" clonable="true"/>
+ <reference name="item" clonable="true"/>
+ </component>
+ <component x="540" y="140" name="multiply1" title="*" color="magenta1">
+ <implementation.python script="nuvem/multiply.py"/>
+ <service name="multiply">
+ <documentation>*</documentation>
+ </service>
+ <reference target="number4" name="value1"/>
+ <reference target="sin1" name="value2"/>
+ </component>
+ <component x="550" y="150" name="multiply2" title="*" color="magenta1">
+ <implementation.python script="nuvem/multiply.py"/>
+ <service name="multiply">
+ <documentation>*</documentation>
+ </service>
+ <reference target="pi1" name="value1"/>
+ <reference target="divide1" name="value2"/>
+ </component>
+ <component x="500" y="130" name="multiply3" title="*" color="magenta1">
+ <implementation.python script="nuvem/multiply.py"/>
+ <service name="multiply">
+ <documentation>*</documentation>
+ </service>
+ <reference target="number8" name="value1"/>
+ <reference target="valueof2" name="value2"/>
+ </component>
+ <component x="870" y="410" name="multiply4" title="*" color="magenta1">
+ <implementation.python script="nuvem/multiply.py"/>
+ <service name="multiply">
+ <documentation>*</documentation>
+ </service>
+ <reference target="number9" name="value1"/>
+ <reference target="valueof1" name="value2"/>
+ </component>
+ <component x="270" y="120" name="name1" title="" color="orange1">
+ <implementation.python script="nuvem/name.py"/>
+ <service name="name"/>
+ <property>t</property>
+ </component>
+ <component x="480" y="160" name="name2" title="" color="orange1">
+ <implementation.python script="nuvem/name.py"/>
+ <service name="name"/>
+ <property>xpos</property>
</component>
- <component x="17" y="9" name="start" title="start" color="green1">
+ <component x="490" y="200" name="name3" title="" color="orange1">
+ <implementation.python script="nuvem/name.py"/>
+ <service name="name"/>
+ <property>ypos</property>
+ </component>
+ <component x="560" y="250" name="name4" title="" color="orange1">
+ <implementation.python script="nuvem/name.py"/>
+ <service name="name"/>
+ <property>angle</property>
+ </component>
+ <component x="210" y="110" name="number1" title="#" color="orange1">
+ <implementation.python script="nuvem/number.py"/>
+ <service name="number"/>
+ <property>0</property>
+ </component>
+ <component x="200" y="140" name="number2" title="#" color="orange1">
+ <implementation.python script="nuvem/number.py"/>
+ <service name="number"/>
+ <property>101</property>
+ </component>
+ <component x="730" y="200" name="number3" title="#" color="orange1">
+ <implementation.python script="nuvem/number.py"/>
+ <service name="number"/>
+ <property>25</property>
+ </component>
+ <component x="510" y="140" name="number4" title="#" color="orange1">
+ <implementation.python script="nuvem/number.py"/>
+ <service name="number"/>
+ <property>200</property>
+ </component>
+ <component x="530" y="120" name="number5" title="#" color="orange1">
+ <implementation.python script="nuvem/number.py"/>
+ <service name="number"/>
+ <property>0</property>
+ </component>
+ <component x="80" y="70" name="number6" title="#" color="orange1">
+ <implementation.python script="nuvem/number.py"/>
+ <service name="number"/>
+ <property>30</property>
+ </component>
+ <component x="760" y="230" name="number7" title="#" color="orange1">
+ <implementation.python script="nuvem/number.py"/>
+ <service name="number"/>
+ <property>200</property>
+ </component>
+ <component x="730" y="130" name="number8" title="#" color="orange1">
+ <implementation.python script="nuvem/number.py"/>
+ <service name="number"/>
+ <property>4</property>
+ </component>
+ <component x="890" y="410" name="number9" title="#" color="orange1">
+ <implementation.python script="nuvem/number.py"/>
+ <service name="number"/>
+ <property>20</property>
+ </component>
+ <component x="580" y="150" name="pi1" title="pi" color="magenta1">
+ <implementation.python script="nuvem/pi_.py"/>
+ <service name="pi"/>
+ </component>
+ <component x="640" y="40" name="pixels1" title="pixels" color="magenta1">
+ <implementation.python script="nuvem/pixels.py"/>
+ <service name="pixels"/>
+ <reference target="multiply3" name="value"/>
+ </component>
+ <component x="650" y="110" name="pixels2" title="pixels" color="magenta1">
+ <implementation.python script="nuvem/pixels.py"/>
+ <service name="pixels"/>
+ <reference target="subtract1" name="value"/>
+ </component>
+ <component x="270" y="160" name="range1" title="range" color="yellow1">
+ <implementation.python script="nuvem/range_.py"/>
+ <service name="range"/>
+ <reference target="number1" name="first"/>
+ <reference target="number2" name="last"/>
+ </component>
+ <component x="760" y="260" name="round1" title="round" color="magenta1">
+ <implementation.python script="nuvem/round_.py"/>
+ <service name="round"/>
+ <reference target="number5" name="n"/>
+ <reference target="multiply1" name="x"/>
+ </component>
+ <component x="630" y="190" name="sin1" title="sin" color="magenta1">
+ <implementation.python script="nuvem/sin_.py"/>
+ <service name="sin"/>
+ <reference target="multiply2" name="x"/>
+ </component>
+ <component x="10" y="0" name="start" title="start" color="green1">
<implementation.python script="nuvem/start.py"/>
<service name="start" visible="false">
<binding.http uri="start"/>
</service>
<reference target="item" name="content"/>
</component>
+ <component x="510" y="210" name="subtract1" title="-" color="magenta1">
+ <implementation.python script="nuvem/subtract.py"/>
+ <service name="subtract">
+ <documentation>-</documentation>
+ </service>
+ <reference target="number7" name="value1"/>
+ <reference target="round1" name="value2"/>
+ </component>
+ <component x="830" y="380" name="text1" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>rotate({0:g}deg)</property>
+ </component>
+ <component x="410" y="330" name="text2" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>alert('Got it!')</property>
+ </component>
+ <component x="260" y="0" name="text3" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>http://www.apache.org/images/feather-small.gif</property>
+ </component>
+ <component x="480" y="490" name="text4" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>absolute</property>
+ </component>
+ <component x="80" y="100" name="true1" title="true" color="orange1">
+ <implementation.python script="nuvem/true_.py"/>
+ <service name="true"/>
+ </component>
+ <component x="900" y="440" name="valueof1" title="valueof" color="orange1">
+ <implementation.python script="nuvem/valueof.py"/>
+ <service name="valueof"/>
+ <property>t</property>
+ </component>
+ <component x="730" y="150" name="valueof2" title="valueof" color="orange1">
+ <implementation.python script="nuvem/valueof.py"/>
+ <service name="valueof"/>
+ <property>t</property>
+ </component>
+ <component x="730" y="170" name="valueof3" title="valueof" color="orange1">
+ <implementation.python script="nuvem/valueof.py"/>
+ <service name="valueof"/>
+ <property>t</property>
+ </component>
+ <component x="670" y="20" name="xpos" title="{compname}" color="green1">
+ <implementation.python script="nuvem/service.py"/>
+ <service name="service" visible="false"/>
+ <reference target="pixels1" name="content"/>
+ </component>
+ <component x="670" y="120" name="ypos" title="{compname}" color="green1">
+ <implementation.python script="nuvem/service.py"/>
+ <service name="service" visible="false"/>
+ <reference target="pixels2" name="content"/>
+ </component>
</composite>
diff --git a/sca-cpp/trunk/modules/edit/apps/slice/htdocs/app.html b/sca-cpp/trunk/modules/edit/apps/slice/htdocs/app.html
new file mode 100644
index 0000000000..5bd091cd20
--- /dev/null
+++ b/sca-cpp/trunk/modules/edit/apps/slice/htdocs/app.html
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<DIV id="page">
+ <SPAN id="sprite" class="img" style="position: absolute; top: 0px; left: 2px; ">
+ <IMG src="/public/img.png"/>
+ </SPAN>
+</DIV>
diff --git a/sca-cpp/trunk/modules/edit/apps/testanimation/app.composite b/sca-cpp/trunk/modules/edit/apps/testanimation/app.composite
new file mode 100644
index 0000000000..37ff200ff3
--- /dev/null
+++ b/sca-cpp/trunk/modules/edit/apps/testanimation/app.composite
@@ -0,0 +1,187 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" name="app" targetNamespace="http://app">
+ <service name="animation1" promote="animation1"/>
+ <service name="start1" promote="start1"/>
+ <component x="30" y="90" name="animation1" title="animation" color="green1">
+ <implementation.python script="nuvem/animation.py"/>
+ <service name="animation" visible="false">
+ <binding.http uri="animation"/>
+ </service>
+ <reference target="number4" name="n"/>
+ <reference target="number6" name="loop"/>
+ <reference target="foreach1" name="content"/>
+ </component>
+ <component x="100" y="150" name="foreach1" title="foreach" color="yellow1">
+ <implementation.python script="nuvem/map_.py"/>
+ <service name="foreach"/>
+ <reference target="name1" name="item"/>
+ <reference target="list3" name="transform"/>
+ <reference target="range1" name="list"/>
+ </component>
+ <component name="format2" x="560" y="290" title="format" color="magenta1">
+ <implementation.python script="nuvem/format_.py"/>
+ <service name="format"/>
+ <reference target="text3" name="pattern"/>
+ <reference target="list1" name="values"/>
+ </component>
+ <component x="400" y="190" name="htattrs1" title="html attrs:" color="magenta1">
+ <implementation.python script="nuvem/htattrs.py"/>
+ <service name="htattrs"/>
+ <reference target="htstyle1" name="value"/>
+ </component>
+ <component x="340" y="150" name="htstyle1" title="html style" color="magenta1">
+ <implementation.python script="nuvem/htstyle.py"/>
+ <service name="htstyle"/>
+ <reference target="list2" name="value"/>
+ </component>
+ <component x="240" y="280" name="item1" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="htattrs1" name="value"/>
+ <property>testdynimg</property>
+ </component>
+ <component x="80" y="10" name="item2" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="text1" name="value"/>
+ <property>testdynimg</property>
+ </component>
+ <component x="450" y="290" name="item3" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference name="value" target="format2"/>
+ <property>-webkit-transform</property>
+ </component>
+ <component x="510" y="290" name="item4" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="pixels1" name="value"/>
+ <property>width</property>
+ </component>
+ <component name="list1" title="list" color="yellow1">
+ <implementation.python script="nuvem/list_.py"/>
+ <service name="list"/>
+ <reference target="multiply2" name="item" clonable="true"/>
+ <reference name="item" clonable="true"/>
+ </component>
+ <component name="list2" title="list" color="yellow1">
+ <implementation.python script="nuvem/list_.py"/>
+ <service name="list"/>
+ <reference target="item4" name="item" clonable="true"/>
+ <reference target="item3" name="item" clonable="true"/>
+ <reference name="item" clonable="true"/>
+ </component>
+ <component name="list3" title="list" color="yellow1">
+ <implementation.python script="nuvem/list_.py"/>
+ <service name="list"/>
+ <reference target="item1" name="item" clonable="true"/>
+ <reference name="item" clonable="true"/>
+ </component>
+ <component x="560" y="150" name="multiply1" title="*" color="magenta1">
+ <implementation.python script="nuvem/multiply.py"/>
+ <service name="multiply">
+ <documentation>*</documentation>
+ </service>
+ <reference target="valueof1" name="value1"/>
+ <reference target="number3" name="value2"/>
+ </component>
+ <component x="660" y="320" name="multiply2" title="*" color="magenta1">
+ <implementation.python script="nuvem/multiply.py"/>
+ <service name="multiply">
+ <documentation>*</documentation>
+ </service>
+ <reference target="valueof2" name="value1"/>
+ <reference target="number5" name="value2"/>
+ </component>
+ <component x="150" y="110" name="name1" title="" color="orange1">
+ <implementation.python script="nuvem/name.py"/>
+ <service name="name"/>
+ <property>t</property>
+ </component>
+ <component x="140" y="110" name="number1" title="#" color="orange1">
+ <implementation.python script="nuvem/number.py"/>
+ <service name="number"/>
+ <property>0</property>
+ </component>
+ <component x="150" y="140" name="number2" title="#" color="orange1">
+ <implementation.python script="nuvem/number.py"/>
+ <service name="number"/>
+ <property>121</property>
+ </component>
+ <component x="690" y="290" name="number3" title="#" color="orange1">
+ <implementation.python script="nuvem/number.py"/>
+ <service name="number"/>
+ <property>3</property>
+ </component>
+ <component x="100" y="90" name="number4" title="#" color="orange1">
+ <implementation.python script="nuvem/number.py"/>
+ <service name="number"/>
+ <property>20</property>
+ </component>
+ <component x="680" y="340" name="number5" title="#" color="orange1">
+ <implementation.python script="nuvem/number.py"/>
+ <service name="number"/>
+ <property>6</property>
+ </component>
+ <component x="110" y="120" name="number6" title="#" color="orange1">
+ <implementation.python script="nuvem/number.py"/>
+ <service name="number"/>
+ <property>5</property>
+ </component>
+ <component x="510" y="160" name="pixels1" title="pixels" color="magenta1">
+ <implementation.python script="nuvem/pixels.py"/>
+ <service name="pixels"/>
+ <reference target="multiply1" name="value"/>
+ </component>
+ <component x="150" y="400" name="range1" title="range" color="yellow1">
+ <implementation.python script="nuvem/range_.py"/>
+ <service name="range"/>
+ <reference target="number1" name="first"/>
+ <reference target="number2" name="last"/>
+ </component>
+ <component x="30" y="20" name="start1" title="start" color="green1">
+ <implementation.python script="nuvem/start.py"/>
+ <service name="start" visible="false">
+ <binding.http uri="start"/>
+ </service>
+ <reference target="item2" name="content"/>
+ </component>
+ <component x="150" y="10" name="text1" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>http://tuscany.apache.org/images/TuscanyLogo.jpg</property>
+ </component>
+ <component x="620" y="290" name="text3" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>rotate({0:g}deg)</property>
+ </component>
+ <component x="680" y="260" name="valueof1" title="valueof" color="orange1">
+ <implementation.python script="nuvem/valueof.py"/>
+ <service name="valueof"/>
+ <property>t</property>
+ </component>
+ <component x="680" y="310" name="valueof2" title="valueof" color="orange1">
+ <implementation.python script="nuvem/valueof.py"/>
+ <service name="valueof"/>
+ <property>t</property>
+ </component>
+</composite>
diff --git a/sca-cpp/trunk/modules/edit/apps/testanimation/app.stats b/sca-cpp/trunk/modules/edit/apps/testanimation/app.stats
new file mode 100644
index 0000000000..493ef39d1a
--- /dev/null
+++ b/sca-cpp/trunk/modules/edit/apps/testanimation/app.stats
@@ -0,0 +1 @@
+((entry (title "Test animation components") (id "testanimation"))) \ No newline at end of file
diff --git a/sca-cpp/trunk/modules/edit/apps/testanimation/htdocs/app.html b/sca-cpp/trunk/modules/edit/apps/testanimation/htdocs/app.html
new file mode 100644
index 0000000000..c9f9420eb0
--- /dev/null
+++ b/sca-cpp/trunk/modules/edit/apps/testanimation/htdocs/app.html
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<DIV id="page">
+ <SPAN id="page:h2" class="h2" style="position: absolute; top: 0px; left: 2px; ">
+ <H2>Test animation component</H2>
+ </SPAN>
+ <SPAN id="testdynimg" class="img" style="position: absolute; top: 36px; left: 11px; ">
+ <IMG src="/public/img.png"/>
+ </SPAN>
+</DIV>
diff --git a/sca-cpp/trunk/modules/edit/apps/testhttp/app.composite b/sca-cpp/trunk/modules/edit/apps/testhttp/app.composite
index 93016ae915..0e4a96466b 100644
--- a/sca-cpp/trunk/modules/edit/apps/testhttp/app.composite
+++ b/sca-cpp/trunk/modules/edit/apps/testhttp/app.composite
@@ -1,4 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" name="app" targetNamespace="http://app">
<service name="call" promote="call"/>
<service name="get" promote="get"/>
diff --git a/sca-cpp/trunk/modules/edit/apps/testsms/app.composite b/sca-cpp/trunk/modules/edit/apps/testsms/app.composite
new file mode 100644
index 0000000000..a5d82a2891
--- /dev/null
+++ b/sca-cpp/trunk/modules/edit/apps/testsms/app.composite
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" name="app" targetNamespace="http://app">
+ <service name="item" promote="property"/>
+ <service name="twsms1" promote="twsms1"/>
+ <component x="180" y="30" name="keychain1" title="keychain" color="green1">
+ <implementation.python script="nuvem/keychain.py"/>
+ <service name="keychain"/>
+ <reference target="name1" name="name"/>
+ <reference name="account" target="Accounts" visible="false"/>
+ </component>
+ <component x="190" y="70" name="keychain3" title="keychain" color="green1">
+ <implementation.python script="nuvem/keychain.py"/>
+ <service name="keychain"/>
+ <reference target="name3" name="name"/>
+ <reference name="account" target="Accounts" visible="false"/>
+ </component>
+ <component x="190" y="100" name="keychain4" title="keychain" color="green1">
+ <implementation.python script="nuvem/keychain.py"/>
+ <service name="keychain"/>
+ <reference target="name5" name="name"/>
+ <reference name="account" target="Accounts" visible="false"/>
+ </component>
+ <component x="180" y="140" name="keychain5" title="keychain" color="green1">
+ <implementation.python script="nuvem/keychain.py"/>
+ <service name="keychain"/>
+ <reference target="name4" name="name"/>
+ <reference name="account" target="Accounts" visible="false"/>
+ </component>
+ <component name="list2" title="list" color="yellow1">
+ <implementation.python script="nuvem/list_.py"/>
+ <service name="list"/>
+ <reference target="text14" name="item" clonable="true"/>
+ <reference name="item" clonable="true"/>
+ </component>
+ <component x="630" y="350" name="name1" title="" color="orange1">
+ <implementation.python script="nuvem/name.py"/>
+ <service name="name"/>
+ <property>twiliosid</property>
+ </component>
+ <component x="780" y="320" name="name3" title="" color="orange1">
+ <implementation.python script="nuvem/name.py"/>
+ <service name="name"/>
+ <property>twiliotoken</property>
+ </component>
+ <component x="250" y="140" name="name4" title="" color="orange1">
+ <implementation.python script="nuvem/name.py"/>
+ <service name="name"/>
+ <property>tophone</property>
+ </component>
+ <component x="520" y="270" name="name5" title="" color="orange1">
+ <implementation.python script="nuvem/name.py"/>
+ <service name="name"/>
+ <property>fromphone</property>
+ </component>
+ <component x="180" y="170" name="text1" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>Hello Again!</property>
+ </component>
+ <component x="550" y="450" name="text12" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>From={0}&amp;To={1}&amp;Body={2}</property>
+ </component>
+ <component x="250" y="340" name="text14" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>Hello there</property>
+ </component>
+ <component x="140" y="30" name="twsms1" title="sms" color="blue1">
+ <implementation.python script="nuvem/twsms.py"/>
+ <service name="twsms"/>
+ <reference target="keychain1" name="sid"/>
+ <reference target="keychain3" name="token"/>
+ <reference target="keychain4" name="from"/>
+ <reference target="keychain5" name="to"/>
+ <reference target="text1" name="msg"/>
+ <reference name="s" wiredByImpl="true" visible="false"/>
+ </component>
+</composite>
diff --git a/sca-cpp/trunk/modules/edit/apps/testsms/app.stats b/sca-cpp/trunk/modules/edit/apps/testsms/app.stats
new file mode 100644
index 0000000000..be1fc6d254
--- /dev/null
+++ b/sca-cpp/trunk/modules/edit/apps/testsms/app.stats
@@ -0,0 +1 @@
+((entry (title "Test HTTP components") (id "testhttp"))) \ No newline at end of file
diff --git a/sca-cpp/trunk/modules/edit/apps/testsms/htdocs/app.html b/sca-cpp/trunk/modules/edit/apps/testsms/htdocs/app.html
new file mode 100644
index 0000000000..dd8f5f9f26
--- /dev/null
+++ b/sca-cpp/trunk/modules/edit/apps/testsms/htdocs/app.html
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<DIV id="page">
+ <SPAN id="page:h1" class="h1" style="position: absolute; top: 0px; left: 2px; ">
+ <H1>Test SMS API</H1>
+ </SPAN>
+</DIV>
diff --git a/sca-cpp/trunk/modules/edit/apps/testwidgets/app.composite b/sca-cpp/trunk/modules/edit/apps/testwidgets/app.composite
index 690f1761e3..32db9dd428 100644
--- a/sca-cpp/trunk/modules/edit/apps/testwidgets/app.composite
+++ b/sca-cpp/trunk/modules/edit/apps/testwidgets/app.composite
@@ -19,19 +19,10 @@
-->
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" name="app" targetNamespace="http://app">
<service name="start" promote="start"/>
- <component name="list" title="list" color="yellow1">
- <implementation.python script="nuvem/list_.py"/>
- <service name="list"/>
- <reference target="item10" name="item" clonable="true"/>
- <reference target="item9" name="item" clonable="true"/>
- <reference target="item8" name="item" clonable="true"/>
- <reference target="item7" name="item" clonable="true"/>
- <reference target="item6" name="item" clonable="true"/>
- <reference target="item5" name="item" clonable="true"/>
- <reference target="item4" name="item" clonable="true"/>
- <reference target="item3" name="item" clonable="true"/>
- <reference target="item2" name="item" clonable="true"/>
- <reference name="item" clonable="true"/>
+ <component x="170" y="330" name="htattrs1" title="html attrs:" color="magenta1">
+ <implementation.python script="nuvem/htattrs.py"/>
+ <service name="htattrs"/>
+ <reference target="list2" name="value"/>
</component>
<component name="item" title="{propval} :" color="orange1">
<implementation.python script="nuvem/item.py"/>
@@ -39,12 +30,30 @@
<reference target="text9" name="value"/>
<property>testpath2</property>
</component>
+ <component x="100" y="340" name="item1" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="htattrs1" name="value"/>
+ <property>testattrs</property>
+ </component>
<component name="item10" title="{propval} :" color="orange1">
<implementation.python script="nuvem/item.py"/>
<service name="item"/>
<reference target="text" name="value"/>
<property>testh1</property>
</component>
+ <component x="270" y="370" name="item11" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="text10" name="value"/>
+ <property>onclick</property>
+ </component>
+ <component x="280" y="330" name="item12" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="text1" name="value"/>
+ <property>value</property>
+ </component>
<component name="item2" title="{propval} :" color="orange1">
<implementation.python script="nuvem/item.py"/>
<service name="item"/>
@@ -93,6 +102,28 @@
<reference target="text7" name="value"/>
<property>testsection</property>
</component>
+ <component name="list" title="list" color="yellow1">
+ <implementation.python script="nuvem/list_.py"/>
+ <service name="list"/>
+ <reference target="item10" name="item" clonable="true"/>
+ <reference target="item9" name="item" clonable="true"/>
+ <reference target="item8" name="item" clonable="true"/>
+ <reference target="item7" name="item" clonable="true"/>
+ <reference target="item6" name="item" clonable="true"/>
+ <reference target="item5" name="item" clonable="true"/>
+ <reference target="item4" name="item" clonable="true"/>
+ <reference target="item3" name="item" clonable="true"/>
+ <reference target="item2" name="item" clonable="true"/>
+ <reference target="item1" name="item" clonable="true"/>
+ <reference name="item" clonable="true"/>
+ </component>
+ <component name="list2" title="list" color="yellow1">
+ <implementation.python script="nuvem/list_.py"/>
+ <service name="list"/>
+ <reference target="item12" name="item" clonable="true"/>
+ <reference target="item11" name="item" clonable="true"/>
+ <reference name="item" clonable="true"/>
+ </component>
<component x="17" y="3" name="start" title="start" color="green1">
<implementation.python script="nuvem/start.py"/>
<service name="start" visible="false">
@@ -105,6 +136,16 @@
<service name="text"/>
<property>test header 1</property>
</component>
+ <component x="320" y="340" name="text1" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>test html attrs</property>
+ </component>
+ <component x="370" y="370" name="text10" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>alert('hey')</property>
+ </component>
<component name="text2" title=" '{propval}'" color="orange1">
<implementation.python script="nuvem/text.py"/>
<service name="text"/>
diff --git a/sca-cpp/trunk/modules/edit/apps/testwidgets/htdocs/app.html b/sca-cpp/trunk/modules/edit/apps/testwidgets/htdocs/app.html
index 0b5022513d..d1422c10ac 100644
--- a/sca-cpp/trunk/modules/edit/apps/testwidgets/htdocs/app.html
+++ b/sca-cpp/trunk/modules/edit/apps/testwidgets/htdocs/app.html
@@ -37,20 +37,13 @@
<INPUT type="checkbox" value="=testcheckbox"/>
<SPAN>=testcheckbox</SPAN>
</SPAN>
- <SPAN id="testlink2" class="link" style="position: absolute; top: 189px; left: 263px; ">
- <A href="=testlink2">
- <SPAN>=testlink2</SPAN>
- </A>
- </SPAN>
<SPAN id="testlink" class="link" style="position: absolute; top: 216px; left: 11px; ">
<A href="=testlink">
<SPAN>=testlink</SPAN>
</A>
</SPAN>
- <SPAN id="testlink3" class="link" style="position: absolute; top: 225px; left: 263px; ">
- <A href="=testlink3">
- <SPAN>=testlink3</SPAN>
- </A>
+ <SPAN id="testattrs" class="text" style="position: absolute; top: 216px; left: 272px; ">
+ <SPAN>=testattrs</SPAN>
</SPAN>
<SPAN id="testtext" class="text" style="position: absolute; top: 243px; left: 11px; ">
<SPAN>=testtext</SPAN>
diff --git a/sca-cpp/trunk/modules/edit/apps/testwidgets2/app.composite b/sca-cpp/trunk/modules/edit/apps/testwidgets2/app.composite
index 84d87bf184..45a4bdb153 100644
--- a/sca-cpp/trunk/modules/edit/apps/testwidgets2/app.composite
+++ b/sca-cpp/trunk/modules/edit/apps/testwidgets2/app.composite
@@ -19,46 +19,18 @@
-->
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" name="app" targetNamespace="http://app">
<service name="start" promote="start"/>
- <component name="list" title="list" color="yellow1">
- <implementation.python script="nuvem/list_.py"/>
- <service name="list"/>
- <reference target="item4" name="item" clonable="true"/>
- <reference target="item5" name="item" clonable="true"/>
- <reference target="item3" name="item" clonable="true"/>
- <reference target="item2" name="item" clonable="true"/>
- <reference target="item" name="item" clonable="true"/>
- <reference name="item" clonable="true"/>
- </component>
- <component name="list3" title="list" color="yellow1">
- <implementation.python script="nuvem/list_.py"/>
- <service name="list"/>
- <reference target="text3" name="item" clonable="true"/>
- <reference target="text4" name="item" clonable="true"/>
- <reference name="item" clonable="true"/>
- </component>
- <component name="list4" title="list" color="yellow1">
- <implementation.python script="nuvem/list_.py"/>
- <service name="list"/>
- <reference target="item6" name="item" clonable="true"/>
- <reference target="item7" name="item" clonable="true"/>
- <reference name="item" clonable="true"/>
- </component>
- <component name="number3" title="#" color="orange1">
- <implementation.python script="nuvem/number.py"/>
- <service name="number"/>
- <property>1</property>
- </component>
- <component name="number4" title="#" color="orange1">
- <implementation.python script="nuvem/number.py"/>
- <service name="number"/>
- <property>2</property>
- </component>
- <component name="item" title="{propval} :" color="orange1">
+ <component x="100" y="310" name="item" title="{propval} :" color="orange1">
<implementation.python script="nuvem/item.py"/>
<service name="item"/>
<reference target="text5" name="value"/>
<property>testframe</property>
</component>
+ <component x="100" y="290" name="item1" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="text1" name="value"/>
+ <property>testselect</property>
+ </component>
<component name="item2" title="{propval} :" color="orange1">
<implementation.python script="nuvem/item.py"/>
<service name="item"/>
@@ -95,6 +67,41 @@
<reference target="number4" name="value"/>
<property>b</property>
</component>
+ <component name="list" title="list" color="yellow1">
+ <implementation.python script="nuvem/list_.py"/>
+ <service name="list"/>
+ <reference target="item4" name="item" clonable="true"/>
+ <reference target="item5" name="item" clonable="true"/>
+ <reference target="item3" name="item" clonable="true"/>
+ <reference target="item2" name="item" clonable="true"/>
+ <reference target="item1" name="item" clonable="true"/>
+ <reference target="item" name="item" clonable="true"/>
+ <reference name="item" clonable="true"/>
+ </component>
+ <component name="list3" title="list" color="yellow1">
+ <implementation.python script="nuvem/list_.py"/>
+ <service name="list"/>
+ <reference target="text3" name="item" clonable="true"/>
+ <reference target="text4" name="item" clonable="true"/>
+ <reference name="item" clonable="true"/>
+ </component>
+ <component name="list4" title="list" color="yellow1">
+ <implementation.python script="nuvem/list_.py"/>
+ <service name="list"/>
+ <reference target="item6" name="item" clonable="true"/>
+ <reference target="item7" name="item" clonable="true"/>
+ <reference name="item" clonable="true"/>
+ </component>
+ <component name="number3" title="#" color="orange1">
+ <implementation.python script="nuvem/number.py"/>
+ <service name="number"/>
+ <property>1</property>
+ </component>
+ <component name="number4" title="#" color="orange1">
+ <implementation.python script="nuvem/number.py"/>
+ <service name="number"/>
+ <property>2</property>
+ </component>
<component x="13" y="8" name="start" title="start" color="green1">
<implementation.python script="nuvem/start.py"/>
<service name="start" visible="false">
@@ -107,6 +114,11 @@
<service name="text"/>
<property>test value</property>
</component>
+ <component x="170" y="280" name="text1" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>test select</property>
+ </component>
<component name="text2" title=" '{propval}'" color="orange1">
<implementation.python script="nuvem/text.py"/>
<service name="text"/>
@@ -127,4 +139,9 @@
<service name="text"/>
<property>http://www.cnn.com</property>
</component>
+ <component x="760" y="170" name="text9" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>dynamic checkbox</property>
+ </component>
</composite>
diff --git a/sca-cpp/trunk/modules/edit/apps/testwidgets2/htdocs/app.html b/sca-cpp/trunk/modules/edit/apps/testwidgets2/htdocs/app.html
index a42c96bdff..7efb62d247 100644
--- a/sca-cpp/trunk/modules/edit/apps/testwidgets2/htdocs/app.html
+++ b/sca-cpp/trunk/modules/edit/apps/testwidgets2/htdocs/app.html
@@ -21,8 +21,8 @@
<SPAN id="page:h2" class="h2" style="position: absolute; top: 0px; left: 2px; ">
<H2>Test widget components</H2>
</SPAN>
- <SPAN id="testlist1" class="table" style="position: absolute; top: 63px; width: 100%; left: 20px; ">
- <TABLE class="datatable" style="width: 100%;">
+ <SPAN id="testlist1" class="table" style="position: absolute; top: 36px; width: 100%; left: 20px; ">
+ <TABLE class="datatable" style="width: 100%; ">
<TBODY>
<TR>
<TD>=testlist1</TD>
@@ -35,8 +35,8 @@
</TBODY>
</TABLE>
</SPAN>
- <SPAN id="testlist2" class="table" style="position: absolute; top: 117px; width: 100%; left: 20px; ">
- <TABLE class="datatable" style="width: 100%;">
+ <SPAN id="testlist2" class="table" style="position: absolute; top: 90px; width: 100%; left: 20px; ">
+ <TABLE class="datatable" style="width: 100%; ">
<TBODY>
<TR>
<TD>=testlist2</TD>
@@ -49,8 +49,8 @@
</TBODY>
</TABLE>
</SPAN>
- <SPAN id="b" class="table" style="position: absolute; top: 180px; width: 100%; left: 20px; ">
- <TABLE class="datatable" style="width: 100%;">
+ <SPAN id="b" class="table" style="position: absolute; top: 171px; width: 100%; left: 20px; ">
+ <TABLE class="datatable" style="width: 100%; ">
<TBODY>
<TR>
<TD>=b</TD>
diff --git a/sca-cpp/trunk/modules/edit/apps/testwidgets3/app.composite b/sca-cpp/trunk/modules/edit/apps/testwidgets3/app.composite
new file mode 100644
index 0000000000..eb5bbc2439
--- /dev/null
+++ b/sca-cpp/trunk/modules/edit/apps/testwidgets3/app.composite
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" name="app" targetNamespace="http://app">
+ <service name="start" promote="start"/>
+ <component x="260" y="220" name="htattrs1" title="html attrs:" color="magenta1">
+ <implementation.python script="nuvem/htattrs.py"/>
+ <service name="htattrs"/>
+ <reference target="list1" name="value"/>
+ </component>
+ <component x="190" y="80" name="htbutton1" title="html button" color="magenta1">
+ <implementation.python script="nuvem/htbutton.py"/>
+ <service name="htbutton"/>
+ <reference target="text8" name="value"/>
+ </component>
+ <component x="210" y="180" name="htcheck1" title="html checkbox" color="magenta1">
+ <implementation.python script="nuvem/htcheck.py"/>
+ <service name="htcheck"/>
+ <reference target="text9" name="value"/>
+ </component>
+ <component x="180" y="10" name="htimg1" title="html img" color="magenta1">
+ <implementation.python script="nuvem/htimg.py"/>
+ <service name="htimg"/>
+ <reference target="text1" name="value"/>
+ </component>
+ <component x="190" y="230" name="htimg2" title="html img" color="magenta1">
+ <implementation.python script="nuvem/htimg.py"/>
+ <service name="htimg"/>
+ <reference target="htattrs1" name="value"/>
+ </component>
+ <component x="180" y="50" name="htlink1" title="html link" color="magenta1">
+ <implementation.python script="nuvem/htlink.py"/>
+ <service name="htlink"/>
+ <reference target="pair1" name="value"/>
+ </component>
+ <component x="400" y="330" name="htstyle1" title="html style" color="magenta1">
+ <implementation.python script="nuvem/htstyle.py"/>
+ <service name="htstyle"/>
+ <reference target="list2" name="value"/>
+ </component>
+ <component x="100" y="10" name="item1" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="htimg1" name="value"/>
+ <property>testdynimg</property>
+ </component>
+ <component x="100" y="170" name="item10" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="htcheck1" name="value"/>
+ <property>testdyncheckbox</property>
+ </component>
+ <component x="110" y="230" name="item2" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="htimg2" name="value"/>
+ <property>teststyledimg</property>
+ </component>
+ <component x="400" y="300" name="item3" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="text3" name="value"/>
+ <property>onclick</property>
+ </component>
+ <component x="510" y="290" name="item4" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="text4" name="value"/>
+ <property>width</property>
+ </component>
+ <component x="510" y="320" name="item5" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="text5" name="value"/>
+ <property>height</property>
+ </component>
+ <component x="400" y="220" name="item6" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="text10" name="value"/>
+ <property>id</property>
+ </component>
+ <component x="400" y="260" name="item7" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="text2" name="value"/>
+ <property>src</property>
+ </component>
+ <component x="90" y="50" name="item8" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="htlink1" name="value"/>
+ <property>testdynlink</property>
+ </component>
+ <component x="90" y="120" name="item9" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="htbutton1" name="value"/>
+ <property>testdynbutton</property>
+ </component>
+ <component name="list" title="list" color="yellow1">
+ <implementation.python script="nuvem/list_.py"/>
+ <service name="list"/>
+ <reference target="item1" name="item" clonable="true"/>
+ <reference target="item8" name="item" clonable="true"/>
+ <reference target="item9" name="item" clonable="true"/>
+ <reference target="item10" name="item" clonable="true"/>
+ <reference target="item2" name="item" clonable="true"/>
+ <reference name="item" clonable="true"/>
+ </component>
+ <component name="list1" title="list" color="yellow1">
+ <implementation.python script="nuvem/list_.py"/>
+ <service name="list"/>
+ <reference target="item6" name="item" clonable="true"/>
+ <reference target="item7" name="item" clonable="true"/>
+ <reference target="item3" name="item" clonable="true"/>
+ <reference target="htstyle1" name="item" clonable="true"/>
+ <reference name="item" clonable="true"/>
+ </component>
+ <component name="list2" title="list" color="yellow1">
+ <implementation.python script="nuvem/list_.py"/>
+ <service name="list"/>
+ <reference target="item4" name="item" clonable="true"/>
+ <reference target="item5" name="item" clonable="true"/>
+ <reference name="item" clonable="true"/>
+ </component>
+ <component x="240" y="50" name="pair1" title="pair" color="yellow1">
+ <implementation.python script="nuvem/pair.py"/>
+ <service name="pair"/>
+ <reference target="text6" name="name"/>
+ <reference target="text7" name="value"/>
+ </component>
+ <component x="20" y="10" name="start" title="start" color="green1">
+ <implementation.python script="nuvem/start.py"/>
+ <service name="start" visible="false">
+ <binding.http uri="start"/>
+ </service>
+ <reference target="list" name="content"/>
+ </component>
+ <component x="240" y="10" name="text1" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>http://tuscany.apache.org/images/TuscanyLogo.jpg</property>
+ </component>
+ <component x="430" y="220" name="text10" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>testimg</property>
+ </component>
+ <component x="440" y="260" name="text2" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>http://tuscany.apache.org/images/TuscanyLogo.jpg</property>
+ </component>
+ <component x="430" y="250" name="text3" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>alert('hey')</property>
+ </component>
+ <component x="560" y="280" name="text4" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>320px</property>
+ </component>
+ <component x="560" y="320" name="text5" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>60px</property>
+ </component>
+ <component x="280" y="50" name="text6" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>http://www.apache.org/</property>
+ </component>
+ <component x="280" y="80" name="text7" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>Apache</property>
+ </component>
+ <component x="270" y="80" name="text8" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>dynamic button</property>
+ </component>
+ <component x="300" y="180" name="text9" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>dynamic checkbox</property>
+ </component>
+</composite>
diff --git a/sca-cpp/trunk/modules/edit/apps/testwidgets3/app.stats b/sca-cpp/trunk/modules/edit/apps/testwidgets3/app.stats
new file mode 100644
index 0000000000..2e772401c9
--- /dev/null
+++ b/sca-cpp/trunk/modules/edit/apps/testwidgets3/app.stats
@@ -0,0 +1 @@
+((entry (title "Test HTML generator components") (id "testwidgets3"))) \ No newline at end of file
diff --git a/sca-cpp/trunk/modules/edit/apps/testwidgets3/htdocs/app.html b/sca-cpp/trunk/modules/edit/apps/testwidgets3/htdocs/app.html
new file mode 100644
index 0000000000..393d63c2d1
--- /dev/null
+++ b/sca-cpp/trunk/modules/edit/apps/testwidgets3/htdocs/app.html
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<DIV id="page">
+ <SPAN id="page:h2" class="h2" style="position: absolute; top: 0px; left: 2px; ">
+ <H2>Test widget components</H2>
+ </SPAN>
+ <SPAN id="testdynimg" class="text" style="position: absolute; top: 36px; left: 2px; ">
+ <SPAN>=testdynimg</SPAN>
+ </SPAN>
+ <SPAN id="testdynlink" class="text" style="position: absolute; top: 135px; left: 2px; ">
+ <SPAN>=testdynlink</SPAN>
+ </SPAN>
+ <SPAN id="testdynbutton" class="text" style="position: absolute; top: 171px; left: 2px; ">
+ <SPAN>=testdynbutton</SPAN>
+ </SPAN>
+ <SPAN id="testdyncheckbox" class="text" style="position: absolute; top: 207px; left: 2px; ">
+ <SPAN>=testdyncheckbox</SPAN>
+ </SPAN>
+ <SPAN id="teststyledimg" class="text" style="position: absolute; top: 243px; left: 2px; ">
+ <SPAN>=teststyledimg</SPAN>
+ </SPAN>
+</DIV>
diff --git a/sca-cpp/trunk/modules/edit/apps/twsms/app.composite b/sca-cpp/trunk/modules/edit/apps/twsms/app.composite
new file mode 100644
index 0000000000..45914449e7
--- /dev/null
+++ b/sca-cpp/trunk/modules/edit/apps/twsms/app.composite
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" name="app" targetNamespace="http://app">
+ <service name="item" promote="property"/>
+ <service name="send" promote="send"/>
+ <component x="750" y="320" name="format1" title="format" color="magenta1">
+ <implementation.python script="nuvem/format_.py"/>
+ <service name="format"/>
+ <reference target="text12" name="pattern"/>
+ <reference target="list2" name="values"/>
+ </component>
+ <component x="120" y="10" name="format2" title="format" color="magenta1">
+ <implementation.python script="nuvem/format_.py"/>
+ <service name="format"/>
+ <reference target="text1" name="pattern"/>
+ <reference target="list1" name="values"/>
+ </component>
+ <component x="530" y="90" name="format3" title="format" color="magenta1">
+ <implementation.python script="nuvem/format_.py"/>
+ <service name="format"/>
+ <reference target="text2" name="pattern"/>
+ <reference target="list5" name="values"/>
+ </component>
+ <component x="630" y="190" name="host1" title="host" color="green1">
+ <implementation.python script="nuvem/host.py"/>
+ <service name="host"/>
+ <property name="host" visible="false"/>
+ </component>
+ <component x="520" y="80" name="item1" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="format3" name="value"/>
+ <property>sampleurl1</property>
+ </component>
+ <component x="520" y="180" name="item2" title="{propval} :" color="orange1">
+ <implementation.python script="nuvem/item.py"/>
+ <service name="item"/>
+ <reference target="text3" name="value"/>
+ <property>sampleurl2</property>
+ </component>
+ <component name="list1" title="list" color="yellow1">
+ <implementation.python script="nuvem/list_.py"/>
+ <service name="list"/>
+ <reference target="param1" name="item" clonable="true"/>
+ <reference target="param3" name="item" clonable="true"/>
+ <reference target="param2" name="item" clonable="true"/>
+ <reference target="text10" name="item" clonable="true"/>
+ <reference name="item" clonable="true"/>
+ </component>
+ <component name="list2" title="list" color="yellow1">
+ <implementation.python script="nuvem/list_.py"/>
+ <service name="list"/>
+ <reference target="param4" name="item" clonable="true"/>
+ <reference target="param5" name="item" clonable="true"/>
+ <reference target="param6" name="item" clonable="true"/>
+ <reference name="item" clonable="true"/>
+ </component>
+ <component name="list3" title="list" color="yellow1">
+ <implementation.python script="nuvem/list_.py"/>
+ <service name="list"/>
+ <reference target="text15" name="item" clonable="true"/>
+ <reference target="list4" name="item" clonable="true"/>
+ <reference name="item" clonable="true"/>
+ </component>
+ <component name="list4" title="list" color="yellow1">
+ <implementation.python script="nuvem/list_.py"/>
+ <service name="list"/>
+ <reference target="format1" name="item" clonable="true"/>
+ <reference name="item" clonable="true"/>
+ </component>
+ <component name="list5" title="list" color="yellow1">
+ <implementation.python script="nuvem/list_.py"/>
+ <service name="list"/>
+ <reference target="host1" name="item" clonable="true"/>
+ <reference name="item" clonable="true"/>
+ </component>
+ <component x="160" y="60" name="param1" title="?param" color="green1">
+ <implementation.python script="nuvem/param.py"/>
+ <service name="param"/>
+ <property>sid</property>
+ <property name="query" visible="false"/>
+ </component>
+ <component x="530" y="100" name="param2" title="?param" color="green1">
+ <implementation.python script="nuvem/param.py"/>
+ <service name="param"/>
+ <property>sid</property>
+ <property name="query" visible="false"/>
+ </component>
+ <component x="530" y="70" name="param3" title="?param" color="green1">
+ <implementation.python script="nuvem/param.py"/>
+ <service name="param"/>
+ <property>token</property>
+ <property name="query" visible="false"/>
+ </component>
+ <component x="250" y="240" name="param4" title="?param" color="green1">
+ <implementation.python script="nuvem/param.py"/>
+ <service name="param"/>
+ <property>from</property>
+ <property name="query" visible="false"/>
+ </component>
+ <component x="260" y="270" name="param5" title="?param" color="green1">
+ <implementation.python script="nuvem/param.py"/>
+ <service name="param"/>
+ <property>to</property>
+ <property name="query" visible="false"/>
+ </component>
+ <component x="260" y="300" name="param6" title="?param" color="green1">
+ <implementation.python script="nuvem/param.py"/>
+ <service name="param"/>
+ <property>msg</property>
+ <property name="query" visible="false"/>
+ </component>
+ <component x="80" y="10" name="post1" title="post" color="green1">
+ <implementation.cpp path="lib/http" library="libhttppost"/>
+ <service name="post"/>
+ <reference target="format2" name="url"/>
+ <reference target="list3" name="content"/>
+ </component>
+ <component x="30" y="10" name="send" title="{compname}" color="green1">
+ <implementation.python script="nuvem/service.py"/>
+ <service name="service" visible="false"/>
+ <reference target="post1" name="content"/>
+ </component>
+ <component x="450" y="300" name="text1" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>https://{0}:{1}@api.twilio.com/2010-04-01/Accounts/{2}/SMS/Messages</property>
+ </component>
+ <component x="540" y="130" name="text10" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>SMS/Messages</property>
+ </component>
+ <component x="550" y="450" name="text12" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>From={0}&amp;To={1}&amp;Body={2}</property>
+ </component>
+ <component x="710" y="290" name="text15" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>application/x-www-form-urlencoded</property>
+ </component>
+ <component x="590" y="100" name="text2" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>http://{0}/c/send?sid=...&amp;</property>
+ </component>
+ <component x="600" y="180" name="text3" title=" '{propval}'" color="orange1">
+ <implementation.python script="nuvem/text.py"/>
+ <service name="text"/>
+ <property>token=...&amp;from=...&amp;to=...&amp;msg=...</property>
+ </component>
+</composite>
diff --git a/sca-cpp/trunk/modules/edit/apps/twsms/app.stats b/sca-cpp/trunk/modules/edit/apps/twsms/app.stats
new file mode 100644
index 0000000000..85c97c2457
--- /dev/null
+++ b/sca-cpp/trunk/modules/edit/apps/twsms/app.stats
@@ -0,0 +1 @@
+((entry (title "SMS send service") (id "twsms"))) \ No newline at end of file
diff --git a/sca-cpp/trunk/modules/edit/apps/twsms/htdocs/app.html b/sca-cpp/trunk/modules/edit/apps/twsms/htdocs/app.html
new file mode 100644
index 0000000000..d2eaebcdd0
--- /dev/null
+++ b/sca-cpp/trunk/modules/edit/apps/twsms/htdocs/app.html
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<DIV id="page">
+ <SPAN id="page:h1" class="h1" style="position: absolute; top: 0px; left: 2px; ">
+ <H1>SMS Send Service</H1>
+ </SPAN>
+ <SPAN id="page:text" class="text" style="position: absolute; top: 36px; left: 2px; ">
+ <SPAN>To send an SMS use a URL like this:</SPAN>
+ </SPAN>
+ <SPAN id="page:text" class="text" style="position: absolute; top: 63px; left: 2px; ">
+ <SPAN>http://twsms..../?sid=...&amp;token=...&amp;from=...</SPAN>
+ </SPAN>
+ <SPAN id="page:text" class="text" style="position: absolute; top: 81px; left: 2px; ">
+ <SPAN>&amp;to=...&amp;msg=...</SPAN>
+ </SPAN>
+</DIV>
diff --git a/sca-cpp/trunk/modules/edit/dashboards/jane@localhost/user.apps b/sca-cpp/trunk/modules/edit/dashboards/jane@localhost/user.apps
index 402b4260e4..710de5f62e 100644
--- a/sca-cpp/trunk/modules/edit/dashboards/jane@localhost/user.apps
+++ b/sca-cpp/trunk/modules/edit/dashboards/jane@localhost/user.apps
@@ -1 +1 @@
-((entry (title "Check my public social data") (id "me360")) (entry (title "Where are my friends") (id "nearme")) (entry (title "Our photos of an event") (id "ourphotos")) (entry (title "Slice") (id "slice")) (entry (title "My online store") (id "shoppingcart")) (entry (title "An empty test app") (id "test")) (entry (title "Test values and lists") (id "testvalues")) (entry (title "Test social components") (id "testsocial")) (entry (title "Test URL components") (id "testurl")) (entry (title "Test logic components") (id "testlogic")) (entry (title "Test text processing components") (id "testtext")) (entry (title "Test HTTP components") (id "testhttp")) (entry (title "Test widgets") (id "testwidgets")) (entry (title "Test more widgets") (id "testwidgets2")) (entry (title "Test event components") (id "testevents")) (entry (title "Test search components") (id "testsearch")) (entry (title "Test database components") (id "testdb")))
+((entry (title "An empty test app") (id "test")))
diff --git a/sca-cpp/trunk/modules/edit/dashboards/jane@sca-store.com/user.apps b/sca-cpp/trunk/modules/edit/dashboards/jane@sca-store.com/user.apps
index 402b4260e4..710de5f62e 100644
--- a/sca-cpp/trunk/modules/edit/dashboards/jane@sca-store.com/user.apps
+++ b/sca-cpp/trunk/modules/edit/dashboards/jane@sca-store.com/user.apps
@@ -1 +1 @@
-((entry (title "Check my public social data") (id "me360")) (entry (title "Where are my friends") (id "nearme")) (entry (title "Our photos of an event") (id "ourphotos")) (entry (title "Slice") (id "slice")) (entry (title "My online store") (id "shoppingcart")) (entry (title "An empty test app") (id "test")) (entry (title "Test values and lists") (id "testvalues")) (entry (title "Test social components") (id "testsocial")) (entry (title "Test URL components") (id "testurl")) (entry (title "Test logic components") (id "testlogic")) (entry (title "Test text processing components") (id "testtext")) (entry (title "Test HTTP components") (id "testhttp")) (entry (title "Test widgets") (id "testwidgets")) (entry (title "Test more widgets") (id "testwidgets2")) (entry (title "Test event components") (id "testevents")) (entry (title "Test search components") (id "testsearch")) (entry (title "Test database components") (id "testdb")))
+((entry (title "An empty test app") (id "test")))
diff --git a/sca-cpp/trunk/modules/edit/dashboards/john@localhost/user.apps b/sca-cpp/trunk/modules/edit/dashboards/john@localhost/user.apps
index 402b4260e4..710de5f62e 100644
--- a/sca-cpp/trunk/modules/edit/dashboards/john@localhost/user.apps
+++ b/sca-cpp/trunk/modules/edit/dashboards/john@localhost/user.apps
@@ -1 +1 @@
-((entry (title "Check my public social data") (id "me360")) (entry (title "Where are my friends") (id "nearme")) (entry (title "Our photos of an event") (id "ourphotos")) (entry (title "Slice") (id "slice")) (entry (title "My online store") (id "shoppingcart")) (entry (title "An empty test app") (id "test")) (entry (title "Test values and lists") (id "testvalues")) (entry (title "Test social components") (id "testsocial")) (entry (title "Test URL components") (id "testurl")) (entry (title "Test logic components") (id "testlogic")) (entry (title "Test text processing components") (id "testtext")) (entry (title "Test HTTP components") (id "testhttp")) (entry (title "Test widgets") (id "testwidgets")) (entry (title "Test more widgets") (id "testwidgets2")) (entry (title "Test event components") (id "testevents")) (entry (title "Test search components") (id "testsearch")) (entry (title "Test database components") (id "testdb")))
+((entry (title "An empty test app") (id "test")))
diff --git a/sca-cpp/trunk/modules/edit/dashboards/john@sca-store.com/user.apps b/sca-cpp/trunk/modules/edit/dashboards/john@sca-store.com/user.apps
index 402b4260e4..710de5f62e 100644
--- a/sca-cpp/trunk/modules/edit/dashboards/john@sca-store.com/user.apps
+++ b/sca-cpp/trunk/modules/edit/dashboards/john@sca-store.com/user.apps
@@ -1 +1 @@
-((entry (title "Check my public social data") (id "me360")) (entry (title "Where are my friends") (id "nearme")) (entry (title "Our photos of an event") (id "ourphotos")) (entry (title "Slice") (id "slice")) (entry (title "My online store") (id "shoppingcart")) (entry (title "An empty test app") (id "test")) (entry (title "Test values and lists") (id "testvalues")) (entry (title "Test social components") (id "testsocial")) (entry (title "Test URL components") (id "testurl")) (entry (title "Test logic components") (id "testlogic")) (entry (title "Test text processing components") (id "testtext")) (entry (title "Test HTTP components") (id "testhttp")) (entry (title "Test widgets") (id "testwidgets")) (entry (title "Test more widgets") (id "testwidgets2")) (entry (title "Test event components") (id "testevents")) (entry (title "Test search components") (id "testsearch")) (entry (title "Test database components") (id "testdb")))
+((entry (title "An empty test app") (id "test")))
diff --git a/sca-cpp/trunk/modules/edit/htdocs/account/index.html b/sca-cpp/trunk/modules/edit/htdocs/account/index.html
index 3a3ddad383..8f23b8c59c 100644
--- a/sca-cpp/trunk/modules/edit/htdocs/account/index.html
+++ b/sca-cpp/trunk/modules/edit/htdocs/account/index.html
@@ -60,6 +60,21 @@
<br/>
<table style="width: 100%;">
<tr>
+<th class="thl thr" style="padding-top: 4px; padding-bottom: 4px; padding-left: 2px; padding-right: 2px; ">Calendar</th>
+</tr>
+</table>
+
+<table>
+<tr><td style="padding-right: 2px;"><input type="text" id="sched1" size="10" placeholder="Schedule" style="width: 80px;"/></td><td><input type="text" id="service1" size="2048" placeholder="Service URL" style="width: 200px;"/></td></tr>
+<tr><td style="padding-right: 2px;"><input type="text" id="sched2" size="10" placeholder="Schedule" style="width: 80px;"/></td><td><input type="text" id="service2" size="2048" placeholder="Service URL" style="width: 200px;"/></td></tr>
+<tr><td style="padding-right: 2px;"><input type="text" id="sched3" size="10" placeholder="Schedule" style="width: 80px;"/></td><td><input type="text" id="service3" size="2048" placeholder="Service URL" style="width: 200px;"/></td></tr>
+<tr><td style="padding-right: 2px;"><input type="text" id="sched4" size="10" placeholder="Schedule" style="width: 80px;"/></td><td><input type="text" id="service4" size="2048" placeholder="Service URL" style="width: 200px;"/></td></tr>
+<tr><td style="padding-right: 2px;"><input type="text" id="sched5" size="10" placeholder="Schedule" style="width: 80px;"/></td><td><input type="text" id="service5" size="2048" placeholder="Service URL" style="width: 200px;"/></td></tr>
+</table>
+<br/>
+
+<table style="width: 100%;">
+<tr>
<th class="thl thr" style="padding-top: 4px; padding-bottom: 4px; padding-left: 2px; padding-right: 2px; ">Key chain</th>
</tr>
</table>
@@ -70,6 +85,11 @@
<tr><td style="padding-right: 2px;"><input type="text" id="name3" size="10" placeholder="Key name" style="width: 80px;"/></td><td><input type="text" id="value3" size="2048" placeholder="Key value" style="width: 200px;"/></td></tr>
<tr><td style="padding-right: 2px;"><input type="text" id="name4" size="10" placeholder="Key name" style="width: 80px;"/></td><td><input type="text" id="value4" size="2048" placeholder="Key value" style="width: 200px;"/></td></tr>
<tr><td style="padding-right: 2px;"><input type="text" id="name5" size="10" placeholder="Key name" style="width: 80px;"/></td><td><input type="text" id="value5" size="2048" placeholder="Key value" style="width: 200px;"/></td></tr>
+<tr><td style="padding-right: 2px;"><input type="text" id="name6" size="10" placeholder="Key name" style="width: 80px;"/></td><td><input type="text" id="value6" size="2048" placeholder="Key value" style="width: 200px;"/></td></tr>
+<tr><td style="padding-right: 2px;"><input type="text" id="name7" size="10" placeholder="Key name" style="width: 80px;"/></td><td><input type="text" id="value7" size="2048" placeholder="Key value" style="width: 200px;"/></td></tr>
+<tr><td style="padding-right: 2px;"><input type="text" id="name8" size="10" placeholder="Key name" style="width: 80px;"/></td><td><input type="text" id="value8" size="2048" placeholder="Key value" style="width: 200px;"/></td></tr>
+<tr><td style="padding-right: 2px;"><input type="text" id="name9" size="10" placeholder="Key name" style="width: 80px;"/></td><td><input type="text" id="value9" size="2048" placeholder="Key value" style="width: 200px;"/></td></tr>
+<tr><td style="padding-right: 2px;"><input type="text" id="name10" size="10" placeholder="Key name" style="width: 80px;"/></td><td><input type="text" id="value10" size="2048" placeholder="Key value" style="width: 200px;"/></td></tr>
</table>
</form>
@@ -115,6 +135,15 @@ function getaccount(name) {
var desc = assoc("'description", acct);
$('userDescription').innerHTML = isNil(desc) || isNil(cdr(desc))? '' : cadr(desc);
+ var cal = assoc("'calendar", acct);
+ reduce(function(i, evt) {
+ var sched = assoc("'@schedule", evt);
+ var svc = assoc("'@service", evt);
+ $('sched' + i).value = isNil(sched)? '' : cadr(sched);
+ $('service' + i).value = isNil(svc)? '' : cadr(svc);
+ return i + 1;
+ }, 1, isNil(cal)? mklist() : cadr(cadr(cal)));
+
var keys = assoc("'keys", acct);
reduce(function(i, key) {
var kn = assoc("'@name", key);
@@ -146,14 +175,19 @@ function save(entryxml) {
function onaccountchange() {
var title = $('userTitle').value;
var desc = $('userDescription').value;
+ var cal = map(function(i) {
+ var sched = $('sched' + i).value;
+ var svc = $('service' + i).value;
+ return mklist("'event", mklist("'@schedule", sched), mklist("'@service", svc));
+ }, range(1, 6));
var keys = map(function(i) {
var kn = $('name' + i).value;
var kv = $('value' + i).value;
return mklist("'key", mklist("'@name", kn), mklist("'@value", kv));
- }, range(1, 6));
+ }, range(1, 11));
var accountentry = mklist("'entry", mklist("'title", title != ''? title : username), mklist("'id", username),
- mklist("'content", mklist("'account", mklist("'description", desc), cons("'keys", keys))));
+ mklist("'content", mklist("'account", mklist("'description", desc), cons("'keys", keys), cons("'calendar", cal))));
var entryxml = car(atom.writeATOMEntry(valuesToElements(mklist(accountentry))));
if (savedaccountentryxml == entryxml)
return false;
@@ -165,10 +199,15 @@ function onaccountchange() {
$('userTitle').onchange = onaccountchange;
$('userDescription').onchange = onaccountchange;
map(function(i) {
+ $('sched' + i).onchange = onaccountchange;
+ $('service' + i).onchange = onaccountchange;
+ return true;
+}, range(1, 6));
+map(function(i) {
$('name' + i).onchange = onaccountchange;
$('value' + i).onchange = onaccountchange;
return true;
-}, range(1, 6));
+}, range(1, 11));
/**
* Handle a form submit event.
diff --git a/sca-cpp/trunk/modules/edit/htdocs/app/index.html b/sca-cpp/trunk/modules/edit/htdocs/app/index.html
index 99a523362f..570d1e00f1 100644
--- a/sca-cpp/trunk/modules/edit/htdocs/app/index.html
+++ b/sca-cpp/trunk/modules/edit/htdocs/app/index.html
@@ -50,17 +50,19 @@ document.title = window.location.hostname.split('.')[0];
var appdiv = $('app');
/**
- * Start, stop, timer and location components.
+ * Start, stop, timer, animation and location components.
*/
var startcomp = sca.httpclient('start', '/start');
var stopcomp = sca.httpclient('stop', '/stop');
var timercomp = sca.httpclient('timer', '/timer');
+var animationcomp = sca.httpclient('animation', '/animation');
var locationcomp = sca.httpclient('location', '/location');
/**
- * Find a named value in a tree of elements.
+ * Find a named value in a tree of elements. The value name is given
+ * as a list of ids.
*/
-function datavalue(l, id) {
+function namedvalue(l, id) {
if (isNil(l))
return null;
var e = car(l);
@@ -74,7 +76,7 @@ function datavalue(l, id) {
// Search for next id segments in child elements
if (!elementHasValue(e)) {
- var v = datavalue(elementChildren(e), cdr(id));
+ var v = namedvalue(elementChildren(e), cdr(id));
if (v != null)
return v;
}
@@ -82,11 +84,11 @@ function datavalue(l, id) {
// Search for id through the whole element tree
if (!elementHasValue(e)) {
- var v = datavalue(elementChildren(e), id);
+ var v = namedvalue(elementChildren(e), id);
if (v != null)
return v;
}
- return datavalue(cdr(l), id);
+ return namedvalue(cdr(l), id);
}
/**
@@ -111,84 +113,101 @@ function inputvalue(e) {
};
/**
- * Set a data value into a widget.
+ * Set a value into a widget.
*/
function setwidgetvalue(e, dv) {
-
- function datatext(dv) {
- if (!elementHasValue(dv))
- return '';
- var t = elementValue(dv);
- return t == null? '' : t;
- }
+ var htattrs = namedElementChild("'htattrs", dv);
+ var attrs = append(isNil(htattrs)? mklist() :
+ map(function(ce) { return mklist(elementName(ce).substring(1), elementHasValue(ce)? elementValue(ce) : elementChildren(ce)); }, elementChildren(htattrs)),
+ elementHasValue(dv)? mklist(mklist('value', isNil(elementValue(dv))? '' : elementValue(dv))) : mklist());
if (e.className == 'h1' || e.className == 'h2' || e.className == 'text' || e.className == 'section') {
- var t = datatext(dv);
- car(childElements(e)).innerHTML = t;
- return t;
+ var ce = car(childElements(e));
+ return map(function(a) { car(a) == 'value'? ce.innerHTML = cadr(a) : ce.setAttribute(car(a), cadr(a)); }, attrs);
}
+
if (e.className == 'entry' || e.className == 'password') {
- var t = datatext(dv);
- car(childElements(e)).defaultValue = t;
- return t;
+ var ce = car(childElements(e));
+ return map(function(a) { car(a) == 'value'? ce.defaultValue = cadr(a) : ce.setAttribute(car(a), cadr(a)); }, attrs);
}
+
if (e.className == 'button') {
- var t = datatext(dv);
- car(childElements(e)).value = t;
- return t;
+ var ce = car(childElements(e));
+ return map(function(a) { car(a) == 'value'? ce.value = cadr(a) : ce.setAttribute(car(a), cadr(a)); }, attrs);
}
+
if (e.className == 'checkbox') {
- var t = datatext(dv);
- car(childElements(e)).value = t;
- map(function(n) { if (n.nodeName == "SPAN") n.innerHTML = t; return n; }, nodeList(e.childNodes));
- return t;
+ var ce = car(childElements(e));
+
+ function setcheckvalue(ce, v) {
+ ce.value = v;
+ map(function(n) { if (n.nodeName == "SPAN") n.innerHTML = v; return n; }, nodeList(e.childNodes));
+ return true;
+ }
+
+ var r = map(function(a) { car(a) == 'value'? setcheckvalue(ce, cadr(a)) : ce.setAttribute(car(a), cadr(a)); }, attrs);
+ return r;
}
+
if (e.className == 'select') {
- var t = datatext(dv);
var ce = car(childElements(car(childElements(e))));
- ce.value = t;
- ce.innerHTML = t;
- return t;
+
+ function setselectvalue(ce, v) {
+ ce.value = v;
+ ce.innerHTML = v;
+ return true;
+ }
+
+ var r = map(function(a) { car(a) == 'value'? setselectvalue(ce, cadr(a)) : ce.setAttribute(car(a), cadr(a)); }, attrs);
+ return r;
}
if (e.className == 'list') {
- var t = ui.datalist(isNil(dv)? mklist() : mklist(dv));
- e.innerHTML = t;
- return t;
+ var dl = ui.datalist(isNil(dv)? mklist() : mklist(dv));
+ e.innerHTML = dl;
+ return dl;
}
if (e.className == 'table') {
- var t = ui.datatable(isNil(dv)? mklist() : mklist(dv));
- e.innerHTML = t;
- return t;
+ var dl = ui.datatable(isNil(dv)? mklist() : mklist(dv));
+ e.innerHTML = dl;
+ return dl;
}
if (e.className == 'link') {
- var t = datatext(dv);
var ce = car(childElements(e));
- ce.href = isList(t)? car(t) : t;
- car(childElements(ce)).innerHTML = isList(t)? cadr(t) : t;
- return t;
+
+ function setlinkvalue(ce, v) {
+ if (isList(v)) {
+ ce.href = car(v);
+ ce.innerHTML = cadr(v);
+ return true;
+ }
+ ce.href = v;
+ ce.innerHTML = v;
+ return true;
+ }
+
+ return map(function(a) { car(a) == 'value'? setlinkvalue(ce, cadr(a)) : ce.setAttribute(car(a), cadr(a)); }, attrs);
}
if (e.className == 'img') {
- var t = datatext(dv);
- var img = car(childElements(e));
- img.setAttribute('src', t);
- return t;
+ var ce = car(childElements(e));
+ return map(function(a) { car(a) == 'value'? ce.setAttribute('src', cadr(a)) : ce.setAttribute(car(a), cadr(a)); }, attrs);
}
if (e.className == 'iframe') {
- var t = datatext(dv);
- car(childElements(e)).src = t;
- return t;
+ var ce = car(childElements(e));
+ return map(function(a) { car(a) == 'value'? ce.setAttribute('src', cadr(a)) : ce.setAttribute(car(a), cadr(a)); }, attrs);
}
return '';
};
/**
- * Display data on the app page.
+ * Update the app page with the given app data.
*/
-function displaydata(l) {
+function updatepage(l) {
+ if (isNil(l))
+ return true;
// Update the widgets values
function updatewidget(e) {
- var dv = datavalue(l, map(function(t) { return "'" + t; }, e.id.split('.')));
+ var dv = namedvalue(l, map(function(t) { return "'" + t; }, e.id.split('.')));
if (dv == null || isNil(dv))
return e;
setwidgetvalue(e, dv);
@@ -200,22 +219,22 @@ function displaydata(l) {
}
/**
- * Display data from a document on the app page.
+ * Convert a document to application data.
*/
-function displaydoc(doc) {
+function docdata(doc) {
if (isNil(doc))
- return true;
+ return null;
if (json.isJSON(mklist(doc)))
- return displaydata(json.readJSON(mklist(doc)));
+ return json.readJSON(mklist(doc));
if (atom.isATOMEntry(mklist(doc)))
- return displaydata(atom.readATOMEntry(mklist(doc)));
+ return atom.readATOMEntry(mklist(doc));
if (atom.isATOMFeed(mklist(doc)))
- return displaydata(atom.readATOMFeed(mklist(doc)));
+ return atom.readATOMFeed(mklist(doc));
- return displaydata(doc);
+ return doc;
}
/**
@@ -278,6 +297,18 @@ function initwidget(e) {
}
/**
+ * Get document from a component.
+ */
+function getdoc(comp, name, uri) {
+ try {
+ return comp.get(uri);
+ } catch(e) {
+ log('exception on get(' + name + ', ' + uri + ')', e);
+ return null;
+ }
+}
+
+/**
* Get app data from the main app page component.
*/
function getpagedata() {
@@ -285,8 +316,7 @@ function getpagedata() {
// Display component data on the page
function displaypage(doc) {
- if (!isNil(doc))
- displaydoc(doc);
+ updatepage(docdata(doc));
// Reveal the page
ui.showbody();
@@ -312,42 +342,35 @@ function getpagedata() {
}
// Get the component app data
- var doc = startcomp.get(window.location.search);
- try {
- var appFrame = $('appFrame');
- if (!isNil(appFrame.contentDocument.body)) {
- appdiv.innerHTML = appFrame.contentDocument.body.innerHTML;
- } else {
- $('appebuffer').appendChild(appFrame.contentDocument.documentElement);
- appdiv.innerHTML = appebuffer.innerHTML;
- appebuffer.innerHTML = '';
- }
+ var doc = getdoc(startcomp, 'start', window.location.search);
+
+ // Prepare app HTML page
+ var appFrame = $('appFrame');
+ if (!isNil(appFrame.contentDocument.body)) {
+ appdiv.innerHTML = appFrame.contentDocument.body.innerHTML;
+ } else {
+ $('appebuffer').appendChild(appFrame.contentDocument.documentElement);
+ appdiv.innerHTML = appebuffer.innerHTML;
+ appebuffer.innerHTML = '';
+ }
- // Initial setup of the widgets
- map(setupwidget, filter(function(e) { return !isNil(e.id); }, nodeList(ui.elementByID(appdiv, 'page').childNodes)));
+ // Setup the widgets
+ map(setupwidget, filter(function(e) { return !isNil(e.id); }, nodeList(ui.elementByID(appdiv, 'page').childNodes)));
- // Display data on the page
- displaypage(doc);
+ // Display data on the page
+ displaypage(doc);
- // Get and eval the optional timer and location watch setup scripts
- evalcompinit(timercomp.get('setup'));
- evalcompinit(locationcomp.get('setup'));
- return true;
+ // Get and eval the optional timer, animation and location watch setup scripts
+ evalcompinit(getdoc(timercomp, 'timer', 'setup'));
+ evalcompinit(getdoc(animationcomp, 'animation', 'setup'));
+ evalcompinit(getdoc(locationcomp, 'location', 'setup'));
+
+ return true;
- } catch(e) {
- log('exception on startcomp.get()', e);
- }
} catch(e) {
log('exception in getpagedata()', e);
+ return true;
}
- return true;
-}
-
-/**
- * Get app data from a component.
- */
-function getcompdata(comp, qs) {
- return displaydoc(comp.get(qs));
}
/**
@@ -380,9 +403,10 @@ function compquery() {
*/
function buttonClickHandler(id) {
try {
- return getcompdata(sca.component(id), compquery());
+ return updatepage(docdata(getdoc(sca.component(id), 'button', compquery())));
} catch(e) {
log('exception in buttonClickHandler()', e);
+ return true;
}
}
@@ -391,9 +415,10 @@ function buttonClickHandler(id) {
*/
function intervalHandler() {
try {
- return getcompdata(timercomp, compquery());
+ return updatepage(docdata(getdoc(timercomp, 'timer', compquery())));
} catch(e) {
log('exception in intervalHandler()', e);
+ return true;
}
}
@@ -406,6 +431,76 @@ function setupIntervalHandler(msec) {
return setInterval(intervalHandler, msec);
} catch(e) {
log('exception in setupIntervalHandler()', e);
+ return true;
+ }
+}
+
+/**
+ * Handle an animation event.
+ */
+var animationData = null;
+var currentAnimationData = null;
+var animationLoop = 0;
+var currentAnimationLoop = 0;
+
+function animationHandler() {
+ try {
+ // Get animation data if necessary
+ if (isNil(animationData)) {
+ animationData = docdata(getdoc(animationcomp, 'animation', compquery()));
+ if (isNil(animationData)) {
+ // Retry later
+ return true;
+ }
+ currentAnimationData = animationData;
+ currentAnimationLoop = animationLoop;
+ }
+
+ // Update page with animation data
+ updatepage(car(currentAnimationData));
+
+ // End of animation?
+ if (isNil(cdr(currentAnimationData))) {
+ if (currentAnimationLoop == -1) {
+ // Repeat current animation forever
+ currentAnimationData = animationData;
+ return true;
+ }
+
+ currentAnimationLoop = currentAnimationLoop - 1;
+ if (currentAnimationLoop <= 0) {
+ // Get next animation data
+ currentAnimationData = null;
+ animationData = null;
+ return true;
+ }
+
+ // Repeat animation
+ currentAnimationData = animationData;
+ return true;
+ }
+
+ // Move to the next animation frame
+ currentAnimationData = cdr(currentAnimationData);
+ return true;
+
+ } catch(e) {
+ log('exception in animationHandler()', e);
+ return true;
+ }
+}
+
+/**
+ * Setup an animation.
+ */
+function setupAnimationHandler(msec, loop) {
+ animationLoop = loop;
+ animationHandler();
+ try {
+ return setInterval(animationHandler, msec);
+ } catch(e) {
+ log('exception in setupAnimationHandler()', e);
+ return true;
}
}
@@ -418,7 +513,7 @@ var geoposition = null;
function locationHandler(pos) {
try {
geoposition = pos;
- return getcompdata(locationcomp, compquery());
+ return updatepage(docdata(getdoc(locationcomp, 'location', compquery())));
} catch(e) {
locationErrorHandler(e);
}
diff --git a/sca-cpp/trunk/modules/edit/htdocs/graph/index.html b/sca-cpp/trunk/modules/edit/htdocs/graph/index.html
index 626edf1c52..b8370ec75a 100644
--- a/sca-cpp/trunk/modules/edit/htdocs/graph/index.html
+++ b/sca-cpp/trunk/modules/edit/htdocs/graph/index.html
@@ -384,6 +384,7 @@ installpalette('lists', pos.rmove(0, 35), g, bg, spalette, gpalettes);
installpalette('transform', pos.rmove(0, 35), g, bg, spalette, gpalettes);
installpalette('text', pos.rmove(0, 35), g, bg, spalette, gpalettes);
installpalette('http', pos.rmove(0, 35), g, bg, spalette, gpalettes);
+installpalette('animation', pos.rmove(0, 35), g, bg, spalette, gpalettes);
installpalette('talk', pos.rmove(0, 35), g, bg, spalette, gpalettes);
installpalette('social', pos.rmove(0, 35), g, bg, spalette, gpalettes);
installpalette('search', pos.rmove(0, 35), g, bg, spalette, gpalettes);
diff --git a/sca-cpp/trunk/modules/edit/htdocs/page/page.js b/sca-cpp/trunk/modules/edit/htdocs/page/page.js
index 707788cc64..d316cb72dd 100644
--- a/sca-cpp/trunk/modules/edit/htdocs/page/page.js
+++ b/sca-cpp/trunk/modules/edit/htdocs/page/page.js
@@ -428,9 +428,8 @@ page.widgetselect = function(n, s, wvalue, wdelete) {
// Clear the widget outline
if (!isNil(n))
n.cover.style.borderWidth = '0px';
- }
- if (isNil(n))
return true;
+ }
// Update the widget value field
wvalue.value = page.text(n);
@@ -438,7 +437,7 @@ page.widgetselect = function(n, s, wvalue, wdelete) {
wdelete.disabled = false;
// Outline the widget
- n.cover.style.borderWidth = s? '2px' : '0px';
+ n.cover.style.borderWidth = '2px';
return true;
};
diff --git a/sca-cpp/trunk/modules/edit/htdocs/store/index.html b/sca-cpp/trunk/modules/edit/htdocs/store/index.html
index 1d96781801..601a5905b9 100644
--- a/sca-cpp/trunk/modules/edit/htdocs/store/index.html
+++ b/sca-cpp/trunk/modules/edit/htdocs/store/index.html
@@ -139,7 +139,8 @@ function getapps(category) {
function display(doc) {
var apps = '<div>';
var feed = car(elementsToValues(atom.readATOMFeed(mklist(doc))));
- var entries = cadr(assoc("'entry", cdr(feed)));
+ var aentries = assoc("'entry", cdr(feed));
+ var entries = isNil(aentries)? mklist() : isList(car(cadr(aentries)))? cadr(aentries) : mklist(cdr(aentries));
for (var i = 0; i < length(entries); i++) {
var entry = entries[i];
var title = cadr(assoc("'title", entry))
diff --git a/sca-cpp/trunk/modules/edit/palettes/animation/palette.composite b/sca-cpp/trunk/modules/edit/palettes/animation/palette.composite
new file mode 100644
index 0000000000..6785c0477f
--- /dev/null
+++ b/sca-cpp/trunk/modules/edit/palettes/animation/palette.composite
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" name="palette" targetNamespace="http://palette">
+ <service name="htattrs" promote="htattrs"/>
+ <service name="htbutton" promote="htbutton"/>
+ <service name="htcheck" promote="htcheck"/>
+ <service name="htimg" promote="htimg"/>
+ <service name="htlink" promote="htlink"/>
+ <service name="htstyle" promote="htstyle"/>
+ <service name="pixels" promote="pixels"/>
+ <component x="90" y="110" name="htattrs" title="html attrs:" color="magenta1">
+ <implementation.python script="nuvem/htattrs.py"/>
+ <service name="htattrs"/>
+ <reference name="value"/>
+ </component>
+ <component x="180" y="10" name="htbutton" title="html button" color="magenta1">
+ <implementation.python script="nuvem/htbutton.py"/>
+ <service name="htbutton"/>
+ <reference name="value"/>
+ </component>
+ <component x="180" y="60" name="htcheck" title="html checkbox" color="magenta1">
+ <implementation.python script="nuvem/htcheck.py"/>
+ <service name="htcheck"/>
+ <reference name="value"/>
+ </component>
+ <component x="90" y="10" name="htimg" title="html img" color="magenta1">
+ <implementation.python script="nuvem/htimg.py"/>
+ <service name="htimg"/>
+ <reference name="value"/>
+ </component>
+ <component x="90" y="60" name="htlink" title="html link" color="magenta1">
+ <implementation.python script="nuvem/htlink.py"/>
+ <service name="htlink"/>
+ <reference name="value"/>
+ </component>
+ <component x="190" y="110" name="htstyle" title="html style" color="magenta1">
+ <implementation.python script="nuvem/htstyle.py"/>
+ <service name="htstyle"/>
+ <reference name="value"/>
+ </component>
+ <component x="90" y="160" name="pixels" title="pixels" color="magenta1">
+ <implementation.python script="nuvem/pixels.py"/>
+ <service name="pixels"/>
+ <reference name="value"/>
+ </component>
+</composite>
diff --git a/sca-cpp/trunk/modules/edit/palettes/control/palette.composite b/sca-cpp/trunk/modules/edit/palettes/control/palette.composite
index d22b9482ee..b2c933eec4 100644
--- a/sca-cpp/trunk/modules/edit/palettes/control/palette.composite
+++ b/sca-cpp/trunk/modules/edit/palettes/control/palette.composite
@@ -1,11 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" name="palette" targetNamespace="http://palette">
+ <service name="animation" promote="animation"/>
<service name="call" promote="call"/>
<service name="location" promote="location"/>
+ <service name="schedule" promote="schedule"/>
<service name="service" promote="service"/>
<service name="start" promote="start"/>
<service name="stop" promote="stop"/>
<service name="timer" promote="timer"/>
+ <component x="90" y="170" name="animation" title="animation" color="green1">
+ <implementation.python script="nuvem/animation.py"/>
+ <service name="animation" visible="false">
+ <binding.http uri="animation"/>
+ </service>
+ <reference name="n"/>
+ <reference name="loop"/>
+ <reference name="content"/>
+ </component>
<component x="90" y="70" name="call" title="call" color="green1">
<implementation.python script="nuvem/call.py"/>
<service name="call"/>
@@ -19,7 +30,15 @@
</service>
<reference name="content"/>
</component>
- <component x="160" y="70" name="service" title="{compname}" color="green1">
+ <component x="170" y="120" name="schedule" title="schedule" color="green1">
+ <implementation.python script="nuvem/schedule.py"/>
+ <service name="schedule" visible="false">
+ <binding.http uri="schedule"/>
+ </service>
+ <reference name="n"/>
+ <reference name="content"/>
+ </component>
+ <component x="150" y="70" name="service" title="{compname}" color="green1">
<implementation.python script="nuvem/service.py"/>
<service name="service" visible="false"/>
<reference name="content"/>
diff --git a/sca-cpp/trunk/modules/edit/palettes/math/palette.composite b/sca-cpp/trunk/modules/edit/palettes/math/palette.composite
index f8d7ced4b8..3e86647d1d 100644
--- a/sca-cpp/trunk/modules/edit/palettes/math/palette.composite
+++ b/sca-cpp/trunk/modules/edit/palettes/math/palette.composite
@@ -7,6 +7,7 @@
<service name="max" promote="max"/>
<service name="min" promote="min"/>
<service name="multiply" promote="multiply"/>
+ <service name="pi" promote="pi"/>
<service name="random" promote="random"/>
<service name="round" promote="round"/>
<service name="sin" promote="sin"/>
@@ -57,6 +58,10 @@
<reference name="value1"/>
<reference name="value2"/>
</component>
+ <component x="240" y="130" name="pi" title="pi" color="magenta1">
+ <implementation.python script="nuvem/pi_.py"/>
+ <service name="pi"/>
+ </component>
<component x="170" y="130" name="random" title="rand" color="magenta1">
<implementation.python script="nuvem/random_.py"/>
<service name="random"/>
diff --git a/sca-cpp/trunk/modules/edit/palettes/talk/palette.composite b/sca-cpp/trunk/modules/edit/palettes/talk/palette.composite
index af293b97f5..db125c9793 100644
--- a/sca-cpp/trunk/modules/edit/palettes/talk/palette.composite
+++ b/sca-cpp/trunk/modules/edit/palettes/talk/palette.composite
@@ -2,7 +2,7 @@
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" name="palette" targetNamespace="http://palette">
<service name="sendemail" promote="sendemail"/>
<service name="sendgtalk" promote="sendgtalk"/>
- <service name="sendsms" promote="sendsms"/>
+ <service name="twsms" promote="twsms"/>
<service name="voicecall" promote="voicecall"/>
<component x="170" y="10" name="sendemail" title="email **" color="blue1">
<implementation.python script="nuvem/sendemail.py"/>
@@ -19,12 +19,15 @@
<reference name="to"/>
<reference name="msg"/>
</component>
- <component x="90" y="120" name="sendsms" title="sms **" color="blue1">
- <implementation.python script="nuvem/sendsms.py"/>
- <service name="sendsms"/>
- <reference name="user"/>
+ <component x="90" y="120" name="twsms" title="sms" color="blue1">
+ <implementation.python script="nuvem/twsms.py"/>
+ <service name="twsms"/>
+ <reference name="sid"/>
+ <reference name="token"/>
+ <reference name="from"/>
<reference name="to"/>
<reference name="msg"/>
+ <reference name="s" wiredByImpl="true" visible="false"/>
</component>
<component x="170" y="120" name="voicecall" title="voice **" color="blue1">
<implementation.python script="nuvem/voicecall.py"/>
diff --git a/sca-cpp/trunk/modules/edit/palettes/text/palette.composite b/sca-cpp/trunk/modules/edit/palettes/text/palette.composite
index 4b643000ef..925766a32f 100644
--- a/sca-cpp/trunk/modules/edit/palettes/text/palette.composite
+++ b/sca-cpp/trunk/modules/edit/palettes/text/palette.composite
@@ -50,7 +50,7 @@
<reference name="separator"/>
<reference name="string"/>
</component>
- <component x="170" y="230" name="uppercase" title="upper" color="magenta1">
+ <component x="160" y="230" name="uppercase" title="upper" color="magenta1">
<implementation.python script="nuvem/uppercase.py"/>
<service name="uppercase"/>
<reference name="string"/>
diff --git a/sca-cpp/trunk/modules/edit/store/all/store.apps b/sca-cpp/trunk/modules/edit/store/all/store.apps
index 402b4260e4..bdb1552e46 100644
--- a/sca-cpp/trunk/modules/edit/store/all/store.apps
+++ b/sca-cpp/trunk/modules/edit/store/all/store.apps
@@ -1 +1 @@
-((entry (title "Check my public social data") (id "me360")) (entry (title "Where are my friends") (id "nearme")) (entry (title "Our photos of an event") (id "ourphotos")) (entry (title "Slice") (id "slice")) (entry (title "My online store") (id "shoppingcart")) (entry (title "An empty test app") (id "test")) (entry (title "Test values and lists") (id "testvalues")) (entry (title "Test social components") (id "testsocial")) (entry (title "Test URL components") (id "testurl")) (entry (title "Test logic components") (id "testlogic")) (entry (title "Test text processing components") (id "testtext")) (entry (title "Test HTTP components") (id "testhttp")) (entry (title "Test widgets") (id "testwidgets")) (entry (title "Test more widgets") (id "testwidgets2")) (entry (title "Test event components") (id "testevents")) (entry (title "Test search components") (id "testsearch")) (entry (title "Test database components") (id "testdb")))
+((entry (title "Check my public social data") (id "me360")) (entry (title "Where are my friends") (id "nearme")) (entry (title "Our photos of an event") (id "ourphotos")) (entry (title "Slice") (id "slice")) (entry (title "My online store") (id "shoppingcart")) (entry (title "SMS send service") (id "twsms")) (entry (title "An empty test app") (id "test")) (entry (title "Test values and lists") (id "testvalues")) (entry (title "Test social components") (id "testsocial")) (entry (title "Test URL components") (id "testurl")) (entry (title "Test logic components") (id "testlogic")) (entry (title "Test text processing components") (id "testtext")) (entry (title "Test HTTP components") (id "testhttp")) (entry (title "Test SMS API") (id "testsms")) (entry (title "Test widgets") (id "testwidgets")) (entry (title "Test more widgets") (id "testwidgets2")) (entry (title "Test event components") (id "testevents")) (entry (title "Test search components") (id "testsearch")) (entry (title "Test database components") (id "testdb")) (entry (title "Test HTML generator components") (id "testwidgets3")) (entry (title "Test animation components") (id "testanimation")))
diff --git a/sca-cpp/trunk/modules/edit/store/featured/store.apps b/sca-cpp/trunk/modules/edit/store/featured/store.apps
index 7fd59364cf..956dffb9eb 100644
--- a/sca-cpp/trunk/modules/edit/store/featured/store.apps
+++ b/sca-cpp/trunk/modules/edit/store/featured/store.apps
@@ -1 +1 @@
-((entry (title "Check my public social data") (id "me360")) (entry (title "Where are my friends") (id "nearme")) (entry (title "Our photos of an event") (id "ourphotos")) (entry (title "My online store") (id "shoppingcart")) (entry (title "Slice") (id "slice")))
+((entry (title "Check my public social data") (id "me360")) (entry (title "Where are my friends") (id "nearme")) (entry (title "Our photos of an event") (id "ourphotos")) (entry (title "Slice") (id "slice")) (entry (title "My online store") (id "shoppingcart")) (entry (title "SMS send service") (id "twsms")))
diff --git a/sca-cpp/trunk/modules/edit/store/new/store.apps b/sca-cpp/trunk/modules/edit/store/new/store.apps
index 402b4260e4..956dffb9eb 100644
--- a/sca-cpp/trunk/modules/edit/store/new/store.apps
+++ b/sca-cpp/trunk/modules/edit/store/new/store.apps
@@ -1 +1 @@
-((entry (title "Check my public social data") (id "me360")) (entry (title "Where are my friends") (id "nearme")) (entry (title "Our photos of an event") (id "ourphotos")) (entry (title "Slice") (id "slice")) (entry (title "My online store") (id "shoppingcart")) (entry (title "An empty test app") (id "test")) (entry (title "Test values and lists") (id "testvalues")) (entry (title "Test social components") (id "testsocial")) (entry (title "Test URL components") (id "testurl")) (entry (title "Test logic components") (id "testlogic")) (entry (title "Test text processing components") (id "testtext")) (entry (title "Test HTTP components") (id "testhttp")) (entry (title "Test widgets") (id "testwidgets")) (entry (title "Test more widgets") (id "testwidgets2")) (entry (title "Test event components") (id "testevents")) (entry (title "Test search components") (id "testsearch")) (entry (title "Test database components") (id "testdb")))
+((entry (title "Check my public social data") (id "me360")) (entry (title "Where are my friends") (id "nearme")) (entry (title "Our photos of an event") (id "ourphotos")) (entry (title "Slice") (id "slice")) (entry (title "My online store") (id "shoppingcart")) (entry (title "SMS send service") (id "twsms")))
diff --git a/sca-cpp/trunk/modules/edit/store/top/store.apps b/sca-cpp/trunk/modules/edit/store/top/store.apps
index 7fd59364cf..956dffb9eb 100644
--- a/sca-cpp/trunk/modules/edit/store/top/store.apps
+++ b/sca-cpp/trunk/modules/edit/store/top/store.apps
@@ -1 +1 @@
-((entry (title "Check my public social data") (id "me360")) (entry (title "Where are my friends") (id "nearme")) (entry (title "Our photos of an event") (id "ourphotos")) (entry (title "My online store") (id "shoppingcart")) (entry (title "Slice") (id "slice")))
+((entry (title "Check my public social data") (id "me360")) (entry (title "Where are my friends") (id "nearme")) (entry (title "Our photos of an event") (id "ourphotos")) (entry (title "Slice") (id "slice")) (entry (title "My online store") (id "shoppingcart")) (entry (title "SMS send service") (id "twsms")))