grim/gir2glade

Add a bunch of licensing
draft
2018-05-08, Gary Kramlich
75707a87177b
Add a bunch of licensing
<?xml version="1.0" encoding="utf-8"?>
<!--
gir2glade.xsl
Copyright 2018 Gary Kramlich <grim@reaperworld.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:gir="http://www.gtk.org/introspection/core/1.0"
xmlns:c="http://www.gtk.org/introspection/c/1.0"
xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
<xsl:variable name="gir2glade-version" value="0.1"/>
<xsl:output method="xml" encoding="UTF-8" indent="yes" version="1.0"/>
<xsl:strip-space elements="*"/>
<xsl:template name="library-name">
<xsl:param name="lib"></xsl:param>
<xsl:variable name="split">
<xsl:value-of select="substring-after($lib, 'lib')"/>
</xsl:variable>
<xsl:choose>
<xsl:when test="contains($split, '.so')">
<xsl:value-of select="substring-before($split, '.so')"/>
</xsl:when>
<xsl:otherwise>
<xsl:text>unsupported</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="gir:repository">
<xsl:element name="glade-catalog">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="gir:namespace">
<xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
<xsl:attribute name="version"><xsl:value-of select="@version"/></xsl:attribute>
<!-- clean up the library name -->
<xsl:attribute name="library">
<xsl:call-template name="library-name">
<xsl:with-param name="lib"><xsl:value-of select="@shared-library"/></xsl:with-param>
</xsl:call-template>
</xsl:attribute>
<!-- add each widget class if it's implements Gtk.Buildable -->
<xsl:element name="glade-widget-classes">
<xsl:for-each select="gir:class">
<xsl:call-template name="class"/>
</xsl:for-each>
</xsl:element>
<!-- add a referench for each widget class to the widget group if it implement Gtk.Buildable -->
<xsl:element name="glade-widget-group">
<xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
<xsl:attribute name="title"><xsl:value-of select="@name"/></xsl:attribute>
<xsl:for-each select="gir:class">
<xsl:call-template name="class-group"/>
</xsl:for-each>
</xsl:element>
</xsl:template>
<xsl:template name="class">
<xsl:if test="gir:implements[@name='Gtk.Buildable']">
<xsl:element name="glade-widget-class">
<xsl:attribute name="name"><xsl:value-of select="@c:type"/></xsl:attribute>
<xsl:attribute name="generic-name"><xsl:value-of select="@c:symbol-prefix"/></xsl:attribute>
<xsl:attribute name="title"><xsl:value-of select="@name"/></xsl:attribute>
<xsl:attribute name="get-type-function"><xsl:value-of select="@glib:get-type"/></xsl:attribute>
<xsl:if test="property">
<xsl:element name="properties">
<xsl:for-each select="property">
<xsl:attribute name="id"><xsl:value-of select="@name"/></xsl:attribute>
</xsl:for-each>
</xsl:element>
</xsl:if>
</xsl:element>
</xsl:if>
</xsl:template>
<xsl:template name="class-group">
<xsl:if test="gir:implements[@name='Gtk.Buildable']">
<xsl:element name="glade-widget-class-ref">
<xsl:attribute name="name"><xsl:value-of select="@c:type"/></xsl:attribute>
</xsl:element>
</xsl:if>
</xsl:template>
</xsl:stylesheet>