| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560 | 
							- <?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="xml" indent="yes"/>
 
-   
 
-    <!--
 
-   ===================================================================
 
-     Defaults for XSL parameter bindings
 
-   ===================================================================
 
-   -->
 
-   
 
-   <!--
 
-   ########################################################################
 
-   ****************************   IMPORTANT   *****************************
 
-   *                                                                      *
 
-   * Please update the documentation in ctkCmdLineModuleFrontendQtGui.h   *
 
-   * when making changes to (or adding/removing) XSL parameters (names    *
 
-   * or default values)                                                   *
 
-   *                                                                      *
 
-   ########################################################################
 
-   -->
 
-   
 
-   <xsl:param name="disableReturnParameter">true</xsl:param>
 
-   
 
-   <xsl:param name="executableWidget">QWidget</xsl:param>
 
-   <xsl:param name="parametersWidget">ctkCollapsibleGroupBox</xsl:param>
 
-   <xsl:param name="booleanWidget">QCheckBox</xsl:param>
 
-   <xsl:param name="integerWidget">QSpinBox</xsl:param>
 
-   <xsl:param name="floatingWidget">QDoubleSpinBox</xsl:param>
 
-   <xsl:param name="vectorWidget">QLineEdit</xsl:param>
 
-   <xsl:param name="enumWidget">QComboBox</xsl:param>
 
-   <xsl:param name="imageInputWidget">ctkPathLineEdit</xsl:param>
 
-   <xsl:param name="imageOutputWidget">ctkPathLineEdit</xsl:param>
 
-   <xsl:param name="fileInputWidget">ctkPathLineEdit</xsl:param>
 
-   <xsl:param name="fileOutputWidget">ctkPathLineEdit</xsl:param>
 
-   <xsl:param name="directoryWidget">ctkPathLineEdit</xsl:param>
 
-   <xsl:param name="pointWidget">ctkCoordinatesWidget</xsl:param>
 
-   <xsl:param name="unsupportedWidget">QLabel</xsl:param>
 
-     
 
-   <xsl:param name="booleanValueProperty">checked</xsl:param>
 
-   <xsl:param name="integerValueProperty">value</xsl:param>
 
-   <xsl:param name="floatValueProperty">value</xsl:param>
 
-   <xsl:param name="pointValueProperty">coordinates</xsl:param>
 
-   <xsl:param name="regionValueProperty">coordinates</xsl:param>
 
-   <xsl:param name="imageInputValueProperty">currentPath</xsl:param>
 
-   <xsl:param name="imageOutputValueProperty">currentPath</xsl:param>
 
-   <xsl:param name="fileInputValueProperty">currentPath</xsl:param>
 
-   <xsl:param name="fileOutputValueProperty">currentPath</xsl:param>
 
-   <xsl:param name="directoryValueProperty">currentPath</xsl:param>
 
-   <xsl:param name="geometryInputValueProperty">currentPath</xsl:param>
 
-   <xsl:param name="geometryOutputValueProperty">currentPath</xsl:param>
 
-   <xsl:param name="vectorValueProperty">text</xsl:param>
 
-   <xsl:param name="enumerationValueProperty">currentEnumeration</xsl:param>
 
-   <xsl:param name="imageInputSetProperty">filters</xsl:param>
 
-   <xsl:param name="imageOutputSetProperty">filters</xsl:param>
 
-   <xsl:param name="fileInputSetProperty">filters</xsl:param>
 
-   <xsl:param name="fileOutputSetProperty">filters</xsl:param>
 
-   <xsl:param name="imageInputSetValue">ctkPathLineEdit::Files|ctkPathLineEdit::Readable</xsl:param>
 
-   <xsl:param name="imageOutputSetValue">ctkPathLineEdit::Files|ctkPathLineEdit::Writable</xsl:param>
 
-   <xsl:param name="fileInputSetValue">ctkPathLineEdit::Files|ctkPathLineEdit::Readable</xsl:param>
 
-   <xsl:param name="fileOutputSetValue">ctkPathLineEdit::Files|ctkPathLineEdit::Writable</xsl:param>
 
-   
 
-   <!--
 
-   ===================================================================
 
-     Utility XSLT 2.0 functions
 
-   ===================================================================
 
-   -->
 
-   <!-- Map xml parameter element names (types) to the proper QtDesigner UI element. -->
 
-   <xsl:function name="ctk:mapTypeToQtDesigner">
 
-     <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:param name="cliChannel"/> 
 
-     <xsl:choose>
 
-       <xsl:when test="$cliType='boolean'"><xsl:value-of select="$booleanValueProperty"/></xsl:when>
 
-       <xsl:when test="$cliType='integer'"><xsl:value-of select="$integerValueProperty"/></xsl:when>
 
-       <xsl:when test="$cliType='float'"><xsl:value-of select="$floatValueProperty"/></xsl:when>
 
-       <xsl:when test="$cliType='double'"><xsl:value-of select="$floatValueProperty"/></xsl:when>
 
-       <xsl:when test="$cliType='string'"><xsl:value-of select="$vectorValueProperty"/></xsl:when>
 
-       <xsl:when test="$cliType='point'"><xsl:value-of select="$pointValueProperty"/></xsl:when>
 
-       <xsl:when test="$cliType='region'"><xsl:value-of select="$regionValueProperty"/></xsl:when>
 
-       <xsl:when test="$cliType='image' and $cliChannel='input'"><xsl:value-of select="$imageInputValueProperty"/></xsl:when>
 
-       <xsl:when test="$cliType='image' and $cliChannel='output'"><xsl:value-of select="$imageOutputValueProperty"/></xsl:when>
 
-       <xsl:when test="$cliType='file' and $cliChannel='input'"><xsl:value-of select="$fileInputValueProperty"/></xsl:when>
 
-       <xsl:when test="$cliType='file' and $cliChannel='output'"><xsl:value-of select="$fileOutputValueProperty"/></xsl:when>
 
-       <xsl:when test="$cliType='directory'"><xsl:value-of select="$directoryValueProperty"/></xsl:when>
 
-       <xsl:when test="$cliType='geometry' and $cliChannel='input'"><xsl:value-of select="$geometryInputValueProperty"/></xsl:when>
 
-       <xsl:when test="$cliType='geometry' and $cliChannel='output'"><xsl:value-of select="$geometryOutputValueProperty"/></xsl:when>      
 
-       <xsl:when test="$cliType='integer-vector'"><xsl:value-of select="$vectorValueProperty"/></xsl:when>
 
-       <xsl:when test="$cliType='double-vector'"><xsl:value-of select="$vectorValueProperty"/></xsl:when>
 
-       <xsl:when test="$cliType='float-vector'"><xsl:value-of select="$vectorValueProperty"/></xsl:when>
 
-       <xsl:when test="$cliType='string-vector'"><xsl:value-of select="$vectorValueProperty"/></xsl:when>
 
-       <xsl:when test="$cliType='integer-enumeration'"><xsl:value-of select="$enumerationValueProperty"/></xsl:when>
 
-       <xsl:when test="$cliType='double-enumeration'"><xsl:value-of select="$enumerationValueProperty"/></xsl:when>
 
-       <xsl:when test="$cliType='float-enumeration'"><xsl:value-of select="$enumerationValueProperty"/></xsl:when>
 
-       <xsl:when test="$cliType='string-enumeration'"><xsl:value-of select="$enumerationValueProperty"/></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()|@*"/>
 
-   
 
-   <!-- suppress elements not covered in "connections" mode -->
 
-   <xsl:template match="*" mode="connections"/>
 
-   <!-- suppress elements not covered in "signals" mode -->
 
-   <xsl:template match="*" mode="signals"/>
 
-   <!--
 
-   ===================================================================
 
-     Utility templates
 
-   ===================================================================
 
-   -->
 
-   <xsl:template match="parameters/label">
 
-     <property name="title">
 
-       <string><xsl:value-of select="text()"/></string>
 
-     </property>
 
-   </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">
 
-     <xsl:choose>
 
-       <xsl:when test="../channel">
 
-         <xsl:if test="../channel/text()='output'">
 
-           <property name="{ctk:mapTypeToQtValueProperty(name(..),'output')}">
 
-             <xsl:element name="{ctk:mapTypeToQtDesigner(name(..))}"><xsl:value-of select="text()"/></xsl:element>
 
-           </property>
 
-         </xsl:if>
 
-         <xsl:if test="../channel/text()='input'">
 
-           <property name="{ctk:mapTypeToQtValueProperty(name(..),'input')}">
 
-             <xsl:element name="{ctk:mapTypeToQtDesigner(name(..))}"><xsl:value-of select="text()"/></xsl:element>
 
-           </property>
 
-         </xsl:if>
 
-       </xsl:when>
 
-       <xsl:otherwise>
 
-         <property name="{ctk:mapTypeToQtValueProperty(name(..),'dummy')}">
 
-           <xsl:element name="{ctk:mapTypeToQtDesigner(name(..))}"><xsl:value-of select="text()"/></xsl:element>
 
-         </property>
 
-       </xsl:otherwise>
 
-     </xsl:choose>
 
-   </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:mapTypeToQtDesigner(name(../..))}"><xsl:value-of select="text()"/></xsl:element>
 
-     </property>
 
-   </xsl:template>
 
-   <xsl:template match="constraints/step">
 
-     <property name="singleStep">
 
-       <xsl:element name="{ctk:mapTypeToQtDesigner(name(../..))}"><xsl:value-of select="text()"/></xsl:element>
 
-     </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">
 
-     <item  row="{position()-1}" column="0">
 
-       <widget class="QLabel">
 
-         <property name="sizePolicy">
 
-           <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
 
-             <horstretch>0</horstretch>
 
-             <verstretch>0</verstretch>
 
-           </sizepolicy>
 
-         </property>
 
-         <property name="text">
 
-           <string><xsl:value-of select="./label"/></string>
 
-         </property>
 
-       </widget>
 
-     </item>
 
-   </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>
 
-     <!-- disable simple return parameter -->
 
-     <xsl:if test="index/text()='1000' and channel/text()='output' and $disableReturnParameter='true'">
 
-       <property name="enabled">
 
-         <bool>false</bool>
 
-       </property>
 
-     </xsl:if>
 
-     <property name="parameter:valueProperty"> <!-- property name containing current value -->
 
-     <xsl:choose>
 
-       <xsl:when test="channel">      
 
-         <xsl:if test="channel/text()='output'">
 
-           <string><xsl:value-of select="ctk:mapTypeToQtValueProperty(name(),'output')"/></string>
 
-         </xsl:if>
 
-         <xsl:if test="channel/text()='input'">
 
-           <string><xsl:value-of select="ctk:mapTypeToQtValueProperty(name(),'input')"/></string>
 
-         </xsl:if>
 
-       </xsl:when>      
 
-       <xsl:otherwise>
 
-         <string><xsl:value-of select="ctk:mapTypeToQtValueProperty(name(),'dummy')"/></string>
 
-       </xsl:otherwise> 
 
-     </xsl:choose>
 
-     </property>       
 
-     <!-- add additional (optional) information as properties -->
 
-     <xsl:apply-templates select="default"/>
 
-     <xsl:apply-templates select="constraints"/>
 
-   </xsl:template>
 
-   
 
-   <!-- A named template for creating a QtDesigner stringlist property -->
 
-   <xsl:template name="createQtDesignerStringListProperty">
 
-     <property name="nameFilters">
 
-       <stringlist>
 
-       <xsl:for-each select="tokenize(@fileExtensions, ',')">
 
-         <string>
 
-         <xsl:choose>
 
-           <xsl:when test="starts-with(normalize-space(.), '.')">*</xsl:when>
 
-           <xsl:otherwise>*.</xsl:otherwise>
 
-         </xsl:choose>
 
-         <xsl:value-of select="normalize-space(.)"/>
 
-         </string>
 
-       </xsl:for-each>
 
-       </stringlist>
 
-     </property>
 
-   </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>
 
-     <ui version="4.0" >
 
-       <class><xsl:value-of select="translate(normalize-space($moduleTitle), ' ', '')"/></class>
 
-       <widget class="{$executableWidget}" name="executable:{normalize-space($moduleTitle)}">
 
-         <layout class="QVBoxLayout">
 
-           <!-- This will generate QGroupBox items with the specific widgets -->
 
-           <xsl:apply-templates select="parameters"/>
 
-           <!-- Add a spacer at the bottom -->
 
-           <item>
 
-             <spacer name="verticalSpacer">
 
-               <property name="orientation">
 
-                 <enum>Qt::Vertical</enum>
 
-               </property>
 
-             </spacer>
 
-           </item>
 
-         </layout>
 
-       </widget>
 
-       <connections>
 
-         <xsl:apply-templates mode="connections" select="parameters/*"/>
 
-       </connections>
 
-     </ui>
 
-   </xsl:template>
 
-   <!--
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-     Parameters (default: ctkCollapsibleGroupBox)
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-   -->
 
-   <!-- 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>
 
-     <item>
 
-       <widget class="{$parametersWidget}" name="paramGroup:{$groupLabel}">
 
-         <xsl:apply-templates select="./label"/>
 
-         <xsl:apply-templates select="./description"/>
 
-         <property name="checked">
 
-           <xsl:choose>
 
-             <xsl:when test="@advanced = 'true'">
 
-               <bool>false</bool>
 
-             </xsl:when>      
 
-             <xsl:otherwise>
 
-               <bool>true</bool>            
 
-             </xsl:otherwise>
 
-           </xsl:choose>
 
-         </property>
 
-         <layout class="QVBoxLayout" name="paramContainerLayout:{$groupLabel}">
 
-           <item>
 
-             <widget class="QWidget" name="paramContainer:{$groupLabel}">
 
-               <layout class="QGridLayout">
 
-                 <xsl:apply-templates select="./description/following-sibling::*"/>
 
-               </layout>            
 
-             </widget>
 
-           </item>
 
-         </layout>
 
-       </widget>
 
-     </item>
 
-   </xsl:template>
 
-   <!--
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-     BOOLEAN parameter (default: QCheckbox)
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-   -->
 
-   <xsl:template match="parameters/boolean">
 
-     <xsl:call-template name="gridItemWithLabel"/>
 
-     <item  row="{position()-1}" column="1">
 
-       <widget class="{$booleanWidget}"  name="parameter:{name}">
 
-         <xsl:call-template name="commonWidgetProperties"/>
 
-         <property name="text">
 
-          <string/>
 
-         </property>
 
-       </widget>
 
-     </item>
 
-   </xsl:template>
 
-   <!--
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-     INTEGER parameter (default: QSpinBox)
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-   -->
 
-   <xsl:template match="parameters/integer">
 
-     <xsl:call-template name="gridItemWithLabel"/>
 
-     <item  row="{position()-1}" column="1">
 
-       <widget class="{$integerWidget}"  name="parameter:{name}">
 
-         <xsl:if test="not(constraints)">
 
-           <property name="minimum">
 
-             <number>-999999999</number>
 
-           </property>
 
-           <property name="maximum">
 
-             <number>999999999</number>
 
-           </property>
 
-         </xsl:if>
 
-         <xsl:call-template name="commonWidgetProperties"/>
 
-       </widget>
 
-     </item>
 
-   </xsl:template>
 
-   <!--
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-     DOUBLE, FLOAT parameter (default: QDoubleSpinBox)
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-   -->
 
-   <xsl:template match="parameters/*[name()=('double','float')]">
 
-     <xsl:call-template name="gridItemWithLabel"/>
 
-     <item  row="{position()-1}" column="1">
 
-       <widget class="{$floatingWidget}"  name="parameter:{name}">
 
-         <property name="decimals">
 
-           <number>6</number>
 
-         </property>
 
-         <xsl:if test="not(constraints)">
 
-           <property name="minimum">
 
-             <double>-999999999</double>
 
-           </property>
 
-           <property name="maximum">
 
-             <double>999999999</double>
 
-           </property>
 
-         </xsl:if>
 
-         <xsl:call-template name="commonWidgetProperties"/>
 
-       </widget>
 
-     </item>
 
-   </xsl:template>
 
-   
 
-   <!--
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-     STRING, INTEGER-VECTOR, DOUBLE-VECTOR, FLOAT-VECTOR, STRING-VECTOR parameter (default: QLineEdit)
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-   -->
 
-   <xsl:template match="parameters/*[name()=('string', 'integer-vector', 'float-vector', 'double-vector', 'string-vector')]">
 
-     <xsl:call-template name="gridItemWithLabel"/>
 
-     <item  row="{position()-1}" column="1">
 
-       <widget class="{$vectorWidget}"  name="parameter:{name}">
 
-         <xsl:call-template name="commonWidgetProperties"/>
 
-       </widget>
 
-     </item>
 
-   </xsl:template>
 
-   
 
-   <!--
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-     INTEGER-ENUMERATION, DOUBLE-ENUMERATION, FLOAT-ENUMERATION, STRING-ENUMERATION parameter (default: QComboBox)
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-   -->
 
-   <xsl:template match="parameters/*[name()=('integer-enumeration', 'float-enumeration', 'double-enumeration', 'string-enumeration')]">
 
-     <xsl:call-template name="gridItemWithLabel"/>
 
-     <item  row="{position()-1}" column="1">
 
-       <widget class="{$enumWidget}"  name="parameter:{name}">
 
-         <xsl:call-template name="commonWidgetProperties"/>
 
-         <xsl:for-each select="element">
 
-           <item>
 
-             <property name="text">
 
-               <string><xsl:value-of select="text()"/></string>
 
-             </property>
 
-           </item>
 
-         </xsl:for-each>
 
-       </widget>
 
-     </item>
 
-   </xsl:template>
 
-   
 
-   <!--
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-     IMAGE parameter (default: ctkPathLineEdit)
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-   -->
 
-   <xsl:template match="parameters/*[name()=('image')]">
 
-     <xsl:call-template name="gridItemWithLabel"/>
 
-     <item  row="{position()-1}" column="1">
 
-       <xsl:choose>
 
-         <xsl:when test="channel = 'input'">
 
-           <widget class="{$imageInputWidget}"  name="parameter:{name}">
 
-             <xsl:call-template name="commonWidgetProperties"/>
 
-             <xsl:call-template name="createQtDesignerStringListProperty"/>
 
-             <xsl:if test="$imageInputSetProperty != ''">
 
-               <property name="{$imageInputSetProperty}">
 
-                 <set><xsl:value-of select="$imageInputSetValue"/></set>
 
-               </property>
 
-             </xsl:if>
 
-           </widget>
 
-         </xsl:when>
 
-         <xsl:otherwise>
 
-           <widget class="{$imageOutputWidget}"  name="parameter:{name}">
 
-             <xsl:call-template name="commonWidgetProperties"/>
 
-             <xsl:call-template name="createQtDesignerStringListProperty"/>
 
-             <xsl:if test="$imageOutputSetProperty != ''">
 
-               <property name="{$imageOutputSetProperty}">
 
-                 <set><xsl:value-of select="$imageOutputSetValue"/></set>
 
-               </property>
 
-             </xsl:if>
 
-           </widget>
 
-         </xsl:otherwise>
 
-       </xsl:choose>
 
-     </item>
 
-   </xsl:template>
 
-   <!--
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-     FILE, GEOMETRY parameter (default: ctkPathLineEdit)
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-   -->
 
-   <xsl:template match="parameters/*[name()=('file', 'geometry')]">
 
-     <xsl:call-template name="gridItemWithLabel"/>
 
-     <item  row="{position()-1}" column="1">
 
-       <xsl:choose>
 
-         <xsl:when test="channel = 'input'">
 
-           <widget class="{$fileInputWidget}"  name="parameter:{name}">
 
-             <xsl:call-template name="commonWidgetProperties"/>
 
-             <xsl:call-template name="createQtDesignerStringListProperty"/>
 
-             <xsl:if test="$fileInputSetProperty != ''">
 
-               <property name="{$fileInputSetProperty}">
 
-                 <set><xsl:value-of select="$fileInputSetValue"/></set>
 
-               </property>
 
-             </xsl:if>
 
-           </widget>
 
-         </xsl:when>
 
-         <xsl:otherwise>
 
-           <widget class="{$fileOutputWidget}"  name="parameter:{name}">
 
-             <xsl:call-template name="commonWidgetProperties"/>
 
-             <xsl:call-template name="createQtDesignerStringListProperty"/>
 
-             <xsl:if test="$fileOutputSetProperty != ''">
 
-               <property name="{$fileOutputSetProperty}">
 
-                 <set><xsl:value-of select="$fileOutputSetValue"/></set>
 
-               </property>
 
-             </xsl:if>
 
-           </widget>
 
-         </xsl:otherwise>
 
-       </xsl:choose>
 
-     </item>
 
-   </xsl:template>
 
-   <!--
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-     DIRECTORY parameter (default: ctkPathLineEdit)
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-   -->
 
-   <xsl:template match="parameters/directory">
 
-     <xsl:call-template name="gridItemWithLabel"/>
 
-     <item  row="{position()-1}" column="1">
 
-       <widget class="{$directoryWidget}"  name="parameter:{name}">
 
-         <xsl:call-template name="commonWidgetProperties"/>
 
-         <property name="filters">
 
-           <set>ctkPathLineEdit::Dirs</set>
 
-         </property>
 
-       </widget>
 
-     </item>
 
-   </xsl:template>
 
-   
 
-   <!--
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-     POINT, REGION parameter (default: ctkCoordinatesWidget)
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-   -->
 
-   <xsl:template match="parameters/*[name()=('point', 'region')]">
 
-     <xsl:call-template name="gridItemWithLabel"/>
 
-     <item  row="{position()-1}" column="1">
 
-       <widget class="{$pointWidget}"  name="parameter:{name}">
 
-         <xsl:call-template name="commonWidgetProperties"/>
 
-       </widget>
 
-     </item>
 
-   </xsl:template>
 
-   
 
-   <!--
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-     NOT IMPLEMENTED YET
 
-   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-   -->
 
-   
 
-   <xsl:template match="parameters/*" priority="-1">
 
-     <xsl:call-template name="gridItemWithLabel"/>
 
-     <item  row="{position()-1}" column="1">
 
-       <widget class="{$unsupportedWidget}"  name="{name}">
 
-         <property name="text">
 
-           <string><html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body><p style="margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">Element '<xsl:value-of select="name()"/>' not supported yet.</span></p></body></html></string>
 
-         </property>
 
-         <property name="textFormat">
 
-          <enum>Qt::RichText</enum>
 
-         </property>
 
-       </widget>
 
-     </item>
 
-   </xsl:template>
 
-   <!-- EXTRA TRANSFORMATIONS -->
 
- </xsl:stylesheet>
 
 
  |