diff options
-rw-r--r-- | Makefile.am | 18 | ||||
-rw-r--r-- | caja-python.pc.in | 3 | ||||
-rw-r--r-- | configure.ac | 29 | ||||
-rw-r--r-- | docs/Makefile.am | 38 | ||||
-rw-r--r-- | docs/xsl/common.xsl | 19 | ||||
-rw-r--r-- | docs/xsl/devhelp.xsl | 154 | ||||
-rwxr-xr-x | docs/xsl/fixxref.py | 67 | ||||
-rw-r--r-- | docs/xsl/html.xsl | 285 | ||||
-rw-r--r-- | docs/xsl/pdf-style.xsl | 11 | ||||
-rw-r--r-- | docs/xsl/pdf.xsl | 259 | ||||
-rw-r--r-- | docs/xsl/ref-html-style.xsl | 54 | ||||
-rw-r--r-- | docs/xsl/style.css | 10 | ||||
-rw-r--r-- | src/Makefile.am | 27 | ||||
-rw-r--r-- | src/caja-python.c | 6 |
14 files changed, 944 insertions, 36 deletions
diff --git a/Makefile.am b/Makefile.am index 1ba7536..0f38bf8 100644 --- a/Makefile.am +++ b/Makefile.am @@ -4,9 +4,25 @@ if ENABLE_GTK_DOC SUBDIRS += docs endif +ACLOCAL_AMFLAGS = -I m4 -I . ${ACLOCAL_FLAGS} + pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = caja-python.pc EXTRA_DIST = caja-python.pc.in -DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc +DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc --with-cajadir='$${libdir}/caja/extensions-2.0-distcheck' + +dist-hook: + @if test -d "$(srcdir)/.git"; \ + then \ + echo Creating ChangeLog && \ + ( cd "$(top_srcdir)" && \ + echo '# Generated by Makefile. Do not edit.'; echo; \ + $(top_srcdir)/missing --run git log --stat ) > ChangeLog.tmp \ + && mv -f ChangeLog.tmp $(distdir)/ChangeLog \ + || ( rm -f ChangeLog.tmp ; \ + echo Failed to generate ChangeLog >&2 ); \ + else \ + echo A git clone is required to generate a ChangeLog >&2; \ + fi diff --git a/caja-python.pc.in b/caja-python.pc.in index 280e1dc..0e72f15 100644 --- a/caja-python.pc.in +++ b/caja-python.pc.in @@ -3,5 +3,6 @@ Description: Caja-Python Components Version: @VERSION@ prefix=@prefix@ +datarootdir = @datarootdir@ libdir=${prefix}/lib -pythondir=${datadir}/caja-python/extensions +pythondir=@datadir@/caja-python/extensions diff --git a/configure.ac b/configure.ac index 9c80db0..0f1d737 100644 --- a/configure.ac +++ b/configure.ac @@ -1,14 +1,14 @@ -AC_INIT([caja-python], [1.6.0], [http://mate-desktop.org]) +AC_INIT([python-caja], [1.6.0], + [https://github.com/mate-desktop/python-caja/issues], + [python-caja], [http://mate-desktop.org]) AC_SUBST(PACKAGE) AC_SUBST(VERSION) -AM_INIT_AUTOMAKE +AM_INIT_AUTOMAKE(1.10 dist-xz no-dist-gzip) AC_CONFIG_HEADERS(config.h) AC_CONFIG_MACRO_DIR([m4]) -AC_SUBST(ACLOCAL_AMFLAGS, "-I m4 -I .") - CAJA_REQUIRED=1.6.0 AC_PROG_CC @@ -19,15 +19,13 @@ dnl Check for pkgconfig first AC_CHECK_PROG(HAVE_PKGCONFIG, pkg-config, yes, no) AC_PATH_PROG(PKG_CONFIG, pkg-config, no) -dnl Check for gtk-doc -GTK_DOC_CHECK(1.9) - -dnl Give error and exit if we dont have pkgconfig +dnl Give error and exit if we don't have pkgconfig if test "x$HAVE_PKGCONFIG" = "xno"; then AC_MSG_ERROR([you need to have pkgconfig installed !]) fi -AC_PREFIX_DEFAULT([$(pkg-config --variable=prefix libcaja-extension || echo /usr)]) +dnl Check for gtk-doc +GTK_DOC_CHECK(1.9) dnl ************************************************** dnl * Check for Python @@ -71,9 +69,16 @@ AC_DEFINE_UNQUOTED(CAJA_LIBDIR, "$CAJA_LIBDIR", [Caja libdir]) dnl --------------------------------- dnl Get caja extensions directory dnl --------------------------------- -CAJA_EXTENSION_DIR=`$PKG_CONFIG --variable=extensiondir libcaja-extension` -AC_SUBST(CAJA_EXTENSION_DIR) -AC_DEFINE_UNQUOTED(CAJA_EXTENSION_DIR, "$CAJA_EXTENSION_DIR", [Caja extensions directory]) +AC_ARG_WITH(cajadir, + AS_HELP_STRING([--with-cajadir=DIR],[Installation path for Caja extension @<:@auto@:>@]), + [ac_with_cajadir=$withval], + [ac_with_cajadir=""]) +if test "${ac_with_cajadir}" = ""; then + ac_with_cajadir=`$PKG_CONFIG --variable=extensiondir libcaja-extension` +fi + +AC_MSG_NOTICE([installing caja plugin in ${ac_with_cajadir}]) +AC_SUBST([CAJA_EXTENSION_DIR], [${ac_with_cajadir}]) dnl --------------------------------- dnl Check for gtk-doc dependencies diff --git a/docs/Makefile.am b/docs/Makefile.am index 6416f94..d406f66 100644 --- a/docs/Makefile.am +++ b/docs/Makefile.am @@ -3,10 +3,10 @@ BUILDDIR = $(top_builddir)/docs REF_VERSION = $(VERSION) FULL_VERSION = $(VERSION) -HTML_STYLE = $(PYGOBJECT_DATADIR)/pygobject/xsl/ref-html-style.xsl -PDF_STYLE = $(PYGOBJECT_DATADIR)/pygobject/xsl/pdf-style.xsl +FIXXREF = $(srcdir)/xsl/fixxref.py +HTML_STYLE = $(srcdir)/xsl/ref-html-style.xsl -XMLFILES = \ +XML_FILES = \ reference/caja-python-ref.xml \ reference/caja-python-overview.xml \ reference/caja-python-overview-example.xml \ @@ -27,7 +27,7 @@ XMLFILES = \ reference/caja-python-operation-result.xml HTMLdir = $(datadir)/gtk-doc/html/caja-python -HTMLFILES = \ +HTML_FILES = \ html/index.html \ html/index.sgml \ html/caja-python-overview.html \ @@ -48,39 +48,55 @@ HTMLFILES = \ html/caja-python-enum-reference.html \ html/enum-caja-python-operation-result.html \ html/caja-python.devhelp +HTML_DATA = $(HTML_FILES) -CSS_FILES = $(PYGOBJECT_PYGDOCS)/style.css +XSL_FILES = \ + xsl/common.xsl \ + xsl/devhelp.xsl \ + xsl/html.xsl \ + xsl/pdf-style.xsl \ + xsl/pdf.xsl \ + xsl/style.css +XSL_DATA = $(XSL_FILES) $(FIXXREF) +XSLdir = $(BUILDDIR)/xsl + +CSS_FILES = xsl/style.css CSSdir = $(HTMLdir) CSS_DATA = $(CSS_FILES) BUILT_SOURCES = \ reference/builddate.xml \ - $(HTMLFILES) + $(HTML_FILES) CLEANFILES = \ caja-python-ref.* \ reference/builddate.xml \ - $(HTMLFILES) + $(HTML_FILES) EXTRA_DIST = \ - $(XMLFILES) + $(XML_FILES) \ + $(XSL_FILES) \ + $(FIXXREF) \ + $(HTML_STYLE) REFERENCE_DEPS = \ reference \ - $(XMLFILES) + $(XML_FILES) \ + $(XSL_FILES) \ + $(FIXXREF) if ENABLE_GTK_DOC reference/builddate.xml: $(REFERENCE_DEPS) $(PYTHON) -c 'import datetime; print datetime.date.today()' > $@ -$(HTMLFILES): $(REFERENCE_DEPS) +$(HTML_FILES): $(REFERENCE_DEPS) xsltproc --nonet --xinclude -o $(BUILDDIR)/html/ \ --path $(BUILDDIR)/reference:$(srcdir)/reference \ --stringparam gtkdoc.bookname "caja-python" \ --stringparam gtkdoc.version ${REF_VERSION} \ $(HTML_STYLE) $(srcdir)/reference/caja-python-ref.xml - $(PYGOBJECT_FIXXREF) -i $(PYGOBJECT_PYGDOCS) $(BUILDDIR)/html + $(FIXXREF) -i xsl $(BUILDDIR)/html touch $@ endif diff --git a/docs/xsl/common.xsl b/docs/xsl/common.xsl new file mode 100644 index 0000000..606313f --- /dev/null +++ b/docs/xsl/common.xsl @@ -0,0 +1,19 @@ +<?xml version='1.0'?> +<!DOCTYPE xsl:stylesheet [ +]> + +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version='1.0'> + +<xsl:template match="parameter"> + <xsl:choose> + <xsl:when test="@role = 'keyword'"> + <xsl:call-template name="inline.boldmonoseq"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="inline.italicmonoseq"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +</xsl:stylesheet> diff --git a/docs/xsl/devhelp.xsl b/docs/xsl/devhelp.xsl new file mode 100644 index 0000000..ce27739 --- /dev/null +++ b/docs/xsl/devhelp.xsl @@ -0,0 +1,154 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version='1.0' + xmlns="http://www.devhelp.net/book" + exclude-result-prefixes="#default"> + + <xsl:template name="generate.devhelp"> + <xsl:call-template name="write.chunk"> + <xsl:with-param name="filename"> + <xsl:choose> + <xsl:when test="$gtkdoc.bookname"> + <xsl:value-of select="$gtkdoc.bookname"/> + </xsl:when> + <xsl:otherwise> + <xsl:text>book</xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:text>.devhelp</xsl:text> + </xsl:with-param> + <xsl:with-param name="method" select="'xml'"/> + <xsl:with-param name="indent" select="'yes'"/> + <xsl:with-param name="encoding" select="'utf-8'"/> + <xsl:with-param name="content"> + <xsl:call-template name="devhelp"/> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template name="devhelp"> + <xsl:variable name="title"> + <xsl:apply-templates select="." mode="generate.devhelp.toc.title.mode"/> + </xsl:variable> + <xsl:variable name="link"> + <xsl:call-template name="href.target"/> + </xsl:variable> + <xsl:variable name="author"> + <xsl:if test="articleinfo|bookinfo"> + <xsl:apply-templates mode="generate.devhelp.authors" + select="articleinfo|bookinfo"/> + </xsl:if> + </xsl:variable> + <xsl:variable name="toc.nodes" select="part|reference|preface|chapter| + appendix|article|bibliography| + glossary|index|refentry| + bridgehead|sect1"/> + + <book title="{$title}" link="{$link}" author="{$author}" name="{$gtkdoc.bookname}" language="python"> + <xsl:if test="$toc.nodes"> + <chapters> + <xsl:apply-templates select="$toc.nodes" + mode="generate.devhelp.toc.mode"/> + </chapters> + </xsl:if> + <functions> + <xsl:apply-templates select="//refsect1" + mode="generate.devhelp.constructor.index.mode"/> + <xsl:apply-templates select="//refsect2" + mode="generate.devhelp.index.mode"/> + </functions> + </book> + </xsl:template> + + <xsl:template match="*" mode="generate.devhelp.toc.mode"> + <xsl:variable name="title"> + <xsl:apply-templates select="." mode="generate.devhelp.toc.title.mode"/> + </xsl:variable> + <xsl:variable name="target"> + <xsl:variable name="anchor" select="title/anchor"/> + <xsl:choose> + <xsl:when test="$anchor"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$anchor"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="href.target"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <sub name="{$title}" link="{$target}"> + <xsl:apply-templates select="section|sect1| + refentry|refsect| + bridgehead|part|chapter" + mode="generate.devhelp.toc.mode"/> + </sub> + </xsl:template> + + <xsl:template match="*" mode="generate.devhelp.index.mode"> + <xsl:variable name="title" select="title"/> + <xsl:variable name="anchor" select="title/anchor"/> + <xsl:variable name="target"> + <xsl:choose> + <xsl:when test="$anchor"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$anchor"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="href.target"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <function name="{$title}" link="{$target}"/> + </xsl:template> + + <xsl:template match="*" mode="generate.devhelp.constructor.index.mode"> + <xsl:variable name="title" select="title"/> + <xsl:variable name="anchor" select="title/anchor"/> + <xsl:variable name="target"> + <xsl:choose> + <xsl:when test="$anchor"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$anchor"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="href.target"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="$title='Constructor'"> + <xsl:variable name ="constructor" select="programlisting//methodname"/> + <function name="{$constructor}" link="{$target}"/> + </xsl:if> + </xsl:template> + + <!-- get title --> + <xsl:template match="article" mode="generate.devhelp.toc.title.mode"> + <xsl:value-of select="articleinfo/title"/> + </xsl:template> + <xsl:template match="book" mode="generate.devhelp.toc.title.mode"> + <xsl:value-of select="bookinfo/title"/> + </xsl:template> + <xsl:template match="refentry" mode="generate.devhelp.toc.title.mode"> + <xsl:value-of select="refnamediv/refname"/> + </xsl:template> + <xsl:template match="*" mode="generate.devhelp.toc.title.mode"> + <xsl:value-of select="title"/> + </xsl:template> + + <!-- generate list of authors ... --> + <xsl:template match="articleinfo|bookinfo" mode="generate.devhelp.authors"> + <xsl:for-each select="authorgroup/author"> + <xsl:value-of select="firstname"/> + <xsl:text> </xsl:text> + <xsl:value-of select="surname"/> + <xsl:if test="not(last())"> + <xsl:text>, </xsl:text> + </xsl:if> + </xsl:for-each> + </xsl:template> + +</xsl:stylesheet> diff --git a/docs/xsl/fixxref.py b/docs/xsl/fixxref.py new file mode 100755 index 0000000..f3287b3 --- /dev/null +++ b/docs/xsl/fixxref.py @@ -0,0 +1,67 @@ +#!/usr/bin/env python +# -*- Mode: Python; py-indent-offset: 4 -*- + +import getopt +import os +import re +import sys + +anchors = {} +anchor_pat = re.compile(r'''^\s*<ANCHOR\s+id\s*=\s*"([^"]*)"\s+ + href\s*=\s*"([^"]*)"\s*>''', + re.MULTILINE | re.VERBOSE) +link_pat = re.compile(r'''<PYGTKDOCLINK\s+HREF="([^"]*)"\s*>(.*?) + </PYGTKDOCLINK\s*>''', re.DOTALL | re.VERBOSE) +def scan_index_dir(idir): + for root, dirs, files in os.walk(idir): + if 'index.sgml' in files: + scan_index_file(os.path.join(root, 'index.sgml')) + return + +def scan_index_file(ifile): + buf = open(ifile).read() + for id, href in anchor_pat.findall(buf): + anchors[id] = href + +def fix_xrefs(hdir): + for f in os.listdir(hdir): + if os.path.splitext(f)[1] == '.html': + fix_html_file(os.path.join(hdir, f)) + +def link_subst(m): + id, text = m.groups() + if anchors.has_key(id): + return '<a\nhref="../' + anchors[id] + '"\n>' + text + '</a>' + return text + +def fix_html_file(hfile): + buf = open(hfile).read() + buf = link_pat.sub(link_subst, buf) + open(hfile, 'w').write(buf) + +def usage(e=None): + if e: + sys.stderr.write('fixxref.py: %s\n' % e) + sys.stderr.write('usage: fixxref.py [-i index-dir] html-dir\n') + sys.exit(1) + +if __name__ == '__main__': + try: + opts, args = getopt.getopt(sys.argv[1:], "i:h:", + ["index-dir=", "html-dir="]) + except getopt.error, e: + usage(e) + + index_dirs = [] + for opt, arg in opts: + if opt in ('-i', '--index-dir'): + index_dirs.append(arg) + + if len(args) != 1: + usage() + + for idir in index_dirs: + scan_index_dir(idir) + + html_dir = args[0] + fix_xrefs(html_dir) diff --git a/docs/xsl/html.xsl b/docs/xsl/html.xsl new file mode 100644 index 0000000..d8fea78 --- /dev/null +++ b/docs/xsl/html.xsl @@ -0,0 +1,285 @@ +<?xml version='1.0'?> +<!DOCTYPE xsl:stylesheet [ +<!ENTITY RE " "> +<!ENTITY nbsp " "> +]> + +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version='1.0'> + +<xsl:param name="html.stylesheet">style.css</xsl:param> +<xsl:param name="use.id.as.filename" select="1"/> +<xsl:param name="chunk.fast" select="1"/> +<xsl:param name="chunker.output.encoding" select="'utf-8'"/> + +<xsl:param name="linenumbering.extension" select="1"/> +<xsl:param name="variablelist.as.table" select="1"/> + +<xsl:template match="blockquote"> + <div class="{local-name(.)}"> + <xsl:if test="@lang or @xml:lang"> + <xsl:call-template name="language.attribute"/> + </xsl:if> + <xsl:call-template name="anchor"/> + + <xsl:choose> + <xsl:when test="attribution"> + <table border="0" width="100%" + cellspacing="0" cellpadding="0" class="blockquote" + summary="Block quote"> + <tr> + <td width="10%" valign="top"> </td> + <td width="80%" valign="top"> + <xsl:apply-templates select="child::*[local-name(.)!='attribution']"/> + </td> + <td width="10%" valign="top"> </td> + </tr> + <tr> + <td colspan="2" align="right" valign="top"> + <xsl:text>--</xsl:text> + <xsl:apply-templates select="attribution"/> + </td> + <td width="10%" valign="top"> </td> + </tr> + </table> + </xsl:when> + <xsl:when test="@role = 'properties' or @role = 'prototypes'"> + <table width="100%" border="0" bgcolor="#E0E0E0"> + <tr> + <td valign="top"> + <xsl:apply-templates select="child::*[local-name(.)!='attribution']"/> + </td> + </tr> + </table> + </xsl:when> + <xsl:otherwise> + <blockquote class="{local-name(.)}"> + <xsl:apply-templates/> + </blockquote> + </xsl:otherwise> + </xsl:choose> + </div> +</xsl:template> + + <!-- support for Python language for synopsises --> + <xsl:template match="classsynopsis + |fieldsynopsis + |methodsynopsis + |constructorsynopsis + |destructorsynopsis"> + <xsl:param name="language"> + <xsl:choose> + <xsl:when test="@language"> + <xsl:value-of select="@language"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$default-classsynopsis-language"/> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:choose> + <xsl:when test="$language='python'"> + <xsl:apply-templates select="." mode="python"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-imports/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="classsynopsis" mode="python"> + <table bgcolor="#D0E0F0" width="100%"> + <tr><td> + <pre class="{name(.)}"> + <xsl:text>class </xsl:text> + <xsl:apply-templates select="ooclass[1]" mode="python"/> + <xsl:if test="ooclass[position() > 1]"> + <xsl:text>(</xsl:text> + <xsl:apply-templates select="ooclass[position() > 1]" mode="python"/> <xsl:text>)</xsl:text> + </xsl:if> + <xsl:text>:&RE;</xsl:text> + + <xsl:apply-templates select="constructorsynopsis + |destructorsynopsis + |fieldsynopsis + |methodsynopsis + |classsynopsisinfo" mode="python"/> + </pre></td></tr></table> + </xsl:template> + + <xsl:template match="classsynopsisinfo" mode="python"> + <xsl:apply-templates mode="python"/> + </xsl:template> + + <xsl:template match="ooclass|oointerface|ooexception" mode="python"> + <xsl:if test="position() > 1"> + <xsl:text>, </xsl:text> + </xsl:if> + <span class="{name(.)}"> + <xsl:apply-templates mode="python"/> + </span> + </xsl:template> + + <xsl:template match="modifier" mode="python"> + <span class="{name(.)}"> + <xsl:apply-templates mode="python"/> + <xsl:text> </xsl:text> + </span> + </xsl:template> + + <xsl:template match="classname" mode="python"> + <xsl:if test="name(preceding-sibling::*[1]) = 'classname'"> + <xsl:text>, </xsl:text> + </xsl:if> + <span class="{name(.)}"> + <xsl:apply-templates mode="python"/> + </span> + </xsl:template> + + <xsl:template match="interfacename" mode="python"> + <xsl:if test="name(preceding-sibling::*[1]) = 'interfacename'"> + <xsl:text>, </xsl:text> + </xsl:if> + <span class="{name(.)}"> + <xsl:apply-templates mode="python"/> + </span> + </xsl:template> + + <xsl:template match="exceptionname" mode="python"> + <xsl:if test="name(preceding-sibling::*[1]) = 'exceptionname'"> + <xsl:text>, </xsl:text> + </xsl:if> + <span class="{name(.)}"> + <xsl:apply-templates mode="python"/> + </span> + </xsl:template> + + <xsl:template match="fieldsynopsis" mode="python"> + <code class="{name(.)}"> + <xsl:text> </xsl:text> + <xsl:apply-templates mode="python"/> + </code> + <xsl:call-template name="synop-break"/> + </xsl:template> + + <xsl:template match="type" mode="python"> + <span class="{name(.)}"> + <xsl:apply-templates mode="python"/> + <xsl:text> </xsl:text> + </span> + </xsl:template> + + <xsl:template match="varname" mode="python"> + <span class="{name(.)}"> + <xsl:apply-templates mode="python"/> + <xsl:text> </xsl:text> + </span> + </xsl:template> + + <xsl:template match="initializer" mode="python"> + <span class="{name(.)}"> + <xsl:text>=</xsl:text> + <xsl:apply-templates mode="python"/> + </span> + </xsl:template> + + <xsl:template match="void" mode="python"> + <span class="{name(.)}"> + <xsl:text>void </xsl:text> + </span> + </xsl:template> + + <xsl:template match="methodname" mode="python"> + <span class="{name(.)}"> + <xsl:apply-templates mode="python"/> + </span> + </xsl:template> + + <xsl:template match="methodparam" mode="python"> + <xsl:if test="position() > 1"> + <xsl:text>, </xsl:text> + </xsl:if> + <span class="{name(.)}"> + <xsl:apply-templates mode="python"/> + </span> + </xsl:template> + + <xsl:template mode="python" + match="destructorsynopsis|methodsynopsis"> + + <code class="{name(.)}"> + <xsl:text> def </xsl:text> + <xsl:apply-templates select="methodname" mode="python"/> + <xsl:text>(</xsl:text> + <xsl:apply-templates select="methodparam" mode="python"/> + <xsl:text>)</xsl:text> + </code> + <xsl:call-template name="synop-break"/> + </xsl:template> + + <xsl:template mode="python" + match="constructorsynopsis"> + + <code class="{name(.)}"> + <xsl:text> </xsl:text> + <xsl:apply-templates select="methodname" mode="python"/> + <xsl:text>(</xsl:text> + <xsl:apply-templates select="methodparam" mode="python"/> + <xsl:text>)</xsl:text> + </code> + <xsl:call-template name="synop-break"/> + </xsl:template> + +<!-- this was the original parameter python mode styling + <xsl:template match="parameter" mode="python"> + <span class="{name(.)}"> + <xsl:apply-templates mode="python"/> + </span> + </xsl:template> +--> + + <!-- hack --> + <xsl:template match="link" mode="python"> + <xsl:apply-templates select="."/> + </xsl:template> + + <!-- ========================================================= --> + <!-- template to output gtkdoclink elements for the unknown targets --> + + <xsl:template match="link"> + <xsl:choose> + <xsl:when test="id(@linkend)"> + <xsl:apply-imports/> + </xsl:when> + <xsl:otherwise> + <PYGTKDOCLINK HREF="{@linkend}"> + <xsl:apply-templates/> + </PYGTKDOCLINK> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="parameter" mode="python"> + <span class="{name(.)}"> + <xsl:choose> + <xsl:when test="@role = 'keyword'"> + <xsl:call-template name="inline.boldmonoseq"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="inline.italicmonoseq"/> + </xsl:otherwise> + </xsl:choose> + </span> +</xsl:template> + +<xsl:template match="variablelist"> + <table border="0" width="100%" bgcolor="#FFECCE"> + <col align="left" valign="top" width="0*"> + </col> + <tbody> + <xsl:apply-templates select="varlistentry" mode="varlist-table"/> + </tbody> + </table> +</xsl:template> + +</xsl:stylesheet> diff --git a/docs/xsl/pdf-style.xsl b/docs/xsl/pdf-style.xsl new file mode 100644 index 0000000..d4a8e02 --- /dev/null +++ b/docs/xsl/pdf-style.xsl @@ -0,0 +1,11 @@ +<?xml version='1.0'?> <!--*- mode: xml -*--> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version='1.0'> +<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl"/> +<xsl:include href="common.xsl"/> +<xsl:include href="pdf.xsl"/> + +<xsl:param name="section.autolabel" select="1"/> +<xsl:param name="section.label.includes.component.label" select="1"/> + +</xsl:stylesheet> diff --git a/docs/xsl/pdf.xsl b/docs/xsl/pdf.xsl new file mode 100644 index 0000000..375ba40 --- /dev/null +++ b/docs/xsl/pdf.xsl @@ -0,0 +1,259 @@ +<?xml version='1.0'?> +<!DOCTYPE xsl:stylesheet [ +<!ENTITY RE " "> +<!ENTITY nbsp " "> +]> + +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:fo="http://www.w3.org/1999/XSL/Format" + version='1.0'> + +<xsl:param name="body.margin.top">0.5in</xsl:param> + +<xsl:template name="is.graphic.extension"> + <xsl:param name="ext"></xsl:param> + <xsl:if test="$ext = 'png' + or $ext = 'pdf' + or $ext = 'jpeg' + or $ext = 'gif' + or $ext = 'tif' + or $ext = 'tiff' + or $ext = 'bmp'">1</xsl:if> +</xsl:template> + + <!-- support for Python language for synopsises --> + <xsl:template match="classsynopsis + |fieldsynopsis + |methodsynopsis + |constructorsynopsis + |destructorsynopsis"> + <xsl:param name="language"> + <xsl:choose> + <xsl:when test="@language"> + <xsl:value-of select="@language"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$default-classsynopsis-language"/> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:choose> + <xsl:when test="$language='python'"> + <xsl:apply-templates select="." mode="python"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-imports/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="classsynopsis" mode="python"> + <fo:block wrap-option='no-wrap' + white-space-collapse='false' + linefeed-treatment="preserve" + xsl:use-attribute-sets="monospace.verbatim.properties" + background-color="#E0E0E0"> + <xsl:text>class </xsl:text> + <xsl:apply-templates select="ooclass[1]" mode="python"/> + <xsl:if test="ooclass[position() > 1]"> + <xsl:text>(</xsl:text> + <xsl:apply-templates select="ooclass[position() > 1]" mode="python"/> + <xsl:text>)</xsl:text> + </xsl:if> + <xsl:text> :</xsl:text> + + <xsl:apply-templates select="constructorsynopsis + |destructorsynopsis + |fieldsynopsis + |methodsynopsis + |classsynopsisinfo" mode="python"/> + + </fo:block> + <xsl:text>&RE;</xsl:text> + </xsl:template> + + <xsl:template match="classsynopsisinfo" mode="python"> + <xsl:apply-templates mode="python"/> + </xsl:template> + + <xsl:template match="ooclass|oointerface|ooexception" mode="python"> + <xsl:if test="position() > 1"> + <xsl:text>, </xsl:text> + </xsl:if> + <xsl:apply-templates mode="python"/> + </xsl:template> + + <xsl:template match="modifier" mode="python"> + <xsl:apply-templates mode="python"/> + <xsl:text> </xsl:text> + </xsl:template> + + <xsl:template match="classname" mode="python"> + <xsl:if test="name(preceding-sibling::*[1]) = 'classname'"> + <xsl:text>, </xsl:text> + </xsl:if> + <xsl:apply-templates mode="python"/> + </xsl:template> + + <xsl:template match="interfacename" mode="python"> + <xsl:if test="name(preceding-sibling::*[1]) = 'interfacename'"> + <xsl:text>, </xsl:text> + </xsl:if> + <xsl:apply-templates mode="python"/> + </xsl:template> + + <xsl:template match="exceptionname" mode="python"> + <xsl:if test="name(preceding-sibling::*[1]) = 'exceptionname'"> + <xsl:text>, </xsl:text> + </xsl:if> + <xsl:apply-templates mode="python"/> + </xsl:template> + + <xsl:template match="fieldsynopsis" mode="python"> + <fo:block wrap-option='no-wrap' + white-space-collapse='false' + linefeed-treatment="preserve" + xsl:use-attribute-sets="monospace.verbatim.properties"> + <xsl:text> </xsl:text> + <xsl:apply-templates mode="python"/> + <xsl:call-template name="synop-break"/> + </fo:block> + </xsl:template> + + <xsl:template match="type" mode="python"> + <xsl:apply-templates mode="python"/> + <xsl:text> </xsl:text> + </xsl:template> + + <xsl:template match="varname" mode="python"> + <xsl:apply-templates mode="python"/> + <xsl:text> </xsl:text> + </xsl:template> + + <xsl:template match="initializer" mode="python"> + <xsl:text>=</xsl:text> + <xsl:apply-templates mode="python"/> + </xsl:template> + + <xsl:template match="void" mode="python"> + <xsl:text>void </xsl:text> + </xsl:template> + + <xsl:template match="methodname" mode="python"> + <xsl:apply-templates mode="python"/> + </xsl:template> + + <xsl:template match="methodparam" mode="python"> + <xsl:if test="position() > 1"> + <xsl:text>, </xsl:text> + </xsl:if> + <xsl:apply-templates mode="python"/> + </xsl:template> + + <xsl:template mode="python" + match="destructorsynopsis|methodsynopsis"> + + <fo:block wrap-option='no-wrap' + white-space-collapse='false' + linefeed-treatment="preserve" + xsl:use-attribute-sets="monospace.verbatim.properties"> + <xsl:text> def </xsl:text> + <xsl:apply-templates select="methodname" mode="python"/> + <xsl:text>(</xsl:text> + <xsl:apply-templates select="methodparam" mode="python"/> + <xsl:text>)</xsl:text> +<!-- <xsl:call-template name="synop-break"/> --> + </fo:block> + </xsl:template> + + <xsl:template mode="python" + match="constructorsynopsis"> + <fo:block wrap-option='no-wrap' + white-space-collapse='false' + linefeed-treatment="preserve" + xsl:use-attribute-sets="monospace.verbatim.properties"> + <xsl:text> </xsl:text> + <xsl:apply-templates select="methodname" mode="python"/> + <xsl:text>(</xsl:text> + <xsl:apply-templates select="methodparam" mode="python"/> + <xsl:text>)</xsl:text> + </fo:block> + </xsl:template> + + <!-- hack --> + <xsl:template match="link" mode="python"> + <xsl:apply-templates select="."/> + </xsl:template> + +<!-- +<xsl:template match="variablelist" mode="vl.as.blocks"> + <xsl:variable name="id"> + <xsl:call-template name="object.id"/> + </xsl:variable> + + <xsl:if test="title"> + <xsl:apply-templates select="title" mode="list.title.mode"/> + </xsl:if> + + <fo:block id="{$id}" + xsl:use-attribute-sets="list.block.spacing" + background-color="#FFECCE"> + <xsl:apply-templates mode="vl.as.blocks"/> + </fo:block> +</xsl:template> +--> + +<!-- +<xsl:template match="variablelist"> + <fo:table border="0" + width="100%" + background-color="#FFECCE" + table-layout="fixed"> + <fo:table-column + align="left" + column-width="20%" + column-number="1"> + </fo:table-column> + <fo:table-column + align="left" + column-width="80%" + column-number="2"> + </fo:table-column> + <fo:table-body> + <xsl:apply-templates select="varlistentry"/> + </fo:table-body> + </fo:table> +</xsl:template> + +<xsl:template match="varlistentry"> + <fo:table-row> + <fo:table-cell> + <fo:block + background-color="#FFECCE"> + <xsl:apply-templates select="term"/> + </fo:block> + </fo:table-cell> + <fo:table-cell> + <fo:block + background-color="#FFECCE"> + <xsl:apply-templates select="listitem"/> + </fo:block> + </fo:table-cell> + </fo:table-row> +</xsl:template> + +<xsl:template match="varlistentry/term"> + <xsl:apply-templates/> + <xsl:text>, </xsl:text> +</xsl:template> + +<xsl:template match="varlistentry/term[position()=last()]" priority="2"> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="varlistentry/listitem"> + <xsl:apply-templates/> +</xsl:template> +--> + +</xsl:stylesheet> diff --git a/docs/xsl/ref-html-style.xsl b/docs/xsl/ref-html-style.xsl new file mode 100644 index 0000000..380e6a6 --- /dev/null +++ b/docs/xsl/ref-html-style.xsl @@ -0,0 +1,54 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version='1.0'> +<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl"/> +<xsl:include href="common.xsl"/> +<xsl:include href="html.xsl"/> +<xsl:include href="devhelp.xsl"/> + + <!-- ========================================================= --> + <!-- template to create the index.sgml anchor index --> + + <xsl:template name="generate.index"> + <xsl:call-template name="write.text.chunk"> + <xsl:with-param name="filename" select="'index.sgml'"/> + <xsl:with-param name="content"> + <!-- check all anchor and refentry elements --> + <xsl:apply-templates select="//anchor|//refentry|//refsect1|//refsect2|//book" + mode="generate.index.mode"/> + </xsl:with-param> + <xsl:with-param name="encoding" select="'utf-8'"/> + </xsl:call-template> + </xsl:template> + + <xsl:template match="*" mode="generate.index.mode"> + <xsl:if test="not(@href)"> + <xsl:if test="@id"> + <xsl:text><ANCHOR id="</xsl:text> + <xsl:value-of select="@id"/> + <xsl:text>" href="</xsl:text> + <xsl:if test="$gtkdoc.bookname"> + <xsl:value-of select="$gtkdoc.bookname"/> + <xsl:text>/</xsl:text> + </xsl:if> + <xsl:call-template name="href.target"/> + <xsl:text>"> + </xsl:text> + </xsl:if> + </xsl:if> + </xsl:template> + + <xsl:param name="gtkdoc.version" select="''"/> + <xsl:param name="gtkdoc.bookname" select="''"/> + + <xsl:param name="refentry.generate.name" select="0"/> + <xsl:param name="refentry.generate.title" select="1"/> + <xsl:param name="chapter.autolabel" select="0"/> + + <xsl:template match="book|article"> + <xsl:apply-imports/> + <xsl:call-template name="generate.devhelp"/> + <xsl:call-template name="generate.index"/> + </xsl:template> + +</xsl:stylesheet> diff --git a/docs/xsl/style.css b/docs/xsl/style.css new file mode 100644 index 0000000..59abc74 --- /dev/null +++ b/docs/xsl/style.css @@ -0,0 +1,10 @@ +.programlisting { +font: monospace; +background-color: #E0E0E0; +padding: 5; +} + +pre.synopsis { +background-color: #E0E0E0; +padding: 5; +} diff --git a/src/Makefile.am b/src/Makefile.am index f03fe1a..e3d7c3f 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,13 +1,3 @@ -AM_CPPFLAGS = \ - -DG_LOG_DOMAIN=\"Caja-Python\" \ - -DDATADIR=\"$(datadir)\" \ - -DLIBDIR=\"$(libdir)\" \ - -I$(top_srcdir) \ - -I$(top_builddir) \ - $(DISABLE_DEPRECATED_CFLAGS) \ - $(CAJA_PYTHON_CFLAGS) \ - $(PYTHON_INCLUDES) - caja_extensiondir=$(CAJA_EXTENSION_DIR) caja_extension_LTLIBRARIES = libcaja-python.la @@ -18,5 +8,20 @@ libcaja_python_la_SOURCES = \ caja-python-object.c \ caja-python-object.h -libcaja_python_la_LDFLAGS = -module -avoid-version -no-undefined +libcaja_python_la_CPPFLAGS = \ + -I$(top_srcdir) \ + -I$(top_builddir) \ + -DG_LOG_DOMAIN=\"Caja-Python\" \ + -DDATADIR=\"$(datadir)\" \ + -DLIBDIR=\"$(libdir)\" \ + -DPYTHON_VERSION=\"$(PYTHON_VERSION)\" \ + -DPY_LIB_LOC="\"$(PYTHON_LIB_LOC)\"" \ + $(PYTHON_INCLUDES) \ + $(AM_CPPFLAGS) + +libcaja_python_la_CFLAGS = \ + $(CAJA_PYTHON_CFLAGS) \ + $(AM_CFLAGS) + +libcaja_python_la_LDFLAGS = -module -avoid-version libcaja_python_la_LIBADD = $(CAJA_PYTHON_LIBS) $(PYTHON_LIBS) diff --git a/src/caja-python.c b/src/caja-python.c index 21e7f42..a6a7478 100644 --- a/src/caja-python.c +++ b/src/caja-python.c @@ -155,11 +155,17 @@ static gboolean caja_python_init_python (void) { PyObject *caja; + GModule *libpython; char *argv[] = { "caja", NULL }; if (Py_IsInitialized()) return TRUE; + debug("g_module_open " PY_LIB_LOC "/libpython" PYTHON_VERSION "." G_MODULE_SUFFIX ".1.0"); + libpython = g_module_open(PY_LIB_LOC "/libpython" PYTHON_VERSION "." G_MODULE_SUFFIX ".1.0", 0); + if (!libpython) + g_warning("g_module_open libpython failed: %s", g_module_error()); + debug("Py_Initialize"); Py_Initialize(); if (PyErr_Occurred()) |