1 <!DOCTYPE xsl:stylesheet [
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">
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"/>
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>
83 <!-- Convenience templates -->
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))" />
90 <xsl:template name=
"lower-text">
91 <xsl:param name=
"text"/>
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"/>
102 <xsl:value-of select='concat($lower-head, $lower-tail)'
/>
106 <xsl:template name=
"powers-of-two">
107 <xsl:param name=
"num"/>
110 <xsl:when test=
"$num=0">1</xsl:when>
112 <xsl:variable name=
"x">
113 <xsl:call-template name=
"powers-of-two">
114 <xsl:with-param name=
"num" select=
"$num - 1"/>
117 <xsl:value-of select=
"2*$x"/>
122 <!-- Convenience templates: xs-types to c++ types conversions -->
124 <xsl:template name=
"xs-type-from-qstring-func">
125 <xsl:param name=
"xs-type"/>
126 <xsl:param name=
"val"/>
128 <xsl:when test=
"$xs-type='xs:string'">
129 <xsl:value-of select=
"$val"/>
131 <xsl:when test=
"$xs-type='xs:integer'">
132 <xsl:value-of select=
"$val"/>
133 <xsl:text>.toInt()
</xsl:text>
135 <xsl:when test=
"$xs-type='xs:float'">
136 <xsl:value-of select=
"$val"/>
137 <xsl:text>.toFloat()
</xsl:text>
139 <xsl:when test=
"$xs-type='xs:double'">
140 <xsl:value-of select=
"$val"/>
141 <xsl:text>.toDouble()
</xsl:text>
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>
148 <xsl:when test=
"$xs-type='xs:long'">
149 <xsl:value-of select=
"$val"/>
150 <xsl:text>.toLongLong()
</xsl:text>
152 <xsl:when test=
"$xs-type='xs:unsignedInt'">
153 <xsl:value-of select=
"$val"/>
154 <xsl:text>.toUInt()
</xsl:text>
156 <xsl:when test=
"$xs-type='xs:unsignedLong'">
157 <xsl:value-of select=
"$val"/>
158 <xsl:text>.toULongLong()
</xsl:text>
160 <xsl:otherwise>### BZZZZT! ###
</xsl:otherwise>
164 <xsl:template name=
"xs-type-to-qstring-func">
165 <xsl:param name=
"xs-type"/>
166 <xsl:param name=
"val"/>
168 <xsl:when test=
"$xs-type='xs:string'">
169 <xsl:value-of select=
"$val"/>
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>
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>
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>
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>
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>
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>
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>
206 <xsl:otherwise>### BZZZZT! ###
</xsl:otherwise>
210 <xsl:template name=
"xs-type-category">
211 <xsl:param name=
"xs-type"/>
212 <xsl:param name=
"array" select=
"false"/>
214 <xsl:when test=
"$array">value
</xsl:when>
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>
231 <xsl:template name=
"xs-type-to-cpp-type">
232 <xsl:param name=
"xs-type"/>
233 <xsl:param name=
"array" select=
"false"/>
235 <xsl:when test=
"$array">
237 <xsl:when test=
"$xs-type='xs:string'">QStringList
</xsl:when>
238 <xsl:when test=
"$xs-type='xs:integer'">QList
<int
></xsl:when>
239 <xsl:when test=
"$xs-type='xs:float'">QList
<float
></xsl:when>
240 <xsl:when test=
"$xs-type='xs:double'">QList
<double
></xsl:when>
241 <xsl:when test=
"$xs-type='xs:boolean'">QList
<bool
></xsl:when>
242 <xsl:when test=
"$xs-type='xs:long'">QList
<qlonglong
></xsl:when>
243 <xsl:when test=
"$xs-type='xs:unsignedInt'">QList
<uint
></xsl:when>
244 <xsl:when test=
"$xs-type='xs:unsignedLong'">QList
<qulonglong
></xsl:when>
245 <xsl:otherwise>QList
<Dom
<xsl:value-of select=
"$xs-type"/>*
></xsl:otherwise>
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>
264 <xsl:template name=
"xs-type-to-cpp-return-type">
265 <xsl:param name=
"xs-type"/>
266 <xsl:param name=
"array" select=
"false"/>
268 <xsl:when test=
"$array">
270 <xsl:when test=
"$xs-type='xs:string'">QStringList
</xsl:when>
271 <xsl:when test=
"$xs-type='xs:integer'">QList
<int
></xsl:when>
272 <xsl:when test=
"$xs-type='xs:float'">QList
<float
></xsl:when>
273 <xsl:when test=
"$xs-type='xs:double'">QList
<double
></xsl:when>
274 <xsl:when test=
"$xs-type='xs:boolean'">QList
<bool
></xsl:when>
275 <xsl:when test=
"$xs-type='xs:long'">QList
<qlonglong
></xsl:when>
276 <xsl:when test=
"$xs-type='xs:unsignedInt'">QList
<uint
></xsl:when>
277 <xsl:when test=
"$xs-type='xs:unsignedLong'">QList
<qulonglong
></xsl:when>
278 <xsl:otherwise>QList
<Dom
<xsl:value-of select=
"$xs-type"/>*
></xsl:otherwise>
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>
297 <xsl:template name=
"xs-type-to-cpp-argument-type">
298 <xsl:param name=
"xs-type"/>
299 <xsl:param name=
"array" select=
"false"/>
301 <xsl:when test=
"$array">
303 <xsl:when test=
"$xs-type='xs:string'">const QStringList
&</xsl:when>
304 <xsl:when test=
"$xs-type='xs:integer'">const QList
<int
>&</xsl:when>
305 <xsl:when test=
"$xs-type='xs:float'">const QList
<float
>&</xsl:when>
306 <xsl:when test=
"$xs-type='xs:double'">const QList
<double
>&</xsl:when>
307 <xsl:when test=
"$xs-type='xs:boolean'">const QList
<bool
>&</xsl:when>
308 <xsl:when test=
"$xs-type='xs:long'">const QList
<qlonglong
>&</xsl:when>
309 <xsl:when test=
"$xs-type='xs:unsignedInt'">const QList
<uint
>&</xsl:when>
310 <xsl:when test=
"$xs-type='xs:unsignedLong'">const QList
<qulonglong
>&</xsl:when>
311 <xsl:otherwise>const QList
<Dom
<xsl:value-of select=
"$xs-type"/>*
>&</xsl:otherwise>
316 <xsl:when test=
"$xs-type='xs:string'">const QString
&</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>