tools/designer/data/generate_shared.xsl
changeset 0 1918ee327afb
equal deleted inserted replaced
-1:000000000000 0:1918ee327afb
       
     1 <!DOCTYPE xsl:stylesheet [
       
     2      <!ENTITY endl "&#10;">
       
     3 ]>
       
     4 <xsl:stylesheet version="1.0"
       
     5                 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
       
     6                 xmlns:xs="http://www.w3.org/2001/XMLSchema">
       
     7 
       
     8 <!-- Hack to make names camel case
       
     9      All names in UI files are lowercase, while the element names are
       
    10      capital case. To make the UI files conforming to the XSD file + keep
       
    11      the DOM interface we rename them here -->
       
    12     <xsl:template name="camel-case">
       
    13         <xsl:param name="text"/>
       
    14     <xsl:choose>
       
    15         <xsl:when test="$text='exportmacro'">exportMacro</xsl:when>
       
    16         <xsl:when test="$text='layoutdefault'">layoutDefault</xsl:when>
       
    17         <xsl:when test="$text='layoutfunction'">layoutFunction</xsl:when>
       
    18         <xsl:when test="$text='pixmapfunction'">pixmapFunction</xsl:when>
       
    19         <xsl:when test="$text='customwidgets'">customWidgets</xsl:when>
       
    20         <xsl:when test="$text='tabstops'">tabStops</xsl:when>
       
    21         <xsl:when test="$text='tabstop'">tabStop</xsl:when>
       
    22         <xsl:when test="$text='buttongroups'">buttonGroups</xsl:when>
       
    23         <xsl:when test="$text='exportmacro'">exportMacro</xsl:when>
       
    24         <xsl:when test="$text='actiongroup'">actionGroup</xsl:when>
       
    25         <xsl:when test="$text='buttongroup'">buttonGroup</xsl:when>
       
    26         <xsl:when test="$text='customwidget'">customWidget</xsl:when>
       
    27         <xsl:when test="$text='sizehint'">sizeHint</xsl:when>
       
    28         <xsl:when test="$text='addpagemethod'">addPageMethod</xsl:when>
       
    29         <xsl:when test="$text='sizepolicy'">sizePolicy</xsl:when>
       
    30         <xsl:when test="$text='hordata'">horData</xsl:when>
       
    31         <xsl:when test="$text='verdata'">verData</xsl:when>
       
    32         <xsl:when test="$text='rowspan'">rowSpan</xsl:when>
       
    33         <xsl:when test="$text='colspan'">colSpan</xsl:when>
       
    34         <xsl:when test="$text='addaction'">addAction</xsl:when>
       
    35         <xsl:when test="$text='zorder'">zOrder</xsl:when>
       
    36         <xsl:when test="$text='startx'">startX</xsl:when>
       
    37         <xsl:when test="$text='starty'">startY</xsl:when>
       
    38         <xsl:when test="$text='endx'">endX</xsl:when>
       
    39         <xsl:when test="$text='endy'">endY</xsl:when>
       
    40         <xsl:when test="$text='centralx'">centralX</xsl:when>
       
    41         <xsl:when test="$text='centraly'">centralY</xsl:when>
       
    42         <xsl:when test="$text='focalx'">focalX</xsl:when>
       
    43         <xsl:when test="$text='focaly'">focalY</xsl:when>
       
    44         <xsl:when test="$text='widgetdata'">widgetData</xsl:when>
       
    45         <xsl:when test="$text='coordinatemode'">coordinateMode</xsl:when>
       
    46         <xsl:when test="$text='brushstyle'">brushStyle</xsl:when>
       
    47         <xsl:when test="$text='colorrole'">colorRole</xsl:when>
       
    48         <xsl:when test="$text='pointsize'">pointSize</xsl:when>
       
    49         <xsl:when test="$text='strikeout'">strikeOut</xsl:when>
       
    50         <xsl:when test="$text='stylestrategy'">styleStrategy</xsl:when>
       
    51         <xsl:when test="$text='hsizetype'">hSizeType</xsl:when>
       
    52         <xsl:when test="$text='vsizetype'">vSizeType</xsl:when>
       
    53         <xsl:when test="$text='horstretch'">horStretch</xsl:when>
       
    54         <xsl:when test="$text='verstretch'">verStretch</xsl:when>
       
    55         <xsl:when test="$text='normaloff'">normalOff</xsl:when>
       
    56         <xsl:when test="$text='normalon'">normalOn</xsl:when>
       
    57         <xsl:when test="$text='disabledoff'">disabledOff</xsl:when>
       
    58         <xsl:when test="$text='disabledon'">disabledOn</xsl:when>
       
    59         <xsl:when test="$text='activeoff'">activeOff</xsl:when>
       
    60         <xsl:when test="$text='activeon'">activeOn</xsl:when>
       
    61         <xsl:when test="$text='selectedoff'">selectedOff</xsl:when>
       
    62         <xsl:when test="$text='selectedon'">selectedOn</xsl:when>
       
    63         <xsl:when test="$text='cursorshape'">cursorShape</xsl:when>
       
    64         <xsl:when test="$text='iconset'">iconSet</xsl:when>
       
    65         <xsl:when test="$text='stringlist'">stringList</xsl:when>
       
    66         <xsl:when test="$text='datetime'">dateTime</xsl:when>
       
    67         <xsl:when test="$text='pointf'">pointF</xsl:when>
       
    68         <xsl:when test="$text='rectf'">rectF</xsl:when>
       
    69         <xsl:when test="$text='sizef'">sizeF</xsl:when>
       
    70         <xsl:when test="$text='longlong'">longLong</xsl:when>
       
    71         <xsl:when test="$text='uint'">UInt</xsl:when>
       
    72         <xsl:when test="$text='ulonglong'">uLongLong</xsl:when>
       
    73         <xsl:when test="$text='rowstretch'">rowStretch</xsl:when>
       
    74         <xsl:when test="$text='columnstretch'">columnStretch</xsl:when>
       
    75         <xsl:when test="$text='rowminimumheight'">rowMinimumHeight</xsl:when>
       
    76         <xsl:when test="$text='columnminimumwidth'">columnMinimumWidth</xsl:when>
       
    77         <xsl:when test="$text='extracomment'">extraComment</xsl:when>
       
    78        <xsl:otherwise><xsl:value-of select="$text"/></xsl:otherwise>
       
    79     </xsl:choose>
       
    80     </xsl:template>
       
    81 
       
    82 
       
    83 <!-- Convenience templates -->
       
    84 
       
    85     <xsl:template name="cap-first-char">
       
    86         <xsl:param name="text"/>
       
    87         <xsl:value-of select="concat(translate(substring($text, 1, 1), 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'), substring($text, 2))" />
       
    88     </xsl:template>
       
    89 
       
    90     <xsl:template name="lower-text">
       
    91         <xsl:param name="text"/>
       
    92 
       
    93         <xsl:if test="boolean($text)">
       
    94             <xsl:variable name="head" select="substring($text, 1, 1)"/>
       
    95             <xsl:variable name="tail" select="substring($text, 2)"/>
       
    96             <xsl:variable name="lower-head" select="translate($text, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')"/>
       
    97             <xsl:variable name="lower-tail">
       
    98                 <xsl:call-template name="lower-text">
       
    99                     <xsl:with-param name="text" select="tail"/>
       
   100                 </xsl:call-template>
       
   101             </xsl:variable>
       
   102             <xsl:value-of select='concat($lower-head, $lower-tail)'/>
       
   103         </xsl:if>
       
   104     </xsl:template>
       
   105 
       
   106     <xsl:template name="powers-of-two">
       
   107         <xsl:param name="num"/>
       
   108 
       
   109         <xsl:choose>
       
   110             <xsl:when test="$num=0">1</xsl:when>
       
   111             <xsl:otherwise>
       
   112                 <xsl:variable name="x">
       
   113                     <xsl:call-template name="powers-of-two">
       
   114                         <xsl:with-param name="num" select="$num - 1"/>
       
   115                     </xsl:call-template>
       
   116                 </xsl:variable>
       
   117                 <xsl:value-of select="2*$x"/>
       
   118             </xsl:otherwise>
       
   119         </xsl:choose>
       
   120     </xsl:template>
       
   121 
       
   122 <!-- Convenience templates: xs-types to c++ types conversions -->
       
   123 
       
   124     <xsl:template name="xs-type-from-qstring-func">
       
   125         <xsl:param name="xs-type"/>
       
   126         <xsl:param name="val"/>
       
   127         <xsl:choose>
       
   128             <xsl:when test="$xs-type='xs:string'">
       
   129                 <xsl:value-of select="$val"/>
       
   130             </xsl:when>
       
   131             <xsl:when test="$xs-type='xs:integer'">
       
   132                 <xsl:value-of select="$val"/>
       
   133                 <xsl:text>.toInt()</xsl:text>
       
   134             </xsl:when>
       
   135             <xsl:when test="$xs-type='xs:float'">
       
   136                 <xsl:value-of select="$val"/>
       
   137                 <xsl:text>.toFloat()</xsl:text>
       
   138             </xsl:when>
       
   139             <xsl:when test="$xs-type='xs:double'">
       
   140                 <xsl:value-of select="$val"/>
       
   141                 <xsl:text>.toDouble()</xsl:text>
       
   142             </xsl:when>
       
   143             <xsl:when test="$xs-type='xs:boolean'">
       
   144                 <xsl:text>(</xsl:text>
       
   145                 <xsl:value-of select="$val"/>
       
   146                 <xsl:text> == QLatin1String("true") ? true : false)</xsl:text>
       
   147             </xsl:when>
       
   148             <xsl:when test="$xs-type='xs:long'">
       
   149                 <xsl:value-of select="$val"/>
       
   150                 <xsl:text>.toLongLong()</xsl:text>
       
   151             </xsl:when>
       
   152             <xsl:when test="$xs-type='xs:unsignedInt'">
       
   153                 <xsl:value-of select="$val"/>
       
   154                 <xsl:text>.toUInt()</xsl:text>
       
   155             </xsl:when>
       
   156             <xsl:when test="$xs-type='xs:unsignedLong'">
       
   157                 <xsl:value-of select="$val"/>
       
   158                 <xsl:text>.toULongLong()</xsl:text>
       
   159             </xsl:when>
       
   160             <xsl:otherwise>### BZZZZT! ###</xsl:otherwise>
       
   161         </xsl:choose>
       
   162     </xsl:template>
       
   163 
       
   164     <xsl:template name="xs-type-to-qstring-func">
       
   165         <xsl:param name="xs-type"/>
       
   166         <xsl:param name="val"/>
       
   167         <xsl:choose>
       
   168             <xsl:when test="$xs-type='xs:string'">
       
   169                 <xsl:value-of select="$val"/>
       
   170             </xsl:when>
       
   171             <xsl:when test="$xs-type='xs:integer'">
       
   172                 <xsl:text>QString::number(</xsl:text>
       
   173                 <xsl:value-of select="$val"/>
       
   174                 <xsl:text>)</xsl:text>
       
   175             </xsl:when>
       
   176             <xsl:when test="$xs-type='xs:long'">
       
   177                 <xsl:text>QString::number(</xsl:text>
       
   178                 <xsl:value-of select="$val"/>
       
   179                 <xsl:text>)</xsl:text>
       
   180             </xsl:when>
       
   181             <xsl:when test="$xs-type='xs:unsignedInt'">
       
   182                 <xsl:text>QString::number(</xsl:text>
       
   183                 <xsl:value-of select="$val"/>
       
   184                 <xsl:text>)</xsl:text>
       
   185             </xsl:when>
       
   186             <xsl:when test="$xs-type='xs:unsignedLong'">
       
   187                 <xsl:text>QString::number(</xsl:text>
       
   188                 <xsl:value-of select="$val"/>
       
   189                 <xsl:text>)</xsl:text>
       
   190             </xsl:when>
       
   191             <xsl:when test="$xs-type='xs:float'">
       
   192                 <xsl:text>QString::number(</xsl:text>
       
   193                 <xsl:value-of select="$val"/>
       
   194                 <xsl:text>, 'f', 8)</xsl:text>
       
   195             </xsl:when>
       
   196             <xsl:when test="$xs-type='xs:double'">
       
   197                 <xsl:text>QString::number(</xsl:text>
       
   198                 <xsl:value-of select="$val"/>
       
   199                 <xsl:text>, 'f', 15)</xsl:text>
       
   200             </xsl:when>
       
   201             <xsl:when test="$xs-type='xs:boolean'">
       
   202                 <xsl:text>(</xsl:text>
       
   203                 <xsl:value-of select="$val"/>
       
   204                 <xsl:text> ? QLatin1String("true") : QLatin1String("false"))</xsl:text>
       
   205             </xsl:when>
       
   206             <xsl:otherwise>### BZZZZT! ###</xsl:otherwise>
       
   207         </xsl:choose>
       
   208     </xsl:template>
       
   209 
       
   210     <xsl:template name="xs-type-category">
       
   211         <xsl:param name="xs-type"/>
       
   212         <xsl:param name="array" select="false"/>
       
   213         <xsl:choose>
       
   214             <xsl:when test="$array">value</xsl:when>
       
   215             <xsl:otherwise>
       
   216                 <xsl:choose>
       
   217                     <xsl:when test="$xs-type='xs:string'">value</xsl:when>
       
   218                     <xsl:when test="$xs-type='xs:integer'">value</xsl:when>
       
   219                     <xsl:when test="$xs-type='xs:float'">value</xsl:when>
       
   220                     <xsl:when test="$xs-type='xs:double'">value</xsl:when>
       
   221                     <xsl:when test="$xs-type='xs:boolean'">value</xsl:when>
       
   222                     <xsl:when test="$xs-type='xs:long'">value</xsl:when>
       
   223                     <xsl:when test="$xs-type='xs:unsignedInt'">value</xsl:when>
       
   224                     <xsl:when test="$xs-type='xs:unsignedLong'">value</xsl:when>
       
   225                     <xsl:otherwise>pointer</xsl:otherwise>
       
   226                 </xsl:choose>
       
   227             </xsl:otherwise>
       
   228         </xsl:choose>
       
   229     </xsl:template>
       
   230 
       
   231     <xsl:template name="xs-type-to-cpp-type">
       
   232         <xsl:param name="xs-type"/>
       
   233         <xsl:param name="array" select="false"/>
       
   234         <xsl:choose>
       
   235             <xsl:when test="$array">
       
   236                 <xsl:choose>
       
   237                     <xsl:when test="$xs-type='xs:string'">QStringList</xsl:when>
       
   238                     <xsl:when test="$xs-type='xs:integer'">QList&lt;int&gt;</xsl:when>
       
   239                     <xsl:when test="$xs-type='xs:float'">QList&lt;float&gt;</xsl:when>
       
   240                     <xsl:when test="$xs-type='xs:double'">QList&lt;double&gt;</xsl:when>
       
   241                     <xsl:when test="$xs-type='xs:boolean'">QList&lt;bool&gt;</xsl:when>
       
   242                     <xsl:when test="$xs-type='xs:long'">QList&lt;qlonglong&gt;</xsl:when>
       
   243                     <xsl:when test="$xs-type='xs:unsignedInt'">QList&lt;uint&gt;</xsl:when>
       
   244                     <xsl:when test="$xs-type='xs:unsignedLong'">QList&lt;qulonglong&gt;</xsl:when>
       
   245                     <xsl:otherwise>QList&lt;Dom<xsl:value-of select="$xs-type"/>*&gt;</xsl:otherwise>
       
   246                 </xsl:choose>
       
   247             </xsl:when>
       
   248             <xsl:otherwise>
       
   249                 <xsl:choose>
       
   250                     <xsl:when test="$xs-type='xs:string'">QString</xsl:when>
       
   251                     <xsl:when test="$xs-type='xs:integer'">int</xsl:when>
       
   252                     <xsl:when test="$xs-type='xs:float'">float</xsl:when>
       
   253                     <xsl:when test="$xs-type='xs:double'">double</xsl:when>
       
   254                     <xsl:when test="$xs-type='xs:boolean'">bool</xsl:when>
       
   255                     <xsl:when test="$xs-type='xs:long'">qlonglong</xsl:when>
       
   256                     <xsl:when test="$xs-type='xs:unsignedInt'">uint</xsl:when>
       
   257                     <xsl:when test="$xs-type='xs:unsignedLong'">qulonglong</xsl:when>
       
   258                     <xsl:otherwise>Dom<xsl:value-of select="$xs-type"/></xsl:otherwise>
       
   259                 </xsl:choose>
       
   260             </xsl:otherwise>
       
   261         </xsl:choose>
       
   262     </xsl:template>
       
   263 
       
   264     <xsl:template name="xs-type-to-cpp-return-type">
       
   265         <xsl:param name="xs-type"/>
       
   266         <xsl:param name="array" select="false"/>
       
   267         <xsl:choose>
       
   268             <xsl:when test="$array">
       
   269                 <xsl:choose>
       
   270                     <xsl:when test="$xs-type='xs:string'">QStringList</xsl:when>
       
   271                     <xsl:when test="$xs-type='xs:integer'">QList&lt;int&gt;</xsl:when>
       
   272                     <xsl:when test="$xs-type='xs:float'">QList&lt;float&gt;</xsl:when>
       
   273                     <xsl:when test="$xs-type='xs:double'">QList&lt;double&gt;</xsl:when>
       
   274                     <xsl:when test="$xs-type='xs:boolean'">QList&lt;bool&gt;</xsl:when>
       
   275                     <xsl:when test="$xs-type='xs:long'">QList&lt;qlonglong&gt;</xsl:when>
       
   276                     <xsl:when test="$xs-type='xs:unsignedInt'">QList&lt;uint&gt;</xsl:when>
       
   277                     <xsl:when test="$xs-type='xs:unsignedLong'">QList&lt;qulonglong&gt;</xsl:when>
       
   278                     <xsl:otherwise>QList&lt;Dom<xsl:value-of select="$xs-type"/>*&gt;</xsl:otherwise>
       
   279                 </xsl:choose>
       
   280             </xsl:when>
       
   281             <xsl:otherwise>
       
   282                 <xsl:choose>
       
   283                     <xsl:when test="$xs-type='xs:string'">QString</xsl:when>
       
   284                     <xsl:when test="$xs-type='xs:integer'">int</xsl:when>
       
   285                     <xsl:when test="$xs-type='xs:float'">float</xsl:when>
       
   286                     <xsl:when test="$xs-type='xs:double'">double</xsl:when>
       
   287                     <xsl:when test="$xs-type='xs:boolean'">bool</xsl:when>
       
   288                     <xsl:when test="$xs-type='xs:long'">qlonglong</xsl:when>
       
   289                     <xsl:when test="$xs-type='xs:unsignedInt'">uint</xsl:when>
       
   290                     <xsl:when test="$xs-type='xs:unsignedLong'">qulonglong</xsl:when>
       
   291                     <xsl:otherwise>Dom<xsl:value-of select="$xs-type"/>*</xsl:otherwise>
       
   292                 </xsl:choose>
       
   293             </xsl:otherwise>
       
   294         </xsl:choose>
       
   295     </xsl:template>
       
   296 
       
   297     <xsl:template name="xs-type-to-cpp-argument-type">
       
   298         <xsl:param name="xs-type"/>
       
   299         <xsl:param name="array" select="false"/>
       
   300         <xsl:choose>
       
   301             <xsl:when test="$array">
       
   302                 <xsl:choose>
       
   303                     <xsl:when test="$xs-type='xs:string'">const QStringList&amp;</xsl:when>
       
   304                     <xsl:when test="$xs-type='xs:integer'">const QList&lt;int&gt;&amp;</xsl:when>
       
   305                     <xsl:when test="$xs-type='xs:float'">const QList&lt;float&gt;&amp;</xsl:when>
       
   306                     <xsl:when test="$xs-type='xs:double'">const QList&lt;double&gt;&amp;</xsl:when>
       
   307                     <xsl:when test="$xs-type='xs:boolean'">const QList&lt;bool&gt;&amp;</xsl:when>
       
   308                     <xsl:when test="$xs-type='xs:long'">const QList&lt;qlonglong&gt;&amp;</xsl:when>
       
   309                     <xsl:when test="$xs-type='xs:unsignedInt'">const QList&lt;uint&gt;&amp;</xsl:when>
       
   310                     <xsl:when test="$xs-type='xs:unsignedLong'">const QList&lt;qulonglong&gt;&amp;</xsl:when>
       
   311                     <xsl:otherwise>const QList&lt;Dom<xsl:value-of select="$xs-type"/>*&gt;&amp;</xsl:otherwise>
       
   312                 </xsl:choose>
       
   313             </xsl:when>
       
   314             <xsl:otherwise>
       
   315                 <xsl:choose>
       
   316                     <xsl:when test="$xs-type='xs:string'">const QString&amp;</xsl:when>
       
   317                     <xsl:when test="$xs-type='xs:integer'">int</xsl:when>
       
   318                     <xsl:when test="$xs-type='xs:float'">float</xsl:when>
       
   319                     <xsl:when test="$xs-type='xs:double'">double</xsl:when>
       
   320                     <xsl:when test="$xs-type='xs:boolean'">bool</xsl:when>
       
   321                     <xsl:when test="$xs-type='xs:long'">qlonglong</xsl:when>
       
   322                     <xsl:when test="$xs-type='xs:unsignedInt'">uint</xsl:when>
       
   323                     <xsl:when test="$xs-type='xs:unsignedLong'">qulonglong</xsl:when>
       
   324                     <xsl:otherwise>Dom<xsl:value-of select="$xs-type"/>*</xsl:otherwise>
       
   325                 </xsl:choose>
       
   326             </xsl:otherwise>
       
   327         </xsl:choose>
       
   328     </xsl:template>
       
   329 
       
   330 
       
   331 </xsl:stylesheet>