Commit 93c20d04 authored by Jeremy Bicha's avatar Jeremy Bicha

New upstream version 1.2.2

parents 61f528c9 44224fac
This diff is collapsed.
......@@ -4,6 +4,7 @@ SUBDIRS = src examples
if ENABLE_GTK_DOC
SUBDIRS += docs
CLEANFILES = html.stamp
endif
pkgconfigdir = $(libdir)/pkgconfig
......
This diff is collapsed.
1.2.2:
- Fixed bug #792427, Fix folder string comparison to prevent duplicate extension loading
1.2.1:
- Fixed bug #792348, Fix syntax error when building docs using python3
1.2:
- Added capability to compile with python 3 support using PYTHON environment variable
- Fix #781232, Improve extension path loading semantics to follow XDG recommendations
- Fix #791208, require Nautilus 3.0 before importing extensions to prevent warnings
- Switch to using gtkdoc mkhtml for generating devhelp2 documentation
1.1:
- Added pygobject3 compatibility. Retained pygobject 2.28.x compatibility.
Updated extension examples to support pygobject3.
......@@ -19,6 +31,13 @@
- General clean up of the repository, removed old .cvsignore files
- Updated the gtk-doc documentation and examples to work with new dynamic bindings.
0.7.3:
- Use PyCapsule_Import for pygobject as well as pygtk
- Fixed bug #644399, in the property page example plugin, get the md5sum
of the file contents, not the file name
- Removed extraneous .cvsignore files
- Fixed the update-file-info-async example plugin
0.7.2:
- Fix to get the PyCapsule patch to work even if there is no PyCapsule
object set up for pygtk.
......
......@@ -6,21 +6,31 @@ introduced in Gnome 2.6.
For examples and documentation check the examples sub directory.
As of nautilus-python 0.7.0, scripts are also loaded from $XDG_DATA_DIR/nautilus-python/extensions,
which includes ~/.local/share and /usr/share (or whatever your $XDG_DATA_DIR is
set to).
Try to copy test.py to that directory for an example
Requirements
============
Nautilus 2.32.0
Python 2.3
Python 2.x or 3.x
PyGObject 2.28.0
As of v1.2.0 the nautilus-python bindings can be built with either python3
or python2 support. Ensure the $PYTHON environment variable is pointed
at your preferred python executable before running configure or autogen.
Running Extensions
==================
As of nautilus-python 1.2.0, scripts are loaded in the following order:
1. $XDG_DATA_HOME/nautilus-python/extensions (i.e. ~/.local/share/...)
2. nautilus_prefix/share/nautilus-python/extensions (i.e. ~/Development/...)
3. $XDG_DATA_DIRS/nautilus-python/extensions (i.e. /usr/share/...)
Simply copy your python scripts into that folder and restart Nautilus.
Problems
========
It's currently not possible to reload the python file without
restarting nautilus. That's a planned feature for future versions
It's currently not possible to reload a python script without
restarting nautilus.
Run nautilus with the NAUTILUS_PYTHON_DEBUG=misc environment variable to
print out debug information.
This diff is collapsed.
#! /bin/sh
# Wrapper for compilers which do not understand '-c -o'.
scriptversion=2016-01-11.22; # UTC
# Copyright (C) 1999-2017 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.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 2, 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/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# This file is maintained in Automake, please report
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
nl='
'
# We need space, tab and new line, in precisely that order. Quoting is
# there to prevent tools from complaining about whitespace usage.
IFS=" "" $nl"
file_conv=
# func_file_conv build_file lazy
# Convert a $build file to $host form and store it in $file
# Currently only supports Windows hosts. If the determined conversion
# type is listed in (the comma separated) LAZY, no conversion will
# take place.
func_file_conv ()
{
file=$1
case $file in
/ | /[!/]*) # absolute file, and not a UNC file
if test -z "$file_conv"; then
# lazily determine how to convert abs files
case `uname -s` in
MINGW*)
file_conv=mingw
;;
CYGWIN*)
file_conv=cygwin
;;
*)
file_conv=wine
;;
esac
fi
case $file_conv/,$2, in
*,$file_conv,*)
;;
mingw/*)
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
;;
cygwin/*)
file=`cygpath -m "$file" || echo "$file"`
;;
wine/*)
file=`winepath -w "$file" || echo "$file"`
;;
esac
;;
esac
}
# func_cl_dashL linkdir
# Make cl look for libraries in LINKDIR
func_cl_dashL ()
{
func_file_conv "$1"
if test -z "$lib_path"; then
lib_path=$file
else
lib_path="$lib_path;$file"
fi
linker_opts="$linker_opts -LIBPATH:$file"
}
# func_cl_dashl library
# Do a library search-path lookup for cl
func_cl_dashl ()
{
lib=$1
found=no
save_IFS=$IFS
IFS=';'
for dir in $lib_path $LIB
do
IFS=$save_IFS
if $shared && test -f "$dir/$lib.dll.lib"; then
found=yes
lib=$dir/$lib.dll.lib
break
fi
if test -f "$dir/$lib.lib"; then
found=yes
lib=$dir/$lib.lib
break
fi
if test -f "$dir/lib$lib.a"; then
found=yes
lib=$dir/lib$lib.a
break
fi
done
IFS=$save_IFS
if test "$found" != yes; then
lib=$lib.lib
fi
}
# func_cl_wrapper cl arg...
# Adjust compile command to suit cl
func_cl_wrapper ()
{
# Assume a capable shell
lib_path=
shared=:
linker_opts=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as 'compile cc -o foo foo.c'.
eat=1
case $2 in
*.o | *.[oO][bB][jJ])
func_file_conv "$2"
set x "$@" -Fo"$file"
shift
;;
*)
func_file_conv "$2"
set x "$@" -Fe"$file"
shift
;;
esac
;;
-I)
eat=1
func_file_conv "$2" mingw
set x "$@" -I"$file"
shift
;;
-I*)
func_file_conv "${1#-I}" mingw
set x "$@" -I"$file"
shift
;;
-l)
eat=1
func_cl_dashl "$2"
set x "$@" "$lib"
shift
;;
-l*)
func_cl_dashl "${1#-l}"
set x "$@" "$lib"
shift
;;
-L)
eat=1
func_cl_dashL "$2"
;;
-L*)
func_cl_dashL "${1#-L}"
;;
-static)
shared=false
;;
-Wl,*)
arg=${1#-Wl,}
save_ifs="$IFS"; IFS=','
for flag in $arg; do
IFS="$save_ifs"
linker_opts="$linker_opts $flag"
done
IFS="$save_ifs"
;;
-Xlinker)
eat=1
linker_opts="$linker_opts $2"
;;
-*)
set x "$@" "$1"
shift
;;
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
func_file_conv "$1"
set x "$@" -Tp"$file"
shift
;;
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
func_file_conv "$1" mingw
set x "$@" "$file"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -n "$linker_opts"; then
linker_opts="-link$linker_opts"
fi
exec "$@" $linker_opts
exit 1
}
eat=
case $1 in
'')
echo "$0: No command. Try '$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: compile [--help] [--version] PROGRAM [ARGS]
Wrapper for compilers which do not understand '-c -o'.
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
arguments, and rename the output as expected.
If you are trying to build a whole package this is not the
right script to run: please start by reading the file 'INSTALL'.
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "compile $scriptversion"
exit $?
;;
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
func_cl_wrapper "$@" # Doesn't return...
;;
esac
ofile=
cfile=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as 'compile cc -o foo foo.c'.
# So we strip '-o arg' only if arg is an object.
eat=1
case $2 in
*.o | *.obj)
ofile=$2
;;
*)
set x "$@" -o "$2"
shift
;;
esac
;;
*.c)
cfile=$1
set x "$@" "$1"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -z "$ofile" || test -z "$cfile"; then
# If no '-o' option was seen then we might have been invoked from a
# pattern rule where we don't need one. That is ok -- this is a
# normal compilation that the losing compiler can handle. If no
# '.c' file was seen then we are probably linking. That is also
# ok.
exec "$@"
fi
# Name of file we expect compiler to create.
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
# Create the lock directory.
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
# that we are using for the .o file. Also, base the name on the expected
# object file name, since that is what matters with a parallel build.
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
while true; do
if mkdir "$lockdir" >/dev/null 2>&1; then
break
fi
sleep 1
done
# FIXME: race condition here if user kills between mkdir and trap.
trap "rmdir '$lockdir'; exit 1" 1 2 15
# Run the compile.
"$@"
ret=$?
if test -f "$cofile"; then
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
elif test -f "${cofile}bj"; then
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
fi
rmdir "$lockdir"
exit $ret
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
This diff is collapsed.
/* config.h.in. Generated from configure.in by autoheader. */
/* config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
......@@ -30,8 +30,7 @@
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define to the sub-directory in which libtool stores uninstalled libraries.
*/
/* Define to the sub-directory where libtool stores uninstalled libraries. */
#undef LT_OBJDIR
/* Nautilus' extensions directory */
......
This diff is collapsed.
This diff is collapsed.
AC_PREREQ(2.60)
AC_INIT
AC_INIT([nautilus-python], [1.2.2])
PACKAGE=nautilus-python
VERSION=1.1
AC_SUBST(PACKAGE)
AC_SUBST(VERSION)
AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
AM_CONFIG_HEADER(config.h)
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE
AC_SUBST(ACLOCAL_AMFLAGS, "-I m4 -I .")
NAUTILUS_REQUIRED=2.32
......@@ -24,7 +18,7 @@ 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)
GTK_DOC_CHECK(1.14)
dnl Give error and exit if we don't have pkgconfig
if test "x$HAVE_PKGCONFIG" = "xno"; then
......@@ -36,8 +30,8 @@ AC_PREFIX_DEFAULT([$(pkg-config --variable=prefix libnautilus-extension || echo
dnl **************************************************
dnl * Check for Python
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)])
PYG_CHECK_PYTHON_HEADERS(,[AC_MSG_ERROR(could not find Python headers)])
PYG_CHECK_PYTHON_LIBS(,[AC_MSG_ERROR(could not find Python lib)])
if test "`pkg-config --variable=datadir pygobject-3.0`" != "" ; then
PYGOBJECT_VERSION=pygobject-3.0
......@@ -77,9 +71,9 @@ 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
dnl Check for gtkdoc-mkhtml
AC_PATH_PROG([GTKDOC_MKHTML], [gtkdoc-mkhtml])
if test -z "$GTKDOC_MKHTML"; then
echo " disabling generation of docs"
enable_gtk_doc=no
fi
......@@ -99,5 +93,6 @@ echo " nautilus-python $VERSION"
echo
echo " Nautilus Prefix: ${prefix}"
echo " PyGObject Version: ${PYGOBJECT_VERSION}"
echo " Python Library: ${PYTHON_LIB_LOC}/${PYTHON_LIB_NAME}"
echo " Documentation: ${enable_gtk_doc}"
echo
This diff is collapsed.
docsdir = $(docdir)
BUILDDIR = $(top_builddir)/docs
REF_VERSION = $(VERSION)
FULL_VERSION = $(VERSION)
FIXXREF = $(srcdir)/xsl/fixxref.py
HTML_STYLE = $(srcdir)/xsl/ref-html-style.xsl
XML_FILES = \
XMLdir = $(docsdir)/reference
XML_DATA = \
reference/nautilus-python-ref.xml \
reference/nautilus-python-overview.xml \
reference/nautilus-python-overview-example.xml \
......@@ -26,77 +26,60 @@ XML_FILES = \
reference/nautilus-python-enum-reference.xml \
reference/nautilus-python-operation-result.xml
HTMLdir = $(datadir)/gtk-doc/html/nautilus-python
HTML_FILES = \
html/index.html \
html/index.sgml \
html/nautilus-python-overview.html \
html/nautilus-python-overview-example.html \
html/nautilus-python-overview-methods.html \
html/nautilus-python-class-reference.html \
html/nautilus-python-provider-reference.html \
html/class-nautilus-python-column.html \
html/class-nautilus-python-column-provider.html \
html/class-nautilus-python-menu.html \
html/class-nautilus-python-menu-item.html \
html/class-nautilus-python-menu-provider.html \
html/class-nautilus-python-property-page.html \
html/class-nautilus-python-property-page-provider.html \
html/class-nautilus-python-location-widget-provider.html \
html/class-nautilus-python-file-info.html \
html/class-nautilus-python-info-provider.html \
html/nautilus-python-enum-reference.html \
html/enum-nautilus-python-operation-result.html \
html/nautilus-python.devhelp
HTML_DATA = $(HTMLFILES)
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)
HTMLdir = $(HTML_DIR)/nautilus-python
HTML_DATA = \
index.html \
index.sgml \
nautilus-python-overview.html \
nautilus-python-overview-example.html \
nautilus-python-overview-methods.html \
nautilus-python-class-reference.html \
nautilus-python-provider-reference.html \
class-nautilus-python-column.html \
class-nautilus-python-column-provider.html \
class-nautilus-python-menu.html \
class-nautilus-python-menu-item.html \
class-nautilus-python-menu-provider.html \
class-nautilus-python-property-page.html \
class-nautilus-python-property-page-provider.html \
class-nautilus-python-location-widget-provider.html \
class-nautilus-python-file-info.html \
class-nautilus-python-info-provider.html \
nautilus-python-enum-reference.html \
enum-nautilus-python-operation-result.html \
nautilus-python.devhelp2 \
up.png up-insensitive.png \
right.png right-insensitive.png \
left.png left-insensitive.png home.png \
style.css
BUILT_SOURCES = \
reference/builddate.xml \
$(HTML_FILES)
$(HTML_DATA) \
$(XML_DATA)
CLEANFILES = \
nautilus-python-ref.* \
reference/builddate.xml \
$(HTML_FILES)
$(HTML_DATA)
EXTRA_DIST = \
$(XML_FILES) \
$(XSL_FILES) \
$(FIXXREF) \
$(HTML_STYLE)
$(XML_DATA) \
$(HTML_DATA)
REFERENCE_DEPS = \
reference \
$(XML_FILES) \
$(XSL_FILES) \
$(FIXXREF)
$(XML_DATA)
if ENABLE_GTK_DOC
reference/builddate.xml: $(REFERENCE_DEPS)
$(PYTHON) -c 'import datetime; print datetime.date.today()' > $@
$(PYTHON) -c 'import datetime; print(datetime.date.today())' > $@
$(HTML_FILES): $(REFERENCE_DEPS)
xsltproc --nonet --xinclude -o $(BUILDDIR)/html/ \
--path $(BUILDDIR)/reference:$(srcdir)/reference \
--stringparam gtkdoc.bookname "nautilus-python" \
--stringparam gtkdoc.version ${REF_VERSION} \
$(HTML_STYLE) $(srcdir)/reference/nautilus-python-ref.xml
$(FIXXREF) -i xsl $(BUILDDIR)/html
$(HTML_DATA): $(REFERENCE_DEPS) reference/builddate.xml
$(GTKDOC_MKHTML) \
nautilus-python $(srcdir)/reference/nautilus-python-ref.xml \
--path $(BUILDDIR)/reference:$(srcdir)/reference
touch $@
endif
This diff is collapsed.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Nautilus.ColumnProvider: nautilus-python Reference Manual</title>
<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot">
<link rel="home" href="index.html" title="nautilus-python Reference Manual">
<link rel="up" href="nautilus-python-provider-reference.html" title="Provider Interfaces">
<link rel="prev" href="nautilus-python-provider-reference.html" title="Provider Interfaces">
<link rel="next" href="class-nautilus-python-info-provider.html" title="Nautilus.InfoProvider">
<meta name="generator" content="GTK-Doc V1.27 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="nautilus-python-provider-reference.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="nautilus-python-provider-reference.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="class-nautilus-python-info-provider.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="class-nautilus-python-column-provider"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2>Nautilus.ColumnProvider</h2>
<p>Nautilus.ColumnProvider — Nautilus.ColumnProvider Reference</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
<a name="id-1.5.2.2"></a><h2>Synopsis</h2>
<pre class="classsynopsis"> <span class="ooclass"><span class="classname">Nautilus.ColumnProvider</span></span> {<br><code class="methodsynopsis">  <span class="methodname"><a class="link" href="class-nautilus-python-column-provider.html#method-nautilus-column-provider--get-columns" title="Nautilus.ColumnProvider.get_columns">get_columns</a></span>(<span class="methodparam"></span>);</code><br>}</pre>
</div>
<div class="refsect1">
<a name="description-column-provider"></a><h2>Description</h2>
<p>
If subclassed, Nautilus will request a list of <a class="link" href="class-nautilus-python-column.html" title="Nautilus.Column"><code class="classname">Nautilus.Column</code></a>
objects, which are then displayed when the user is in <code class="literal">List</code> mode.
</p>
<div class="note">An extension sub-classing <a class="link" href="class-nautilus-python-column-provider.html" title="Nautilus.ColumnProvider"><code class="classname">Nautilus.ColumnProvider</code></a>
will almost always want to sub-class <GTKDOCLINK HREF="class-info-provider"><code class="classname">Nautilus.InfoProvider</code></GTKDOCLINK>
as well, since that is how an extension provides information for each item in a directory listing.
</div>
<p>
</p>
<div class="example">
<a name="id-1.5.2.3.3"></a><p class="title"><b>Example 2. Nautilus.ColumnProvider Example</b></p>
<div class="example-contents"><pre class="programlisting">
import os
# A way to get unquote working with python 2 and 3
try:
from urllib import unquote
except ImportError:
from urllib.parse import unquote
from gi.repository import GObject, Nautilus
class ColumnExtension(GObject.GObject, Nautilus.ColumnProvider, Nautilus.InfoProvider):
def __init__(self):
pass
def get_columns(self):
return Nautilus.Column(name="NautilusPython::block_size_column",
attribute="block_size",
label="Block size",
description="Get the block size"),
def update_file_info(self, file):
if file.get_uri_scheme() != 'file':
return
filename = unquote(file.get_uri()[7:])
file.add_string_attribute('block_size', str(os.stat(filename).st_blksize))
</pre></div>
</div>
<br class="example-break">
</div>
<div class="refsect1">
<a name="id-1.5.2.4"></a><h2>Passive Methods</h2>
<div class="refsect2">
<a name="method-nautilus-column-provider--get-columns"></a><h3>Nautilus.ColumnProvider.get_columns</h3>
<pre class="programlisting"><code class="methodsynopsis"><span class="methodname">get_columns</span>(<span class="methodparam"></span>);</code></pre>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
<col>
</colgroup>
<tbody><tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>a list of <code class="literal">Nautilus.Column</code>