| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 | 
							- <?xml version="1.0" encoding="UTF-8"?>
 
- <xsl:stylesheet version="2.0" 
 
-   xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
 
-   xmlns:xs="http://www.w3.org/2001/XMLSchema"
 
-   xmlns:fn="http://www.w3.org/2005/xpath-functions"
 
-   xmlns:xdt="http://www.w3.org/2005/xpath-datatypes"
 
-   xmlns:err="http://www.w3.org/2005/xqt-errors"
 
-   xmlns:ctk="http://www.commontk.org"
 
-   exclude-result-prefixes="xs xdt err fn">
 
-   <xsl:output method="xhtml" indent="yes"/>
 
-   <!--
 
-   ===================================================================
 
-     Utility XSLT 2.0 functions
 
-   ===================================================================
 
-   -->
 
-   <!-- Map xml parameter element names (types) to a class attribute. -->
 
-   <xsl:function name="ctk:mapTypeToXmlClass">
 
-     <xsl:param name="cliType"/>
 
-     <xsl:choose>
 
-       <xsl:when test="$cliType='boolean'">bool</xsl:when>
 
-       <xsl:when test="$cliType='integer'">number</xsl:when>
 
-       <xsl:when test="$cliType='float'">double</xsl:when>
 
-       <xsl:when test="$cliType=('point', 'region', 'image', 'file', 'directory', 'geometry', 'integer-vector', 'double-vector', 'float-vector', 'string-vector', 'integer-enumeration', 'double-enumeration', 'float-enumeration', 'string-enumeration')">string</xsl:when>
 
-       <xsl:otherwise><xsl:value-of select="$cliType"/></xsl:otherwise>
 
-     </xsl:choose>
 
-   </xsl:function>
 
-   <!-- Map xml parameter element names (types) to the Qt widget property containing
 
-        the current value. The property value type should match the (Qt) C++ type
 
-        (or be convertible to it). -->
 
-   <xsl:function name="ctk:mapTypeToQtValueProperty">
 
-     <xsl:param name="cliType"/>
 
-     <xsl:choose>
 
-       <xsl:when test="$cliType='boolean'">checked</xsl:when>
 
-       <xsl:when test="$cliType= ('point', 'region')">coordinates</xsl:when>
 
-       <xsl:when test="$cliType= ('image', 'file', 'directory', 'geometry')">currentPath</xsl:when>
 
-       <xsl:when test="$cliType= ('string', 'integer-vector', 'float-vector', 'double-vector', 'string-vector')">text</xsl:when>
 
-       <xsl:when test="$cliType= ('integer-enumeration', 'float-enumeration', 'double-enumeration', 'string-enumeration')">currentText</xsl:when>
 
-       <xsl:otherwise>value</xsl:otherwise>
 
-     </xsl:choose>
 
-   </xsl:function>
 
-   <!--
 
-   ===================================================================
 
-     Default templates for suppressing output if no more specific template exists
 
-   ===================================================================
 
-   -->
 
-   <!-- suppress text and attribute nodes not covered in subsequent template rule -->
 
-   <xsl:template match="text()|@*"/>
 
-   <!--
 
-   ===================================================================
 
-     Utility templates
 
-   ===================================================================
 
-   -->
 
-   <xsl:template match="parameters/label">
 
-     <p><xsl:value-of select="text()"/></p>
 
-   </xsl:template>
 
-   <!-- Add a tooltip property to a widget -->
 
-   <xsl:template match="description">
 
-     <property name="toolTip">
 
-       <string><xsl:value-of select="text()"/></string>
 
-     </property>
 
-   </xsl:template>
 
-   <!-- Set the default value by generating a Qt widget specific property which holds
 
-        the current value -->
 
-   <xsl:template match="default">
 
-     <property name="{ctk:mapTypeToQtValueProperty(name(..))}">
 
-       <xsl:element name="{ctk:mapTypeToXmlClass(name(..))}"><xsl:value-of select="text()"/></xsl:element>
 
-     </property>
 
-   </xsl:template>
 
-   <!-- Set Qt widget (spinbox) specific properties for applying constraints of scalar parameters -->
 
-   <xsl:template match="constraints/*[name()=('minimum','maximum')]">
 
-     <property name="{name()}">
 
-       <xsl:element name="{ctk:mapTypeToXmlClass(name(../..))}"><xsl:value-of select="text()"/></xsl:element>
 
-     </property>
 
-   </xsl:template>
 
-   <xsl:template match="constraints/step">
 
-     <property name="singleStep">
 
-       <xsl:element name="{ctk:mapTypeToXmlClass(name(../..))}"><xsl:value-of select="text()"/></xsl:element>
 
-     </property>
 
-     <!-- Also add the 'step' information under the original name -->
 
-     <property name="parameter:step">
 
-       <string><xsl:value-of select="text()"/></string>
 
-     </property>
 
-   </xsl:template>
 
-   <!-- A named template which will be called from each parameter (integer, float, image, etc.) element.
 
-        It assumes that it will be called from an enclosing Qt grid layout element and adds a label item -->
 
-   <xsl:template name="gridItemWithLabel">
 
-     <td><xsl:value-of select="./label"/></td>
 
-   </xsl:template>
 
-   <!-- A named template for adding properties common to all Qt widgets -->
 
-   <xsl:template name="commonWidgetProperties">
 
-     <xsl:apply-templates select="description"/> <!-- tooltip -->
 
-     <xsl:if test="@hidden='true'"> <!-- widget visibility -->
 
-       <property  name="visible">
 
-         <bool>false</bool>
 
-       </property>
 
-     </xsl:if>
 
-     <property name="parameter:valueProperty"> <!-- property name containing current value -->
 
-       <string><xsl:value-of select="ctk:mapTypeToQtValueProperty(name())"/></string>
 
-     </property>
 
-     <!-- add additional (optional) information as properties -->
 
-     <xsl:apply-templates select="default"/>
 
-   </xsl:template>
 
-   <!--
 
-   ===================================================================
 
-     Match elements from the XML description
 
-   ===================================================================
 
-   -->
 
-   <!-- start matching at 'executable' element -->
 
-   <xsl:template match="/executable">
 
-     <xsl:variable name="moduleTitle"><xsl:value-of select="title"/></xsl:variable>
 
-     <html>
 
-       <head>
 
-         <title><xsl:value-of select="title"/></title>
 
-       </head>
 
-       <body>
 
-         <form>
 
-         <div class="executable">
 
-           <!-- This will generate DIV elements with the specific widgets -->
 
-           <xsl:apply-templates select="parameters"/>
 
-         </div>
 
-         </form>
 
-       </body>
 
-     </html>
 
-   </xsl:template>
 
-   <!--
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-     Parameters
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-   -->
 
-   <!-- Match the 'parameters' element and create the parameter groups (QGroupBox) -->
 
-   <xsl:template match="parameters">
 
-     <xsl:variable name="groupLabel"><xsl:value-of select="label"/></xsl:variable>
 
-     <div class="parameters">
 
-       <xsl:apply-templates select="./label"/>
 
-       <xsl:apply-templates select="./description"/>
 
-       <table>
 
-         <xsl:apply-templates select="./description/following-sibling::*"/>
 
-       </table>
 
-     </div>
 
-   </xsl:template>
 
-   <!--
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-     BOOLEAN parameter (default: QCheckbox)
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-   -->
 
-   <xsl:template match="parameters/boolean">
 
-     <tr>
 
-       <xsl:call-template name="gridItemWithLabel"/>
 
-       <td><input type="checkbox" name="{name}"/></td>
 
-     </tr>
 
-   </xsl:template>
 
-   
 
-   <!--
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-     IMAGE, FILE, GEOMETRY parameter (default: ctkPathLineEdit)
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-   -->
 
-   <xsl:template match="parameters/*[name()=('image', 'file', 'geometry')]">
 
-     <tr>
 
-       <xsl:call-template name="gridItemWithLabel"/>
 
-       <td><input type="file" name="{name}"/></td>
 
-     </tr>
 
-   </xsl:template>
 
-   
 
-   <!--
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-     DEFAULT
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-   -->
 
-   
 
-   <xsl:template match="parameters/*" priority="-1">
 
-     <tr>
 
-       <xsl:call-template name="gridItemWithLabel"/>
 
-       <td>
 
-         <input type="text" name="{name}">
 
-           <xsl:attribute name="value">
 
-             <xsl:value-of select="default/text()"/>
 
-           </xsl:attribute>
 
-         </input>
 
-       </td>
 
-     </tr>
 
-   </xsl:template>
 
- </xsl:stylesheet>
 
 
  |