1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
<?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="nautilus-python-overview" xmlns:xi="http://www.w3.org/2001/XInclude">
<title>Overview</title>
<para>Writing a Nautilus-Python extension is a fairly straight-forward process. One simply imports the Nautilus module from the GObject Introspection repository and creates a class which is derived from a <classname>GObject.GObject</classname> and one or more of the Nautilus module’s abstract classes. When an extension derives a class, it becomes a “provider”, telling Nautilus to ask it for information.</para>
<para>There are several types of providers available for extensions to use, all of which will be explained in more detail in later chapters:</para>
<itemizedlist>
<listitem><simpara><link linkend="class-nautilus-python-column-provider"><classname>ColumnProvider</classname></link></simpara></listitem>
<listitem><simpara><link linkend="class-nautilus-python-info-provider"><classname>InfoProvider</classname></link></simpara></listitem>
<listitem><simpara><link linkend="class-nautilus-python-menu-provider"><classname>MenuProvider</classname></link></simpara></listitem>
<listitem><simpara><link linkend="class-nautilus-python-properties-model-provider"><classname>PropertiesModelProvider</classname></link></simpara></listitem>
</itemizedlist>
<para>Your class can be derived from multiple providers.</para>
<para>Then the script needs to be installed to one of the paths nautilus-python looks for extensions to. That will be <filename>nautilus-python/extensions</filename> subdirectory of one of the following data directories:</para>
<orderedlist>
<listitem><simpara>the path in <envar>XDG_DATA_HOME</envar> environment variable , falling back to <filename><envar>$HOME</envar>/.local/share</filename> if not set</simpara></listitem>
<listitem><simpara> <varname>datadir</varname> configured when building nautilus-python (such as <filename>/usr/local/share</filename>)</simpara></listitem>
<listitem><simpara>Any path listed in the <envar>XDG_DATA_DIRS</envar> environment variable</simpara></listitem>
</orderedlist>
<para>After that, you will need to (re)start Nautilus, which will loads the nautilus-python C extension, which in turn will load all python extensions it can find.</para>
<note>
<para>Do not forget to have the extension class derive from a <classname>GObject.GObject</classname> in addition to the standard Nautilus classes.</para>
</note>
<note>
<para>For now, some Nautilus class constructors require passing named arguments instead of a standard argument list. This requirement may go away at some point.</para>
</note>
<xi:include href="nautilus-python-overview-example.xml"/>
<xi:include href="nautilus-python-overview-methods.xml"/>
</chapter>
|