diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 90825e2392b2d70e43c7a25b8a3752299a933894 (patch) | |
tree | e33aa27f02b74604afbfd0ea4f1cfca8833d882a /qtjava/designer/juic/java/put.xsl | |
download | tdebindings-90825e2392b2d70e43c7a25b8a3752299a933894.tar.gz tdebindings-90825e2392b2d70e43c7a25b8a3752299a933894.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebindings@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'qtjava/designer/juic/java/put.xsl')
-rw-r--r-- | qtjava/designer/juic/java/put.xsl | 486 |
1 files changed, 486 insertions, 0 deletions
diff --git a/qtjava/designer/juic/java/put.xsl b/qtjava/designer/juic/java/put.xsl new file mode 100644 index 00000000..472ad8f6 --- /dev/null +++ b/qtjava/designer/juic/java/put.xsl @@ -0,0 +1,486 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- + ** Author: Marco Ladermann <marco.ladermann@gmx.de> + ** Date: Tue Jan 28 17:19:16 CET 2003 @721 /Internet Time/ + ** + ** This software is free software. It is released under the terms of the + ** GNU Lesser General Public Licence (LGPL) + ** see http://www.gnu.org/copyleft/lesser.html + ** + ** These stylesheets are distributed in the hope that they will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + --> +<xsl:stylesheet + version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:exsl="http://exslt.org/common" + xmlns:date="http://exslt.org/dates-and-times" + xmlns:redirect="http://xml.apache.org/xalan/redirect" + xmlns:saxon="http://icl.com/saxon" + xmlns:kde="http://kde.org/functions" + xmlns:java="http://kde.org/java" + extension-element-prefixes="exsl redirect saxon" + > + <!-- + ** This is the toplevel stylesheet of the language dependend parts + --> + + <xsl:import href="definitions.xsl"/> + <xsl:import href="properties.xsl"/> + <xsl:import href="methods.xsl"/> + <xsl:include href="../common/util.xsl"/> + <xsl:include href="util.xsl"/> + + <xsl:variable name="mainClass" select="/UI/class"/> + + <!-- read XML file with Information about the Qt classes for Java --> + <xsl:variable name="qtJavaClassesXml" select="'JavaClasses.xml'"/> + <!--<xsl:variable name="qtJavaClasses" select="document($qtJavaClassesXml)"/> --> + + <xsl:variable name="nlIndent8" select="concat($newline, ' ')"/> + + <!-- + ** This template starts the whole process. + ** + --> + <xsl:template match="/"> + <xsl:variable name="file"> + <xsl:choose> + <xsl:when test="$package = ''"> + <xsl:value-of select="concat($outdir, '/', $mainClass, '.java')"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="concat($outdir, '/', translate($package, '.', '/'), '/', $mainClass, '.java')"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:choose> + <xsl:when test="element-available('exsl:document')"> + <xsl:message>Using output file <xsl:value-of select="$file"/> with Exslt extension</xsl:message> + <exsl:document href="{$file}" method="text"> + <xsl:apply-templates mode="main" select="/"/> + </exsl:document> + </xsl:when> + <xsl:when test="element-available('saxon:output')"> + <xsl:message>Using output file <xsl:value-of select="$file"/> with Saxon extension</xsl:message> + <saxon:output href="{$file}" method="text"> + <xsl:apply-templates mode="main" select="/"/> + </saxon:output> + </xsl:when> + <xsl:when test="element-available('redirect:write')"> + <xsl:message>Using output file <xsl:value-of select="$file"/> with Xalan extension</xsl:message> + <redirect:write file="$file" method="text"> + <xsl:apply-templates mode="main" select="/"/> + </redirect:write> + </xsl:when> + <xsl:otherwise> + <xsl:message>Using stdout</xsl:message> + <xsl:apply-templates mode="main" select="/"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- + ** Put the file header + ** @param comment from ui file + ** @param author name of author from ui file + ** @param data opaque data for user purpose + --> + <xsl:template name="putFileHeader"> + <xsl:param name="comment"/> + <xsl:param name="author"/> + <xsl:param name="data"/> + <xsl:text>/* + * </xsl:text><xsl:value-of select="$mainClass"/><xsl:text>.java + * + * This class is generated from a UI description generated by + * the QtDesigner with XSLT. + * + * DO NOT EDIT! File will be overidden + * + * Author: </xsl:text> + <xsl:value-of select="$author"/> + <xsl:text> + * Date: </xsl:text><xsl:value-of select="date:date()"/> + <xsl:text> + * Comment: </xsl:text> +<xsl:value-of select="$comment"/> + <xsl:text> + */ +</xsl:text> + </xsl:template> + + <!-- + ** Put the class preamble. Use this to generate package information, imports etc. + ** @param classes node-set with sorted list of all classes needed + ** @param data opaque data for user purpose + --> + <xsl:template name="putClassPreamble"> + <xsl:param name="classes"/> + <xsl:param name="data"/> + <xsl:if test="not($package = '')"> + <xsl:value-of select="$newline"/> + <xsl:text>package </xsl:text> + <xsl:value-of select="$package"/> + <xsl:text>;</xsl:text> + </xsl:if> + + <!-- import Qt specific classes --> + <xsl:value-of select="$newline"/> + <xsl:for-each select="$classes/class"> + <xsl:variable name="name" select="."/> + <xsl:variable name="classInfo" select="document($qtJavaClassesXml)/Qt/class[name = $name]"/> + <xsl:if test="$classInfo"> + <xsl:value-of select="$newline"/> + <xsl:value-of select="concat('import ', $classInfo/package, '.', $classInfo/name, ';')"/> + </xsl:if> + </xsl:for-each> + + <xsl:value-of select="$newline"/> + + <!-- import of java specific classes --> + <xsl:if test="/UI/images"> + <xsl:message>Create imports to handle Images</xsl:message> + <xsl:value-of select="'import java.util.zip.Inflater;'"/> + <xsl:value-of select="$newline"/> + </xsl:if> + </xsl:template> + + <!-- + ** Put the class header. + ** @param extends the class that is extended by this + ** @param data opaque data for user purpose + --> + <xsl:template name="putClassHeader"> + <xsl:param name="extends"/> + <xsl:param name="data"/> + + <xsl:text> +/** + * </xsl:text><xsl:value-of select="$mainClass"/> a user interface class using Qt<xsl:text> + */ + </xsl:text> + <xsl:value-of select="$newline"/> + <xsl:text>public </xsl:text> + <xsl:if test="$abstract"> + <xsl:text>abstract </xsl:text> + </xsl:if> + <xsl:text>class </xsl:text> + <xsl:value-of select="$mainClass"/> + <xsl:if test="$extends"> + <xsl:text> extends </xsl:text> + <xsl:value-of select="$extends"/> + </xsl:if> + <xsl:text> {</xsl:text> + <xsl:value-of select="$newline"/> + + static { + // initialize the toolkit + org.kde.qt.qtjava.initialize(); + <xsl:if test="$kde"> + org.kde.koala.kdejava.initialize(); + </xsl:if> + } + </xsl:template> + + <!-- + ** Put the definition of user defined variables. + ** Here we define some QPixmap instances for embedded images + ** @param data opaque data for user purpose + --> + <xsl:template name="putVariables"> + <xsl:param name="data"/> + <xsl:for-each select="/UI/images/image"> + <xsl:message>Creating code for image <xsl:value-of select="@name"/></xsl:message> + <!-- + <xsl:variable name="img" select="concat('_img', position())"/> + <xsl:value-of select="$newline"/> + <xsl:text> protected static String </xsl:text> + <xsl:value-of select="$img"/> + <xsl:text> = "</xsl:text> + <xsl:value-of select="data"/> + <xsl:text>";</xsl:text> + --> + <!-- + <xsl:call-template name="toBytes"> + <xsl:with-param name="hexstring" select="data"/> + </xsl:call-template> + <xsl:text> }; </xsl:text> + --> + <xsl:value-of select="$newline"/> + <xsl:text> protected QPixmap </xsl:text> + <xsl:value-of select="@name"/> + <xsl:text> = decodePixmap( </xsl:text> + <xsl:value-of select="data/@length"/> + <xsl:text>, "</xsl:text> + <xsl:value-of select="data"/> + <xsl:text>", </xsl:text> + <xsl:choose> + <xsl:when test="data/@format = 'XPM.GZ'"> + <xsl:text> true</xsl:text> + </xsl:when> + <xsl:when test="data/@format = 'PNG'"> + <xsl:text> false</xsl:text> + </xsl:when> + </xsl:choose> + <xsl:text>);</xsl:text> + </xsl:for-each> + </xsl:template> + + <!-- helper template + <xsl:template name="toBytes"> + <xsl:param name="hexstring" select="''"/> + <xsl:param name="count" select="0"/> + <xsl:variable name="len" select="string-length($hexstring)"/> + <xsl:if test="$count = 0"> + <xsl:value-of select="$nlIndent8"/> + </xsl:if> + <xsl:variable name="cnt"> + <xsl:choose> + <xsl:when test="$count = 6">0</xsl:when> + <xsl:otherwise><xsl:value-of select="$count + 1"/></xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:choose> + <xsl:when test="$len > 2"> + <xsl:value-of select="concat('(byte)0x', substring($hexstring, 1, 2), ', ')"/> + <xsl:call-template name="toBytes"> + <xsl:with-param name="hexstring" select="substring($hexstring, 3)"/> + <xsl:with-param name="count" select="$cnt"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$len = 2"> + <xsl:value-of select="concat('(byte)0x', $hexstring)"/> + </xsl:when> + </xsl:choose> + </xsl:template> + --> + + <!-- + ** Put the definition of instance variables + ** @context property + ** @param data opaque data for user purpose + --> + <xsl:template name="putInstanceVariable"> + <xsl:param name="class"/> + <xsl:param name="name"/> + <xsl:param name="data"/> + <xsl:variable name="varname"> + <xsl:choose> + <xsl:when test="$name"> + <xsl:value-of select="$name"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="java:getNodeName(..)"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:value-of select="$newline"/> + <xsl:value-of select="concat(' protected ', $class, ' ', $varname, ' = null;')"/> + </xsl:template> + + <!-- + ** Put the declaration of the constructors + ** @param data opaque data for user purpose + --> + <xsl:template name="putConstructors"> + <xsl:param name="data"/> + <xsl:variable name="kind" select="substring(/UI/widget/@class, 2)"/> + <xsl:variable name="isModal" select="$kind = 'Wizard' or $kind = 'Dialog'"/> + <xsl:variable name="modalParam" select="kde:if($isModal, ', false', '')"/> + <xsl:variable name="modalArg" select="kde:if($isModal, ', boolean modal', '')"/> + + /** + * Constructor for class <xsl:value-of select="$mainClass"/> + */ + public <xsl:value-of select="$mainClass"/>() { + this(null, "<xsl:value-of select="$mainClass"/>"<xsl:value-of select="$modalParam"/>, WType_TopLevel); + } + + /** + * Constructor for class <xsl:value-of select="$mainClass"/> + * @param parent the parent widget of this class + */ + public <xsl:value-of select="$mainClass"/>(QWidget parent) { + this(parent, "<xsl:value-of select="$mainClass"/>"<xsl:value-of select="$modalParam"/>, WType_TopLevel); + } + + /** + * Constructor for class <xsl:value-of select="$mainClass"/> + * @param parent the patent widget of this class + * @param name the name of the widget + */ + public <xsl:value-of select="$mainClass"/>(QWidget parent, String name) { + this(parent, name<xsl:value-of select="$modalParam"/>, WType_TopLevel); + } +<xsl:if test="$modalArg != ''"> + /** + * Constructor for class <xsl:value-of select="$mainClass"/> + * @param parent the patent widget of this class + * @param name the name of the widget + * @param modal modality of the widget + */ + public <xsl:value-of select="$mainClass"/>(QWidget parent, String name, boolean modal) { + this(parent, name, modal, WType_TopLevel); + } +</xsl:if> + /** + * Constructor for class <xsl:value-of select="$mainClass"/> + * @param parent the patent widget of this class + * @param name the name of the widget + * @param flags some "or"ed properties + */ + public <xsl:value-of select="$mainClass"/>(QWidget parent, String name<xsl:value-of select="$modalArg"/>, int flags) { + super(parent, name<xsl:value-of select="$modalParam"/>, flags); +<xsl:if test="/UI/widget/@class = 'QMainWindow'"> + statusBar(); +</xsl:if> + if (name == null) setName("<xsl:value-of select="$mainClass"/>"); + + // setup widgets + <xsl:call-template name="createInstanceDefinitions"/> + + // setup databases + <xsl:call-template name="createDatabaseDefinitions"/> + + // setup actions + <xsl:call-template name="createActionDefinitions"/> + + // setup toolbar + <xsl:call-template name="createToolbarDefinitions"/> + + // setup menubar + <xsl:call-template name="createMenubarDefinitions"/> + + resize(size().expandedTo(minimumSizeHint())); + + // signals and slots connections + <xsl:call-template name="createConnectionDefinitions"/> + + // tabstops + <xsl:call-template name="createTabstopsDefinitions"/> + } + </xsl:template> + + <!-- + ** Put the definition of a database + ** @context widget[@class='QDataTable' or @class='QDataBrowser"] + ** @param data opaque data for user purpose + --> + <xsl:template name="putDatabaseDefinition"> + <xsl:param name="data"/> + <xsl:variable name="formName" select="concat(java:getNodeName(.), 'Form')"/> + <xsl:variable name="conn" select="property[@name='database']/stringlist/string[1]"/> + <xsl:variable name="table" select="property[@name='database']/stringlist/string[2]"/> + <xsl:value-of select="$nlIndent8"/> + <xsl:value-of select="concat('QSqlForm ', $formName, ' = new QSqlForm(this, "', $formName, '");')"/> + <xsl:for-each select=".//widget[@class != 'QDataTable' and property[@name='database']]"> + <xsl:if test="property[@name='database']/stringlist/string[1]=$conn + and property[@name='database']/stringlist/string[2]=$table"> + <xsl:value-of select="$nlIndent8"/> + <xsl:value-of select="$formName"/> + <xsl:text>.insert( </xsl:text> + <xsl:value-of select="java:getNodeName()"/> + <xsl:text>, "</xsl:text> + <xsl:value-of select="property[@name='database']/stringlist/string[3]"/> + <xsl:text>" );</xsl:text> + </xsl:if> + </xsl:for-each> + <xsl:value-of select="$nlIndent8"/> + <xsl:value-of select="concat(java:getNodeName(), '.setForm( ', $formName, ');')"/> + </xsl:template> + + <!-- + ** Put the definition of a slot + ** @context slot + ** @param data opaque data for user purpose + --> + <xsl:template name="putSlot"> + <xsl:param name="data"/> + <xsl:variable name="access" select="kde:if(@access, @access, 'public')"/> + <xsl:variable name="return" select="kde:if(@returnType, @returnType, 'void')"/> + <xsl:variable name="sig" select="java:cpp-to-java-signature(.)"/> + <xsl:variable name="method" select="concat($access, ' ', + kde:if($abstract, 'abstract ', ''), + $return , ' ', + $sig)"/> + <xsl:if test="$access = 'private'"> + <xsl:message>Error in slot: <xsl:value-of select="$method"/></xsl:message> + <xsl:message>A private method can't be overriden.</xsl:message> + </xsl:if> + <xsl:message>Generating slot "<xsl:value-of select="$method"/></xsl:message> + /** + * SLOT <xsl:value-of select="$method"/> + */ + <xsl:choose> + <xsl:when test="$abstract"> + <xsl:value-of select="$method"/>; + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$method"/> { + qWarning("Warning: SLOT \"<xsl:value-of select="$method"/>\" must be overridden"); + <xsl:if test="not($return = 'void')"> + <xsl:choose> + <xsl:when test="$return = 'byte' or $return = 'short' or $return = 'int' or $return = 'long'"> + <xsl:text>return </xsl:text><xsl:value-of select="concat('(',$return,')')"/><xsl:text>0;</xsl:text> + </xsl:when> + <xsl:when test="$return = 'char'"> + <xsl:text>return '\0'</xsl:text> + </xsl:when> + <xsl:when test="$return = 'float' or $return = 'double'"> + <xsl:text>return 0.0;</xsl:text> + </xsl:when> + <xsl:otherwise>return null;</xsl:otherwise> + </xsl:choose> + </xsl:if> + } + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- + ** Put the definition of a signal + ** @context slot + ** @param data opaque data for user purpose + --> + <xsl:template name="putSignal"> + <xsl:param name="data"/> + <xsl:variable name="sig" select="java:cpp-to-java-signature(.)"/> + /** SIGNAL <xsl:value-of select="."/> */ + </xsl:template> + + <!-- + ** Put the definition of tabstops + ** @param data opaque data for user purpose + --> + <xsl:template name="putTabstops"> + <xsl:param name="data"/> + <xsl:variable name="widgets" select="count(/UI/tabstops/tabstop)"/> + <xsl:for-each select="/UI/tabstops/tabstop"> + <xsl:variable name="pos" select="position()"/> + <xsl:if test="$pos < $widgets"> + <xsl:value-of select="$nlIndent8"/> + <xsl:text>setTabOrder(</xsl:text> + <xsl:value-of select="."/> + <xsl:text>, </xsl:text> + <xsl:value-of select="/UI/tabstops/tabstop[$pos + 1]"/> + <xsl:text>);</xsl:text> + </xsl:if> + </xsl:for-each> + </xsl:template> + + <!-- + ** Put the class footer. + ** Here it is nothing more, but a closing brace + ** @param data opaque data for user purpose + --> + <xsl:template name="putClassFooter"> + <xsl:param name="data"/> + <xsl:value-of select="$newline"/> + <xsl:text>}</xsl:text> + <xsl:value-of select="$newline"/> + </xsl:template> + +</xsl:stylesheet> + |