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 &lt;multichoice&gt; 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/