[Xfce4-commits] <thunarx-python:master> Added initial gtk-doc documentation
Adam Plumb
noreply at xfce.org
Sun Dec 5 22:02:02 CET 2010
Updating branch refs/heads/master
to 861b17ad95b82c73278e08182c0c48b1bdce81fb (commit)
from 390542146f50dd0c04333c8d93273400afb8e05c (commit)
commit 861b17ad95b82c73278e08182c0c48b1bdce81fb
Author: Adam Plumb <adamplumb at gmail.com>
Date: Sun Dec 5 15:59:38 2010 -0500
Added initial gtk-doc documentation
Makefile.am | 7 +-
configure.ac.in | 27 ++-
docs/Makefile.am | 75 +++++-
docs/reference/entities.docbook.in | 1 +
docs/reference/thunarx-python-class-reference.xml | 11 +
docs/reference/thunarx-python-file-info.xml | 289 ++++++++++++++++++++
docs/reference/thunarx-python-menu-provider.xml | 158 +++++++++++
docs/reference/thunarx-python-overview-example.xml | 49 ++++
docs/reference/thunarx-python-overview.xml | 32 +++
.../thunarx-python-property-page-provider.xml | 74 +++++
docs/reference/thunarx-python-property-page.xml | 217 +++++++++++++++
.../thunarx-python-provider-reference.xml | 11 +
docs/reference/thunarx-python-ref.xml | 34 +++
m4/gtk-doc.m4 | 39 +++
14 files changed, 1021 insertions(+), 3 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index d5cc9b1..25149fa 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -7,4 +7,9 @@ rpm: dist
rpmbuild -ta $(PACKAGE)-$(VERSION).tar.gz
@rm -f $(PACKAGE)-$(VERSION).tar.gz
-# vi:set ts=8 sw=8 noet ai nocindent:
+dist-hook:
+ echo "==== DIST HOOK ===="
+ echo "`pwd`"
+ mv $(srcdir)/docs/html $(distdir)/docs
+
+DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc
diff --git a/configure.ac.in b/configure.ac.in
index c4cbfce..58d7664 100644
--- a/configure.ac.in
+++ b/configure.ac.in
@@ -66,6 +66,8 @@ dnl **************************************************
AM_CHECK_PYTHON_HEADERS(,[AC_MSG_ERROR(could not find Python headers)])
AM_CHECK_PYTHON_LIBS(,[AC_MSG_ERROR(could not find Python lib)])
+dnl Check for gtk-doc
+GTK_DOC_CHECK(1.9)
dnl ***************************
dnl *** Determine the installed thunarx version ***
@@ -119,6 +121,15 @@ PYGTK_CODEGEN="/usr/bin/python `$PKG_CONFIG --variable=codegendir pygobject-2.0`
AC_SUBST(PYGTK_CODEGEN)
AC_MSG_RESULT($PYGTK_CODEGEN)
+PYGOBJECT_DATADIR=`$PKG_CONFIG --variable=datadir pygobject-2.0`
+AC_SUBST(PYGOBJECT_DATADIR)
+
+PYGOBJECT_PYGDOCS="`$PKG_CONFIG --variable=pygdocs pygobject-2.0`"
+AC_SUBST(PYGOBJECT_PYGDOCS)
+
+PYGOBJECT_FIXXREF="$PYTHON `$PKG_CONFIG --variable=fixxref pygobject-2.0`"
+AC_SUBST(PYGOBJECT_FIXXREF)
+
dnl ---------------------------------
dnl Get thunar extensions directory
dnl ---------------------------------
@@ -126,6 +137,18 @@ THUNARX_EXTENSION_DIR=`$PKG_CONFIG --variable=extensionsdir thunarx-${THUNARX_AP
AC_SUBST(THUNARX_EXTENSION_DIR)
AC_DEFINE_UNQUOTED(THUNARX_EXTENSION_DIR, "$THUNARX_EXTENSION_DIR", [Thunar's extensions directory])
+dnl ---------------------------------
+dnl Check for gtk-doc dependencies
+dnl ---------------------------------
+if test "${enable_gtk_doc}" != no; then
+ dnl Check for xsltproc
+ AC_PATH_PROG([XSLTPROC], [xsltproc])
+ if test -z "$XSLTPROC"; then
+ echo " disabling generation of docs"
+ enable_gtk_doc=no
+ fi
+fi
+
dnl ***********************************
dnl *** Check for debugging support ***
dnl ***********************************
@@ -141,6 +164,7 @@ Makefile
src/Makefile
docs/Makefile
docs/examples/Makefile
+docs/reference/entities.docbook
])
dnl ***************************
@@ -150,5 +174,6 @@ echo
echo "Build Configuration:"
echo
-echo "Prefix: $prefix"
+echo " Prefix: $prefix"
+echo " Documentation: ${enable_gtk_doc}"
echo
diff --git a/docs/Makefile.am b/docs/Makefile.am
index 3318156..ebe7c86 100644
--- a/docs/Makefile.am
+++ b/docs/Makefile.am
@@ -3,4 +3,77 @@ SUBDIRS = examples
docsdir = $(datadir)/doc/$(PACKAGE)
docs_DATA = documentation.py
-EXTRA_DIST = documentation.py
+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
+
+XMLFILES = \
+ reference/thunarx-python-ref.xml \
+ reference/thunarx-python-class-reference.xml \
+ reference/thunarx-python-provider-reference.xml \
+ reference/thunarx-python-menu-provider.xml \
+ reference/thunarx-python-property-page.xml \
+ reference/thunarx-python-property-page-provider.xml \
+ reference/thunarx-python-file-info.xml
+
+HTMLdir = $(datadir)/gtk-doc/html/thunarx-python
+HTML_DATA = \
+ html/index.html \
+ html/index.sgml \
+ html/thunarx-python-overview.html \
+ html/thunarx-python-overview-example.html \
+ html/thunarx-python-class-reference.html \
+ html/thunarx-python-provider-reference.html \
+ html/class-thunarx-python-menu-provider.html \
+ html/class-thunarx-python-property-page.html \
+ html/class-thunarx-python-property-page-provider.html \
+ html/class-thunarx-python-file-info.html \
+ html/thunarx-python.devhelp
+
+CSS_FILES = $(PYGOBJECT_PYGDOCS)/style.css
+CSSdir = $(HTMLdir)
+CSS_DATA = $(CSS_FILES)
+
+BUILT_SOURCES = \
+ build_stamp \
+ reference/builddate.xml \
+ $(HTML_DATA)
+
+CLEANFILES = \
+ build_stamp \
+ thunarx-python-ref.* \
+ reference/builddate.xml
+
+EXTRA_DIST = \
+ documentation.py \
+ $(XMLFILES)
+
+REFERENCE_DEPS = \
+ reference \
+ $(XMLFILES)
+
+$(HTML_DATA): build_stamp
+
+if ENABLE_GTK_DOC
+
+reference/builddate.xml: $(REFERENCE_DEPS)
+ $(PYTHON) -c 'import datetime; print datetime.date.today()' > $@
+
+build_stamp: $(REFERENCE_DEPS) reference/builddate.xml
+ xsltproc --nonet --xinclude -o $(BUILDDIR)/html/ \
+ --path $(BUILDDIR)/reference:$(srcdir)/reference \
+ --stringparam gtkdoc.bookname "thunarx-python" \
+ --stringparam gtkdoc.version ${REF_VERSION} \
+ $(HTML_STYLE) $(srcdir)/reference/thunarx-python-ref.xml
+ $(PYGOBJECT_FIXXREF) -i $(PYGOBJECT_PYGDOCS) $(BUILDDIR)/html
+ touch $@
+
+pdf: $(REFERENCE_DEPS) reference/builddate.xml
+ xsltproc --nonet --xinclude -o thunarx-python-ref.fo \
+ $(PDF_STYLE) reference/thunarx-python-ref.xml
+ pdfxmltex thunarx-python-ref.fo >output </dev/null
+endif
diff --git a/docs/reference/entities.docbook.in b/docs/reference/entities.docbook.in
new file mode 100644
index 0000000..7b2eb41
--- /dev/null
+++ b/docs/reference/entities.docbook.in
@@ -0,0 +1 @@
+<!ENTITY version "@VERSION@">
diff --git a/docs/reference/thunarx-python-class-reference.xml b/docs/reference/thunarx-python-class-reference.xml
new file mode 100644
index 0000000..9e52f6f
--- /dev/null
+++ b/docs/reference/thunarx-python-class-reference.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+<chapter id="thunarx-python-class-reference"
+ xmlns:xi="http://www.w3.org/2001/XInclude">
+
+ <title>Available Classes</title>
+ <xi:include href="thunarx-python-file-info.xml"/>
+ <xi:include href="thunarx-python-property-page.xml"/>
+</chapter>
+
diff --git a/docs/reference/thunarx-python-file-info.xml b/docs/reference/thunarx-python-file-info.xml
new file mode 100644
index 0000000..2caaee5
--- /dev/null
+++ b/docs/reference/thunarx-python-file-info.xml
@@ -0,0 +1,289 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+
+<refentry id="class-thunarx-python-file-info">
+ <refnamediv>
+ <refname>thunarx.FileInfo</refname>
+ <refpurpose>thunarx.FileInfo Reference</refpurpose>
+ </refnamediv>
+
+<!-- ******************************* -->
+<!-- BEGIN OF NAUTILUS-PYTHON SYNOPSIS -->
+<!-- ******************************* -->
+
+ <refsect1>
+ <title>Synopsis</title>
+
+ <classsynopsis language="python">
+ <ooclass><classname>thunarx.FileInfo</classname></ooclass>
+ <ooclass><classname><link linkend="class-ginterface">gobject.GInterface</link></classname></ooclass>
+
+ <methodsynopsis language="python">
+ <methodname><link linkend="method-thunarx-python-file-info--get-name">get_name</link></methodname>
+ <methodparam></methodparam>
+ </methodsynopsis>
+
+ <methodsynopsis language="python">
+ <methodname><link linkend="method-thunarx-python-file-info--get-uri">get_uri</link></methodname>
+ <methodparam></methodparam>
+ </methodsynopsis>
+
+ <methodsynopsis language="python">
+ <methodname><link linkend="method-thunarx-python-file-info--get-parent-uri">get_parent_uri</link></methodname>
+ <methodparam></methodparam>
+ </methodsynopsis>
+
+ <methodsynopsis language="python">
+ <methodname><link linkend="method-thunarx-python-file-info--get-uri-scheme">get_uri_scheme</link></methodname>
+ <methodparam></methodparam>
+ </methodsynopsis>
+
+ <methodsynopsis language="python">
+ <methodname><link linkend="method-thunarx-python-file-info--get-mime-type">get_mime_type</link></methodname>
+ <methodparam></methodparam>
+ </methodsynopsis>
+
+ <methodsynopsis language="python">
+ <methodname><link linkend="method-thunarx-python-file-info--has-mime-type">has_mime_type</link></methodname>
+ <methodparam><parameter role="keyword">mime_type</parameter></methodparam>
+ </methodsynopsis>
+
+ <methodsynopsis language="python">
+ <methodname><link linkend="method-thunarx-python-file-info--is-directory">is_directory</link></methodname>
+ <methodparam></methodparam>
+ </methodsynopsis>
+
+ <methodsynopsis language="python">
+ <methodname><link linkend="method-thunarx-python-file-info--get-file-info">get_file_info</link></methodname>
+ <methodparam></methodparam>
+ </methodsynopsis>
+
+ <methodsynopsis language="python">
+ <methodname><link linkend="method-thunarx-python-file-info--get-filesystem-info">get_filesystem_info</link></methodname>
+ <methodparam></methodparam>
+ </methodsynopsis>
+
+ <methodsynopsis language="python">
+ <methodname><link linkend="method-thunarx-python-file-info--get-location">get_location</link></methodname>
+ <methodparam></methodparam>
+ </methodsynopsis>
+
+ <methodsynopsis language="python">
+ <methodname><link linkend="method-thunarx-python-file-info--changed">changed</link></methodname>
+ <methodparam></methodparam>
+ </methodsynopsis>
+
+ <methodsynopsis language="python">
+ <methodname><link linkend="method-thunarx-python-file-info--renamed">renamed</link></methodname>
+ <methodparam></methodparam>
+ </methodsynopsis>
+ </classsynopsis>
+ </refsect1>
+
+<!-- ********************************* -->
+<!-- BEGIN OF ANCESTRY -->
+<!-- ********************************* -->
+
+<refsect1>
+ <title>Ancestry</title>
+
+<synopsis>+-- <link linkend="class-ginterface">gobject.GInterface</link>
+ +-- <link linkend="class-thunarx-python-file-info">thunarx.FileInfo</link>
+</synopsis>
+</refsect1>
+
+
+<!-- ********************************** -->
+<!-- BEGIN OF DESCRIPTION -->
+<!-- ********************************** -->
+
+ <refsect1 id="description-file-info">
+ <title>Description</title>
+
+ <para>
+ Each <link linkend="class-thunarx-python-file-info"><classname>thunarx.FileInfo</classname></link> object is an abstraction
+ of a real file.
+ </para>
+
+ </refsect1>
+
+
+<!-- ******************************** -->
+<!-- BEGIN OF METHODS -->
+<!-- ******************************** -->
+
+<refsect1>
+ <title>Public Methods</title>
+
+ <refsect2 id="method-thunarx-python-file-info--get-name">
+ <title>thunarx.FileInfo.get_name</title>
+ <programlisting><methodsynopsis language="python">
+ <methodname>get_name</methodname>
+ </methodsynopsis></programlisting>
+ <variablelist>
+ <varlistentry>
+ <term><emphasis>Returns</emphasis> :</term>
+ <listitem><simpara>Returns the real name of the file represented by file_info in the local file system encoding.</simpara></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="method-thunarx-python-file-info--get-uri">
+ <title>thunarx.FileInfo.get_uri</title>
+ <programlisting><methodsynopsis language="python">
+ <methodname>get_uri</methodname>
+ </methodsynopsis></programlisting>
+ <variablelist>
+ <varlistentry>
+ <term><emphasis>Returns</emphasis> :</term>
+ <listitem><simpara>Returns the escaped, fully qualified URI of the file object represented by file_info.</simpara></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="method-thunarx-python-file-info--get-parent-uri">
+ <title>thunarx.FileInfo.get_parent_uri</title>
+ <programlisting><methodsynopsis language="python">
+ <methodname>get_parent_uri</methodname>
+ </methodsynopsis></programlisting>
+ <variablelist>
+ <varlistentry>
+ <term><emphasis>Returns</emphasis> :</term>
+ <listitem><simpara>Returns the URI to the parent file of file_info or NULL if file_info has no parent. Note that the parent URI may be of a different type than the URI of file_info. For example, the parent of "file:///" is "computer:///".</simpara></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="method-thunarx-python-file-info--get-uri-scheme">
+ <title>thunarx.FileInfo.get_uri_scheme</title>
+ <programlisting><methodsynopsis language="python">
+ <methodname>get_uri_scheme</methodname>
+ </methodsynopsis></programlisting>
+ <variablelist>
+ <varlistentry>
+ <term><emphasis>Returns</emphasis> :</term>
+ <listitem><simpara>Returns the URI scheme of the file represented by file_info. E.g. if file_info refers to the file "file:///usr/home", the return value will be "file".</simpara></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="method-thunarx-python-file-info--get-mime-type">
+ <title>thunarx.FileInfo.get_mime_type</title>
+ <programlisting><methodsynopsis language="python">
+ <methodname>get_mime_type</methodname>
+ </methodsynopsis></programlisting>
+ <variablelist>
+ <varlistentry>
+ <term><emphasis>Returns</emphasis> :</term>
+ <listitem><simpara>Returns the MIME-type of the file represented by file_info or NULL if no MIME-type is known for file_info.</simpara></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="method-thunarx-python-file-info--has-mime-type">
+ <title>thunarx.FileInfo.get_mime_type</title>
+ <programlisting><methodsynopsis language="python">
+ <methodname>get_mime_type</methodname>
+ </methodsynopsis></programlisting>
+ <variablelist>
+ <varlistentry>
+ <term><emphasis>Returns</emphasis> :</term>
+ <listitem><simpara>
+Checks whether file_info is of the given mime_type or whether the MIME-type of file_info is a subclass of mime_type.
+
+This is the preferred way for most extensions to check whether they support a given file or not, and you should consider using this method rather than thunarx.FileInfo.get_mime_type(). A simple example would be a menu extension that performs a certain action on text files. In this case you want to check whether a given thunarx.FileInfo refers to any kind of text file, not only to "text/plain" (e.g. this also includes "text/xml" and "application/x-desktop").
+
+But you should be aware that this method may take some time to test whether mime_type is valid for file_info, so don't call it too often.
+ </simpara></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="method-thunarx-python-file-info--is-directory">
+ <title>thunarx.FileInfo.is_directory</title>
+ <programlisting><methodsynopsis language="python">
+ <methodname>is_directory</methodname>
+ </methodsynopsis></programlisting>
+ <variablelist>
+ <varlistentry>
+ <term><emphasis>Returns</emphasis> :</term>
+ <listitem><simpara>Checks whether file_info refers to a directory.</simpara></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="method-thunarx-python-file-info--get-file-info">
+ <title>thunarx.FileInfo.get_file_info</title>
+ <programlisting><methodsynopsis language="python">
+ <methodname>get_file_info</methodname>
+ </methodsynopsis></programlisting>
+ <variablelist>
+ <varlistentry>
+ <term><emphasis>Returns</emphasis> :</term>
+ <listitem><simpara>Returns the GFileInfo object associated with file_info, which includes additional information about the file_info as queried from GIO earlier.</simpara></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="method-thunarx-python-file-info--get-filesystem-info">
+ <title>thunarx.FileInfo.get_filesystem_info</title>
+ <programlisting><methodsynopsis language="python">
+ <methodname>get_filesystem_info</methodname>
+ </methodsynopsis></programlisting>
+ <variablelist>
+ <varlistentry>
+ <term><emphasis>Returns</emphasis> :</term>
+ <listitem><simpara>Returns the GFileInfo which includes additional information about the filesystem file_info resides on.</simpara></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="method-thunarx-python-file-info--get-location">
+ <title>thunarx.FileInfo.get_location</title>
+ <programlisting><methodsynopsis language="python">
+ <methodname>get_location</methodname>
+ </methodsynopsis></programlisting>
+ <variablelist>
+ <varlistentry>
+ <term><emphasis>Returns</emphasis> :</term>
+ <listitem><simpara>Returns the GFile file_info points to. The GFile is a more powerful tool than just the URI or the path.</simpara></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="method-thunarx-python-file-info--changed">
+ <title>thunarx.FileInfo.changed</title>
+ <programlisting><methodsynopsis language="python">
+ <methodname>changed</methodname>
+ </methodsynopsis></programlisting>
+ <variablelist>
+ <varlistentry>
+ <term><emphasis>Returns</emphasis> :</term>
+ <listitem><simpara>Emits the ::changed signal on file_info. This method should not be invoked by Thunar plugins, instead the file manager itself will use this method to emit ::changed whenever it notices a change on file_info.</simpara></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="method-thunarx-python-file-info--renamed">
+ <title>thunarx.FileInfo.renamed</title>
+ <programlisting><methodsynopsis language="python">
+ <methodname>renamed</methodname>
+ </methodsynopsis></programlisting>
+ <variablelist>
+ <varlistentry>
+ <term><emphasis>Returns</emphasis> :</term>
+ <listitem><simpara>
+Emits the ::renamed signal on file_info. This method should not be invoked by Thunar plugins, instead the file manager will emit this signal whenever the user renamed the file_info.
+
+The plugins should instead connect to the ::renamed signal and update it's internal state and it's user interface after the file manager renamed a file.
+ </simpara></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+</refsect1>
+
+
+</refentry>
+
diff --git a/docs/reference/thunarx-python-menu-provider.xml b/docs/reference/thunarx-python-menu-provider.xml
new file mode 100644
index 0000000..e031c1f
--- /dev/null
+++ b/docs/reference/thunarx-python-menu-provider.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+
+<refentry id="class-thunarx-python-menu-provider">
+ <refnamediv>
+ <refname>thunarx.MenuProvider</refname>
+ <refpurpose>thunarx.MenuProvider Reference</refpurpose>
+ </refnamediv>
+
+<!-- ******************************* -->
+<!-- BEGIN OF SYNOPSIS -->
+<!-- ******************************* -->
+
+ <refsect1>
+ <title>Synopsis</title>
+
+ <classsynopsis language="python">
+ <ooclass><classname>thunarx.MenuProvider</classname></ooclass>
+
+ <methodsynopsis language="python">
+ <methodname><link linkend="method-thunarx-python-menu-provider--get-file-actions">get_file_actions</link></methodname>
+ <methodparam><parameter role="keyword">window</parameter></methodparam>
+ <methodparam><parameter role="keyword">files</parameter></methodparam>
+ </methodsynopsis>
+
+ <methodsynopsis language="python">
+ <methodname><link linkend="method-thunarx-python-menu-provider--get-folder-actions">get_folder_actions</link></methodname>
+ <methodparam><parameter role="keyword">window</parameter></methodparam>
+ <methodparam><parameter role="keyword">folder</parameter></methodparam>
+ </methodsynopsis>
+
+ <methodsynopsis language="python">
+ <methodname><link linkend="method-thunarx-python-menu-provider--get-dnd-actions">get_dnd_actions</link></methodname>
+ <methodparam><parameter role="keyword">window</parameter></methodparam>
+ <methodparam><parameter role="keyword">folder</parameter></methodparam>
+ <methodparam><parameter role="keyword">files</parameter></methodparam>
+ </methodsynopsis>
+ </classsynopsis>
+ </refsect1>
+
+<!-- ********************************** -->
+<!-- BEGIN OF DESCRIPTION -->
+<!-- ********************************** -->
+
+ <refsect1 id="description-menu-provider">
+ <title>Description</title>
+
+ <para>
+ The interface to extensions that provide additional menu items
+ </para>
+ </refsect1>
+
+<!-- ****************************** -->
+<!-- BEGIN OF METHODS -->
+<!-- ****************************** -->
+
+ <refsect1>
+ <title>Passive Methods</title>
+
+ <refsect2 id="method-thunarx-python-menu-provider--get-file-actions">
+ <title>thunarx.MenuProvider.get_file_actions</title>
+
+ <programlisting><methodsynopsis language="python">
+ <methodname>get_file_actions</methodname>
+ <methodparam><parameter role="keyword">window</parameter></methodparam>
+ <methodparam><parameter role="keyword">files</parameter></methodparam>
+ </methodsynopsis></programlisting>
+
+ <variablelist>
+ <varlistentry>
+ <term><parameter role="keyword">window</parameter> :</term>
+ <listitem><simpara>the current <link linkend="class-gtkwindow"><classname>gtk.Window</classname></link> instance</simpara></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter role="keyword">menu</parameter> :</term>
+ <listitem><simpara>a list of <link linkend="class-thunarx-python-file-info"><classname>thunarx.FileInfo</classname></link> objects.</simpara></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis>Returns</emphasis> :</term>
+ <listitem><simpara>a list of gtk.Action objects</simpara></listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>
+ The <methodname>get_file_actions</methodname>() method returns a list of
+ gtk.Action objects.
+ </para>
+ </refsect2>
+
+ <refsect2 id="method-thunarx-python-menu-provider--get-folder-actions">
+ <title>thunarx.MenuProvider.get_folder_actions</title>
+
+ <programlisting><methodsynopsis language="python">
+ <methodname>get_folder_actions</methodname>
+ <methodparam><parameter role="keyword">window</parameter></methodparam>
+ <methodparam><parameter role="keyword">folder</parameter></methodparam>
+ </methodsynopsis></programlisting>
+
+ <variablelist>
+ <varlistentry>
+ <term><parameter role="keyword">window</parameter> :</term>
+ <listitem><simpara>the current <link linkend="class-gtkwindow"><classname>gtk.Window</classname></link> instance</simpara></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter role="keyword">folder</parameter> :</term>
+ <listitem><simpara>the current folder, as a <link linkend="class-thunarx-python-file-info"><classname>thunarx.FileInfo</classname></link> object.</simpara></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis>Returns</emphasis> :</term>
+ <listitem><simpara>a list of gtk.Action objects</simpara></listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>
+ The <methodname>get_folder_actions</methodname>() method returns a list of
+ gtk.Action objects.
+ </para>
+ </refsect2>
+
+ <refsect2 id="method-thunarx-python-menu-provider--get-dnd-actions">
+ <title>thunarx.MenuProvider.get_dnd_actions</title>
+
+ <programlisting><methodsynopsis language="python">
+ <methodname>get_dnd_actions</methodname>
+ <methodparam><parameter role="keyword">window</parameter></methodparam>
+ <methodparam><parameter role="keyword">folder</parameter></methodparam>
+ <methodparam><parameter role="keyword">files</parameter></methodparam>
+ </methodsynopsis></programlisting>
+
+ <variablelist>
+ <varlistentry>
+ <term><parameter role="keyword">window</parameter> :</term>
+ <listitem><simpara>the current <link linkend="class-gtkwindow"><classname>gtk.Window</classname></link> instance</simpara></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter role="keyword">folder</parameter> :</term>
+ <listitem><simpara>the current folder, as a <link linkend="class-thunarx-python-file-info"><classname>thunarx.FileInfo</classname></link> object.</simpara></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter role="keyword">files</parameter> :</term>
+ <listitem><simpara>a list of the currently selected files, as a <link linkend="class-thunarx-python-file-info"><classname>thunarx.FileInfo</classname></link> objects.</simpara></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis>Returns</emphasis> :</term>
+ <listitem><simpara>a list of gtk.Action objects</simpara></listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>
+ The <methodname>get_dnd_actions</methodname>() method returns a list of
+ gtk.Action objects.
+ </para>
+ </refsect2>
+ </refsect1>
+
+</refentry>
+
diff --git a/docs/reference/thunarx-python-overview-example.xml b/docs/reference/thunarx-python-overview-example.xml
new file mode 100644
index 0000000..c6f0786
--- /dev/null
+++ b/docs/reference/thunarx-python-overview-example.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+<chapter id="thunarx-python-overview-example"
+ xmlns:xi="http://www.w3.org/2001/XInclude">
+
+ <title>A Simple Extension</title>
+
+ <para>Create an empty file with the following code:</para>
+
+ <example>
+ <title>A Simple Extension</title>
+ <programlisting>
+import thunarx
+import gtk
+
+class ThunarxMenuProviderPlugin(thunarx.MenuProvider):
+ def __init__(self):
+ pass
+
+ def get_file_actions(self, window, files):
+ return [gtk.Action("TMP:TestFileAction", "PyFileAction", "Python File Action", gtk.STOCK_FILE)]
+
+ def get_folder_actions(self, window, folder):
+ return [gtk.Action("TMP:TestFolderAction", "PyFolderAction", "Python Folder Action", gtk.STOCK_DIRECTORY)]
+ </programlisting>
+ </example>
+
+ <para>Save this file as TestExtension.py in the /usr/lib/thunarx-1/python folder (or thunarx-2).
+ You may need to create this folder. To run, open the terminal and type:</para>
+
+ <informalexample>
+ <programlisting>
+$ killall thunar
+$ thunar</programlisting>
+ </informalexample>
+
+ <para>Once Thunar starts, right-click on a file and you should see a new menu item,
+ "PyFileAction". It is as simple as that!</para>
+
+ <para>As mentioned above, in order to
+ get loaded by Thunar, a python extension must import the thunarx module,
+ create a class derived from a thunarx *Provider, then create the methods that
+ will be called by Thunar when it requests information from its providers.
+ In this case, when someone right-clicks on a file, Thunar will ask all of its
+ MenuProviders for additional menu items to show the user. When folders or files are clicked,
+ the get_file_actions method is called and a list of gtk.Action objects is expected.</para>
+
+</chapter>
diff --git a/docs/reference/thunarx-python-overview.xml b/docs/reference/thunarx-python-overview.xml
new file mode 100644
index 0000000..5182f6d
--- /dev/null
+++ b/docs/reference/thunarx-python-overview.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+<chapter id="thunarx-python-overview"
+ xmlns:xi="http://www.w3.org/2001/XInclude">
+
+ <title>Overview</title>
+
+ <para>Writing a Thunarx-Python extension is a fairly straight-forward process.
+ One simply imports the thunarx module and creates a class which is derived from a number
+ of the thunarx module's classes. When an extension derives a class, it becomes a "provider",
+ telling Thunarx to ask it for information. There are several types of providers
+ available for extensions to use: there is MenuProvider, PropertyPageProvider, RenamerProvider,
+ and PreferencePageProvider, all of which will be explained
+ in more detail below. Your class can be derived from multiple providers.</para>
+
+ <para>Here are the basic steps:</para>
+
+ <para>1. A script is written and installed to the standard python extensions install path</para>
+ <para>2. Thunar is (re)started and loads the Thunarx-Python C extension, which in turn loads all python extensions</para>
+ <para>3. Any python script in the standard python extensions install path that imports the thunarx module and derives
+ the main class from a thunarx module class will be loaded</para>
+
+ <note>
+<title>A note about the standard python extensions install path</title>
+
+<para>The system-wide install path is $PREFIX/lib/thunarx-2/python (or thunarx-1). However, some 64 bit distributions,
+such as Fedora, put Thunarx-Python extensions in $PREFIX/lib64/thunarx-1/python (or thunarx-1). </para>
+ </note>
+
+</chapter>
+
diff --git a/docs/reference/thunarx-python-property-page-provider.xml b/docs/reference/thunarx-python-property-page-provider.xml
new file mode 100644
index 0000000..79732d9
--- /dev/null
+++ b/docs/reference/thunarx-python-property-page-provider.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+
+<refentry id="class-thunarx-python-property-page-provider">
+ <refnamediv>
+ <refname>thunarx.PropertyPageProvider</refname>
+ <refpurpose>thunarx.PropertyPageProvider Reference</refpurpose>
+ </refnamediv>
+
+<!-- ******************************* -->
+<!-- BEGIN OF SYNOPSIS -->
+<!-- ******************************* -->
+
+ <refsect1>
+ <title>Synopsis</title>
+
+ <classsynopsis language="python">
+ <ooclass><classname>thunarx.PropertyPageProvider</classname></ooclass>
+
+ <methodsynopsis language="python">
+ <methodname><link linkend="method-thunarx-property-page-provider--get-pages">get_pages</link></methodname>
+ <methodparam><parameter role="keyword">files</parameter></methodparam>
+ </methodsynopsis>
+ </classsynopsis>
+ </refsect1>
+
+<!-- ********************************** -->
+<!-- BEGIN OF DESCRIPTION -->
+<!-- ********************************** -->
+
+ <refsect1 id="description-property-page-provider">
+ <title>Description</title>
+
+ <para>
+ To add a property page to the file properties dialog, extensions must implement the ThunarxPropertyPageProvider interface. This interface has only one virtual method, get_pages, that is passed a list of thunarx.FileInfo objects and returns a list of thunarx.PropertyPage objects.
+ </para>
+ </refsect1>
+
+<!-- ****************************** -->
+<!-- BEGIN OF METHODS -->
+<!-- ****************************** -->
+
+ <refsect1>
+ <title>Passive Methods</title>
+
+ <refsect2 id="method-thunarx-property-page-provider--get-pages">
+ <title>thunarx.PropertyPageProvider.get_pages</title>
+
+ <programlisting><methodsynopsis language="python">
+ <methodname>get_pages</methodname>
+ <methodparam></methodparam>
+ </methodsynopsis></programlisting>
+
+ <variablelist>
+ <varlistentry>
+ <term><parameter role="keyword">files</parameter> :</term>
+ <listitem><simpara>a list of <link linkend="class-thunarx-python-file-info"><classname>thunarx.FileInfo</classname></link> objects.</simpara></listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis>Returns</emphasis> :</term>
+ <listitem><simpara>a list of <link linkend="class-thunarx-python-property-page"><classname>thunarx.PropertyPage</classname></link> objects</simpara></listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>
+ This function is called by Thunar when it wants property page items from the extension.
+ It is called in the main thread before a property page is shown, so it should return quickly.
+ </para>
+ </refsect2>
+ </refsect1>
+
+</refentry>
+
diff --git a/docs/reference/thunarx-python-property-page.xml b/docs/reference/thunarx-python-property-page.xml
new file mode 100644
index 0000000..d8d5ecf
--- /dev/null
+++ b/docs/reference/thunarx-python-property-page.xml
@@ -0,0 +1,217 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+
+<refentry id="class-thunarx-python-property-page">
+ <refnamediv>
+ <refname>thunarx.PropertyPage</refname>
+ <refpurpose>thunarx.PropertyPage Reference</refpurpose>
+ </refnamediv>
+
+<!-- ******************************* -->
+<!-- BEGIN OF NAUTILUS-PYTHON SYNOPSIS -->
+<!-- ******************************* -->
+
+ <refsect1>
+ <title>Synopsis</title>
+
+ <classsynopsis language="python">
+ <ooclass><classname>thunarx.PropertyPage</classname></ooclass>
+ <ooclass><classname><link linkend="class-gobject">gobject.GObject</link></classname></ooclass>
+
+ <constructorsynopsis language="python">
+ <methodname><link linkend="constructor-thunarx-property-page">thunarx.PropertyPage</link></methodname>
+ <methodparam><parameter role="keyword">label</parameter></methodparam>
+ </constructorsynopsis>
+
+ <constructorsynopsis language="python">
+ <methodname><link linkend="constructor-thunarx-property-page">thunarx.PropertyPage</link></methodname>
+ <methodparam><parameter role="keyword">label_widget</parameter></methodparam>
+ </constructorsynopsis>
+
+ <methodsynopsis language="python">
+ <methodname><link linkend="method-thunarx-python-property-page--get-label">get_label</link></methodname>
+ </methodsynopsis>
+
+ <methodsynopsis language="python">
+ <methodname><link linkend="method-thunarx-python-property-page--set-label">set_label</link></methodname>
+ <methodparam><parameter role="keyword">label</parameter></methodparam>
+ </methodsynopsis>
+
+ <methodsynopsis language="python">
+ <methodname><link linkend="method-thunarx-python-property-page--get-label-widget">get_label_widget</link></methodname>
+ </methodsynopsis>
+
+ <methodsynopsis language="python">
+ <methodname><link linkend="method-thunarx-python-property-page--set-label-widget">set_label_widget</link></methodname>
+ <methodparam><parameter role="keyword">label_widget</parameter></methodparam>
+ </methodsynopsis>
+ </classsynopsis>
+ </refsect1>
+
+<!-- ********************************* -->
+<!-- BEGIN OF ANCESTRY -->
+<!-- ********************************* -->
+
+<refsect1>
+ <title>Ancestry</title>
+
+<synopsis>+-- <link linkend="class-gobject">gobject.GObject</link>
+ +-- <link linkend="class-thunarx-python-property-page">thunarx.PropertyPage</link>
+</synopsis>
+</refsect1>
+
+
+<!-- ********************************** -->
+<!-- BEGIN OF DESCRIPTION -->
+<!-- ********************************** -->
+
+ <refsect1 id="description-property-page">
+ <title>Description</title>
+
+ <para>
+ A <link linkend="class-thunarx-python-property-page"><classname>thunarx.PropertyPage</classname></link> object is returned by <link linkend="class-thunarx-python-property-page-provider"><classname>thunarx.PropertyPageProvider</classname></link> extensions.
+ </para>
+
+ </refsect1>
+
+
+<!-- *********************************** -->
+<!-- BEGIN OF PROPERTIES -->
+<!-- *********************************** -->
+
+<refsect1>
+ <title>Properties</title>
+
+ <blockquote role="properties">
+ <informaltable pgwide="1" frame="none">
+ <tgroup cols="3">
+ <colspec column="1" colwidth="1in"/>
+ <colspec column="2" colwidth="1in"/>
+ <colspec column="3" colwidth="4in"/>
+ <tbody>
+
+ <row valign="top">
+ <entry>"label"</entry>
+ <entry>The label displayed in the notebook tab.</entry>
+ <entry>Read-Write</entry>
+ </row>
+
+ <row valign="top">
+ <entry>"label-widget"</entry>
+ <entry>The label widget displayed in the notebook tab. Default value: None</entry>
+ <entry>Read-Write</entry>
+ </row>
+
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </blockquote>
+</refsect1>
+
+
+<!-- ************************************ -->
+<!-- BEGIN OF CONSTRUCTOR -->
+<!-- ************************************ -->
+
+<refsect1 id="constructor-thunarx-property-page">
+ <title>Constructor</title>
+
+ <programlisting><constructorsynopsis language="python">
+ <methodname>thunarx.PropertyPage</methodname>
+ <methodparam><parameter role="keyword">label</parameter></methodparam>
+ </constructorsynopsis></programlisting>
+
+ <variablelist>
+ <varlistentry>
+ <term><parameter role="keyword">label</parameter> :</term>
+ <listitem><simpara>the user-visible label for the property page</simpara></listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>
+ Creates a new <link linkend="class-thunarx-python-property-page"><classname>thunarx.PropertyPage</classname></link> object.
+ </para>
+</refsect1>
+
+<refsect1 id="constructor-thunarx-property-page-label-widget">
+ <title>Constructor</title>
+
+ <programlisting><constructorsynopsis language="python">
+ <methodname>thunarx.PropertyPage</methodname>
+ <methodparam><parameter role="keyword">label_widget</parameter></methodparam>
+ </constructorsynopsis></programlisting>
+
+ <variablelist>
+ <varlistentry>
+ <term><parameter role="keyword">label_widget</parameter> :</term>
+ <listitem><simpara>the user-visible label widget for the property page</simpara></listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>
+ Creates a new <link linkend="class-thunarx-python-property-page-label-widget"><classname>thunarx.PropertyPage</classname></link> object.
+ </para>
+</refsect1>
+
+<!-- ******************************** -->
+<!-- BEGIN OF METHODS -->
+<!-- ******************************** -->
+
+<refsect1>
+ <title>Public Methods</title>
+
+ <refsect2 id="method-thunarx-python-property-page--get-label">
+ <title>thunarx.FileInfo.get_label</title>
+ <programlisting><methodsynopsis language="python">
+ <methodname>get_label</methodname>
+ </methodsynopsis></programlisting>
+ <variablelist>
+ <varlistentry>
+ <term><emphasis>Returns</emphasis> :</term>
+ <listitem><simpara>the text in the label or NULL</simpara></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="method-thunarx-python-property-page--set-label">
+ <title>thunarx.FileInfo.set_label</title>
+ <programlisting><methodsynopsis language="python">
+ <methodname>set_label</methodname>
+ </methodsynopsis></programlisting>
+ <variablelist>
+ <varlistentry>
+ <term><emphasis>Returns</emphasis> :</term>
+ <listitem><simpara>Sets the text of the label.</simpara></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="method-thunarx-python-property-page--get-label-widget">
+ <title>thunarx.FileInfo.get_label_widget</title>
+ <programlisting><methodsynopsis language="python">
+ <methodname>get_label_widget</methodname>
+ </methodsynopsis></programlisting>
+ <variablelist>
+ <varlistentry>
+ <term><emphasis>Returns</emphasis> :</term>
+ <listitem><simpara>Returns the label widget for the property_page.</simpara></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2 id="method-thunarx-python-property-page--set-label-widget">
+ <title>thunarx.FileInfo.set_label_widget</title>
+ <programlisting><methodsynopsis language="python">
+ <methodname>set_label_widget</methodname>
+ </methodsynopsis></programlisting>
+ <variablelist>
+ <varlistentry>
+ <term><emphasis>Returns</emphasis> :</term>
+ <listitem><simpara>Sets the label widget for the property_page. This is the widget that will appear in the notebook header for the property_page.</simpara></listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+</refsect1>
+</refentry>
diff --git a/docs/reference/thunarx-python-provider-reference.xml b/docs/reference/thunarx-python-provider-reference.xml
new file mode 100644
index 0000000..ac829eb
--- /dev/null
+++ b/docs/reference/thunarx-python-provider-reference.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+<chapter id="thunarx-python-provider-reference"
+ xmlns:xi="http://www.w3.org/2001/XInclude">
+
+ <title>Provider Interfaces</title>
+ <xi:include href="thunarx-python-menu-provider.xml"/>
+ <xi:include href="thunarx-python-property-page-provider.xml"/>
+</chapter>
+
diff --git a/docs/reference/thunarx-python-ref.xml b/docs/reference/thunarx-python-ref.xml
new file mode 100644
index 0000000..b9f4427
--- /dev/null
+++ b/docs/reference/thunarx-python-ref.xml
@@ -0,0 +1,34 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"
+[
+<!ENTITY % entities SYSTEM "entities.docbook">
+%entities;
+<!ENTITY builddate SYSTEM "builddate.xml">
+<!ENTITY version SYSTEM "version.xml">
+]>
+<book id="thunarx-python-reference" xmlns:xi="http://www.w3.org/2001/XInclude">
+ <bookinfo>
+ <pubdate>&builddate;</pubdate>
+ <title>thunarx-python Reference Manual</title>
+ <edition>Reference Manual for thunarx-python &version;</edition>
+ <releaseinfo>For thunarx-python version &version;</releaseinfo>
+ <authorgroup>
+ <author>
+ <firstname>Adam</firstname>
+ <surname>Plumb</surname>
+ </author>
+ </authorgroup>
+ <abstract>
+ <para>This reference describes the classes of the thunarx-python module.</para>
+ </abstract>
+ </bookinfo>
+ <toc>
+ </toc>
+
+<!-- the reference page chapters for the thunarx-python classes -->
+
+ <xi:include href="thunarx-python-overview.xml"/>
+ <xi:include href="thunarx-python-class-reference.xml"/>
+ <xi:include href="thunarx-python-provider-reference.xml"/>
+</book>
+
diff --git a/m4/gtk-doc.m4 b/m4/gtk-doc.m4
new file mode 100644
index 0000000..bfdfa1d
--- /dev/null
+++ b/m4/gtk-doc.m4
@@ -0,0 +1,39 @@
+dnl -*- mode: autoconf -*-
+
+# serial 1
+
+dnl Usage:
+dnl GTK_DOC_CHECK([minimum-gtk-doc-version])
+AC_DEFUN([GTK_DOC_CHECK],
+[
+ AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
+ AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
+ dnl for overriding the documentation installation directory
+ AC_ARG_WITH([html-dir],
+ AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),,
+ [with_html_dir='${datadir}/gtk-doc/html'])
+ HTML_DIR="$with_html_dir"
+ AC_SUBST([HTML_DIR])
+
+ dnl enable/disable documentation building
+ AC_ARG_ENABLE([gtk-doc],
+ AS_HELP_STRING([--enable-gtk-doc],
+ [use gtk-doc to build documentation [[default=no]]]),,
+ [enable_gtk_doc=no])
+
+ if test x$enable_gtk_doc = xyes; then
+ ifelse([$1],[],
+ [PKG_CHECK_EXISTS([gtk-doc],,
+ AC_MSG_ERROR([gtk-doc not installed and --enable-gtk-doc requested]))],
+ [PKG_CHECK_EXISTS([gtk-doc >= $1],,
+ AC_MSG_ERROR([You need to have gtk-doc >= $1 installed to build gtk-doc]))])
+ fi
+
+ AC_MSG_CHECKING([whether to build gtk-doc documentation])
+ AC_MSG_RESULT($enable_gtk_doc)
+
+ AC_PATH_PROGS(GTKDOC_CHECK,gtkdoc-check,)
+
+ AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes])
+ AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"])
+])
More information about the Xfce4-commits
mailing list