MultiChoice Input Example
Location: examples/rappture2/multichoice/
This example demonstrates the <multichoice> input type – a checkbox
list where multiple options can be selected simultaneously.
tool.xml
<?xml version="1.0"?>
<run xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../../../rappture2web/contract.xsd">
<tool>
<title>multichoice (rappture2web)</title>
<about>Example of a Rappture <multichoice> object.
MultiChoices are a set of combinable options.
When you click the Simulate button, the selected choices are echoed in the output.
</about>
<command>python3 @tool/multichoice.py @driver</command>
<contract>
<input>
<multichoice id="countries">
<about>
<label>African Countries</label>
<description>Choose the countries to analyze.</description>
</about>
<option><about><label>South Africa</label><description>South Africa</description></about><value>ZAF</value></option>
<option><about><label>Zimbabwe</label><description>Zimbabwe</description></about><value>ZWE</value></option>
<option><about><label>Swaziland</label><description>Swaziland</description></about><value>SWZ</value></option>
<default>Zimbabwe</default>
</multichoice>
</input>
<output>
<string id="outs"><about><label>Echo of multichoice</label><description>Reports the selected countries.</description></about></string>
</output>
</contract>
</tool>
<input>
<multichoice id="countries">
<about>
<label>African Countries</label>
<description>Choose the countries to analyze.</description>
</about>
<option>
<about><label>South Africa</label><description>South Africa</description></about>
<value>ZAF</value>
</option>
<option>
<about><label>Zimbabwe</label><description>Zimbabwe</description></about>
<value>ZWE</value>
</option>
<option>
<about><label>Swaziland</label><description>Swaziland</description></about>
<value>SWZ</value>
</option>
<default>Zimbabwe</default>
</multichoice>
</input>
</run>
Script
import sys
import rappture2web.rp_library as Rappture
rx = Rappture.PyXml(sys.argv[1])
choice = rx['input.multichoice(countries).current'].value
rx['output.string(outs).about.label'] = 'Echo of multichoice'
rx['output.string(outs).current'] = 'Selected countries: %s' % choice
rx.close()
Key concepts
Multiple selections are returned as a comma-separated string of values.
Like
<choice>, each option can have a<value>that differs from its<label>.
Running
rappture2web examples/rappture2/multichoice/