[nautilus-actions] Implement gtk-doc and update NACT user's manual



commit 8543f9bc1fafa18b03fef975b0bd93e8d2055c8f
Author: Pierre Wieser <pwieser trychlos org>
Date:   Fri Aug 13 19:07:29 2010 +0200

    Implement gtk-doc and update NACT user's manual

 .gitignore                                         |    2 +
 COPYING-DOCS                                       |  330 ++++++++++++++++
 ChangeLog                                          |   68 ++++
 INSTALL                                            |  200 ++--------
 Makefile.am                                        |    5 +-
 TODO                                               |    9 +
 autogen.sh                                         |    2 +
 configure.ac                                       |    8 +
 doc/.gitignore                                     |    1 +
 doc/api/Makefile.am                                |  118 ++++--
 .../C/figures/nact-desktop-environment-frame.png   |  Bin 0 -> 33139 bytes
 doc/nact/C/figures/nact-exec-mode-frame.png        |  Bin 0 -> 25664 bytes
 doc/nact/C/figures/nact-execute-as-frame.png       |  Bin 0 -> 13855 bytes
 .../C/figures/nact-execution-environment-frame.png |  Bin 0 -> 26667 bytes
 doc/nact/C/figures/nact-selection-count-frame.png  |  Bin 0 -> 24839 bytes
 doc/nact/C/figures/nact-startup-mode-frame.png     |  Bin 0 -> 16873 bytes
 doc/nact/C/figures/nact-target-location.png        |  Bin 0 -> 43383 bytes
 .../C/figures/nact-working-directory-frame.png     |  Bin 0 -> 19930 bytes
 doc/nact/C/figures/sort-asc.png                    |  Bin 0 -> 923 bytes
 doc/nact/C/figures/sort-desc.png                   |  Bin 0 -> 940 bytes
 doc/nact/C/figures/sort-manual.png                 |  Bin 0 -> 1051 bytes
 doc/nact/C/nact-conditions.xml                     |  416 +++++++++++++-------
 doc/nact/C/nact-edit.xml                           |   33 ++
 doc/nact/C/nact-execution.xml                      |  172 ++++++---
 doc/nact/C/nact-menus.xml                          |   54 +++
 doc/nact/C/nact-profiles.xml                       |    2 +-
 doc/nact/C/nact-sorting.xml                        |   78 ++--
 doc/nact/C/nact-starting.xml                       |    5 +-
 doc/nact/C/nact-where.xml                          |   35 ++-
 doc/nact/C/nautilus-actions-config-tool.xml        |   16 +-
 doc/nact/Makefile.am                               |  145 +++++--
 m4/.gitignore                                      |    1 +
 m4/na-enable-manuals.m4                            |   77 ++++
 src/api/na-core-utils.h                            |   14 +-
 src/api/na-data-boxed.h                            |    2 +-
 src/api/na-data-def.h                              |  147 ++++----
 src/api/na-data-types.h                            |   13 +-
 src/api/na-gconf-utils.h                           |    2 +-
 src/api/na-icontext.h                              |   16 +-
 src/api/na-iduplicable.h                           |    2 +-
 src/api/na-iimporter.h                             |  144 +++++--
 src/api/na-object-api.h                            |    2 +-
 src/api/na-object-id.h                             |    2 +-
 src/api/na-object-item.h                           |    8 +-
 src/core/na-core-utils.c                           |   77 ++--
 src/core/na-data-boxed.c                           |    2 +-
 src/core/na-export-format.c                        |    8 +-
 src/core/na-export-format.h                        |    2 +-
 src/core/na-exporter.c                             |   12 +-
 src/core/na-exporter.h                             |    2 +-
 src/core/na-factory-object.c                       |   39 +-
 src/core/na-factory-object.h                       |    6 +-
 src/core/na-gconf-monitor.c                        |    8 +-
 src/core/na-gconf-utils.c                          |   16 +-
 src/core/na-iabout.h                               |    7 +-
 src/core/na-icontext.c                             |  225 ++++++-----
 src/core/na-ifactory-provider.c                    |    4 +-
 src/core/na-importer-ask.c                         |    4 +-
 src/core/na-io-provider.c                          |    2 +-
 src/core/na-iprefs.c                               |   50 ++--
 src/core/na-object-id.c                            |    2 +-
 src/core/na-object-item.c                          |   90 +++---
 src/core/na-object.c                               |    2 +-
 src/core/na-selected-info.c                        |   10 +-
 src/core/na-selected-info.h                        |    4 +-
 src/core/na-tokens.c                               |    6 +-
 66 files changed, 1809 insertions(+), 898 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 7bffac0..37c16e9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -20,6 +20,7 @@ config.sub
 configure
 depcomp
 gnome-doc-utils.make
+gtk-doc.make
 install/
 install-sh
 intltool-extract.in
@@ -31,6 +32,7 @@ missing
 mkinstalldirs
 stamp-h1
 *~
+*.stamp
 *.o
 *.la
 *.lo
diff --git a/COPYING-DOCS b/COPYING-DOCS
new file mode 100644
index 0000000..1a8b411
--- /dev/null
+++ b/COPYING-DOCS
@@ -0,0 +1,330 @@
+		GNU Free Documentation License
+		   Version 1.1, March 2000
+
+ Copyright (C) 2000  Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+written document "free" in the sense of freedom: to assure everyone
+the effective freedom to copy and redistribute it, with or without
+modifying it, either commercially or noncommercially.  Secondarily,
+this License preserves for the author and publisher a way to get
+credit for their work, while not being considered responsible for
+modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense.  It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does.  But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book.  We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work that contains a
+notice placed by the copyright holder saying it can be distributed
+under the terms of this License.  The "Document", below, refers to any
+such manual or work.  Any member of the public is a licensee, and is
+addressed as "you".
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject.  (For example, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.)  The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License.
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License.
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, whose contents can be viewed and edited directly and
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters.  A copy made in an otherwise Transparent file
+format whose markup has been designed to thwart or discourage
+subsequent modification by readers is not Transparent.  A copy that is
+not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML designed for human modification.  Opaque formats include
+PostScript, PDF, proprietary formats that can be read and edited only
+by proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML produced by some word processors for output
+purposes only.
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page.  For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License.  You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute.  However, you may accept
+compensation in exchange for copies.  If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies of the Document numbering more than 100,
+and the Document's license notice requires Cover Texts, you must enclose
+the copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover.  Both covers must also clearly and legibly identify
+you as the publisher of these copies.  The front cover must present
+the full title with all words of the title equally prominent and
+visible.  You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a publicly-accessible computer-network location containing a complete
+Transparent copy of the Document, free of added material, which the
+general network-using public has access to download anonymously at no
+charge using public-standard network protocols.  If you use the latter
+option, you must take reasonably prudent steps, when you begin
+distribution of Opaque copies in quantity, to ensure that this
+Transparent copy will remain thus accessible at the stated location
+until at least one year after the last time you distribute an Opaque
+copy (directly or through your agents or retailers) of that edition to
+the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it.  In addition, you must do these things in the Modified Version:
+
+A. Use in the Title Page (and on the covers, if any) a title distinct
+   from that of the Document, and from those of previous versions
+   (which should, if there were any, be listed in the History section
+   of the Document).  You may use the same title as a previous version
+   if the original publisher of that version gives permission.
+B. List on the Title Page, as authors, one or more persons or entities
+   responsible for authorship of the modifications in the Modified
+   Version, together with at least five of the principal authors of the
+   Document (all of its principal authors, if it has less than five).
+C. State on the Title page the name of the publisher of the
+   Modified Version, as the publisher.
+D. Preserve all the copyright notices of the Document.
+E. Add an appropriate copyright notice for your modifications
+   adjacent to the other copyright notices.
+F. Include, immediately after the copyright notices, a license notice
+   giving the public permission to use the Modified Version under the
+   terms of this License, in the form shown in the Addendum below.
+G. Preserve in that license notice the full lists of Invariant Sections
+   and required Cover Texts given in the Document's license notice.
+H. Include an unaltered copy of this License.
+I. Preserve the section entitled "History", and its title, and add to
+   it an item stating at least the title, year, new authors, and
+   publisher of the Modified Version as given on the Title Page.  If
+   there is no section entitled "History" in the Document, create one
+   stating the title, year, authors, and publisher of the Document as
+   given on its Title Page, then add an item describing the Modified
+   Version as stated in the previous sentence.
+J. Preserve the network location, if any, given in the Document for
+   public access to a Transparent copy of the Document, and likewise
+   the network locations given in the Document for previous versions
+   it was based on.  These may be placed in the "History" section.
+   You may omit a network location for a work that was published at
+   least four years before the Document itself, or if the original
+   publisher of the version it refers to gives permission.
+K. In any section entitled "Acknowledgements" or "Dedications",
+   preserve the section's title, and preserve in the section all the
+   substance and tone of each of the contributor acknowledgements
+   and/or dedications given therein.
+L. Preserve all the Invariant Sections of the Document,
+   unaltered in their text and in their titles.  Section numbers
+   or the equivalent are not considered part of the section titles.
+M. Delete any section entitled "Endorsements".  Such a section
+   may not be included in the Modified Version.
+N. Do not retitle any existing section as "Endorsements"
+   or to conflict in title with any Invariant Section.
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant.  To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version.  Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity.  If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy.  If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections entitled "History"
+in the various original documents, forming one section entitled
+"History"; likewise combine any sections entitled "Acknowledgements",
+and any sections entitled "Dedications".  You must delete all sections
+entitled "Endorsements."
+
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, does not as a whole count as a Modified Version
+of the Document, provided no compilation copyright is claimed for the
+compilation.  Such a compilation is called an "aggregate", and this
+License does not apply to the other self-contained works thus compiled
+with the Document, on account of their being thus compiled, if they
+are not themselves derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one quarter
+of the entire aggregate, the Document's Cover Texts may be placed on
+covers that surround only the Document within the aggregate.
+Otherwise they must appear on covers around the whole aggregate.
+
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections.  You may include a
+translation of this License provided that you also include the
+original English version of this License.  In case of a disagreement
+between the translation and the original English version of this
+License, the original English version will prevail.
+
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License.  Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License.  However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time.  Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.  See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation.  If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+
+
diff --git a/ChangeLog b/ChangeLog
index 3174de6..51733ab 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,71 @@
+2010-08-13 Pierre Wieser <pwieser trychlos org>
+
+	* Makefile.am:
+	Build doc after src so that libraries are available when documenting them.
+
+	* autogen.sh:
+	* configure.ac: Implement gtk-doc and manuals generation.
+
+	* doc/api/Makefile.am: Build gtk-doc for public API.
+
+	* doc/nact/C/nact-conditions.xml:
+	* doc/nact/C/nact-execution.xml:
+	* doc/nact/C/nact-menus.xml:
+	* doc/nact/C/nact-profiles.xml:
+	* doc/nact/C/nact-sorting.xml:
+	* doc/nact/C/nact-starting.xml:
+	* doc/nact/C/nact-where.xml:
+	* doc/nact/C/nautilus-actions-config-tool.xml:
+	Update NACT user's manual.
+
+	* doc/nact/Makefile.am: Implement manuals generation.
+
+	* src/api/na-core-utils.h:
+	* src/api/na-data-boxed.h:
+	* src/api/na-data-types.h:
+	* src/api/na-gconf-utils.h:
+	* src/api/na-icontext.h:
+	* src/api/na-iduplicable.h:
+	* src/api/na-iimporter.h:
+	* src/api/na-object-api.h:
+	* src/api/na-object-id.h:
+	* src/api/na-object-item.h:
+	* src/core/na-core-utils.c:
+	* src/core/na-data-boxed.c:
+	* src/core/na-export-format.c:
+	* src/core/na-export-format.h:
+	* src/core/na-exporter.c:
+	* src/core/na-exporter.h:
+	* src/core/na-factory-object.c:
+	* src/core/na-factory-object.h:
+	* src/core/na-gconf-monitor.c:
+	* src/core/na-gconf-utils.c:
+	* src/core/na-iabout.h:
+	* src/core/na-icontext.c:
+	* src/core/na-ifactory-provider.c:
+	* src/core/na-importer-ask.c:
+	* src/core/na-io-provider.c:
+	* src/core/na-iprefs.c:
+	* src/core/na-object-id.c:
+	* src/core/na-object-item.c:
+	* src/core/na-object.c:
+	* src/core/na-selected-info.c:
+	* src/core/na-selected-info.h:
+	Update comments to suits gtk-doc requirements.
+
+	* COPYING-DOCS:
+	* doc/nact/C/figures/nact-desktop-environment-frame.png:
+	* doc/nact/C/figures/nact-exec-mode-frame.png:
+	* doc/nact/C/figures/nact-execute-as-frame.png:
+	* doc/nact/C/figures/nact-execution-environment-frame.png:
+	* doc/nact/C/figures/nact-selection-count-frame.png:
+	* doc/nact/C/figures/nact-startup-mode-frame.png:
+	* doc/nact/C/figures/nact-target-location.png:
+	* doc/nact/C/figures/nact-working-directory-frame.png:
+	* doc/nact/C/figures/sort-asc.png doc/nact/C/figures/sort-desc.png:
+	* doc/nact/C/figures/sort-manual.png:
+	* m4/na-enable-manuals.m4: New files.
+
 2010-08-10 Pierre Wieser <pwieser trychlos org>
 
 	* src/nact/nact-icommand-tab.c: No more check for a non-empty profile name.
diff --git a/INSTALL b/INSTALL
index 7d1c323..d3c5b40 100644
--- a/INSTALL
+++ b/INSTALL
@@ -2,24 +2,18 @@ Installation Instructions
 *************************
 
 Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
-2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+2006, 2007 Free Software Foundation, Inc.
 
-   Copying and distribution of this file, with or without modification,
-are permitted in any medium without royalty provided the copyright
-notice and this notice are preserved.  This file is offered as-is,
-without warranty of any kind.
+This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
 
 Basic Installation
 ==================
 
-   Briefly, the shell commands `./configure; make; make install' should
+Briefly, the shell commands `./configure; make; make install' should
 configure, build, and install this package.  The following
 more-detailed instructions are generic; see the `README' file for
-instructions specific to this package.  Some packages provide this
-`INSTALL' file but do not implement all of the features documented
-below.  The lack of an optional feature in a given package is not
-necessarily a bug.  More recommendations for GNU packages can be found
-in *note Makefile Conventions: (standards)Makefile Conventions.
+instructions specific to this package.
 
    The `configure' shell script attempts to guess correct values for
 various system-dependent variables used during compilation.  It uses
@@ -48,7 +42,7 @@ may remove or edit it.
 you want to change it or regenerate `configure' using a newer version
 of `autoconf'.
 
-   The simplest way to compile this package is:
+The simplest way to compile this package is:
 
   1. `cd' to the directory containing the package's source code and type
      `./configure' to configure the package for your system.
@@ -59,22 +53,12 @@ of `autoconf'.
   2. Type `make' to compile the package.
 
   3. Optionally, type `make check' to run any self-tests that come with
-     the package, generally using the just-built uninstalled binaries.
+     the package.
 
   4. Type `make install' to install the programs and any data files and
-     documentation.  When installing into a prefix owned by root, it is
-     recommended that the package be configured and built as a regular
-     user, and only the `make install' phase executed with root
-     privileges.
-
-  5. Optionally, type `make installcheck' to repeat any self-tests, but
-     this time using the binaries in their final installed location.
-     This target does not install anything.  Running this target as a
-     regular user, particularly if the prior `make install' required
-     root privileges, verifies that the installation completed
-     correctly.
-
-  6. You can remove the program binaries and object files from the
+     documentation.
+
+  5. You can remove the program binaries and object files from the
      source code directory by typing `make clean'.  To also remove the
      files that `configure' created (so you can compile the package for
      a different kind of computer), type `make distclean'.  There is
@@ -83,22 +67,15 @@ of `autoconf'.
      all sorts of other programs in order to regenerate files that came
      with the distribution.
 
-  7. Often, you can also type `make uninstall' to remove the installed
-     files again.  In practice, not all packages have tested that
-     uninstallation works correctly, even though it is required by the
-     GNU Coding Standards.
-
-  8. Some packages, particularly those that use Automake, provide `make
-     distcheck', which can by used by developers to test that all other
-     targets like `make install' and `make uninstall' work correctly.
-     This target is generally not run by end users.
+  6. Often, you can also type `make uninstall' to remove the installed
+     files again.
 
 Compilers and Options
 =====================
 
-   Some systems require unusual options for compilation or linking that
-the `configure' script does not know about.  Run `./configure --help'
-for details on some of the pertinent environment variables.
+Some systems require unusual options for compilation or linking that the
+`configure' script does not know about.  Run `./configure --help' for
+details on some of the pertinent environment variables.
 
    You can give `configure' initial values for configuration parameters
 by setting variables in the command line or in the environment.  Here
@@ -111,41 +88,25 @@ is an example:
 Compiling For Multiple Architectures
 ====================================
 
-   You can compile the package for more than one kind of computer at the
+You can compile the package for more than one kind of computer at the
 same time, by placing the object files for each architecture in their
 own directory.  To do this, you can use GNU `make'.  `cd' to the
 directory where you want the object files and executables to go and run
 the `configure' script.  `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.  This
-is known as a "VPATH" build.
+source code in the directory that `configure' is in and in `..'.
 
    With a non-GNU `make', it is safer to compile the package for one
 architecture at a time in the source code directory.  After you have
 installed the package for one architecture, use `make distclean' before
 reconfiguring for another architecture.
 
-   On MacOS X 10.5 and later systems, you can create libraries and
-executables that work on multiple system types--known as "fat" or
-"universal" binaries--by specifying multiple `-arch' options to the
-compiler but only a single `-arch' option to the preprocessor.  Like
-this:
-
-     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
-                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
-                 CPP="gcc -E" CXXCPP="g++ -E"
-
-   This is not guaranteed to produce working output in all cases, you
-may have to build one architecture at a time and combine the results
-using the `lipo' tool if you have problems.
-
 Installation Names
 ==================
 
-   By default, `make install' installs the package's commands under
+By default, `make install' installs the package's commands under
 `/usr/local/bin', include files under `/usr/local/include', etc.  You
 can specify an installation prefix other than `/usr/local' by giving
-`configure' the option `--prefix=PREFIX', where PREFIX must be an
-absolute file name.
+`configure' the option `--prefix=PREFIX'.
 
    You can specify separate installation prefixes for
 architecture-specific files and architecture-independent files.  If you
@@ -156,47 +117,16 @@ Documentation and other data files still use the regular prefix.
    In addition, if you use an unusual directory layout you can give
 options like `--bindir=DIR' to specify different values for particular
 kinds of files.  Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.  In general, the
-default for these options is expressed in terms of `${prefix}', so that
-specifying just `--prefix' will affect all of the other directory
-specifications that were not explicitly provided.
-
-   The most portable way to affect installation locations is to pass the
-correct locations to `configure'; however, many packages provide one or
-both of the following shortcuts of passing variable assignments to the
-`make install' command line to change installation locations without
-having to reconfigure or recompile.
-
-   The first method involves providing an override variable for each
-affected directory.  For example, `make install
-prefix=/alternate/directory' will choose an alternate location for all
-directory configuration variables that were expressed in terms of
-`${prefix}'.  Any directories that were specified during `configure',
-but not in terms of `${prefix}', must each be overridden at install
-time for the entire installation to be relocated.  The approach of
-makefile variable overrides for each directory variable is required by
-the GNU Coding Standards, and ideally causes no recompilation.
-However, some platforms have known limitations with the semantics of
-shared libraries that end up requiring recompilation when using this
-method, particularly noticeable in packages that use GNU Libtool.
-
-   The second method involves providing the `DESTDIR' variable.  For
-example, `make install DESTDIR=/alternate/directory' will prepend
-`/alternate/directory' before all installation names.  The approach of
-`DESTDIR' overrides is not required by the GNU Coding Standards, and
-does not work on platforms that have drive letters.  On the other hand,
-it does better at avoiding recompilation issues, and works well even
-when some directory options were not specified in terms of `${prefix}'
-at `configure' time.
-
-Optional Features
-=================
+you can set and what kinds of files go in them.
 
    If the package supports it, you can cause programs to be installed
 with an extra prefix or suffix on their names by giving `configure' the
 option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
 
-   Some packages pay attention to `--enable-FEATURE' options to
+Optional Features
+=================
+
+Some packages pay attention to `--enable-FEATURE' options to
 `configure', where FEATURE indicates an optional part of the package.
 They may also pay attention to `--with-PACKAGE' options, where PACKAGE
 is something like `gnu-as' or `x' (for the X Window System).  The
@@ -208,53 +138,14 @@ find the X include and library files automatically, but if it doesn't,
 you can use the `configure' options `--x-includes=DIR' and
 `--x-libraries=DIR' to specify their locations.
 
-   Some packages offer the ability to configure how verbose the
-execution of `make' will be.  For these packages, running `./configure
---enable-silent-rules' sets the default to minimal output, which can be
-overridden with `make V=1'; while running `./configure
---disable-silent-rules' sets the default to verbose, which can be
-overridden with `make V=0'.
-
-Particular systems
-==================
-
-   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU
-CC is not installed, it is recommended to use the following options in
-order to use an ANSI C compiler:
-
-     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
-
-and if that doesn't work, install pre-built binaries of GCC for HP-UX.
-
-   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
-parse its `<wchar.h>' header file.  The option `-nodtk' can be used as
-a workaround.  If GNU CC is not installed, it is therefore recommended
-to try
-
-     ./configure CC="cc"
-
-and if that doesn't work, try
-
-     ./configure CC="cc -nodtk"
-
-   On Solaris, don't put `/usr/ucb' early in your `PATH'.  This
-directory contains several dysfunctional programs; working variants of
-these programs are available in `/usr/bin'.  So, if you need `/usr/ucb'
-in your `PATH', put it _after_ `/usr/bin'.
-
-   On Haiku, software installed for all users goes in `/boot/common',
-not `/usr/local'.  It is recommended to use the following options:
-
-     ./configure --prefix=/boot/common
-
 Specifying the System Type
 ==========================
 
-   There may be some features `configure' cannot figure out
-automatically, but needs to determine by the type of machine the package
-will run on.  Usually, assuming the package is built to be run on the
-_same_ architectures, `configure' can figure that out, but if it prints
-a message saying it cannot guess the machine type, give it the
+There may be some features `configure' cannot figure out automatically,
+but needs to determine by the type of machine the package will run on.
+Usually, assuming the package is built to be run on the _same_
+architectures, `configure' can figure that out, but if it prints a
+message saying it cannot guess the machine type, give it the
 `--build=TYPE' option.  TYPE can either be a short name for the system
 type, such as `sun4', or a canonical name which has the form:
 
@@ -262,8 +153,7 @@ type, such as `sun4', or a canonical name which has the form:
 
 where SYSTEM can have one of these forms:
 
-     OS
-     KERNEL-OS
+     OS KERNEL-OS
 
    See the file `config.sub' for the possible values of each field.  If
 `config.sub' isn't included in this package, then this package doesn't
@@ -281,9 +171,9 @@ eventually be run) with `--host=TYPE'.
 Sharing Defaults
 ================
 
-   If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
+If you want to set default values for `configure' scripts to share, you
+can create a site shell script called `config.site' that gives default
+values for variables like `CC', `cache_file', and `prefix'.
 `configure' looks for `PREFIX/share/config.site' if it exists, then
 `PREFIX/etc/config.site' if it exists.  Or, you can set the
 `CONFIG_SITE' environment variable to the location of the site script.
@@ -292,7 +182,7 @@ A warning: not all `configure' scripts look for a site script.
 Defining Variables
 ==================
 
-   Variables not defined in a site shell script can be set in the
+Variables not defined in a site shell script can be set in the
 environment passed to `configure'.  However, some packages may run
 configure again during the build, and the customized values of these
 variables may be lost.  In order to avoid this problem, you should set
@@ -311,19 +201,11 @@ an Autoconf bug.  Until the bug is fixed you can use this workaround:
 `configure' Invocation
 ======================
 
-   `configure' recognizes the following options to control how it
-operates.
+`configure' recognizes the following options to control how it operates.
 
 `--help'
 `-h'
-     Print a summary of all of the options to `configure', and exit.
-
-`--help=short'
-`--help=recursive'
-     Print a summary of the options unique to this package's
-     `configure', and exit.  The `short' variant lists options used
-     only in the top level, while the `recursive' variant lists options
-     also present in any nested packages.
+     Print a summary of the options to `configure', and exit.
 
 `--version'
 `-V'
@@ -350,16 +232,6 @@ operates.
      Look for the package's source code in directory DIR.  Usually
      `configure' can determine that directory automatically.
 
-`--prefix=DIR'
-     Use DIR as the installation prefix.  *note Installation Names::
-     for more details, including other options available for fine-tuning
-     the installation locations.
-
-`--no-create'
-`-n'
-     Run the configure checks, but stop before creating any output
-     files.
-
 `configure' also accepts some other, not widely useful, options.  Run
 `configure --help' for more details.
 
diff --git a/Makefile.am b/Makefile.am
index 74017da..7f514e3 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -29,12 +29,12 @@
 ACLOCAL_AMFLAGS = -I m4
 
 SUBDIRS = \
-	doc									\
 	m4									\
 	icons								\
 	src									\
 	po									\
 	data								\
+	doc									\
 	$(NULL)
 
 # a foo directory so that make distcheck has a vpath which is prefixed
@@ -46,6 +46,9 @@ DISTCHECK_CONFIGURE_FLAGS = \
 DISTCHECK_CONFIGURE_FLAGS += \
 	--disable-schemas-install			\
 	--disable-scrollkeeper				\
+	--enable-gtk-doc					\
+	--enable-html-manuals				\
+	--enable-pdf-manuals				\
 	$(NULL)
 
 EXTRA_DIST = \
diff --git a/TODO b/TODO
index dc56351..2afffcd 100644
--- a/TODO
+++ b/TODO
@@ -8,6 +8,8 @@ N-A BUGS
 
 - when error on writing, should let the item modified
 
+- 2.30.3: sort buttons are sensitive even if the list is empty: should not.
+
 TODO
 ====
 - 2010-06-20: is_candidate_for_show_in: get current environment
@@ -16,6 +18,9 @@ TODO
 
 - 2010-08-09: in v1.x until ??, %f used to be the basename!!
 
+- 2010-08-12: NACT user's manual: review notes against tips
+  when do we should use each of them
+
 N-A ENHANCEMENTS
 ================
 - allow users to upload/download actions directly from a web repository
@@ -125,6 +130,10 @@ OTHER BUGS
 - Nautilus bug when dnd to nautilus on other screen
   see https://bugzilla.gnome.org/show_bug.cgi?id=593453
 
+- db2html: should create figures/ subdirectory
+  and should not leave a nautilus-actions-config-tool.junk/ subdirectory
+  to be confirmed against fedora13 before opening
+
 NOTES
 =====
 - Note about the schemas in Nautilus Actions:
diff --git a/autogen.sh b/autogen.sh
index d3a1d0a..fac9b6e 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -13,6 +13,8 @@ REQUIRED_INTLTOOL_VERSION=0.35.5
 	exit 1
 }
 
+gtkdocize || exit 1
+
 which gnome-autogen.sh || {
 	echo "You need to install gnome-common from the GNOME Git"
 	exit 1
diff --git a/configure.ac b/configure.ac
index d509ae0..c0dd596 100644
--- a/configure.ac
+++ b/configure.ac
@@ -41,6 +41,7 @@ AC_CONFIG_FILES([
 	data/Makefile
 	doc/Makefile
 	doc/api/Makefile
+	doc/api/version.xml
 	doc/internals/Makefile
 	doc/nact/Makefile
 	doc/product/Makefile
@@ -97,6 +98,9 @@ AC_SUBST([AM_CFLAGS],["${AM_CFLAGS} ${WARN_CFLAGS}"])
 # GLib marshaling
 AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal)
 
+# check for gtk-doc
+GTK_DOC_CHECK([1.10],[--flavour no-tmpl])
+
 # libtool
 AM_PROG_LIBTOOL
 
@@ -150,12 +154,16 @@ PKG_CHECK_MODULES([NAUTILUS_ACTIONS], \
 	unique-1.0											\
 	dbus-glib-1
 )
+
 AC_SUBST([NAUTILUS_ACTIONS_CFLAGS])
 AC_SUBST([NAUTILUS_ACTIONS_LIBS])
 
 # defines log domains when in maintainer mode
 NA_LOG_DOMAINS
 
+# add --enable-html-manual and --enable-pdf-manual configure options
+NA_ENABLE_MANUALS
+
 # when working in a test environment, nautilus is typically installed in
 # a non-standard location ; lets specify this here
 NA_NAUTILUS_EXTDIR
diff --git a/doc/.gitignore b/doc/.gitignore
index ffb2ea8..a1ec6bf 100644
--- a/doc/.gitignore
+++ b/doc/.gitignore
@@ -1,3 +1,4 @@
 *.html
 *.omf
 *.pdf
+version.xml
diff --git a/doc/api/Makefile.am b/doc/api/Makefile.am
index efa171f..f19d66d 100644
--- a/doc/api/Makefile.am
+++ b/doc/api/Makefile.am
@@ -26,21 +26,51 @@
 #   Pierre Wieser <pwieser trychlos org>
 #   ... and many others (see AUTHORS)
 
-#include $(top_srcdir)/gtk-doc.make
-
-# The name of the module.
-#DOC_MODULE = nautilus-actions
-
-# The top-level SGML file.
-#DOC_MAIN_SGML_FILE = nautilus-actions.xml
+# This includes the standard gtk-doc make rules, copied by gtkdocize.
+include $(top_srcdir)/gtk-doc.make
+
+DOC_MODULE = nautilus-actions
+
+DOC_MODULE_VERSION = 3
+
+DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.xml
+
+# from the API documentation point of view
+# we have to ignore all headers in src/core, and all corresponding source
+# that is, only consider in src/core .c sources whose header is in src/api
+
+core_headers = \
+	na-exporter.h								\
+	na-export-format.h							\
+	na-factory-object.h							\
+	na-factory-provider.h						\
+	na-gnome-vfs-uri.h							\
+	na-gtk-utils.h								\
+	na-iabout.h									\
+	na-importer-ask.h							\
+	na-importer.h								\
+	na-io-provider.h							\
+	na-ipivot-consumer.h						\
+	na-iprefs.h									\
+	na-module.h									\
+	na-pivot.h									\
+	na-selected-info.h							\
+	na-tokens.h									\
+	na-updater.h								\
+	$(NULL)
 
 # Extra options to supply to gtkdoc-scan
-#SCAN_OPTIONS = \
-#	--ignore-headers="config.h devkit-disks-daemon-glue.h devkit-disks-device-glue.h gdu-private.h gdu-marshal.h gdu-shared.h" \
+#	--ignore-headers="config.h devkit-disks-daemon-glue.h devkit-disks-device-glue.h gdu-private.h gdu-marshal.h gdu-shared.h"
 #	--rebuild-sections
+SCAN_OPTIONS = \
+	--rebuild-types								\
+	$(NULL)
 
 # The directory containing the source code. Relative to $(srcdir)
-#DOC_SOURCE_DIR = ../src/gdu --source-dir=../src/gdu-gtk
+DOC_SOURCE_DIR = \
+	../../src/api 								\
+	--source-dir=../../src/core					\
+	$(NULL)
 
 # Used for dependencies
 #HFILE_GLOB = $(top_srcdir)/src/gdu*/*.h
@@ -48,36 +78,42 @@
 
 # Headers to ignore
 IGNORE_HFILES = \
+	$(core_headers)								\
 	$(NULL)
 
-# CFLAGS and LDFLAGS for compiling scan program. Only needed
-# if $(DOC_MODULE).types is non-empty.
-#INCLUDES = \
-#	$(GTK_CFLAGS)								\
-#	$(DBUS_GLIB_CFLAGS)							\
-#	-I$(top_srcdir)/src 						\
-#	-I$(top_builddir)/src						\
-#	-I$(top_srcdir)/src/gdu						\
-#	-I$(top_builddir)/src/gdu					\
-#	-I$(top_srcdir)/src/gdu-gtk					\
-#	-I$(top_builddir)/src/gdu-gtk				\
-#	$(NULL)
+# CFLAGS and LDFLAGS for compiling scan program.
+# Only needed if $(DOC_MODULE).types is non-empty.
+AM_CPPFLAGS = \
+	-I $(top_srcdir)/src						\
+	$(NAUTILUS_ACTIONS_CFLAGS)					\
+	$(NULL)
 
-#GTKDOC_LIBS = \
-#	$(GLIB2_LIBS)								\
-#	$(GIO2_LIBS)								\
-#	$(GIO_UNIX2_LIBS)							\
-#	$(DBUS_GLIB_LIBS)							\
-#	$(GNOME_KEYRING_LIBS)						\
-#	$(top_builddir)/src/gdu/libgdu.la			\
-#	$(top_builddir)/src/gdu-gtk/libgdu-gtk.la	\
-#	$(NULL)
+core_libdir = $(top_builddir)/src/core/.libs
+
+AM_LDFLAGS = \
+	$(NAUTILUS_ACTIONS_LIBS)					\
+	$(core_libdir)/libna-core.so				\
+	$(NULL)
+
+# Need this to be able to set ourselves GTKDOC_RUN
+# This is extracted from gtk-doc.make
+if GTK_DOC_USE_LIBTOOL
+orig_gtkdoc_run = $(LIBTOOL) --mode=execute
+else
+orig_gtkdoc_run = sh -c
+endif
+
+GTKDOC_RUN = \
+	LD_LIBRARY_PATH=$(core_libdir)				\
+	$(orig_gtkdoc_run)							\
+	$(NULL)
 
 # Extra options to supply to gtkdoc-mkdb
-#MKDB_OPTIONS = \
-#	--sgml-mode 								\
-#	--output-format=xml							\
 #	--ignore-files="devkit-disks-daemon-glue.h devkit-disks-device-glue.h gdu-private.h gdu-marshal.h gdu-shared.h"
+MKDB_OPTIONS = \
+	--sgml-mode 								\
+	--output-format=xml							\
+	$(NULL)
 
 # Extra options to supply to gtkdoc-mktmpl
 MKTMPL_OPTIONS = \
@@ -85,7 +121,7 @@ MKTMPL_OPTIONS = \
 
 # Non-autogenerated SGML files to be included in $(DOC_MAIN_SGML_FILE)
 content_files = \
-	version.xml									\
+	$(xml_files)								\
 	$(NULL)
 
 # Images to copy into HTML directory
@@ -101,6 +137,12 @@ MAINTAINERCLEANFILES = \
 	Makefile.in									\
 	$(NULL)
 
+xml_in_files = \
+	version.xml.in								\
+	$(NULL)
+
+xml_files = $(xml_in_files:.xml.in=.xml)
+
 #CLEANFILES += \
 #	*~											\
 #	gnome-disk-utility-scan*					\
@@ -121,4 +163,8 @@ MAINTAINERCLEANFILES = \
 #	$(NULL)
 
 # Version information for marking the documentation
-EXTRA_DIST = version.xml.in
+EXTRA_DIST += \
+	$(xml_in_files)								\
+	$(NULL)
+
+TESTS = ($GTKDOC_CHECK)
diff --git a/doc/nact/C/figures/nact-desktop-environment-frame.png b/doc/nact/C/figures/nact-desktop-environment-frame.png
new file mode 100644
index 0000000..8d5567e
Binary files /dev/null and b/doc/nact/C/figures/nact-desktop-environment-frame.png differ
diff --git a/doc/nact/C/figures/nact-exec-mode-frame.png b/doc/nact/C/figures/nact-exec-mode-frame.png
new file mode 100644
index 0000000..bd026b6
Binary files /dev/null and b/doc/nact/C/figures/nact-exec-mode-frame.png differ
diff --git a/doc/nact/C/figures/nact-execute-as-frame.png b/doc/nact/C/figures/nact-execute-as-frame.png
new file mode 100644
index 0000000..d8224d4
Binary files /dev/null and b/doc/nact/C/figures/nact-execute-as-frame.png differ
diff --git a/doc/nact/C/figures/nact-execution-environment-frame.png b/doc/nact/C/figures/nact-execution-environment-frame.png
new file mode 100644
index 0000000..08f4032
Binary files /dev/null and b/doc/nact/C/figures/nact-execution-environment-frame.png differ
diff --git a/doc/nact/C/figures/nact-selection-count-frame.png b/doc/nact/C/figures/nact-selection-count-frame.png
new file mode 100644
index 0000000..6dc0270
Binary files /dev/null and b/doc/nact/C/figures/nact-selection-count-frame.png differ
diff --git a/doc/nact/C/figures/nact-startup-mode-frame.png b/doc/nact/C/figures/nact-startup-mode-frame.png
new file mode 100644
index 0000000..ee78d31
Binary files /dev/null and b/doc/nact/C/figures/nact-startup-mode-frame.png differ
diff --git a/doc/nact/C/figures/nact-target-location.png b/doc/nact/C/figures/nact-target-location.png
new file mode 100644
index 0000000..1040a43
Binary files /dev/null and b/doc/nact/C/figures/nact-target-location.png differ
diff --git a/doc/nact/C/figures/nact-working-directory-frame.png b/doc/nact/C/figures/nact-working-directory-frame.png
new file mode 100644
index 0000000..9492695
Binary files /dev/null and b/doc/nact/C/figures/nact-working-directory-frame.png differ
diff --git a/doc/nact/C/figures/sort-asc.png b/doc/nact/C/figures/sort-asc.png
new file mode 100644
index 0000000..a2fee85
Binary files /dev/null and b/doc/nact/C/figures/sort-asc.png differ
diff --git a/doc/nact/C/figures/sort-desc.png b/doc/nact/C/figures/sort-desc.png
new file mode 100644
index 0000000..d23518a
Binary files /dev/null and b/doc/nact/C/figures/sort-desc.png differ
diff --git a/doc/nact/C/figures/sort-manual.png b/doc/nact/C/figures/sort-manual.png
new file mode 100644
index 0000000..a5796ac
Binary files /dev/null and b/doc/nact/C/figures/sort-manual.png differ
diff --git a/doc/nact/C/nact-conditions.xml b/doc/nact/C/nact-conditions.xml
index 001faf1..bbc0929 100644
--- a/doc/nact/C/nact-conditions.xml
+++ b/doc/nact/C/nact-conditions.xml
@@ -2,22 +2,29 @@
   <title>Defining the conditions</title>
   <para>
     Whether your action will eventually be displayed in &nautilus; file manager
-    context menus as well as in its toolbar depends of the conditions you will have
+    context menus or in its toolbar depends of the conditions you will have
     defined for it.
   </para>
   <para>
-    Each time the selection changes in the file manager, &prodname;
-    checks all your actions, comparing the defined conditions against
-    the properties of selected items.
+    Conditions may be put against the location the file manager currently
+    points to, or against the currently selected items in this location.
   </para>
   <para>
-    All defined conditions must be satisfied by the current file manager
-    selection in order your action be actually displayed. 
+    Each time the selection or the location change in the file manager,
+    &prodname; checks all your actions, comparing the defined conditions
+    against the new location and selection: all defined conditions must
+    be satisfied in order your action be actually displayed. 
   </para>
 
   <sect3 id="usage-conditions-basenames">
     <title>Basename-based conditions</title>
     <para>
+      You may decide that your action will appear depending on the basenames
+      of the items currently selected in the file-manager: you may define that each
+      item of the selection must meet some sort of basename, and you may simultaneously
+      decide that none of the selected item(s) can have some other sort of basename.
+    </para>
+    <para>
       Click on the <guilabel>Basenames</guilabel> tab to show the page
       which will permit you to configure your basename-based conditions.
     </para>
@@ -38,10 +45,23 @@
       </screenshot>
     </figure>
     <para>
-      You may decide that your action will appear depending on the basenames
-      of the items currently selected in the file-manager: you may define that each
-      item of the selection must meet some sort of basename, and you may simultaneously
-      decide that none of the selected item(s) can have some other sort of basename.
+      In fact, basename-based conditions are built as a list of
+      &must_match; and &must_not_match;
+      patterns. In order you action be candidate regarding of these basename-based
+      conditions, each element of the selection must be valid for all the listed
+      conditions: the basename of each element must match at least one of the defined
+      &must_match; patterns, and must not match any of
+      the defined &must_not_match; patterns.
+    </para>
+    <para>
+      If at least one element of the selection does not match all the defined
+      conditions, then your action will not be displayed.
+    </para>
+    <para>
+      When targeting the selection context menu, your basename-based conditions
+      will be checked against the currently selected items. When targeting the
+      location context menu or the toolbar, your basename-based conditions will
+      be checked against the basename of the current location.
     </para>
     <para>
       Defining a new basename-based condition involves two steps.
@@ -65,8 +85,8 @@
             </para>
             <tip>
               <para>
-                A basename-based condition may use &laquosp;<literal>*</literal>&spraquo; or
-                &laquosp;<literal>?</literal>&spraquo; wildcard characters.
+                A basename-based condition may use &asterisk; or
+                &question_mark; wildcard characters.
               </para>
             </tip>
           </listitem>
@@ -74,14 +94,13 @@
       </listitem>
       <listitem>
         <para>
-          Indicates whether this a &laquosp;match&spraquo; or a &laquosp;no match&spraquo;
-          condition.
+          Indicates whether this a &must_match;
+          or a &must_not_match; condition.
         </para>
         <para>
           Click on the <guilabel>Must match one of</guilabel> or
           <guilabel>Must not match any of</guilabel> radio button in the same
-          row to set a &laquosp;must have&spraquo; or
-          &laquosp;must not have&spraquo; condition.
+          row to set the corresponding condition.
         </para>
       </listitem>
     </orderedlist>
@@ -104,7 +123,7 @@
         <para>
           When disactivated, filters are considered as case insensitive,
           which means that <filename>/my/file</filename> and
-          <filename>My/File</filename> filenames are considered the same
+          <filename>/My/File</filename> filenames are considered the same
           name.
         </para>
         <para>
@@ -114,21 +133,23 @@
       </listitem>
     </itemizedlist>
     <para>
-      When the action is examined to see if it should be displayed, the basename
-      of each currently selected item is compared to the list of these basename-based
-      conditions for this action.
-    </para>
-    <para>
       By default, the basename-based condition is just one
-      &laquosp;<literal>must match *</literal>&spraquo; condition.
-      This means that basenames are not considered as a relevant condition
-      for the action.
+      &laquosp;<literal>must match one of *</literal>&spraquo; condition.
+      As all basenames always match the &asterisk;
+      condition, this just means that basename-based conditions are not
+      considered as relevant for the action.
     </para>
   </sect3>
 
   <sect3 id="usage-conditions-mimetypes">
     <title>Mimetype-based conditions</title>
     <para>
+      You may decide that your action will appear depending on the mimetypes
+      of the items currently selected in the file-manager: you may define that each
+      item of the selection must meet some sort of mimetype; and you may simultaneously
+      decide that none of the selected item(s) can have some other sort of mimetype.
+    </para>
+    <para>
       Click on the <guilabel>Mimetypes</guilabel> tab to show the page
       which will permit you to configure your mimetype-based conditions.
     </para>
@@ -149,10 +170,24 @@
       </screenshot>
     </figure>
     <para>
-      You may decide that your action will appear depending on the mimetypes
-      of the items currently selected in the file-manager: you may define that each
-      item of the selection must meet some sort of mimetype; and you may simultaneously
-      decide that none of the selected item(s) can have some other sort of mimetype.
+      In fact, mimetype-based conditions are built as a list of
+      &must_match; and &must_not_match; patterns.
+      In order you action be candidate regarding of these mimetype-based
+      conditions, each element of the selection must be valid for all the listed
+      conditions: the mimetype of each element must match at least one of the defined
+      &must_match; patterns, and must not match any of
+      the defined &must_not_match; patterns.
+    </para>
+    <para>
+      If at least one element of the selection does not match all the defined
+      conditions, then your action will not be displayed.
+    </para>
+    <para>
+      When targeting the selection context menu, your mimetype-based conditions
+      will be checked against the currently selected items. When targeting the
+      location context menu or the toolbar, your mimetype-based conditions will
+      be checked against the mimetype of the current location, which happens to
+      be the well known &laquosp;inode/directory&spraquo; mimetype.
     </para>
     <para>
       Defining a new mimetype-based condition involves two steps.
@@ -180,21 +215,19 @@
             </para>
             <tip>
               <para>
-                The &laquosp;<literal>*</literal>&spraquo; asterisk may be used as
-                a wildcard in some situations:
+                The &asterisk; wildcard is supported only in some situations:
               </para>
               <itemizedlist>
                 <listitem>
                   <para>
                     The &laquosp;<literal>*/*</literal>&spraquo; expression
                     matches all mimetypes. As a convenient shortcut, the
-                    &laquosp;<literal>*</literal>&spraquo; literal is
-                    also accepted for this same purpose.
+                    &asterisk; literal is also accepted for this same purpose.
                   </para>
                 </listitem>
                 <listitem>
                   <para>
-                    A &laquosp;<literal>group/*</literal>&spraquo; string
+                    A <literal>group/*</literal> string
                     matches all subgroups of <literal>group</literal> mimetype.
                   </para>
                 </listitem>
@@ -202,7 +235,7 @@
             </tip>
             <note>
               <para>
-                The &laquosp;<literal>*/subgroup</literal>&spraquo; string
+                The <literal>*/subgroup</literal> string
                 is not accepted as a valid wildcard.
               </para>
             </note>
@@ -211,26 +244,20 @@
       </listitem>
       <listitem>
         <para>
-          Indicates whether this a &laquosp;match&spraquo; or a &laquosp;no match&spraquo;
-          condition.
+          Indicates whether this a &must_match; or a &must_not_match; condition.
         </para>
         <para>
           Click on the <guilabel>Must match one of</guilabel> or
           <guilabel>Must not match any of</guilabel> radio button in the same
-          row to set a &laquosp;must have&spraquo; or
-          &laquosp;must not have&spraquo; condition.
+          row to set the corresponding condition.
         </para>
       </listitem>
     </orderedlist>
     <para>
-      When the action is examined to see if it should be displayed, the mimetype
-      of each currently selected item is compared to the list of these mimetype-based
-      conditions for this action.
-    </para>
-    <para>
       By default, the mimetype-based condition is just one
-      &laquosp;<literal>must match */*</literal>&spraquo; condition.
-      This means that mimetypes are not considered as a relevant condition
+      &laquosp;<literal>must match one of */*</literal>&spraquo; condition.
+      As all mimetypes always match the &laquosp;<literal>*/*</literal>&spraquo;,
+      this just means that mimetypes are not considered as relevant 
       for the action.
     </para>
     <example>
@@ -273,6 +300,19 @@
   <sect3 id="usage-conditions-folders">
     <title>Folder-based conditions</title>
     <para>
+      You may decide that your action will appear depending on the directory
+      the items currently selected in the file-manager are located in:
+      you may define that each item of the selection must be located in one
+      hierarchy or in another; and you may simultaneously
+      decide that none of the selected item(s) can be located in some other
+      hierarchy.
+    </para>
+    <para>
+      A folder-based condition must be understood as the specification
+      of the hierarchy in which the currently examined item should (or
+      should not) stay: this is a pattern on the dirname of the element.
+    </para>
+    <para>
       Click on the <guilabel>Folders</guilabel> tab to show the page
       which will permit you to configure your folder-based conditions.
     </para>
@@ -293,17 +333,25 @@
       </screenshot>
     </figure>
     <para>
-      You may decide that your action will appear depending on the directory
-      the items currently selected in the file-manager are located in:
-      you may define that each item of the selection must be located in one
-      hierarchy or in another; and you may simultaneously
-      decide that none of the selected item(s) can be located in some other
-      hierarchy.
+      In fact, folder-based conditions are built as a list of
+      &must_match; and &must_not_match; patterns.
+      In order you action be candidate regarding of these folder-based
+      conditions, each element of the selection must be valid for all the
+      listed conditions: each element must located in one of the defined
+      &must_match; folders, and must not match any of the defined
+      &must_not_match; folders.
     </para>
     <para>
-      A folder-based condition must be understood as the specification
-      of the hierarchy in which the currently examined item should (or
-      should not) stay.
+      If at least one element of the selection does not match all the
+      defined conditions, then your action will not be displayed.
+    </para>
+    <para>
+      When targeting the selection context menu, your folder-based
+      conditions will be checked against the dirname of each currently
+      selected items.
+      When targeting the location context menu or the toolbar,
+      your folder-based conditions will be checked against the current
+      location.
     </para>
     <para>
       Defining a new folder-based condition involves two steps.
@@ -327,8 +375,7 @@
             </para>
             <tip>
               <para>
-                The &laquosp;<literal>*</literal>&spraquo; and
-                &laquosp;<literal>?</literal>&spraquo; characters
+                The &asterisk; and &question_mark; characters
                 are accepted as wildcards at any level of the defined
                 folder filter.
               </para>
@@ -344,27 +391,21 @@
       </listitem>
       <listitem>
         <para>
-          Indicates whether this a &laquosp;match&spraquo; or a &laquosp;no match&spraquo;
+          Indicates whether this a &must_match; or a &must_not_match;
           condition.
         </para>
         <para>
           Click on the <guilabel>Must match one of</guilabel> or
           <guilabel>Must not match any of</guilabel> radio button in the same
-          row to set a &laquosp;must have&spraquo; or
-          &laquosp;must not have&spraquo; condition.
+          row to set the corresponding condition.
         </para>
       </listitem>
     </orderedlist>
     <para>
-      When the action is examined to see if it should be displayed, the location
-      of each currently selected item is compared to the list of these folder-based
-      conditions for this action.
-    </para>
-    <para>
       By default, the folder-based condition is just one
-      &laquosp;<literal>must match /</literal>&spraquo; condition.
+      &laquosp;<literal>must match one of /</literal>&spraquo; condition.
       As <literal>/</literal> is always the top of an Unix-like filesystem,
-      then all selected files always match this condition.
+      then all selected items always match this condition.
     </para>
     <note>
       <para>
@@ -377,6 +418,13 @@
   <sect3 id="usage-conditions-schemes">
     <title>Scheme-base-conditions</title>
     <para>
+      You may decide that your action will appear depending on the schemes
+      of the URIs of the items currently selected in the file-manager:
+      you may define that each item of the selection must have some scheme;
+      and you may simultaneously
+      decide that none of the selected item(s) may have some other scheme.
+    </para>
+    <para>
       Click on the <guilabel>Schemes</guilabel> tab to show the page
       which will permit you to configure your scheme-based conditions.
     </para>
@@ -397,11 +445,23 @@
       </screenshot>
     </figure>
     <para>
-      You may decide that your action will appear depending on the schemes
-      of the URIs of the items currently selected in the file-manager:
-      you may define that each item of the selection must have some scheme;
-      and you may simultaneously
-      decide that none of the selected item(s) may have some other scheme.
+      In fact, scheme-based conditions are built as a list of
+      &must_match; and &must_not_match; patterns.
+      In order you action be candidate regarding of these scheme-based
+      conditions, each element of the selection must be valid for all the
+      listed conditions: the scheme of each element must match at least one
+      of the defined &must_match; patterns, and must not match any of
+      the defined &must_not_match; patterns.
+    </para>
+    <para>
+      If at least one element of the selection does not match all the defined
+      conditions, then your action will not be displayed.
+    </para>
+    <para>
+      When targeting the selection context menu, your scheme-based conditions
+      will be checked against the currently selected items. When targeting the
+      location context menu or the toolbar, your scheme-based conditions will
+      be checked against the scheme of the current location.
     </para>
     <para>
       Defining a new scheme-based condition involves two steps.
@@ -425,8 +485,7 @@
             </para>
             <tip>
               <para>
-                Scheme-based conditions only accept
-                &laquosp;<literal>*</literal>&spraquo; asterisk wildcard,
+                Scheme-based conditions only accept &asterisk; wildcard,
                 which stands for &laquosp;any scheme&spraquo;.
               </para>
             </tip>
@@ -470,26 +529,18 @@
       </listitem>
       <listitem>
         <para>
-          Indicates whether this a &laquosp;match&spraquo; or a &laquosp;no match&spraquo;
-          condition.
+          Indicates whether this a &must_match; or a &must_not_match; condition.
         </para>
         <para>
           Click on the <guilabel>Must match one of</guilabel> or
-          <guilabel>Must not match any of</guilabel> radio button in the same
-          row to set a &laquosp;must have&spraquo; or
-          &laquosp;must not have&spraquo; condition.
+          <guilabel>Must not match any of</guilabel> radio button
+          in the same row to set the corresponding condition.
         </para>
       </listitem>
     </orderedlist>
     <para>
-      When the action is examined to see if it should be displayed, the
-      scheme of the URI
-      of each currently selected item is compared to the list of these
-      scheme-based conditions for this action.
-    </para>
-    <para>
       By default, the scheme-based condition is just one
-      &laquosp;<literal>must match *</literal>&spraquo; condition,
+      &laquosp;<literal>must match one of *</literal>&spraquo; condition,
       which means that schemes are not relevant for this action.
     </para>
   </sect3>
@@ -497,6 +548,18 @@
   <sect3 id="usage-conditions-capabilities">
     <title>Capability-based conditions</title>
     <para>
+      Capabilities are some properties that a file may exhibit to the user.
+    </para>
+    <para>
+      But the <literal>Local</literal> capability, all others are dependant
+      of the user who executes the command.
+    </para>
+    <para>
+      You may so decide that your action will appear, or not, depending
+      on the capabilities of the selected item(s) <abbrev>vs.</abbrev>
+      the current user.
+    </para>
+    <para>
       Click on the <guilabel>Capabilities</guilabel> tab to show the page
       which will permit you to configure your capability-based conditions.
     </para>
@@ -517,16 +580,23 @@
       </screenshot>
     </figure>
     <para>
-      Capabilities are some properties that a file may exhibit to the user.
+      In fact, capability-based conditions are built as a list of
+      &laquosp;must match all of&spraquo; and &must_not_match; patterns.
+      In order you action be candidate regarding of these capability-based
+      conditions, each element of the selection must be valid for all the
+      listed conditions: the capability of each element must match each
+      of the defined &laquosp;must match all of&spraquo; capabilities,
+      and must not match any of the defined &must_not_match; ones.
     </para>
     <para>
-      But the <literal>Local</literal> capability, all others are dependant
-      of the user who executes the command.
+      If at least one element of the selection does not match all the defined
+      conditions, then your action will not be displayed.
     </para>
     <para>
-      You may so decide that your action will appear, or not, depending
-      on the capabilities of the selected item(s) <abbrev>vs.</abbrev>
-      the current user.
+      When targeting the selection context menu, your capability-based conditions
+      will be checked against the currently selected items. When targeting the
+      location context menu or the toolbar, your capability-based conditions will
+      be checked against those of of the current location.
     </para>
     <para>
       Defining a new capability-based condition involves two steps.
@@ -583,23 +653,17 @@
       </listitem>
       <listitem>
         <para>
-          Indicates whether this a &laquosp;match&spraquo; or a &laquosp;no match&spraquo;
-          condition.
+          Indicates whether this a &laquosp;must match all of&spraquo;
+          or a &must_not_match; condition.
         </para>
         <para>
-          Click on the <guilabel>Must match one of</guilabel> or
+          Click on the <guilabel>Must match all of</guilabel> or
           <guilabel>Must not match any of</guilabel> radio button in the same
-          row to set a &laquosp;must have&spraquo; or
-          &laquosp;must not have&spraquo; condition.
+          row to set the corresponding condition.
         </para>
       </listitem>
     </orderedlist>
     <para>
-      When the action is examined to see if it should be displayed, this list
-      of capabilities that selected item(s) must match (or not) is compared
-      to those exhibited to the user.
-    </para>
-    <para>
       By default, the capability-based condition list is empty. This means
       that capabilities are not relevant for this action.
     </para>
@@ -608,6 +672,19 @@
   <sect3 id="usage-conditions-count">
     <title>Selection count condition</title>
     <para>
+      You may define that your action will only appear if the current
+      selection in the file manager has some precise count, or some
+      precise relation with a given count.
+    </para>
+    <example>
+      <title>A selection count use case</title>
+      <para>
+        If your action consists in displaying the differences between
+        two files, you may define here
+        &laquosp;<literal>Count = (equal to) 2</literal>&spraquo;.
+      </para>
+    </example>
+    <para>
       Click on the <guilabel>Environment</guilabel> tab to show the page
       which will permit you to configure your environment-based conditions.
     </para>
@@ -632,18 +709,34 @@
       </screenshot>
     </figure>
     <para>
-      You may define that your action will only appear if the current
-      selection in the file manager has some precise count, or some
-      precise relation with a given count.
+      The selection count condition is defined in the
+      <guilabel>Appears if selection contains</guilabel> frame.
+    </para>
+    <figure id="nact-FIG-frame-count">
+      <title>Selection count condition frame</title>
+      <screenshot>
+        <mediaobject>
+          <imageobject>
+            <imagedata fileref="figures/nact-selection-count-frame.png" format="PNG"/>
+          </imageobject>
+          <textobject>
+            <phrase>
+              Focus on the <guilabel>Appears if selection contains</guilabel> frame.
+            </phrase>
+          </textobject>
+          <caption>
+            <para>Selection count condition frame</para>
+          </caption>
+        </mediaobject>
+      </screenshot>
+    </figure>
+    <para>
+      When targeting the selection context menu, the count condition
+      defined here will be checked against the count of currently
+      selected items. When targeting the location context menu or
+      the toolbar, the count condition will be checked against zero
+      because there is no selected item in this case.
     </para>
-    <example>
-      <title>A selection count use case</title>
-      <para>
-        If your action consists in displaying the differences between
-        two files, you may define here
-        &laquosp;<literal>Count = (equal to) 2</literal>&spraquo;.
-      </para>
-    </example>
     <para>
       To define a selection count condition:
     </para>
@@ -654,9 +747,9 @@
           the operator you want apply to the selection count:
         </para>
         <simplelist type="vert">
-          <member><literal>&lt; (strictly less than)</literal></member>
-          <member><literal>= (equal to)</literal></member>
-          <member><literal>&gt; (strictly greather than)</literal></member>
+          <member><literal>&lt;</literal> <termdef>(strictly less than)</termdef></member>
+          <member><literal>=</literal> <termdef>(equal to)</termdef></member>
+          <member><literal>&gt;</literal> <termdef>(strictly greather than)</termdef></member>
         </simplelist>
       </listitem>
       <listitem>
@@ -676,10 +769,6 @@
   <sect3 id="usage-conditions-desktop">
     <title>Desktop selection</title>
     <para>
-      Click on the <guilabel>Environment</guilabel> tab to show the page
-      which will permit you to configure your environment-based conditions.
-    </para>
-    <para>
       You may define that your action:
     </para>
     <itemizedlist>
@@ -703,6 +792,32 @@
       Only one choice between these three items is possible.
     </para>
     <para>
+      Click on the <guilabel>Environment</guilabel> tab to show the page
+      which will permit you to configure your environment-based conditions.
+    </para>
+    <para>
+      The desktop selection is defined in the
+      <guilabel>Desktop environment</guilabel> frame.
+    </para>
+    <figure id="nact-FIG-frame-desktop">
+      <title>Desktop selection frame</title>
+      <screenshot>
+        <mediaobject>
+          <imageobject>
+            <imagedata fileref="figures/nact-desktop-environment-frame.png" format="PNG"/>
+          </imageobject>
+          <textobject>
+            <phrase>
+              Focus on the <guilabel>Desktop environment</guilabel> frame.
+            </phrase>
+          </textobject>
+          <caption>
+            <para>Desktop selection frame</para>
+          </caption>
+        </mediaobject>
+      </screenshot>
+    </figure>
+    <para>
       To define the desktop environment condition:
     </para>
     <orderedlist>
@@ -728,7 +843,7 @@
       </listitem>
     </orderedlist>
     <para>
-      The target desktop environment condition defaults to
+      The targeted desktop environment condition defaults to
       &laquosp;<literal>Always appear</literal>&spraquo;,
       which means that the action will be candidate to be displayed
       regarding of the current desktop environment.
@@ -738,15 +853,38 @@
   <sect3 id="usage-conditions-executable">
     <title>Executable found condition</title>
     <para>
+      You may define that your action will only appear if some
+      prerequisite package is installed on your system. This is
+      checked here by specifying that a specific file, known or
+      at least supposed to be provided by the package, must be
+      present on the filesystem, and executable.
+    </para>
+    <para>
       Click on the <guilabel>Environment</guilabel> tab to show the page
       which will permit you to configure your environment-based conditions.
     </para>
     <para>
-      You may define that your action will only appear if some
-      prerequisite package is installed on your system. This is
-      checked here by specifying that a specific file from the
-      package must be present on the filesystem and executable.
+      The executable found condition is defined in the
+      <guilabel>Execution environment</guilabel> frame.
     </para>
+    <figure id="nact-FIG-frame-execution-environment">
+      <title>Execution environment frame</title>
+      <screenshot>
+        <mediaobject>
+          <imageobject>
+            <imagedata fileref="figures/nact-execution-environment-frame.png" format="PNG"/>
+          </imageobject>
+          <textobject>
+            <phrase>
+              Focus on the <guilabel>Execution environment</guilabel> frame.
+            </phrase>
+          </textobject>
+          <caption>
+            <para>Execution environment frame</para>
+          </caption>
+        </mediaobject>
+      </screenshot>
+    </figure>
     <para>
       To define the relevant file, enter its full filename in the
       <guilabel>Appears if the file is executable</guilabel> entry
@@ -769,14 +907,15 @@
   <sect3 id="usage-conditions-dbus">
     <title>D-Bus registration condition</title>
     <para>
-      Click on the <guilabel>Environment</guilabel> tab to show the page
-      which will permit you to configure your environment-based conditions.
-    </para>
-    <para>
       You may define that your action will only appear if some given
       name is registered on D-Bus system at runtime.
     </para>
     <para>
+      Click on the <guilabel>Environment</guilabel> tab to show the page
+      which will permit you to configure your environment-based conditions,
+      and focus on <guilabel>Execution environment</guilabel> frame.
+    </para>
+    <para>
       To define the relevant name, enter it in the
       <guilabel>Appears if the name is registered on D-Bus</guilabel>
       entry box.
@@ -797,12 +936,14 @@
   <sect3 id="usage-conditions-true">
     <title>Customized condition</title>
     <para>
-      Click on the <guilabel>Environment</guilabel> tab to show the page
-      which will permit you to configure your environment-based conditions.
+      You may define that your action will only appear if some given
+      command outputs a <literal>true</literal> string on its standard
+      output.
     </para>
     <para>
-      You may define that your action will only appear if some given
-      command outputs a <literal>true</literal> string.
+      Click on the <guilabel>Environment</guilabel> tab to show the page
+      which will permit you to configure your environment-based conditions,
+      and focus on <guilabel>Execution environment</guilabel> frame.
     </para>
     <para>
       This lets you define your own customized condition filter,
@@ -830,14 +971,15 @@
   <sect3 id="usage-conditions-run">
     <title>Running process condition</title>
     <para>
-      Click on the <guilabel>Environment</guilabel> tab to show the page
-      which will permit you to configure your environment-based conditions.
-    </para>
-    <para>
       You may define that your action will only appear if some given
       binary is currently running.
     </para>
     <para>
+      Click on the <guilabel>Environment</guilabel> tab to show the page
+      which will permit you to configure your environment-based conditions,
+      and focus on <guilabel>Execution environment</guilabel> frame.
+    </para>
+    <para>
       To define the binary, enter its name in the
       <guilabel>Appears if the binary is running</guilabel>
       entry box, or click on <guibutton>Browse</guibutton> to select
diff --git a/doc/nact/C/nact-edit.xml b/doc/nact/C/nact-edit.xml
index 9323acf..00116ff 100644
--- a/doc/nact/C/nact-edit.xml
+++ b/doc/nact/C/nact-edit.xml
@@ -1,5 +1,38 @@
 <sect2 id="usage-edit">
   <title>Editing</title>
   <para>
+    With &appname;, you may safely cut, copy, paste to and from the clipboard.
   </para>
+
+  <sect3 id="usage-edit-cut">
+    <title>Cut/Delete</title>
+    <para>
+      Deletion applies to current selection.
+      When the current selection covers all profiles of an action, the
+      delete action really delete the selected profiles, leaving the action
+      as invalid if all profiles were selected.
+    </para>
+  </sect3>
+
+  <sect3 id="usage-edit-multiple">
+    <title>Multiple selection</title>
+    <para>
+      Multiple selection is possible in &appname;.
+      You can extend the current selection
+      by pressing the touch <keycap>Ctrl</keycap> or <keycap>Shift</keycap>
+      while selecting an item to add to the selection.
+    </para>
+    <para>
+      &appname; only accepts homogeneous multiple selections. That is, you may
+      select one or more profiles, or one or more actions or menus. A multiple
+      selection containing both profiles and actions or menus is not allowed.
+      This is because &appname; would not know where to paste such a selection.
+    </para>
+    <para>
+      Note that selecting any row means also selecting children of this row.
+      These childs are said &laquosp;implicitely selected&spraquo;:
+      they will be part of next edition operations, but are not considered
+      when verifying if selection is homogeneous. Also, they cannot be unselected.
+    </para>
+  </sect3>
 </sect2>
diff --git a/doc/nact/C/nact-execution.xml b/doc/nact/C/nact-execution.xml
index ec6a1fc..2258686 100644
--- a/doc/nact/C/nact-execution.xml
+++ b/doc/nact/C/nact-execution.xml
@@ -15,56 +15,79 @@
     parameters. These parameters will be expanded at runtime,
     with values which will depend of currently selected item(s).
   </para>
-  <para>
-    In the <guilabel>Command</guilabel> page, click on <guilabel>Legend</guilabel>
-    button to see the list of available parameters.
-  </para>
-  <figure id="nact-FIG-legend">
-    <title>List of available parameters</title>
-    <screenshot>
-      <mediaobject>
-        <imageobject>
-          <imagedata fileref="figures/nact-legend.png" format="PNG"/>
-        </imageobject>
-        <textobject>
-          <phrase>Shows the list of available parameters.</phrase>
-        </textobject>
-        <caption>
-          <para>The available parameters</para>
-        </caption>
-      </mediaobject>
-    </screenshot>
-  </figure>
-  <tip>
-    <para>
-      The <guibutton>Legend</guibutton> button has a toggling action:
-      click once to display the <guilabel>Parameter Legend</guilabel>
-      dialog box; click a second time to hide it.
-    </para>
-  </tip>
-  <note>
-    <para>
-      the word &laquosp;<guilabel>first</guilabel>&spraquo; may be misleading
-      as it only refers to the list of selected items as provided by the file
-      manager to the &prodname; plugin.
-    </para>
+
+  <sect3 id="usage-execution-parameters">
+    <title>Available parameters</title>
     <para>
-      In particular, it has nothing to do with the visual selection you may
-      have done in the file manager window. And, in fact, which is the
-      &laquosp;<guilabel>first</guilabel>&spraquo; selected item in a
-      multiple selection is absolutly undefined and rather unpredictable.
+      In the <guilabel>Command</guilabel> page, click on <guilabel>Legend</guilabel>
+      button to see the list of available parameters.
     </para>
-  </note>
+    <figure id="nact-FIG-legend">
+      <title>List of available parameters</title>
+      <screenshot>
+        <mediaobject>
+          <imageobject>
+            <imagedata fileref="figures/nact-legend.png" format="PNG"/>
+          </imageobject>
+          <textobject>
+            <phrase>Shows the list of available parameters.</phrase>
+          </textobject>
+          <caption>
+            <para>The available parameters</para>
+          </caption>
+        </mediaobject>
+      </screenshot>
+    </figure>
+    <tip>
+      <para>
+        The <guibutton>Legend</guibutton> button has a toggling action:
+        click once to display the <guilabel>Parameter Legend</guilabel>
+        dialog box; click a second time to hide it.
+      </para>
+    </tip>
+    <note>
+      <para>
+        The word &laquosp;<guilabel>first</guilabel>&spraquo; may be misleading
+        as it only refers to the list of selected items internally provided by
+        the file manager to the &prodname; plugin.
+      </para>
+      <para>
+        In particular, it has <emphasis>nothing to do</emphasis> with the
+        visual selection you may
+        have done in the file manager window. And, in fact, which is the
+        &laquosp;<guilabel>first</guilabel>&spraquo; selected item in a
+        multiple selection is absolutly undefined and rather unpredictable.
+      </para>
+    </note>
+  </sect3>
 
   <sect3 id="usage-execution-work">
     <title>Where the action should it be executed ?</title>
     <para>
       Your action may be executed in a particular working directory.
+    </para>
+    <para>
       You may specify it in the <guilabel>Command</guilabel> tab, in the
       <guilabel>Working directory</guilabel> entry box, or by clicking
       on <guibutton>Browse</guibutton> to select a folder on the 
       filesystem.
     </para>
+    <figure id="nact-FIG-work-dir-frame">
+      <title>Working directory frame</title>
+      <screenshot>
+        <mediaobject>
+          <imageobject>
+            <imagedata fileref="figures/nact-working-directory-frame.png" format="PNG"/>
+          </imageobject>
+          <textobject>
+            <phrase>Focus on the working directory selection frame.</phrase>
+          </textobject>
+          <caption>
+            <para>Working directory frame</para>
+          </caption>
+        </mediaobject>
+      </screenshot>
+    </figure>
     <para>
       The working directory defaults to <literal>%d</literal>, which runs
       the command in the base directory of the (first) selected item.
@@ -79,18 +102,28 @@
 
   <sect3 id="usage-execution-how">
     <title>How the action should it be executed ?</title>
+    <para>
+      Apart from configuring the conditions the selection must met in
+      order your action be displayed in file manager menus, &prodname;
+      allows you to configure how exactly your command will be
+      executed.
+    </para>
+    <para>
+      Click on the <guilabel>Execution</guilabel> tab to show the page
+      which will permit you to configure the execution of your command.
+    </para>
     <figure id="nact-FIG-execution">
-      <title>Configuration of the execution mode</title>
+      <title>Configuration of the execution modes</title>
       <screenshot>
         <mediaobject>
           <imageobject>
             <imagedata fileref="figures/nact-execution-tab.png" format="PNG"/>
           </imageobject>
           <textobject>
-            <phrase>Shows how to configure the execution mode of a command.</phrase>
+            <phrase>Shows how to configure the execution modes of a command.</phrase>
           </textobject>
           <caption>
-            <para>Configuration of the execution mode</para>
+            <para>Configuration of the execution modes</para>
           </caption>
         </mediaobject>
       </screenshot>
@@ -98,6 +131,22 @@
 
     <sect4 id="usage-execution-how-mode">
       <title>Execution mode</title>
+      <figure id="nact-FIG-execution-mode">
+        <title>Configuration of the execution mode</title>
+        <screenshot>
+          <mediaobject>
+            <imageobject>
+              <imagedata fileref="figures/nact-exec-mode-frame.png" format="PNG"/>
+            </imageobject>
+            <textobject>
+              <phrase>Focus on the execution mode frame.</phrase>
+            </textobject>
+            <caption>
+              <para>Configuration of the execution mode</para>
+            </caption>
+          </mediaobject>
+        </screenshot>
+      </figure>
       <para>
         The execution mode of your command may be choosen between following 
         values:
@@ -161,6 +210,22 @@
 
     <sect4 id="usage-execution-how-notify">
       <title>Startup notification</title>
+      <figure id="nact-FIG-startup-mode">
+        <title>Configuration of the startup modes</title>
+        <screenshot>
+          <mediaobject>
+            <imageobject>
+              <imagedata fileref="figures/nact-startup-mode-frame.png" format="PNG"/>
+            </imageobject>
+            <textobject>
+              <phrase>Focus on the Startup mode frame.</phrase>
+            </textobject>
+            <caption>
+              <para>Configuration of the startup modes</para>
+            </caption>
+          </mediaobject>
+        </screenshot>
+      </figure>
       <para>
         If the execution mode of the command is <literal>Normal</literal>,
         and if you know that the application will send a <literal>remove</literal>
@@ -194,6 +259,22 @@
 
     <sect4 id="usage-execution-how-user">
       <title>Owner of the execution</title>
+      <figure id="nact-FIG-execute-as">
+        <title>Configuration of the owner of the run</title>
+        <screenshot>
+          <mediaobject>
+            <imageobject>
+              <imagedata fileref="figures/nact-execute-as-frame.png" format="PNG"/>
+            </imageobject>
+            <textobject>
+              <phrase>Focus on the <guilabel>Execute as</guilabel> frame.</phrase>
+            </textobject>
+            <caption>
+              <para>Configuration of the owner of the run</para>
+            </caption>
+          </mediaobject>
+        </screenshot>
+      </figure>
       <para>
         Enter in the <guilabel>Execute as user</guilabel> entry box the username
         or the <acronym>UID</acronym> of the user your command must be ran as.
@@ -215,8 +296,9 @@
         giving to each execution a different item as argument.
       </para>
       <para>
-        Actually, the command will be executed once, or repeated for each
-        selected item, depending of the form of arguments.
+        Actually, &prodname; automatically handles these two behaviors,
+        depending of the form and the order of the parameters in the comamnd
+        arguments.
       </para>
       <para>
         Though some parameters are not sensible to the count of the
@@ -322,14 +404,14 @@
             </row>
             <row>
               <entry><literal>%f</literal></entry>
-              <entry>(first) file name</entry>
+              <entry>(first) filename</entry>
               <entry>singular</entry>
               <entry></entry>
               <entry></entry>
             </row>
             <row>
               <entry><literal>%F</literal></entry>
-              <entry>space-separated list of selected file names</entry>
+              <entry>space-separated list of selected filenames</entry>
               <entry></entry>
               <entry></entry>
               <entry>plural</entry>
diff --git a/doc/nact/C/nact-menus.xml b/doc/nact/C/nact-menus.xml
index 5204198..a34f386 100644
--- a/doc/nact/C/nact-menus.xml
+++ b/doc/nact/C/nact-menus.xml
@@ -1,5 +1,59 @@
 <sect2 id="usage-menus">
   <title>Organizing actions in menus</title>
   <para>
+    As your list of actions will grow, you most probably will want organize
+    them into menus, submenus, and so on.
+  </para>
+  <para>
+    In order to create a new menu, choose
+    <menuchoice>
+      <guimenu>File</guimenu>
+      <guimenuitem>New menu</guimenuitem>
+    </menuchoice>.
+  </para>
+  <para>
+    A menu may be created anywhere in the list of your actions, but inside
+    of an action (<abbrev>i.e.</abbrev> not between two profiles of an action).
+  </para>
+  <para>
+    As an action, the exact place where a new menu will be inserted
+    depends of the current sort order:
+  </para>
+  <variablelist>
+    <varlistentry>
+      <term>
+        Manual order:
+      </term>
+      <listitem>
+        <para>
+          The new menu is inserted just before the current action or menu.
+        </para>
+        <para>
+          This place will not change when you later modify the label of the menu.
+        </para>
+      </listitem>
+    </varlistentry>
+    <varlistentry>
+      <term>
+        Ascending (resp. descending) alphabetical order:
+      </term>
+      <listitem>
+        <para>
+          The new menu is inserted at the correct place, regarding the default
+          &laquosp;<literal>New Nautilus menu</literal>&spraquo; label.
+        </para>
+        <para>
+          This place will be automatically changed, each time you modify the
+          label of the menu.
+        </para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+  <para>
+    As an action, too, a menu requires a label, and may have an icon and a
+    tooltip. Also, you may define some conditions in order your menu be
+    candidate to be displayed in &nautilus; context menu. If the defined
+    conditions are not met at runtime, then your whole menu, including
+    its submenus, its actions and so on, will not be displayed.
   </para>
 </sect2>
diff --git a/doc/nact/C/nact-profiles.xml b/doc/nact/C/nact-profiles.xml
index 12dccf2..6356529 100644
--- a/doc/nact/C/nact-profiles.xml
+++ b/doc/nact/C/nact-profiles.xml
@@ -63,7 +63,7 @@
     </para>
     <para>
       So, ordering of the profiles may be important for your action: the
-      first valid profile found, the first selected profile.
+      first valid profile found, the first - and the only - selected profile.
     </para>
     <para>
       You may order your profiles inside an action in two ways.
diff --git a/doc/nact/C/nact-sorting.xml b/doc/nact/C/nact-sorting.xml
index 5baca33..c01ce89 100644
--- a/doc/nact/C/nact-sorting.xml
+++ b/doc/nact/C/nact-sorting.xml
@@ -2,8 +2,8 @@
   <title>Sorting the items list</title>
   <para>
     Your actions and menus will be displayed in file manager context menus
-    in the same order that they are listed in the items list, on the left
-    pane of the main &appname; window.
+    in the same order that they are listed in the <guilabel>Items list</guilabel>,
+    on the left pane of the main &appname; window.
   </para>
   <para>
     You may decide to:
@@ -29,6 +29,26 @@
       In these modes, actions and menus are sorted depending of their label,
       inside of their parent. 
     </para>
+    <para>
+      You may sort your actions by:
+    </para>
+    <itemizedlist>
+      <listitem>
+        <para>
+          Click on
+          <guibutton><inlinegraphic fileref="figures/sort-asc.png" /></guibutton>
+          (<abbrev>resp.</abbrev>
+          <guibutton><inlinegraphic fileref="figures/sort-desc.png" /></guibutton>)
+          button to sort your actions in ascending (<abbrev>resp.</abbrev> descending)
+          order.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Or edit your corresponding preference.
+        </para>
+      </listitem>
+    </itemizedlist>
   </sect3>
 
   <sect3 id="usage-sorting-manual">
@@ -37,42 +57,22 @@
       In this mode, a new action or a new menu will be inserted just before
       the current action or menu, inside of the same parent if apply. 
     </para>
+    <para>
+      To choose this mode:
+    </para>
+    <itemizedlist>
+      <listitem>
+        <para>
+          Click on
+          <guibutton><inlinegraphic fileref="figures/sort-manual.png" /></guibutton>
+          button.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Or edit your corresponding preference.
+        </para>
+      </listitem>
+    </itemizedlist>
   </sect3>
 </sect2>
-
-<!--
-      <para>
-        The exact place where the
-        action is inserted depends of the current sort order of the items list:
-      </para>
-      <variablelist>
-        <varlistentry>
-          <term>
-            Manual order:
-          </term>
-          <listitem>
-            <para>
-              The new action is inserted just before the current action or menu.
-            </para>
-            <para>
-              This place will not change when you later modify the label of the action.
-            </para>
-          </listitem>
-        </varlistentry>
-        <varlistentry>
-          <term>
-            Ascending (resp. descending) alphabetical order:
-          </term>
-          <listitem>
-            <para>
-              The new action is inserted at the correct place, regarding the default
-              &laquosp;<literal>New Nautilus action</literal>&spraquo; label.
-            </para>
-            <para>
-              This place will be automatically changed, each time you modify the
-              label of the action.
-            </para>
-          </listitem>
-        </varlistentry>
-      </variablelist>
--->
\ No newline at end of file
diff --git a/doc/nact/C/nact-starting.xml b/doc/nact/C/nact-starting.xml
index 46a7a94..d36ebc0 100644
--- a/doc/nact/C/nact-starting.xml
+++ b/doc/nact/C/nact-starting.xml
@@ -489,13 +489,14 @@
         </screenshot>
       </figure>
       <para>
-        In the items list, the new action is displayed in italic characters.
+        In the <guilabel>Items list</guilabel>, the new action is displayed in italic characters.
       </para>
       <para>
         Italics are used as a reminder that the item has not yet been saved.
       </para>
       <para>
-        As another reminder, an asterisk (&laquosp;<literal>*</literal>&spraquo;)
+        As another reminder that there is some pending modifications,
+        an asterisk (&laquosp;<literal>*</literal>&spraquo;)
         comes to prefix the application name in the title bar. 
       </para>
       <formalpara>
diff --git a/doc/nact/C/nact-where.xml b/doc/nact/C/nact-where.xml
index 6caf105..e4fcb79 100644
--- a/doc/nact/C/nact-where.xml
+++ b/doc/nact/C/nact-where.xml
@@ -1,14 +1,14 @@
 <sect2 id="usage-where">
   <title>Locating the action</title>
-    <figure id="nact-FIG-tab-action-where">
+    <figure id="nact-FIG-target-location-where">
       <title>Target configuration</title>
       <screenshot>
         <mediaobject>
           <imageobject>
-            <imagedata fileref="figures/nact-action-tab.png" format="PNG" />
+            <imagedata fileref="figures/nact-target-location.png" format="PNG" />
           </imageobject>
           <textobject>
-            <phrase>Shows the tab which lets you configure the target of your action.</phrase>
+            <phrase>Shows the three fields which lets you configure the target of your action.</phrase>
           </textobject>
           <caption>
             <para>Target configuration</para>
@@ -18,7 +18,13 @@
     </figure>
   <para>
     &nautilus; file manager may display your action in different places,
-    depending on what you will request here, and if some item is currently selected.
+    depending on what you will request here, and if some item is currently
+    selected (or not).
+  </para>
+  <para>
+    Click on the <guilabel>Action</guilabel> tab to show the page
+    which will permit you to configure the locations your action
+    targets.
   </para>
 
   <sect3 id="usage-where-selection">
@@ -50,7 +56,7 @@
     <para>
       When <guilabel>Display item in location context menu</guilabel> checkbox
       is activated, then your action will be candidate to be displayed in 
-      &nautilus; context menu when the file manager selection will be empty.
+      &nautilus; context menu when the file manager selection is empty.
       Your action will so deal with currently displayed location.
       In order to be
       actually displayed, all the conditions defined in
@@ -86,12 +92,12 @@
     <title>Notes</title>
 
     <formalpara>
-      <title>If your action targets a menu</title>
+      <title>If your action is to be displayed in a context menu</title>
       <para>
         Whether it is the selection context menu or the location
         context menu, and both in &nautilus; context menus and in 
-        <guimenu>File</guimenu> or <guimenu>Edit</guimenu> menus, your
-        action will be displayed as
+        <guimenu>File</guimenu> or <guimenu>Edit</guimenu> menus, it
+        will be displayed as
       </para>
     </formalpara>
     <itemizedlist>
@@ -128,9 +134,9 @@
     </tip>
 
     <formalpara>
-      <title>If your action targets the toolbar</title>
+      <title>If your action is to be displayed in the toolbar</title>
       <para>
-        Your action will be displayed as
+        It will be displayed as
       </para>
     </formalpara>
     <itemizedlist>
@@ -179,7 +185,14 @@
       <title>Defining several targets</title>
       <para>
         An action may target both the selection context menu, the location context
-        menu and the toolbar, or one or more among these. If no target is defined,
+        menu and the toolbar, or one or more among these.
+      </para>
+    </formalpara>
+
+    <formalpara>
+      <title>Defining no target at all</title>
+      <para>
+        If no target is defined,
         <abbrev>i.e.</abbrev> if the three checkboxes are unchecked, then your action
         will never be displayed.
       </para>
diff --git a/doc/nact/C/nautilus-actions-config-tool.xml b/doc/nact/C/nautilus-actions-config-tool.xml
index 3534199..1c0652f 100644
--- a/doc/nact/C/nautilus-actions-config-tool.xml
+++ b/doc/nact/C/nautilus-actions-config-tool.xml
@@ -16,8 +16,18 @@
   <!ENTITY windows  "<productname>Windows</productname>">
   <!ENTITY zenity   "<productname>Zenity</productname>">
 
+  <!-- some user-defined internal entities
+       merely because it appears that xsltproc may sometimes loose
+       its path to the DocBook DTD -->
+  <!ENTITY laquosp "&#171;&#160;">
+  <!ENTITY spraquo "&#160;&#187;">
+
   <!-- other entities -->
   <!ENTITY desema "<ulink url='http://www.nautilus-actions.org/?q=node/377' type='http'>DES-EMA specification</ulink>">
+  <!ENTITY asterisk       "&laquosp;<literal>*</literal>&spraquo;">
+  <!ENTITY question_mark  "&laquosp;<literal>?</literal>&spraquo;">
+  <!ENTITY must_match     "&laquosp;must match one of&spraquo;">
+  <!ENTITY must_not_match "&laquosp;must not match any of&spraquo;">
 
   <!-- the synopsys of the document -->
   <!ENTITY articleinfo SYSTEM "articleinfo.xml">
@@ -37,12 +47,6 @@
   <!ENTITY misc-infos  SYSTEM "nact-misc.xml">
   <!ENTITY bugs        SYSTEM "nact-bugs.xml">
   <!ENTITY gnu-fdl     SYSTEM "appendix-gnu-fdl-1.3.xml">
-
-  <!-- some user-defined internal entities 
-       merely because it appears that xsltproc may sometimes loose
-       its path to the DocBook DTD -->
-  <!ENTITY laquosp "&#171;&#160;">
-  <!ENTITY spraquo "&#160;&#187;">
 ]>
 
 <!-- ========================= Document Header ======================== -->
diff --git a/doc/nact/Makefile.am b/doc/nact/Makefile.am
index 4a15d65..75fc48f 100644
--- a/doc/nact/Makefile.am
+++ b/doc/nact/Makefile.am
@@ -36,58 +36,117 @@ dist-hook: doc-dist-hook
 DOC_MODULE = nautilus-actions-config-tool
 
 DOC_ENTITIES = \
-	appendix-gnu-fdl-1.3.xml					\
-	articleinfo.xml								\
-	legalnotice.xml								\
-	nact-bugs.xml								\
-	nact-conditions.xml							\
-	nact-edit.xml								\
-	nact-execution.xml							\
-	nact-export.xml								\
-	nact-import.xml								\
-	nact-menus.xml								\
-	nact-misc.xml								\
-	nact-prefs.xml								\
-	nact-profiles.xml							\
-	nact-save.xml								\
-	nact-sorting.xml							\
-	nact-starting.xml							\
-	nact-where.xml								\
+	appendix-gnu-fdl-1.3.xml						\
+	articleinfo.xml									\
+	legalnotice.xml									\
+	nact-bugs.xml									\
+	nact-conditions.xml								\
+	nact-edit.xml									\
+	nact-execution.xml								\
+	nact-export.xml									\
+	nact-import.xml									\
+	nact-menus.xml									\
+	nact-misc.xml									\
+	nact-prefs.xml									\
+	nact-profiles.xml								\
+	nact-save.xml									\
+	nact-sorting.xml								\
+	nact-starting.xml								\
+	nact-where.xml									\
 	$(NULL)
 
 DOC_INCLUDES = \
 	$(NULL)
 
 DOC_FIGURES = \
-	figures/add.png								\
-	figures/remove.png							\
-	figures/nact-action-tab.png					\
-	figures/nact-basenames-tab.png				\
-	figures/nact-capabilities-tab.png			\
-	figures/nact-command-tab.png				\
-	figures/nact-environment-tab.png			\
-	figures/nact-execution-tab.png				\
-	figures/nact-folders-tab.png				\
-	figures/nact-legend.png						\
-	figures/nact-main-empty.png					\
-	figures/nact-mimetypes-tab.png				\
-	figures/nact-new-capability.png				\
-	figures/nact-new-scheme.png					\
-	figures/nact-preferences-export.png			\
-	figures/nact-preferences-import.png			\
-	figures/nact-preferences-io-providers.png	\
-	figures/nact-preferences-runtime.png		\
-	figures/nact-preferences-schemes.png		\
-	figures/nact-preferences-ui.png				\
-	figures/nact-properties-tab.png				\
-	figures/nact-schemes-tab.png				\
-	figures/start-context-menu.png				\
-	figures/start-context-menu-nautilus.png		\
-	figures/start-zenity-result.png				\
+	figures/add.png									\
+	figures/nact-action-tab.png						\
+	figures/nact-basenames-tab.png					\
+	figures/nact-capabilities-tab.png				\
+	figures/nact-command-tab.png					\
+	figures/nact-desktop-environment-frame.png		\
+	figures/nact-environment-tab.png				\
+	figures/nact-exec-mode-frame.png				\
+	figures/nact-execute-as-frame.png				\
+	figures/nact-execution-environment-frame.png	\
+	figures/nact-execution-tab.png					\
+	figures/nact-folders-tab.png					\
+	figures/nact-legend.png							\
+	figures/nact-main-empty.png						\
+	figures/nact-mimetypes-tab.png					\
+	figures/nact-new-capability.png					\
+	figures/nact-new-scheme.png						\
+	figures/nact-preferences-export.png				\
+	figures/nact-preferences-import.png				\
+	figures/nact-preferences-io-providers.png		\
+	figures/nact-preferences-runtime.png			\
+	figures/nact-preferences-schemes.png			\
+	figures/nact-preferences-ui.png					\
+	figures/nact-properties-tab.png					\
+	figures/nact-schemes-tab.png					\
+	figures/nact-selection-count-frame.png			\
+	figures/nact-startup-mode-frame.png				\
+	figures/nact-target-location.png				\
+	figures/nact-working-directory-frame.png		\
+	figures/remove.png								\
+	figures/sort-asc.png							\
+	figures/sort-desc.png							\
+	figures/sort-manual.png							\
+	figures/start-context-menu.png					\
+	figures/start-context-menu-nautilus.png			\
+	figures/start-zenity-result.png					\
 	$(NULL)
 
 DOC_LINGUAS = \
 	$(NULL)
 
-clean-local :
+# generate HTML and PDF NACT user's manual if --enable-manuals has been set
+all-local: manuals
+
+manuals: html-manual pdf-manual
+
+sources_dir = $(top_srcdir)/doc/nact/C
+
+target_dir = $(top_builddir)/doc/nact/C
+
+# let DOC_MODULE.xml be the first of the list
+sources_files = \
+	$(addprefix 									\
+		$(sources_dir)/, 							\
+			$(DOC_MODULE).xml						\
+			$(DOC_ENTITIES)							\
+			$(DOC_INCLUDES)							\
+			$(DOC_FIGURES))							\
+	$(NULL)
+
+$(sources_files):
+
+target_html = $(target_dir)/$(DOC_MODULE)/$(DOC_MODULE).html
+
+target_pdf = $(target_dir)/$(DOC_MODULE).pdf
+
+if ENABLE_HTML_MANUALS
+html-manual: $(target_html)
+
+$(target_html): $(sources_files)
+	@echo "Generating $(target_html)..."
+	-db2html -b html -u $<
+else
+html-manual:
+endif
+
+if ENABLE_PDF_MANUALS
+pdf-manual: $(target_pdf)
+
+$(target_pdf): $(sources_files)
+	@echo "Generating $(target_pdf)..."
+	-dblatex $< >/dev/null
+else
+pdf-manual:
+endif
+
+clean-local:
 	rm -f *~
+	rm -f  $(target_dir)/*.pdf
+	rm -f  $(target_dir)/*.html
+	rm -fr $(target_dir)/$(DOC_MODULE)
diff --git a/m4/.gitignore b/m4/.gitignore
index d7777cc..bae0334 100644
--- a/m4/.gitignore
+++ b/m4/.gitignore
@@ -1,4 +1,5 @@
 gnome-doc-utils.m4
+gtk-doc.m4
 intltool.m4
 libtool.m4
 ltoptions.m4
diff --git a/m4/na-enable-manuals.m4 b/m4/na-enable-manuals.m4
new file mode 100644
index 0000000..4da6292
--- /dev/null
+++ b/m4/na-enable-manuals.m4
@@ -0,0 +1,77 @@
+# Nautilus Actions
+# A Nautilus extension which offers configurable context menu actions.
+#
+# Copyright (C) 2005 The GNOME Foundation
+# Copyright (C) 2006, 2007, 2008 Frederic Ruaudel and others (see AUTHORS)
+# Copyright (C) 2009, 2010 Pierre Wieser and others (see AUTHORS)
+#
+# 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 of
+# the License, or (at your option) any later version.
+#
+# This Program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this Library; see the file COPYING.  If not,
+# write to the Free Software Foundation, Inc., 59 Temple Place,
+# Suite 330, Boston, MA 02111-1307, USA.
+#
+# Authors:
+#   Frederic Ruaudel <grumz grumz net>
+#   Rodrigo Moya <rodrigo gnome-db org>
+#   Pierre Wieser <pwieser trychlos org>
+#   ... and many others (see AUTHORS)
+
+# serial 1 creation
+
+dnl add --enable-html-manual and --enable-pdf-manual configure options
+dnl usage:  NA_ENABLE_MANUALS
+
+AC_DEFUN([NA_ENABLE_MANUALS],[
+	AC_REQUIRE([_AC_ARG_NA_ENABLE_HTML_MANUALS])dnl
+	AC_REQUIRE([_AC_ARG_NA_ENABLE_PDF_MANUALS])dnl
+])
+
+AC_DEFUN([_AC_ARG_NA_ENABLE_HTML_MANUALS],[
+	AC_ARG_ENABLE(
+		[html-manuals],
+		AC_HELP_STRING(
+			[--enable-html-manuals],
+			[use db2html to build HTML manuals @<:@default=no@:>@]),,[enable_html_manuals="no"])
+
+	AC_MSG_CHECKING([whether to build HTML manuals])
+	AC_MSG_RESULT(${enable_html_manuals})
+
+	if test "x${enable_html_manuals}" = "xyes"; then
+		AC_CHECK_PROG([_db2html_found],[db2html],[yes],[no])
+		if test "x${_db2html_found}" = "xno"; then
+			AC_MSG_ERROR([db2html not available and --enable-html-manual requested])
+		fi
+	fi
+
+	AM_CONDITIONAL([ENABLE_HTML_MANUALS], [test "x${enable_html_manuals}" = "xyes"])
+])
+
+AC_DEFUN([_AC_ARG_NA_ENABLE_PDF_MANUALS],[
+	AC_ARG_ENABLE(
+		[pdf-manuals],
+		AC_HELP_STRING(
+			[--enable-pdf-manuals],
+			[use dblatex to build PDF manuals @<:@default=no@:>@]),,[enable_pdf_manuals="no"])
+
+	AC_MSG_CHECKING([whether to build PDF manuals])
+	AC_MSG_RESULT(${enable_pdf_manuals})
+
+	if test "x${enable_pdf_manuals}" = "xyes"; then
+		AC_CHECK_PROG([_dblatex_found],[dblatex],[yes],[no])
+		if test "x${_dblatex_found}" = "xno"; then
+			AC_MSG_ERROR([dblatex not available and --enable-pdf-manual requested])
+		fi
+	fi
+
+	AM_CONDITIONAL([ENABLE_PDF_MANUALS], [test "x${enable_pdf_manuals}" = "xyes"])
+])
diff --git a/src/api/na-core-utils.h b/src/api/na-core-utils.h
index dd0da13..1e4ea55 100644
--- a/src/api/na-core-utils.h
+++ b/src/api/na-core-utils.h
@@ -56,15 +56,15 @@ void     na_core_utils_str_split_first_word( const gchar *string, gchar **first,
 /* some functions to get or set GSList list of strings
  */
 void     na_core_utils_slist_add_message( GSList **list, const gchar *format, ... );
-GSList  *na_core_utils_slist_duplicate( GSList *list );
+GSList  *na_core_utils_slist_duplicate( GSList *slist );
 void     na_core_utils_slist_dump( const gchar *prefix, GSList *list );
 GSList  *na_core_utils_slist_from_array( const gchar **str_array );
-GSList  *na_core_utils_slist_from_split( const gchar *string, const gchar *separator );
-gchar   *na_core_utils_slist_join_at_end( GSList *list, const gchar *link );
-GSList  *na_core_utils_slist_remove_ascii( GSList *list, const gchar *text );
-GSList  *na_core_utils_slist_remove_utf8( GSList *list, const gchar *string );
+GSList  *na_core_utils_slist_from_split( const gchar *text, const gchar *separator );
+gchar   *na_core_utils_slist_join_at_end( GSList *slist, const gchar *link );
+GSList  *na_core_utils_slist_remove_ascii( GSList *slist, const gchar *text );
+GSList  *na_core_utils_slist_remove_utf8( GSList *slist, const gchar *text );
 gchar  **na_core_utils_slist_to_array( GSList *slist );
-gchar   *na_core_utils_slist_to_text( GSList *list );
+gchar   *na_core_utils_slist_to_text( GSList *slist );
 GSList  *na_core_utils_slist_setup_element( GSList *list, const gchar *element, gboolean set );
 guint    na_core_utils_slist_count( GSList *list, const gchar *str );
 gboolean na_core_utils_slist_find_negated( GSList *list, const gchar *str );
@@ -88,7 +88,7 @@ void     na_core_utils_dir_split_ext( const gchar *string, gchar **first, gchar
 /* file management
  */
 gboolean na_core_utils_file_delete       ( const gchar *path );
-gboolean na_core_utils_file_exists       ( const gchar *path );
+gboolean na_core_utils_file_exists       ( const gchar *uri );
 gchar   *na_core_utils_file_load_from_uri( const gchar *uri, gsize *length );
 
 /* miscellaneous
diff --git a/src/api/na-data-boxed.h b/src/api/na-data-boxed.h
index b7bad89..843cbc7 100644
--- a/src/api/na-data-boxed.h
+++ b/src/api/na-data-boxed.h
@@ -34,7 +34,7 @@
 /**
  * SECTION: na_data_boxed
  * @short_description: #NADataBoxed class definition.
- * @include: core/na-data-boxed.h
+ * @include: nautilus-actions/na-data-boxed.h
  *
  * The object which encapsulates an elementary data of #NAIFactoryObject.
  * A #NADataBoxed object has a type and a value.
diff --git a/src/api/na-data-def.h b/src/api/na-data-def.h
index 237a466..722257d 100644
--- a/src/api/na-data-def.h
+++ b/src/api/na-data-def.h
@@ -34,7 +34,7 @@
 /**
  * SECTION: na_ifactory_object
  * @short_description: Data Factory Definitions.
- * @include: nautilus-actions/na-factory-object-str.h
+ * @include: nautilus-actions/na-data-def.h
  */
 
 #include <glib-object.h>
@@ -42,89 +42,94 @@
 G_BEGIN_DECLS
 
 /**
- * The structure which fully describes an elementary factory data
+ * NADataDef:
+ * @name:             both the id and the canonical name.
+ *                    Used when getting/setting properties.
+ *                    Is defined in na-ifactory-object-data.h and must be globally unique.
+ *                    Must be an invariant as it is known from plugin extensions.
+ * @readable:         whether the data should be read on unserialization operations.
+ *                    If FALSE, then no attempt will be made to read it
+ *                    and the data will have to be set dynamically.
+ *                    When a data has been written once (see below), and unless
+ *                    special cases (see e.g. type), it should remain readable
+ *                    even if it has becomen obsolete (for backward compatibility).
+ * @writable:         whether the data is to be written on serialization operations.
+ *                    If FALSE, then no attempt will be made to write it.
+ *                    Mainly set to FALSE for dynamically set variables and
+ *                    obsoleted ones.
+ * @has_property:     whether a property should be set for this variable ?
+ *                    Set to FALSE for obsolete variables.
+ * @short_label:      short descriptive name.
+ *                    Used in GParamSpec and in schemas.
+ * @long_label:       long, if not complete, description.
+ *                    Used in GParamSpec and in schemas?
+ * @type:             the elementary NAFD_TYPE_xxx data type.
+ * @default_value:    the default to assign when creating a new object.
+ *                    This default is also displayed in command-line help
+ *                    of nautilus-actions-new utility.
+ * @write_if_default: write this value even if it is the default value ?
+ *                    Should default to FALSE.
+ * @copyable:         whether this data should be automatically copied when
+ *                    we are duplicating an object to another ?
+ *                    In all cases, the implementation is always triggered
+ *                    by the copy() interface method.
+ * @comparable:       whether this data should be compared when we
+ *                    are testing two objects for equality.
+ * @mandatory:        whether this data must be not null and not empty
+ *                    when we are testing for validity of an object.
+ * @localizable:      whether this is a localizable data when serializing or exporting.
+ * @gconf_entry:      same entry is also used for GConf-based XML docs.
+ * @desktop_entry:    entry in .desktop files.
+ * @option_short:     the short version of a command-line parameter in nautilus-actions-new,
+ *                    or 0.
+ * @option_long:      the long version of the same command-line parameter in nautilus-actions-new,
+ *                    or NULL.
+ * @option_flags:     #GOptionFlags for the command-line parameter, or 0.
+ * @option_arg:       the type of the option, or 0.
+ * @option_label:     the description for the variable in nautilus-actions-new.
+ *                    Defaults to @short_label if NULL.
+ * @option_arg_label: the description for the argument.
+ *
+ * This structure fully describes an elementary factory data
  * Each #NAIFactoryObject item definition may include several groups of
  * this structure
  */
 typedef struct {
-	gchar     *name;					/* both the id and the canonical name
-										 * used when getting/setting properties
-										 * must be globally unique
-										 * must also be an invariant as it is known from plugin extensions */
-
-	gboolean   readable;				/* whether the data should be read on unserialization ops.
-										 * if FALSE, then no attempt will be made to read it
-										 * and the data will has to be set dynamically
-										 * when a data has been written once (see below), and unless
-										 * special cases (see e.g. type), it should remain readable
-										 * even if it has becomen obsolete (for backward compatibility) */
-
-	gboolean   writable;				/* whether the data is to be written on serialization ops.
-										 * if FALSE, then no attempt will be made to write it
-										 * mainly set to FALSE to dynamically set variables and
-										 * obsoleted ones */
-
-	gboolean   has_property;			/* whether a property should be set for this variable ?
-										 * set to FALSE for obsolete variables */
-
-	gchar     *short_label;				/* short descriptive name
-										 * used in GParamSpec and in schemas */
-
-	gchar     *long_label;				/* long, if not complete, description
-										 * used in GParamSpec and in schemas */
-
-	guint      type;					/* the elementary NAFD_TYPE_xxx data type */
-
-	gchar     *default_value;			/* the default to assign when creating a new object
-										 * this default is also displayed in command-line help
-										 * of nautilus-actions-new utility */
-
-	gboolean   write_if_default;		/* write this value even if it is the default value ?
-										 * default to FALSE */
-
-	gboolean   copyable;				/* whether this data should be automatically copied when
-										 * we are duplicating an object to another
-										 * in all cases, the implementation is always triggered
-										 * by the copy() interface method */
-
-	gboolean   comparable;				/* whether this data should be compared when we
-										 * are testing two objects for equality */
-
-	gboolean   mandatory;				/* whether this data must be not null and not empty
-										 * when we are testing for validity of an object */
-
-	gboolean   localizable;				/* whether this is a localizable data
-										 * when serializing or exporting */
-
-	gchar     *gconf_entry;				/* same entry is also used for GConf-based XML docs */
-
+	gchar     *name;
+	gboolean   readable;
+	gboolean   writable;
+	gboolean   has_property;
+	gchar     *short_label;
+	gchar     *long_label;
+	guint      type;
+	gchar     *default_value;
+	gboolean   write_if_default;
+	gboolean   copyable;
+	gboolean   comparable;
+	gboolean   mandatory;
+	gboolean   localizable;
+	gchar     *gconf_entry;
 	gchar     *desktop_entry;
-
-	/* some parameters to be used when the variable is to be entered via a
-	 * command-line program (e.g. see nautilus-actions-new).
-	 */
-	gchar      option_short;			/* the short version of a command-line parameter */
-
-	gchar     *option_long;				/* the long version of the same command-line parameter */
-
-	gint       option_flags;			/* GOptionFlags for the command-line parameter */
-
-	GOptionArg option_arg;				/* the type of the option */
-
-	gchar     *option_label;			/* the description for the variable
-										 * defaults to short_label if NULL */
-
-	gchar     *option_arg_label;		/* the description for the argument */
+	gchar      option_short;
+	gchar     *option_long;
+	gint       option_flags;
+	GOptionArg option_arg;
+	gchar     *option_label;
+	gchar     *option_arg_label;
 }
 	NADataDef;
 
 /**
- * The structure which fully describes a logical group of data
+ * NADataGroup:
+ * @group: the name of the group, as defined in na-ifactory-object-data.h.
+ * @def: the list of the corresponding data structures.
+ *
+ * This structure fully describes a logical group of data.
  * Each #NAIFactoryObject item definition is built from a list of
  * these groups
  */
 typedef struct {
-	gchar     *group;					/* defined in na-ifactory-object-data.h */
+	gchar     *group;
 	NADataDef *def;
 }
 	NADataGroup;
diff --git a/src/api/na-data-types.h b/src/api/na-data-types.h
index 679bba2..ca4df65 100644
--- a/src/api/na-data-types.h
+++ b/src/api/na-data-types.h
@@ -42,13 +42,22 @@
 G_BEGIN_DECLS
 
 /**
- * Elementary factory data types
+ * NAFactoryDataType:
+ * @NAFD_TYPE_STRING:        an ASCII string
+ * @NAFD_TYPE_LOCALE_STRING: a localized UTF-8 string
+ * @NAFD_TYPE_BOOLEAN:       a boolean
+ *                           can be initialized with "true" or "false" (case insensitive)
+ * @NAFD_TYPE_STRING_LIST:   a list of ASCII strings
+ * @NAFD_TYPE_POINTER:       a ( void * ) pointer
+ *                           should be initialized to NULL
+ * @NAFD_TYPE_UINT:          an unsigned integer
+ *
  * Each elementary factory data must be typed as one of these
  * IFactoryProvider implementations should provide a primitive for reading
  * (resp. writing) a value for each of these elementary data types.
  *
  * IMPORTANT NOTE
- * Please note that this enumeration may  be compiled in by extensions.
+ * Please note that this enumeration may be compiled in by the extensions.
  * They must so remain fixed, unless you want see strange effects (e.g.
  * an extension has been compiled with NAFD_TYPE_STRING = 2, while you
  * have inserted another element, making it to 3 !) - or you know what
diff --git a/src/api/na-gconf-utils.h b/src/api/na-gconf-utils.h
index 2275121..aa1a216 100644
--- a/src/api/na-gconf-utils.h
+++ b/src/api/na-gconf-utils.h
@@ -64,7 +64,7 @@ gboolean na_gconf_utils_write_string_list( GConfClient *gconf, const gchar *path
 
 gboolean na_gconf_utils_remove_entry     ( GConfClient *gconf, const gchar *path, gchar **message );
 
-GSList  *na_gconf_utils_slist_from_string( const gchar *string );
+GSList  *na_gconf_utils_slist_from_string( const gchar *value );
 gchar   *na_gconf_utils_slist_to_string  ( GSList *slist );
 
 G_END_DECLS
diff --git a/src/api/na-icontext.h b/src/api/na-icontext.h
index 05e4f50..a6d7c63 100644
--- a/src/api/na-icontext.h
+++ b/src/api/na-icontext.h
@@ -83,16 +83,16 @@ typedef struct {
 
 GType    na_icontext_get_type( void );
 
-gboolean na_icontext_is_candidate    ( const NAIContext *object, guint target, GList *selection );
-gboolean na_icontext_is_valid        ( const NAIContext *object );
-gboolean na_icontext_is_all_mimetypes( const NAIContext *object );
+gboolean na_icontext_is_candidate    ( const NAIContext *context, guint target, GList *selection );
+gboolean na_icontext_is_valid        ( const NAIContext *context );
+gboolean na_icontext_is_all_mimetypes( const NAIContext *context );
 
-void     na_icontext_read_done       ( NAIContext *object );
+void     na_icontext_read_done       ( NAIContext *context );
 
-void     na_icontext_set_scheme      ( NAIContext *object, const gchar *scheme, gboolean selected );
-void     na_icontext_set_only_desktop( NAIContext *object, const gchar *desktop, gboolean selected );
-void     na_icontext_set_not_desktop ( NAIContext *object, const gchar *desktop, gboolean selected );
-void     na_icontext_replace_folder  ( NAIContext *object, const gchar *old, const gchar *new );
+void     na_icontext_set_scheme      ( NAIContext *context, const gchar *scheme, gboolean selected );
+void     na_icontext_set_only_desktop( NAIContext *context, const gchar *desktop, gboolean selected );
+void     na_icontext_set_not_desktop ( NAIContext *context, const gchar *desktop, gboolean selected );
+void     na_icontext_replace_folder  ( NAIContext *context, const gchar *old, const gchar *new );
 
 G_END_DECLS
 
diff --git a/src/api/na-iduplicable.h b/src/api/na-iduplicable.h
index dae82fd..798dbc1 100644
--- a/src/api/na-iduplicable.h
+++ b/src/api/na-iduplicable.h
@@ -140,7 +140,7 @@ gboolean       na_iduplicable_is_valid    ( const NAIDuplicable *object );
 gboolean       na_iduplicable_is_modified ( const NAIDuplicable *object );
 
 void           na_iduplicable_set_origin  ( NAIDuplicable *object, const NAIDuplicable *origin );
-void           na_iduplicable_set_modified( NAIDuplicable *object, gboolean is_modified );
+void           na_iduplicable_set_modified( NAIDuplicable *object, gboolean modified );
 
 void           na_iduplicable_register_consumer( GObject *consumer );
 
diff --git a/src/api/na-iimporter.h b/src/api/na-iimporter.h
index 01e4705..40adf81 100644
--- a/src/api/na-iimporter.h
+++ b/src/api/na-iimporter.h
@@ -105,73 +105,141 @@ enum {
 };
 
 /**
+ * NAIImporterCheckFn:
+ * @imported: the currently imported #NAObjectItem.
+ * @fn_data: some data to be passed to the function.
+ *
  * This function may be provided by the caller in order the #NAIImporter
  * provider be able to check for pre-existence of the imported item.
  * This function should return the already existing item which has the
  * same id than the currently being imported one, or %NULL if the
  * imported id will be unique.
+ *
  * If this function is not provided, then the #NAIImporter provider will not
  * be able to check for duplicates. In this case, the id of the imported item
  * should be systematically regenerated as a unique id (uuid), regardless of
  * the asked import mode.
  *
- * (E): - currently imported item
- *      - fn_data
- * (S): - already existing item with same id, or %NULL.
+ * Returns: the already existing #NAObjectItem with same id, or %NULL.
  */
-typedef NAObjectItem * ( *NAIImporterCheckFn )  ( const NAObjectItem *, void *fn_data );
+typedef NAObjectItem * ( *NAIImporterCheckFn )( const NAObjectItem *, void * );
 
 /**
+ * NAIImporterAskUserFn:
+ * @imported: the currently imported #NAObjectItem.
+ * @existing: an already existing #NAObjectItem with same id.
+ * @fn_data: some data to be passed to the function.
+ *
  * This function may be provided by the caller in order the #NAIImporter
  * provider be able to ask the user to know what to do in the case of a
  * duplicate id.
- * This function should return an mode import (not ASK!).
+ *
  * If this function is not provided, then the #NAIImporter provider will
  * not be able to ask the user. In this case, the duplicated id should be
  * systematically regenerated as a unique id (uuid).
  *
- * (E): - currently imported item
- *      - already existing item with same id
- *      - fn_data
- * (S): - import mode choosen by the user
+ * Returns: the import mode choosen by the user, which must not be %ASK.
  */
-typedef guint          ( *NAIImporterAskUserFn )( const NAObjectItem *, const NAObjectItem *, void *fn_data );
+typedef guint ( *NAIImporterAskUserFn )( const NAObjectItem *, const NAObjectItem *, void * );
 
-/*
- * parameters used in input/output are passed or received through a single structure
+/**
+ * NAIImporterImportFromUriParms:
+ * @version:       the version of this structure, currently equals to 1.
+ *                 input;
+ *                 since version 1 of the structure.
+ * @uri:           uri of the file to be imported.
+ *                 input;
+ *                 since version 1 of the structure.
+ * @asked_mode:    asked import mode.
+ *                 input;
+ *                 since version 1 of the structure.
+ * @exist:         whether the imported Id already existed.
+ *                 output;
+ *                 since version 1 of the structure.
+ * @import_mode:   actually used import mode.
+ *                 output;
+ *                 since version 1 of the structure.
+ * @imported:      the imported NAObjectItem-derived object, or %NULL.
+ *                 output;
+ *                 since version 1 of the structure.
+ * @check_fn:      a #NAIImporterCheckFn function to check the existence of the imported id.
+ *                 input;
+ *                 since version 1 of the structure.
+ * @check_fn_data: @check_fn data
+ *                 input;
+ *                 since version 1 of the structure.
+ * @ask_fn:        a #NAIImporterAskUserFn function to ask the user what to do in case of a duplicate id
+ *                 input;
+ *                 since version 1 of the structure.
+ * @ask_fn_data:   @ask_fn data
+ *                 input;
+ *                 since version 1 of the structure.
+ * @messages:      a #GSList list of localized strings;
+ *                 the provider may append messages to this list, but shouldn't reinitialize it
+ *                 input/output;
+ *                 since version 1 of the structure.
+ *
+ * This structure allows all used parameters when importing from an URI
+ * to be passed and received through a single structure.
  */
 struct NAIImporterImportFromUriParms {
-	guint                version;		/* i 1: version of this structure */
-	gchar               *uri;			/* i 1: uri of the file to be imported */
-	guint                asked_mode;	/* i 1: asked import mode */
-	gboolean             exist;			/*  o1: whether the imported Id already existed */
-	guint                import_mode;	/*  o1: actually used import mode */
-	NAObjectItem        *imported;		/*  o1: the imported NAObjectItem-derived object, or %NULL */
-	NAIImporterCheckFn   check_fn;		/* i 1: a function to check the existence of the imported id */
-	void                *check_fn_data;	/* i 1: data function */
-	NAIImporterAskUserFn ask_fn;		/* i 1: a function to ask the user what to do in case of a duplicate id */
-	void                *ask_fn_data;	/* i 1: data function */
-	GSList              *messages;		/* io1: a #GSList list of localized strings;
-										 *       the provider may append messages to this list,
-										 *       but shouldn't reinitialize it. */
+	guint                version;
+	gchar               *uri;
+	guint                asked_mode;
+	gboolean             exist;
+	guint                import_mode;
+	NAObjectItem        *imported;
+	NAIImporterCheckFn   check_fn;
+	void                *check_fn_data;
+	NAIImporterAskUserFn ask_fn;
+	void                *ask_fn_data;
+	GSList              *messages;
 };
 
 /*
- * parameters used when managing import mode
+ * NAIImporterManageImportModeParms:
+ * @version:       the version of this structure, currently equals to 1.
+ *                 input;
+ *                 since version 1 of the structure.
+ * @imported:      the imported #NAObjectItem-derived object
+ * @asked_mode:    asked import mode
+ * @check_fn:      a #NAIImporterCheckFn function to check the existence of the imported id.
+ *                 input;
+ *                 since version 1 of the structure.
+ * @check_fn_data: @check_fn data
+ *                 input;
+ *                 since version 1 of the structure.
+ * @ask_fn:        a #NAIImporterAskUserFn function to ask the user what to do in case of a duplicate id
+ *                 input;
+ *                 since version 1 of the structure.
+ * @ask_fn_data:   @ask_fn data
+ *                 input;
+ *                 since version 1 of the structure.
+ * @exist:         whether the imported Id already existed
+ *                 output;
+ *                 since version 1 of the structure.
+ * @import_mode:   actually used import mode
+ *                 output;
+ *                 since version 1 of the structure.
+ * @messages:      a #GSList list of localized strings;
+ *                 the provider may append messages to this list, but shouldn't reinitialize it
+ *                 input/output;
+ *                 since version 1 of the structure.
+ *
+ * This structure allows all used parameters when managing the import mode
+ * to be passed and received through a single structure.
  */
 struct NAIImporterManageImportModeParms {
-	guint                version;		/* i 1: version of this structure */
-	NAObjectItem        *imported;		/* i 1: the imported NAObjectItem-derived object */
-	guint                asked_mode;	/* i 1: asked import mode */
-	NAIImporterCheckFn   check_fn;		/* i 1: a function to check the existence of the imported id */
-	void                *check_fn_data;	/* i 1: data function */
-	NAIImporterAskUserFn ask_fn;		/* i 1: a function to ask the user what to do in case of a duplicate id */
-	void                *ask_fn_data;	/* i 1: data function */
-	gboolean             exist;			/*  o1: whether the imported Id already existed */
-	guint                import_mode;	/*  o1: actually used import mode */
-	GSList              *messages;		/* io1: a #GSList list of localized strings;
-										 *       the provider may append messages to this list,
-										 *       but shouldn't reinitialize it. */
+	guint                version;
+	NAObjectItem        *imported;
+	guint                asked_mode;
+	NAIImporterCheckFn   check_fn;
+	void                *check_fn_data;
+	NAIImporterAskUserFn ask_fn;
+	void                *ask_fn_data;
+	gboolean             exist;
+	guint                import_mode;
+	GSList              *messages;
 };
 
 GType na_iimporter_get_type( void );
diff --git a/src/api/na-object-api.h b/src/api/na-object-api.h
index 718a3b6..241629c 100644
--- a/src/api/na-object-api.h
+++ b/src/api/na-object-api.h
@@ -126,7 +126,7 @@ G_BEGIN_DECLS
 #define na_object_get_position( obj, child )			na_object_item_get_position( NA_OBJECT_ITEM( obj ), NA_OBJECT_ID( child ))
 #define na_object_append_item( obj, child )				na_object_item_append_item( NA_OBJECT_ITEM( obj ), NA_OBJECT_ID( child ))
 #define na_object_insert_at( obj, child, pos )			na_object_item_insert_at( NA_OBJECT_ITEM( obj ), NA_OBJECT_ID( child ), ( pos ))
-#define na_object_insert_item( obj, child, sibling )	na_object_item_insert_item( NA_OBJECT_ITEM( obj ), NA_OBJECT( child ), ( NAObject * )( sibling ))
+#define na_object_insert_item( obj, child, sibling )	na_object_item_insert_item( NA_OBJECT_ITEM( obj ), NA_OBJECT_ID( child ), ( NAObjectId * )( sibling ))
 #define na_object_remove_item( obj, child )				na_object_item_remove_item( NA_OBJECT_ITEM( obj ), NA_OBJECT_ID( child ))
 
 #define na_object_get_items_count( obj )				na_object_item_get_items_count( NA_OBJECT_ITEM( obj ))
diff --git a/src/api/na-object-id.h b/src/api/na-object-id.h
index ca596c3..a12267b 100644
--- a/src/api/na-object-id.h
+++ b/src/api/na-object-id.h
@@ -91,7 +91,7 @@ GType  na_object_id_get_type( void );
 gint   na_object_id_sort_alpha_asc ( const NAObjectId *a, const NAObjectId *b );
 gint   na_object_id_sort_alpha_desc( const NAObjectId *a, const NAObjectId *b );
 
-void   na_object_id_prepare_for_paste( NAObjectId *object, gboolean relabel, gboolean renumber, NAObjectId *action );
+void   na_object_id_prepare_for_paste( NAObjectId *object, gboolean relabel, gboolean renumber, NAObjectId *parent );
 void   na_object_id_set_copy_of_label( NAObjectId *object );
 void   na_object_id_set_new_id       ( NAObjectId *object, const NAObjectId *new_parent );
 
diff --git a/src/api/na-object-item.h b/src/api/na-object-item.h
index 1a365c4..91b865b 100644
--- a/src/api/na-object-item.h
+++ b/src/api/na-object-item.h
@@ -81,10 +81,10 @@ gboolean    na_object_item_are_equal( const NAObjectItem *a, const NAObjectItem
 
 NAObjectId *na_object_item_get_item    ( const NAObjectItem *item, const gchar *id );
 gint        na_object_item_get_position( const NAObjectItem *item, const NAObjectId *child );
-void        na_object_item_append_item ( NAObjectItem *object, const NAObjectId *item );
-void        na_object_item_insert_at   ( NAObjectItem *object, const NAObjectId *item, gint pos );
-void        na_object_item_insert_item ( NAObjectItem *object, const NAObject *item, const NAObject *before );
-void        na_object_item_remove_item ( NAObjectItem *object, const NAObjectId *item );
+void        na_object_item_append_item ( NAObjectItem *item, const NAObjectId *child );
+void        na_object_item_insert_at   ( NAObjectItem *item, const NAObjectId *child, gint pos );
+void        na_object_item_insert_item ( NAObjectItem *item, const NAObjectId *child, const NAObjectId *before );
+void        na_object_item_remove_item ( NAObjectItem *item, const NAObjectId *child );
 
 guint       na_object_item_get_items_count( const NAObjectItem *item );
 
diff --git a/src/core/na-core-utils.c b/src/core/na-core-utils.c
index 0218ff2..9a748b0 100644
--- a/src/core/na-core-utils.c
+++ b/src/core/na-core-utils.c
@@ -221,20 +221,20 @@ na_core_utils_slist_add_message( GSList **messages, const gchar *format, ... )
 
 /**
  * na_core_utils_slist_duplicate:
- * @source_slist: the #GSList to be duplicated.
+ * @slist: the #GSList to be duplicated.
  *
  * Returns: a #GSList of strings.
  *
- * The returned list should be #na_core_utils_slist_free() by the caller.
+ * The returned list should be na_core_utils_slist_free() by the caller.
  */
 GSList *
-na_core_utils_slist_duplicate( GSList *source_slist )
+na_core_utils_slist_duplicate( GSList *slist )
 {
 	GSList *dest_slist, *it;
 
 	dest_slist = NULL;
 
-	for( it = source_slist ; it != NULL ; it = it->next ){
+	for( it = slist ; it != NULL ; it = it->next ){
 		dest_slist = g_slist_prepend( dest_slist, g_strdup(( gchar * ) it->data ) );
 	}
 
@@ -269,11 +269,12 @@ na_core_utils_slist_dump( const gchar *prefix, GSList *list )
 
 /**
  * na_core_utils_slist_from_split:
- * @@text: a string to be splitted.
+ * @text: a string to be splitted.
+ * @separator: the string to be used as the separator.
  *
  * Returns: a #GSList with the list of strings after having been splitted.
  *
- * The returned #GSList should be #na_core_utils_slist_free() by the caller.
+ * The returned #GSList should be na_core_utils_slist_free() by the caller.
  */
 GSList *
 na_core_utils_slist_from_split( const gchar *text, const gchar *separator )
@@ -353,56 +354,56 @@ na_core_utils_slist_join_at_end( GSList *slist, const gchar *link )
 
 /**
  * na_core_utils_slist_remove_ascii:
- * @list: the GSList to be updated.
+ * @slist: the #GSList to be updated.
  * @text: string to remove.
  *
  * Removes a string from a GSList of strings.
  *
- * Returns the new list after update.
+ * Returns: the same, updated, @slist.
  */
 GSList *
-na_core_utils_slist_remove_ascii( GSList *list, const gchar *text )
+na_core_utils_slist_remove_ascii( GSList *slist, const gchar *text )
 {
 	GSList *il;
 
-	for( il = list ; il ; il = il->next ){
+	for( il = slist ; il ; il = il->next ){
 
 		const gchar *istr = ( const gchar * ) il->data;
 		if( !g_ascii_strcasecmp( text, istr )){
 
-			list = g_slist_remove( list, ( gconstpointer ) istr );
-			return( list );
+			slist = g_slist_remove( slist, ( gconstpointer ) istr );
+			return( slist );
 		}
 	}
 
-	return( list );
+	return( slist );
 }
 
 /**
  * na_core_utils_slist_remove_utf8:
- * @list: the GSList to be updated.
- * @str: the string to be removed.
+ * @slist: the #GSList to be updated.
+ * @text: the string to be removed.
  *
- * Removes from the @list the item which has a string which is equal to
- * @str.
+ * Removes from the @slist the item which has a string which is equal to
+ * @text.
  *
- * Returns: the new @list start position.
+ * Returns: the new @slist start position.
  */
 GSList *
-na_core_utils_slist_remove_utf8( GSList *list, const gchar *str )
+na_core_utils_slist_remove_utf8( GSList *slist, const gchar *text )
 {
 	GSList *is;
 
-	for( is = list ; is ; is = is->next ){
+	for( is = slist ; is ; is = is->next ){
 		const gchar *istr = ( const gchar * ) is->data;
-		if( !na_core_utils_str_collate( str, istr )){
+		if( !na_core_utils_str_collate( text, istr )){
 			g_free( is->data );
-			list = g_slist_delete_link( list, is );
+			slist = g_slist_delete_link( slist, is );
 			break;
 		}
 	}
 
-	return( list );
+	return( slist );
 }
 
 /**
@@ -431,7 +432,7 @@ na_core_utils_slist_to_array( GSList *slist )
 
 /**
  * na_core_utils_slist_to_text:
- * @strlist: a list of strings.
+ * @slist: a list of strings.
  *
  * Concatenates a string list to a semi-colon-separated text
  * suitable for an entry in the user interface
@@ -440,13 +441,13 @@ na_core_utils_slist_to_array( GSList *slist )
  * caller.
  */
 gchar *
-na_core_utils_slist_to_text( GSList *strlist )
+na_core_utils_slist_to_text( GSList *slist )
 {
 	GSList *ib;
 	gchar *tmp;
 	gchar *text = g_strdup( "" );
 
-	for( ib = strlist ; ib ; ib = ib->next ){
+	for( ib = slist ; ib ; ib = ib->next ){
 		if( strlen( text )){
 			tmp = g_strdup_printf( "%s; ", text );
 			g_free( text );
@@ -550,28 +551,28 @@ na_core_utils_slist_find_negated( GSList *list, const gchar *str )
 
 /**
  * na_core_utils_slist_are_equal:
- * @first: a GSList of strings.
- * @second: another GSList of strings to be compared with @first.
+ * @a: a GSList of strings.
+ * @b: another GSList of strings to be compared with @first.
  *
  * Compare two string lists, without regards to the order.
  *
  * Returns: %TRUE if the two lists have same content.
  */
 gboolean
-na_core_utils_slist_are_equal( GSList *first, GSList *second )
+na_core_utils_slist_are_equal( GSList *a, GSList *b )
 {
 	GSList *il;
 
-	for( il = first ; il ; il = il->next ){
+	for( il = a ; il ; il = il->next ){
 		const gchar *str = ( const gchar * ) il->data;
-		if( na_core_utils_slist_count( second, str ) == 0 ){
+		if( na_core_utils_slist_count( b, str ) == 0 ){
 			return( FALSE );
 		}
 	}
 
-	for( il = second ; il ; il = il->next ){
+	for( il = b ; il ; il = il->next ){
 		const gchar *str = ( const gchar * ) il->data;
-		if( na_core_utils_slist_count( first, str ) == 0 ){
+		if( na_core_utils_slist_count( a, str ) == 0 ){
 			return( FALSE );
 		}
 	}
@@ -581,7 +582,7 @@ na_core_utils_slist_are_equal( GSList *first, GSList *second )
 
 /**
  * na_core_utils_slist_free:
- * @list: a #GSList list of strings.
+ * @slist: a #GSList list of strings.
  *
  * Releases the strings and the list itself.
  */
@@ -798,7 +799,7 @@ info_dir_is_writable( GFile *file, const gchar *path_or_uri )
  * Split the given @string, returning the first part and the extension in newly
  * allocated buffers which should be g_free() by the caller.
  *
- * Returns an empty string as extension if no extension is detected.
+ * The extension is set to an empty string if no extension is detected.
  */
 void
 na_core_utils_dir_split_ext( const gchar *string, gchar **first, gchar **ext )
@@ -859,19 +860,19 @@ na_core_utils_file_delete( const gchar *path )
 
 /**
  * na_core_utils_file_exists:
- * @fname: a file full URI.
+ * @uri: a file URI.
  *
  * Returns: %TRUE if the specified file exists, %FALSE else.
  *
  * Race condition: cf. na_core_utils_dir_is_writable() comment.
  */
 gboolean
-na_core_utils_file_exists( const gchar *fname )
+na_core_utils_file_exists( const gchar *uri )
 {
 	GFile *file;
 	gboolean exists;
 
-	file = g_file_new_for_uri( fname );
+	file = g_file_new_for_uri( uri );
 	exists = g_file_query_exists( file, NULL );
 	g_object_unref( file );
 
diff --git a/src/core/na-data-boxed.c b/src/core/na-data-boxed.c
index 4d273e5..80c5469 100644
--- a/src/core/na-data-boxed.c
+++ b/src/core/na-data-boxed.c
@@ -538,7 +538,7 @@ na_data_boxed_is_default( const NADataBoxed *boxed )
 
 /**
  * na_data_boxed_is_valid:
- * @object: the #NADataBoxed object whose validity is to be checked.
+ * @boxed: the #NADataBoxed object whose validity is to be checked.
  *
  * Returns: %TRUE if the boxed is valid, %FALSE else.
  */
diff --git a/src/core/na-export-format.c b/src/core/na-export-format.c
index e932c39..e998d6e 100644
--- a/src/core/na-export-format.c
+++ b/src/core/na-export-format.c
@@ -172,20 +172,20 @@ instance_finalize( GObject *object )
 
 /**
  * na_export_format_new:
- * @str: a #NAIExporterFormat which describes an export format.
+ * @exporter_format: a #NAIExporterFormat which describes an export format.
  * @exporter: the #NAIExporter which provides this export format.
  *
  * Returns: a newly allocated #NAExportFormat object.
  */
 NAExportFormat *
-na_export_format_new( const NAIExporterFormat *str, const NAIExporter *exporter )
+na_export_format_new( const NAIExporterFormat *exporter_format, const NAIExporter *exporter )
 {
 	NAExportFormat *format;
 
 	format = g_object_new( NA_EXPORT_FORMAT_TYPE, NULL );
 
-	format->private->id = g_quark_from_string( str->format );
-	format->private->str = ( NAIExporterFormat * ) str;
+	format->private->id = g_quark_from_string( exporter_format->format );
+	format->private->str = ( NAIExporterFormat * ) exporter_format;
 	format->private->exporter = ( NAIExporter * ) exporter;
 
 	return( format );
diff --git a/src/core/na-export-format.h b/src/core/na-export-format.h
index e6ddad3..55f267c 100644
--- a/src/core/na-export-format.h
+++ b/src/core/na-export-format.h
@@ -68,7 +68,7 @@ typedef struct {
 
 GType           na_export_format_get_type( void );
 
-NAExportFormat *na_export_format_new( const NAIExporterFormat *format, const NAIExporter *exporter );
+NAExportFormat *na_export_format_new( const NAIExporterFormat *exporter_format, const NAIExporter *exporter );
 
 GQuark          na_export_format_get_quark      ( const NAExportFormat *format );
 gchar          *na_export_format_get_id         ( const NAExportFormat *format );
diff --git a/src/core/na-exporter.c b/src/core/na-exporter.c
index 4f4eb93..8955c63 100644
--- a/src/core/na-exporter.c
+++ b/src/core/na-exporter.c
@@ -175,7 +175,7 @@ na_exporter_to_buffer( const NAPivot *pivot, const NAObjectItem *item, GQuark fo
  * na_exporter_to_file:
  * @pivot: the #NAPivot pivot for the running application.
  * @item: a #NAObjectItem-derived object.
- * @folder: the URI of the target folder.
+ * @folder_uri: the URI of the target folder.
  * @format: the #GQuark target format.
  * @messages: a pointer to a #GSList list of strings; the provider
  *  may append messages to this list, but shouldn't reinitialize it.
@@ -186,7 +186,7 @@ na_exporter_to_buffer( const NAPivot *pivot, const NAObjectItem *item, GQuark fo
  * should be g_free() by the caller, or %NULL if an error has been detected.
  */
 gchar *
-na_exporter_to_file( const NAPivot *pivot, const NAObjectItem *item, const gchar *folder, GQuark format, GSList **messages )
+na_exporter_to_file( const NAPivot *pivot, const NAObjectItem *item, const gchar *folder_uri, GQuark format, GSList **messages )
 {
 	static const gchar *thisfn = "na_exporter_to_file";
 	gchar *export_uri;
@@ -202,11 +202,11 @@ na_exporter_to_file( const NAPivot *pivot, const NAObjectItem *item, const gchar
 
 	if( iexporter_initialized && !iexporter_finalized ){
 
-		g_debug( "%s: pivot=%p, item=%p (%s), folder=%s, format=%u (%s), messages=%p",
+		g_debug( "%s: pivot=%p, item=%p (%s), folder_uri=%s, format=%u (%s), messages=%p",
 				thisfn,
 				( void * ) pivot,
 				( void * ) item, G_OBJECT_TYPE_NAME( item ),
-				folder,
+				folder_uri,
 				( guint ) format, g_quark_to_string( format ),
 				( void * ) messages );
 
@@ -215,7 +215,7 @@ na_exporter_to_file( const NAPivot *pivot, const NAObjectItem *item, const gchar
 		if( exporter ){
 			parms.version = 1;
 			parms.exported = ( NAObjectItem * ) item;
-			parms.folder = ( gchar * ) folder;
+			parms.folder = ( gchar * ) folder_uri;
 			parms.format = format;
 			parms.basename = NULL;
 			parms.messages = messages ? *messages : NULL;
@@ -224,7 +224,7 @@ na_exporter_to_file( const NAPivot *pivot, const NAObjectItem *item, const gchar
 				NA_IEXPORTER_GET_INTERFACE( exporter )->to_file( exporter, &parms );
 
 				if( parms.basename ){
-					export_uri = g_strdup_printf( "%s%s%s", folder, G_DIR_SEPARATOR_S, parms.basename );
+					export_uri = g_strdup_printf( "%s%s%s", folder_uri, G_DIR_SEPARATOR_S, parms.basename );
 				}
 
 			} else {
diff --git a/src/core/na-exporter.h b/src/core/na-exporter.h
index 89ebf42..9a7efd5 100644
--- a/src/core/na-exporter.h
+++ b/src/core/na-exporter.h
@@ -47,7 +47,7 @@ GList *na_exporter_get_formats ( const NAPivot *pivot );
 void   na_exporter_free_formats( GList *formats );
 
 gchar *na_exporter_to_buffer( const NAPivot *pivot, const NAObjectItem *item, GQuark format, GSList **messages );
-gchar *na_exporter_to_file  ( const NAPivot *pivot, const NAObjectItem *item, const gchar *uri, GQuark format, GSList **messages );
+gchar *na_exporter_to_file  ( const NAPivot *pivot, const NAObjectItem *item, const gchar *folder_uri, GQuark format, GSList **messages );
 
 G_END_DECLS
 
diff --git a/src/core/na-factory-object.c b/src/core/na-factory-object.c
index 0f97b33..908ae8c 100644
--- a/src/core/na-factory-object.c
+++ b/src/core/na-factory-object.c
@@ -223,7 +223,7 @@ na_factory_object_get_data_groups( const NAIFactoryObject *object )
 /**
  * na_factory_object_iter_on_boxed:
  * @object: this #NAIFactoryObject object.
- * @fn: the function to be called.
+ * @pfn: the function to be called.
  * @user_data: data to be provided to the user function.
  *
  * Iterate on each #NADataBoxed attached to the @object.
@@ -594,7 +594,7 @@ na_factory_object_finalize( NAIFactoryObject *object )
 
 /**
  * na_factory_object_read_item:
- * @serializable: this #NAIFactoryObject instance.
+ * @object: this #NAIFactoryObject instance.
  * @reader: the #NAIFactoryProvider which is at the origin of this read.
  * @reader_data: reader data.
  * @messages: a pointer to a #GSList list of strings; the implementation
@@ -603,22 +603,22 @@ na_factory_object_finalize( NAIFactoryObject *object )
  * Unserializes the object.
  */
 void
-na_factory_object_read_item( NAIFactoryObject *serializable, const NAIFactoryProvider *reader, void *reader_data, GSList **messages )
+na_factory_object_read_item( NAIFactoryObject *object, const NAIFactoryProvider *reader, void *reader_data, GSList **messages )
 {
 	static const gchar *thisfn = "na_factory_object_read_item";
 
-	g_return_if_fail( NA_IS_IFACTORY_OBJECT( serializable ));
+	g_return_if_fail( NA_IS_IFACTORY_OBJECT( object ));
 	g_return_if_fail( NA_IS_IFACTORY_PROVIDER( reader ));
 
 	if( ifactory_object_initialized && !ifactory_object_finalized ){
 
-		NADataGroup *groups = v_get_groups( serializable );
+		NADataGroup *groups = v_get_groups( object );
 
 		if( groups ){
-			v_read_start( serializable, reader, reader_data, messages );
+			v_read_start( object, reader, reader_data, messages );
 
 			NafoReadIter *iter = g_new0( NafoReadIter, 1 );
-			iter->object = serializable;
+			iter->object = object;
 			iter->reader = ( NAIFactoryProvider * ) reader;
 			iter->reader_data = reader_data;
 			iter->messages = messages;
@@ -627,11 +627,11 @@ na_factory_object_read_item( NAIFactoryObject *serializable, const NAIFactoryPro
 
 			g_free( iter );
 
-			v_read_done( serializable, reader, reader_data, messages );
+			v_read_done( object, reader, reader_data, messages );
 
 		} else {
 			g_warning( "%s: class %s doesn't return any NADataGroup structure",
-					thisfn, G_OBJECT_TYPE_NAME( serializable ));
+					thisfn, G_OBJECT_TYPE_NAME( object ));
 		}
 	}
 }
@@ -662,7 +662,7 @@ read_data_iter( NADataDef *def, NafoReadIter *iter )
 
 /**
  * na_factory_object_write_item:
- * @serializable: this #NAIFactoryObject instance.
+ * @object: this #NAIFactoryObject instance.
  * @writer: the #NAIFactoryProvider which is at the origin of this write.
  * @writer_data: writer data.
  * @messages: a pointer to a #GSList list of strings; the implementation
@@ -673,26 +673,26 @@ read_data_iter( NADataDef *def, NafoReadIter *iter )
  * Returns: a NAIIOProvider operation return code.
  */
 guint
-na_factory_object_write_item( NAIFactoryObject *serializable, const NAIFactoryProvider *writer, void *writer_data, GSList **messages )
+na_factory_object_write_item( NAIFactoryObject *object, const NAIFactoryProvider *writer, void *writer_data, GSList **messages )
 {
 	static const gchar *thisfn = "na_factory_object_write_item";
 	guint code;
 	NADataGroup *groups;
 	gchar *msg;
 
-	g_return_val_if_fail( NA_IS_IFACTORY_OBJECT( serializable ), NA_IIO_PROVIDER_CODE_PROGRAM_ERROR );
+	g_return_val_if_fail( NA_IS_IFACTORY_OBJECT( object ), NA_IIO_PROVIDER_CODE_PROGRAM_ERROR );
 	g_return_val_if_fail( NA_IS_IFACTORY_PROVIDER( writer ), NA_IIO_PROVIDER_CODE_PROGRAM_ERROR );
 
 	code = NA_IIO_PROVIDER_CODE_PROGRAM_ERROR;
 
-	groups = v_get_groups( serializable );
+	groups = v_get_groups( object );
 
 	if( groups ){
-		code = v_write_start( serializable, writer, writer_data, messages );
+		code = v_write_start( object, writer, writer_data, messages );
 
 	} else {
 		msg = g_strdup_printf( "%s: class %s doesn't return any NADataGroup structure",
-				thisfn, G_OBJECT_TYPE_NAME( serializable ));
+				thisfn, G_OBJECT_TYPE_NAME( object ));
 		g_warning( "%s", msg );
 		*messages = g_slist_append( *messages, msg );
 	}
@@ -705,14 +705,14 @@ na_factory_object_write_item( NAIFactoryObject *serializable, const NAIFactoryPr
 		iter->messages = messages;
 		iter->code = code;
 
-		na_factory_object_iter_on_boxed( serializable, ( NAFactoryObjectIterBoxedFn ) write_data_iter, iter );
+		na_factory_object_iter_on_boxed( object, ( NAFactoryObjectIterBoxedFn ) write_data_iter, iter );
 
 		code = iter->code;
 		g_free( iter );
 	}
 
 	if( code == NA_IIO_PROVIDER_CODE_OK ){
-		code = v_write_done( serializable, writer, writer_data, messages );
+		code = v_write_done( object, writer, writer_data, messages );
 	}
 
 	return( code );
@@ -734,12 +734,11 @@ write_data_iter( const NAIFactoryObject *object, NADataBoxed *boxed, NafoWriteIt
 /**
  * na_factory_object_get_as_value:
  * @object: this #NAIFactoryObject instance.
- * @property_id: the elementary data id.
+ * @name: the elementary data id.
  * @value: the #GValue to be set.
- * @spec: the #GParamSpec which describes this data.
  *
  * Set the @value with the current content of the #NADataBoxed attached
- * to @property_id.
+ * to @name.
  *
  * This is to be readen as "set value from data element".
  */
diff --git a/src/core/na-factory-object.h b/src/core/na-factory-object.h
index 1fc804f..80b04a1 100644
--- a/src/core/na-factory-object.h
+++ b/src/core/na-factory-object.h
@@ -51,7 +51,7 @@ typedef gboolean ( *NAFactoryObjectIterBoxedFn )( const NAIFactoryObject *object
 void         na_factory_object_define_properties( GObjectClass *class, const NADataGroup *groups );
 NADataDef   *na_factory_object_get_data_def     ( const NAIFactoryObject *object, const gchar *name );
 NADataGroup *na_factory_object_get_data_groups  ( const NAIFactoryObject *object );
-void         na_factory_object_iter_on_boxed    ( const NAIFactoryObject *object, NAFactoryObjectIterBoxedFn pfn, void *data );
+void         na_factory_object_iter_on_boxed    ( const NAIFactoryObject *object, NAFactoryObjectIterBoxedFn pfn, void *user_data );
 
 gchar       *na_factory_object_get_default      ( NAIFactoryObject *object, const gchar *name );
 void         na_factory_object_set_defaults     ( NAIFactoryObject *object );
@@ -73,10 +73,6 @@ void         na_factory_object_get_as_value     ( const NAIFactoryObject *object
 void         na_factory_object_set_from_value   ( NAIFactoryObject *object, const gchar *name, const GValue *value );
 void         na_factory_object_set_from_void    ( NAIFactoryObject *object, const gchar *name, const void *data );
 
-#if 0
-void         na_factory_object_set_from_string  ( NAIFactoryObject *object, const gchar *name, const gchar *data );
-#endif
-
 G_END_DECLS
 
 #endif /* __CORE_NA_FACTORY_OBJECT_H__ */
diff --git a/src/core/na-gconf-monitor.c b/src/core/na-gconf-monitor.c
index 5d83a1e..43678b3 100644
--- a/src/core/na-gconf-monitor.c
+++ b/src/core/na-gconf-monitor.c
@@ -183,13 +183,17 @@ instance_finalize( GObject *object )
 
 /**
  * na_gconf_monitor_new:
- * @client: a #GConfClient object already initialized by the caller.
  * @path: the absolute path to monitor.
- * @preload: a #GConfClientPreloadType for this monitoring.
  * @handler: the function to be triggered by the monitor.
  * @user_data: data to pass to the @handler.
  *
  * Initializes the monitoring of a GConf path.
+ *
+ * Returns: a new #NAGConfMonitor object, which will monitor the given path,
+ * triggeering the @handler in case of modifications.
+ *
+ * This monitoring will only be stopped when object is released, via
+ * g_object_unref().
  */
 NAGConfMonitor *
 na_gconf_monitor_new( const gchar *path, GConfClientNotifyFunc handler, gpointer user_data )
diff --git a/src/core/na-gconf-utils.c b/src/core/na-gconf-utils.c
index 5acb432..f30c290 100644
--- a/src/core/na-gconf-utils.c
+++ b/src/core/na-gconf-utils.c
@@ -282,14 +282,14 @@ na_gconf_utils_get_string_list_from_entries( GSList *entries, const gchar *entry
 
 /**
  * na_gconf_utils_dump_entries:
- * @list: a list of #GConfEntry as returned by na_gconf_utils_get_entries().
+ * @entries: a list of #GConfEntry as returned by na_gconf_utils_get_entries().
  *
  * Dumps the content of the entries.
  */
 void
-na_gconf_utils_dump_entries( GSList *list )
+na_gconf_utils_dump_entries( GSList *entries )
 {
-	g_slist_foreach( list, ( GFunc ) dump_entry, NULL );
+	g_slist_foreach( entries, ( GFunc ) dump_entry, NULL );
 }
 
 static void
@@ -340,15 +340,15 @@ dump_entry( GConfEntry *entry, void *user_data )
 
 /**
  * na_gconf_utils_free_entries:
- * @list: a list of #GConfEntry as returned by na_gconf_utils_get_entries().
+ * @entries: a list of #GConfEntry as returned by na_gconf_utils_get_entries().
  *
  * Releases the provided list.
  */
 void
-na_gconf_utils_free_entries( GSList *list )
+na_gconf_utils_free_entries( GSList *entries )
 {
-	g_slist_foreach( list, ( GFunc ) gconf_entry_unref, NULL );
-	g_slist_free( list );
+	g_slist_foreach( entries, ( GFunc ) gconf_entry_unref, NULL );
+	g_slist_free( entries );
 }
 
 /**
@@ -624,6 +624,8 @@ na_gconf_utils_write_string_list( GConfClient *gconf, const gchar *path, GSList
  * @message: a pointer to a gchar * which will be allocated if needed.
  *
  * Removes an entry from user preferences.
+ *
+ * Returns: %TRUE if the operation was successfull, %FALSE else.
  */
 gboolean
 na_gconf_utils_remove_entry( GConfClient *gconf, const gchar *path, gchar **message )
diff --git a/src/core/na-iabout.h b/src/core/na-iabout.h
index c5b7d16..25df82c 100644
--- a/src/core/na-iabout.h
+++ b/src/core/na-iabout.h
@@ -62,9 +62,8 @@ typedef struct {
 	 * get_application_name:
 	 * @iabout: this #NAIAbout implementor.
 	 *
-	 * Returns the application name as a newly allocated string.
-	 *
-	 * The application name will be g_free() by the interface.
+	 * Returns: the application name as a newly allocated string,
+	 * which will be g_free() by the interface.
 	 */
 	gchar *     ( *get_application_name )( NAIAbout *instance );
 
@@ -72,7 +71,7 @@ typedef struct {
 	 * get_toplevel:
 	 * @iabout: this #NAIAbout implementor.
 	 *
-	 * Returns the toplevel parent of the displayed dialog box.
+	 * Returns: the toplevel parent of the displayed dialog box.
 	 */
 	GtkWindow * ( *get_toplevel )        ( NAIAbout *instance );
 }
diff --git a/src/core/na-icontext.c b/src/core/na-icontext.c
index ac30471..abd37db 100644
--- a/src/core/na-icontext.c
+++ b/src/core/na-icontext.c
@@ -168,49 +168,49 @@ interface_base_finalize( NAIContextInterface *klass )
 
 /**
  * na_icontext_is_candidate:
- * @object: a #NAIContext to be checked.
+ * @context: a #NAIContext to be checked.
  * @target: the current target.
- * @files: the currently selected items, as a #GList of #NASelectedInfo items.
+ * @selection: the currently selected items, as a #GList of #NASelectedInfo items.
  *
  * Determines if the given object may be candidate to be displayed in
  * the Nautilus context menu, depending of the list of currently selected
  * items.
  *
  * This function is called by nautilus-actions::build_nautilus_menus()
- * for each item found in NAPivot items list, and, when this an action,
+ * for each item found in #NAPivot items list, and, when this an action,
  * for each profile of this action.
  *
- * Returns: %TRUE if this object succeeds to all tests and is so a
+ * Returns: %TRUE if this @context succeeds to all tests and is so a
  * valid candidate to be displayed in Nautilus context menu, %FALSE
  * else.
  */
 gboolean
-na_icontext_is_candidate( const NAIContext *object, guint target, GList *files )
+na_icontext_is_candidate( const NAIContext *context, guint target, GList *selection )
 {
 	static const gchar *thisfn = "na_icontext_is_candidate";
 	gboolean is_candidate;
 
-	g_return_val_if_fail( NA_IS_ICONTEXT( object ), FALSE );
+	g_return_val_if_fail( NA_IS_ICONTEXT( context ), FALSE );
 
-	g_debug( "%s: object=%p (%s), target=%d, files=%p (count=%d)",
-			thisfn, ( void * ) object, G_OBJECT_TYPE_NAME( object ), target, (void * ) files, g_list_length( files ));
+	g_debug( "%s: object=%p (%s), target=%d, selection=%p (count=%d)",
+			thisfn, ( void * ) context, G_OBJECT_TYPE_NAME( context ), target, (void * ) selection, g_list_length( selection ));
 
-	is_candidate = v_is_candidate( NA_ICONTEXT( object ), target, files );
+	is_candidate = v_is_candidate( NA_ICONTEXT( context ), target, selection );
 
 	if( is_candidate ){
 		is_candidate =
-				is_candidate_for_target( object, target, files ) &&
-				is_candidate_for_show_in( object, target, files ) &&
-				is_candidate_for_try_exec( object, target, files ) &&
-				is_candidate_for_show_if_registered( object, target, files ) &&
-				is_candidate_for_show_if_true( object, target, files ) &&
-				is_candidate_for_show_if_running( object, target, files ) &&
-				is_candidate_for_mimetypes( object, target, files ) &&
-				is_candidate_for_basenames( object, target, files ) &&
-				is_candidate_for_selection_count( object, target, files ) &&
-				is_candidate_for_schemes( object, target, files ) &&
-				is_candidate_for_folders( object, target, files ) &&
-				is_candidate_for_capabilities( object, target, files );
+				is_candidate_for_target( context, target, selection ) &&
+				is_candidate_for_show_in( context, target, selection ) &&
+				is_candidate_for_try_exec( context, target, selection ) &&
+				is_candidate_for_show_if_registered( context, target, selection ) &&
+				is_candidate_for_show_if_true( context, target, selection ) &&
+				is_candidate_for_show_if_running( context, target, selection ) &&
+				is_candidate_for_mimetypes( context, target, selection ) &&
+				is_candidate_for_basenames( context, target, selection ) &&
+				is_candidate_for_selection_count( context, target, selection ) &&
+				is_candidate_for_schemes( context, target, selection ) &&
+				is_candidate_for_folders( context, target, selection ) &&
+				is_candidate_for_capabilities( context, target, selection );
 	}
 
 	return( is_candidate );
@@ -218,29 +218,29 @@ na_icontext_is_candidate( const NAIContext *object, guint target, GList *files )
 
 /**
  * na_icontext_is_valid:
- * @profile: the #NAObjectProfile to be checked.
+ * @context: the #NAObjectProfile to be checked.
  *
- * Returns: %TRUE if this profile is valid, %FALSE else.
+ * Returns: %TRUE if this @context is valid, %FALSE else.
  *
- * This function is part of NAIDuplicable::check_status() and is called
- * by NAIDuplicable objects which also implement NAIContext
+ * This function is part of #NAIDuplicable::check_status() and is called
+ * by #NAIDuplicable objects which also implement #NAIContext
  * interface. It so doesn't make sense of asking the object for its
  * validity status as it has already been checked before calling the
  * function.
  */
 gboolean
-na_icontext_is_valid( const NAIContext *object )
+na_icontext_is_valid( const NAIContext *context )
 {
 	gboolean is_valid;
 
-	g_return_val_if_fail( NA_IS_ICONTEXT( object ), FALSE );
+	g_return_val_if_fail( NA_IS_ICONTEXT( context ), FALSE );
 
 	is_valid =
-		is_valid_basenames( object ) &&
-		is_valid_mimetypes( object ) &&
-		is_valid_isfiledir( object ) &&
-		is_valid_schemes( object ) &&
-		is_valid_folders( object );
+		is_valid_basenames( context ) &&
+		is_valid_mimetypes( context ) &&
+		is_valid_isfiledir( context ) &&
+		is_valid_schemes( context ) &&
+		is_valid_folders( context );
 
 	return( is_valid );
 }
@@ -249,18 +249,18 @@ na_icontext_is_valid( const NAIContext *object )
  * na_icontext_is_all_mimetypes:
  * @context: the #NAIContext object to be checked.
  *
- * Returns: %TRUE if this context is valid for all mimetypes, %FALSE else.
+ * Returns: %TRUE if this @context is valid for all mimetypes, %FALSE else.
  */
 gboolean
-na_icontext_is_all_mimetypes( const NAIContext *object )
+na_icontext_is_all_mimetypes( const NAIContext *context )
 {
 	gboolean is_all;
 	GSList *mimetypes, *im;
 
-	g_return_val_if_fail( NA_IS_ICONTEXT( object ), FALSE );
+	g_return_val_if_fail( NA_IS_ICONTEXT( context ), FALSE );
 
 	is_all = TRUE;
-	mimetypes = na_object_get_mimetypes( object );
+	mimetypes = na_object_get_mimetypes( context );
 
 	for( im = mimetypes ; im ; im = im->next ){
 		if( !im->data || !strlen( im->data )){
@@ -295,11 +295,11 @@ na_icontext_read_done( NAIContext *context )
 
 /**
  * na_icontext_set_scheme:
- * @profile: the #NAIContext to be updated.
+ * @context: the #NAIContext to be updated.
  * @scheme: name of the scheme.
- * @selected: whether this scheme is candidate to this context.
+ * @selected: whether this scheme is candidate to this @context.
  *
- * Sets the status of a scheme relative to this context.
+ * Sets the status of a @scheme relative to this @context.
  */
 void
 na_icontext_set_scheme( NAIContext *context, const gchar *scheme, gboolean selected )
@@ -316,11 +316,11 @@ na_icontext_set_scheme( NAIContext *context, const gchar *scheme, gboolean selec
 
 /**
  * na_icontext_set_only_desktop:
- * @profile: the #NAIContext to be updated.
+ * @context: the #NAIContext to be updated.
  * @desktop: name of the desktop environment.
- * @selected: whether this desktop is candidate to this context.
+ * @selected: whether this @desktop is candidate to this @context.
  *
- * Sets the status of the desktop relative to this context for the OnlyShowIn list.
+ * Sets the status of the @desktop relative to this @context for the OnlyShowIn list.
  */
 void
 na_icontext_set_only_desktop( NAIContext *context, const gchar *desktop, gboolean selected )
@@ -337,11 +337,11 @@ na_icontext_set_only_desktop( NAIContext *context, const gchar *desktop, gboolea
 
 /**
  * na_icontext_set_only_desktop:
- * @profile: the #NAIContext to be updated.
+ * @context: the #NAIContext to be updated.
  * @desktop: name of the desktop environment.
- * @selected: whether this desktop is candidate to this context.
+ * @selected: whether this @desktop is candidate to this @context.
  *
- * Sets the status of the desktop relative to this context for the NotShowIn list.
+ * Sets the status of the @desktop relative to this @context for the NotShowIn list.
  */
 void
 na_icontext_set_not_desktop( NAIContext *context, const gchar *desktop, gboolean selected )
@@ -358,35 +358,35 @@ na_icontext_set_not_desktop( NAIContext *context, const gchar *desktop, gboolean
 
 /**
  * na_icontext_replace_folder:
- * @profile: the #NAIContext to be updated.
+ * @context: the #NAIContext to be updated.
  * @old: the old uri.
  * @new: the new uri.
  *
  * Replaces the @old URI by the @new one.
  */
 void
-na_icontext_replace_folder( NAIContext *profile, const gchar *old, const gchar *new )
+na_icontext_replace_folder( NAIContext *context, const gchar *old, const gchar *new )
 {
 	GSList *folders;
 
-	g_return_if_fail( NA_IS_ICONTEXT( profile ));
+	g_return_if_fail( NA_IS_ICONTEXT( context ));
 
-	folders = na_object_get_folders( profile );
+	folders = na_object_get_folders( context );
 	folders = na_core_utils_slist_remove_utf8( folders, old );
 	folders = g_slist_append( folders, ( gpointer ) g_strdup( new ));
-	na_object_set_folders( profile, folders );
+	na_object_set_folders( context, folders );
 	na_core_utils_slist_free( folders );
 }
 
 static gboolean
-v_is_candidate( NAIContext *object, guint target, GList *selection )
+v_is_candidate( NAIContext *context, guint target, GList *selection )
 {
 	gboolean is_candidate;
 
 	is_candidate = TRUE;
 
-	if( NA_ICONTEXT_GET_INTERFACE( object )->is_candidate ){
-		is_candidate = NA_ICONTEXT_GET_INTERFACE( object )->is_candidate( object, target, selection );
+	if( NA_ICONTEXT_GET_INTERFACE( context )->is_candidate ){
+		is_candidate = NA_ICONTEXT_GET_INTERFACE( context )->is_candidate( context, target, selection );
 	}
 
 	return( is_candidate );
@@ -829,9 +829,10 @@ is_candidate_for_selection_count( const NAIContext *object, guint target, GList
  * are all in the same location and the scheme mainly depends on location
  * so we have here a great possible optimization by only testing the
  * first selected item.
- *
  * note that this optimization may be wrong, for example when ran from the
- * command-line with a random set of pseudo-selected items.
+ * command-line with a random set of pseudo-selected items
+ * so we take care of only checking _distincts_ schemes of provided selection
+ * against schemes conditions.
  */
 static gboolean
 is_candidate_for_schemes( const NAIContext *object, guint target, GList *files )
@@ -842,31 +843,42 @@ is_candidate_for_schemes( const NAIContext *object, guint target, GList *files )
 
 	if( schemes ){
 		if( strcmp( schemes->data, "*" ) != 0 || g_slist_length( schemes ) > 1 ){
-			GSList *is;
-			gchar *scheme, *pattern;
-			gboolean match, positive;
-
-			scheme = na_selected_info_get_uri_scheme( NA_SELECTED_INFO( files->data ));
-			match = FALSE;
-
-			for( is = schemes ; is && ok ; is = is->next ){
-				pattern = ( gchar * ) is->data;
-				positive = is_positive_assertion( pattern );
+			GSList *distincts = NULL;
+			GList *it;
 
-				if( !positive || !match ){
-					if( is_compatible_scheme( positive ? pattern : pattern+1, scheme )){
-						if( positive ){
-							match = TRUE;
-						} else {
-							ok = FALSE;
+			for( it = files ; it && ok ; it = it->next ){
+				gchar *scheme = na_selected_info_get_uri_scheme( NA_SELECTED_INFO( files->data ));
+
+				if( na_core_utils_slist_count( distincts, scheme ) == 0 ){
+					GSList *is;
+					gchar *scheme, *pattern;
+					gboolean match, positive;
+
+					match = FALSE;
+					distincts = g_slist_prepend( distincts, g_strdup( scheme ));
+
+					for( is = schemes ; is && ok ; is = is->next ){
+						pattern = ( gchar * ) is->data;
+						positive = is_positive_assertion( pattern );
+
+						if( !positive || !match ){
+							if( is_compatible_scheme( positive ? pattern : pattern+1, scheme )){
+								if( positive ){
+									match = TRUE;
+								} else {
+									ok = FALSE;
+								}
+							}
 						}
 					}
+
+					ok &= match;
 				}
-			}
 
-			ok &= match;
+				g_free( scheme );
+			}
 
-			g_free( scheme );
+			na_core_utils_slist_free( distincts );
 		}
 
 		if( !ok ){
@@ -899,11 +911,10 @@ is_compatible_scheme( const gchar *pattern, const gchar *scheme )
 
 /*
  * assumuing here the same sort of optimization than for schemes
- * i.e. we assume that all selected items are located in the same dirname
- * so we only check first dirname against folder conditions
- *
- * note that this optimization may be wrong, for example when ran from the
- * command-line with a random set of pseudo-selected items.
+ * i.e. we assume that all selected items are must probably located
+ * in the same dirname
+ * so we take care of only checking _distinct_ dirnames against folder
+ * conditions
  */
 static gboolean
 is_candidate_for_folders( const NAIContext *object, guint target, GList *files )
@@ -914,34 +925,46 @@ is_candidate_for_folders( const NAIContext *object, guint target, GList *files )
 
 	if( folders ){
 		if( strcmp( folders->data, "/" ) != 0 || g_slist_length( folders ) > 1 ){
-			GSList *id;
-			gchar *dirname, *dirname_utf8;
-			const gchar *pattern;
-			gboolean match, positive;
-
-			dirname = na_selected_info_get_dirname( NA_SELECTED_INFO( files->data ));
-			dirname_utf8 = g_filename_to_utf8( dirname, -1, NULL, NULL, NULL );
-			match = FALSE;
-
-			for( id = folders ; id && ok ; id = id->next ){
-				pattern = ( const gchar * ) id->data;
-				positive = is_positive_assertion( pattern );
+			GSList *distincts = NULL;
+			GList *it;
 
-				if( !positive || !match ){
-					if( g_pattern_match_simple( positive ? pattern : pattern+1, dirname_utf8 )){
-						if( positive ){
-							match = TRUE;
-						} else {
-							ok = FALSE;
+			for( it = files ; it && ok ; it = it->next ){
+				gchar *dirname = na_selected_info_get_dirname( NA_SELECTED_INFO( files->data ));
+
+				if( na_core_utils_slist_count( distincts, dirname ) == 0 ){
+					GSList *id;
+					gchar *dirname_utf8;
+					const gchar *pattern;
+					gboolean match, positive;
+
+					distincts = g_slist_prepend( distincts, g_strdup( dirname ));
+					dirname_utf8 = g_filename_to_utf8( dirname, -1, NULL, NULL, NULL );
+					match = FALSE;
+
+					for( id = folders ; id && ok ; id = id->next ){
+						pattern = ( const gchar * ) id->data;
+						positive = is_positive_assertion( pattern );
+
+						if( !positive || !match ){
+							if( g_pattern_match_simple( positive ? pattern : pattern+1, dirname_utf8 )){
+								if( positive ){
+									match = TRUE;
+								} else {
+									ok = FALSE;
+								}
+							}
 						}
 					}
+
+					ok &= match;
+
+					g_free( dirname_utf8 );
 				}
-			}
 
-			ok &= match;
+				g_free( dirname );
+			}
 
-			g_free( dirname_utf8 );
-			g_free( dirname );
+			na_core_utils_slist_free( distincts );
 		}
 
 		if( !ok ){
diff --git a/src/core/na-ifactory-provider.c b/src/core/na-ifactory-provider.c
index b4f0db0..42b359d 100644
--- a/src/core/na-ifactory-provider.c
+++ b/src/core/na-ifactory-provider.c
@@ -151,8 +151,6 @@ ifactory_provider_get_version( const NAIFactoryProvider *instance )
  * @object: the #NAIFactoryObject object to be unserialilzed.
  * @messages: a pointer to a #GSList list of strings; the implementation
  *  may append messages to this list, but shouldn't reinitialize it.
- *
- * Returns: a newly instantiated #NAIFactoryObject object just readen from @reader.
  */
 void
 na_ifactory_provider_read_item( const NAIFactoryProvider *reader, void *reader_data, NAIFactoryObject *object, GSList **messages )
@@ -172,7 +170,7 @@ na_ifactory_provider_read_item( const NAIFactoryProvider *reader, void *reader_d
  * na_ifactory_provider_write_item:
  * @writer: the instance which implements this #NAIFactoryProvider interface.
  * @writer_data: instance data.
- * @serializable: the #NAIFactoryObject-derived object to be serialized.
+ * @object: the #NAIFactoryObject-derived object to be serialized.
  * @messages: a pointer to a #GSList list of strings; the implementation
  *  may append messages to this list, but shouldn't reinitialize it.
  *
diff --git a/src/core/na-importer-ask.c b/src/core/na-importer-ask.c
index e71a1ac..85a6175 100644
--- a/src/core/na-importer-ask.c
+++ b/src/core/na-importer-ask.c
@@ -224,9 +224,9 @@ import_ask_new()
 
 /**
  * na_importer_ask_user:
- * @importer: this #NAIImporter instance.
+ * @importing: the #NAObjectItem-derived object being currently imported.
+ * @existing: the #NAObjectItem-derived already existing object with the same ID.
  * @parms: a #NAIImporterUriParms structure.
- * @existing: the #NAObjectItem-derived already existing object.
  *
  * Ask the user for what to do when an imported item has the same ID
  * that an already existing one.
diff --git a/src/core/na-io-provider.c b/src/core/na-io-provider.c
index 5c84dee..110da1d 100644
--- a/src/core/na-io-provider.c
+++ b/src/core/na-io-provider.c
@@ -586,7 +586,7 @@ na_io_provider_find_provider_by_id( GList *providers, const gchar *id )
 
 /**
  * na_io_provider_get_writable_provider:
- * @iprefs: an implementor of the #NAIPrefs interface.
+ * @pivot: the #NAPivot instance.
  *
  * Returns: the first willing and able to write I/O provider, or NULL.
  *
diff --git a/src/core/na-iprefs.c b/src/core/na-iprefs.c
index ebe9bf6..dbd6539 100644
--- a/src/core/na-iprefs.c
+++ b/src/core/na-iprefs.c
@@ -213,7 +213,7 @@ na_iprefs_set_order_mode( NAIPrefs *instance, gint mode )
 /**
  * na_iprefs_get_import_mode:
  * @gconf: a #GCongClient client.
- * @name: name of the import key to be readen
+ * @pref: name of the import key to be readen
  *
  * Returns: the import mode currently set.
  *
@@ -224,14 +224,14 @@ na_iprefs_set_order_mode( NAIPrefs *instance, gint mode )
  * those defined in schemas.
  */
 guint
-na_iprefs_get_import_mode( GConfClient *gconf, const gchar *name )
+na_iprefs_get_import_mode( GConfClient *gconf, const gchar *pref )
 {
 	gint import_mode = DEFAULT_IMPORT_MODE_INT;
 	gint import_int;
 	gchar *import_str;
 	gchar *path;
 
-	path = gconf_concat_dir_and_key( IPREFS_GCONF_PREFS_PATH, name );
+	path = gconf_concat_dir_and_key( IPREFS_GCONF_PREFS_PATH, pref );
 
 	import_str = na_gconf_utils_read_string(
 			gconf,
@@ -252,18 +252,19 @@ na_iprefs_get_import_mode( GConfClient *gconf, const gchar *name )
 /**
  * na_iprefs_set_import_mode:
  * @gconf: a #GCongClient client.
+ * @pref: name of the import key to be written
  * @mode: the new value to be written.
  *
  * Writes the current status of 'import mode' to the GConf
  * preference system.
  */
 void
-na_iprefs_set_import_mode( GConfClient *gconf, const gchar *name, guint mode )
+na_iprefs_set_import_mode( GConfClient *gconf, const gchar *pref, guint mode )
 {
 	const gchar *import_str;
 	gchar *path;
 
-	path = gconf_concat_dir_and_key( IPREFS_GCONF_PREFS_PATH, name );
+	path = gconf_concat_dir_and_key( IPREFS_GCONF_PREFS_PATH, pref );
 
 	import_str = gconf_enum_to_string( import_mode_table, mode );
 
@@ -302,15 +303,14 @@ na_iprefs_get_gconf_client( const NAIPrefs *instance )
 /**
  * na_iprefs_read_bool:
  * @instance: this #NAIPrefs interface instance.
- * @name: the name of the preference entry.
+ * @key: the name of the preference entry.
  * @default_value: default value to be returned if the entry is not found,
- * no default value is available in the schema, of there is no schema at
- * all.
+ *  no default value is available in the schema, of there is no schema at all.
  *
  * Returns: the boolean value.
  */
 gboolean
-na_iprefs_read_bool( const NAIPrefs *instance, const gchar *name, gboolean default_value )
+na_iprefs_read_bool( const NAIPrefs *instance, const gchar *key, gboolean default_value )
 {
 	gchar *path;
 	gboolean ret;
@@ -321,7 +321,7 @@ na_iprefs_read_bool( const NAIPrefs *instance, const gchar *name, gboolean defau
 
 	if( st_initialized && !st_finalized ){
 
-		path = gconf_concat_dir_and_key( IPREFS_GCONF_PREFS_PATH, name );
+		path = gconf_concat_dir_and_key( IPREFS_GCONF_PREFS_PATH, key );
 		ret = na_gconf_utils_read_bool( na_iprefs_get_gconf_client( instance ), path, TRUE, default_value );
 		g_free( path );
 	}
@@ -332,15 +332,15 @@ na_iprefs_read_bool( const NAIPrefs *instance, const gchar *name, gboolean defau
 /**
  * na_iprefs_read_string:
  * @instance: this #NAIPrefs interface instance.
- * @name: the preference key.
+ * @key: the preference key.
  * @default_value: the default value, used if entry is not found and
- * there is no schema.
+ *  there is no schema.
  *
  * Returns: the value, as a newly allocated string which should be
  * g_free() by the caller.
  */
 gchar *
-na_iprefs_read_string( const NAIPrefs *instance, const gchar *name, const gchar *default_value )
+na_iprefs_read_string( const NAIPrefs *instance, const gchar *key, const gchar *default_value )
 {
 	gchar *path;
 	gchar *value;
@@ -351,7 +351,7 @@ na_iprefs_read_string( const NAIPrefs *instance, const gchar *name, const gchar
 
 	if( st_initialized && !st_finalized ){
 
-		path = gconf_concat_dir_and_key( IPREFS_GCONF_PREFS_PATH, name );
+		path = gconf_concat_dir_and_key( IPREFS_GCONF_PREFS_PATH, key );
 		value = na_gconf_utils_read_string( na_iprefs_get_gconf_client( instance ), path, TRUE, default_value );
 		g_free( path );
 	}
@@ -362,15 +362,15 @@ na_iprefs_read_string( const NAIPrefs *instance, const gchar *name, const gchar
 /**
  * na_iprefs_read_string_list:
  * @instance: this #NAIPrefs interface instance.
- * @name: the preference key.
+ * @key: the preference key.
  * @default_value: a default value, used if entry is not found, or there
- * is no default value in the schema, of there is no schema at all.
+ *  is no default value in the schema, of there is no schema at all.
  *
  * Returns: the list value, which should be na_utils_free_string_list()
  * by the caller.
  */
 GSList *
-na_iprefs_read_string_list( const NAIPrefs *instance, const gchar *name, const gchar *default_value )
+na_iprefs_read_string_list( const NAIPrefs *instance, const gchar *key, const gchar *default_value )
 {
 	gchar *path;
 	GSList *list;
@@ -381,7 +381,7 @@ na_iprefs_read_string_list( const NAIPrefs *instance, const gchar *name, const g
 
 	if( st_initialized && !st_finalized ){
 
-		path = gconf_concat_dir_and_key( IPREFS_GCONF_PREFS_PATH, name );
+		path = gconf_concat_dir_and_key( IPREFS_GCONF_PREFS_PATH, key );
 		list = na_gconf_utils_read_string_list( na_iprefs_get_gconf_client( instance ), path );
 		g_free( path );
 
@@ -397,13 +397,13 @@ na_iprefs_read_string_list( const NAIPrefs *instance, const gchar *name, const g
 /**
  * na_iprefs_read_uint:
  * @instance: this #NAIPrefs interface instance.
- * @name: the preference entry.
+ * @key: the preference entry.
  * @default_value: the value to be returned if the key is not found.
  *
  * Returns: the uint value associated with the given key.
  */
 guint
-na_iprefs_read_uint( const NAIPrefs *instance, const gchar *name, guint default_value )
+na_iprefs_read_uint( const NAIPrefs *instance, const gchar *key, guint default_value )
 {
 	guint value;
 	gchar *path;
@@ -414,7 +414,7 @@ na_iprefs_read_uint( const NAIPrefs *instance, const gchar *name, guint default_
 
 	if( st_initialized && !st_finalized ){
 
-		path = gconf_concat_dir_and_key( IPREFS_GCONF_PREFS_PATH, name );
+		path = gconf_concat_dir_and_key( IPREFS_GCONF_PREFS_PATH, key );
 		value = na_gconf_utils_read_int( na_iprefs_get_gconf_client( instance ), path, TRUE, default_value );
 		g_free( path );
 	}
@@ -448,13 +448,13 @@ write_string( NAIPrefs *instance, const gchar *name, const gchar *value )
 /**
  * na_iprefs_write_string_list
  * @instance: this #NAIPrefs interface instance.
- * @name: the preference key.
+ * @key: the preference key.
  * @value: the value to be written.
  *
  * Writes the value as the given GConf preference.
  */
 void
-na_iprefs_write_string_list( const NAIPrefs *instance, const gchar *name, GSList *list )
+na_iprefs_write_string_list( const NAIPrefs *instance, const gchar *key, GSList *value )
 {
 	gchar *path;
 
@@ -462,8 +462,8 @@ na_iprefs_write_string_list( const NAIPrefs *instance, const gchar *name, GSList
 
 	if( st_initialized && !st_finalized ){
 
-		path = gconf_concat_dir_and_key( IPREFS_GCONF_PREFS_PATH, name );
-		na_gconf_utils_write_string_list( na_iprefs_get_gconf_client( instance ), path, list, NULL );
+		path = gconf_concat_dir_and_key( IPREFS_GCONF_PREFS_PATH, key );
+		na_gconf_utils_write_string_list( na_iprefs_get_gconf_client( instance ), path, value, NULL );
 		g_free( path );
 	}
 }
diff --git a/src/core/na-object-id.c b/src/core/na-object-id.c
index 8889e0c..b7b71e9 100644
--- a/src/core/na-object-id.c
+++ b/src/core/na-object-id.c
@@ -266,7 +266,7 @@ na_object_id_sort_alpha_desc( const NAObjectId *a, const NAObjectId *b )
  * na_object_id_prepare_for_paste:
  * @object: the #NAObjectId object to be pasted.
  * @relabel: whether this object should be relabeled when pasted.
- * @relabel: whether this item should be renumbered ?
+ * @renumber: whether this item should be renumbered ?
  * @parent: the parent of @object, or %NULL.
  *
  * Prepares @object to be pasted.
diff --git a/src/core/na-object-item.c b/src/core/na-object-item.c
index c89e06e..47406bd 100644
--- a/src/core/na-object-item.c
+++ b/src/core/na-object-item.c
@@ -421,29 +421,29 @@ na_object_item_get_item( const NAObjectItem *item, const gchar *id )
 
 /**
  * na_object_item_get_position:
- * @object: this #NAObjectItem object.
+ * @item: this #NAObjectItem object.
  * @child: a #NAObjectId-derived child.
  *
- * Returns: the position of @child in the subitems list of @object,
+ * Returns: the position of @child in the subitems list of @item,
  * starting from zero, or -1 if not found.
  */
 gint
-na_object_item_get_position( const NAObjectItem *object, const NAObjectId *child )
+na_object_item_get_position( const NAObjectItem *item, const NAObjectId *child )
 {
 	gint pos = -1;
-	GList *childs;
+	GList *children;
 
-	g_return_val_if_fail( NA_IS_OBJECT_ITEM( object ), pos );
+	g_return_val_if_fail( NA_IS_OBJECT_ITEM( item ), pos );
 	g_return_val_if_fail( NA_IS_OBJECT_ID( child ), pos );
 
 	if( !child ){
 		return( pos );
 	}
 
-	if( !object->private->dispose_has_run ){
+	if( !item->private->dispose_has_run ){
 
-		childs = na_object_get_items( object );
-		pos = g_list_index( childs, ( gconstpointer ) child );
+		children = na_object_get_items( item );
+		pos = g_list_index( children, ( gconstpointer ) child );
 	}
 
 	return( pos );
@@ -483,37 +483,37 @@ na_object_item_append_item( NAObjectItem *item, const NAObjectId *child )
 /**
  * na_object_item_insert_at:
  * @item: the #NAObjectItem in which add the subitem.
- * @object: a #NAObjectId-derived to be inserted in the list of subitems.
- * @pos: the position at which the @object child should be inserted.
+ * @child: a #NAObjectId-derived to be inserted in the list of subitems.
+ * @pos: the position at which the @child should be inserted.
  *
- * Inserts a new @object in the list of subitems of @item.
+ * Inserts a new @child in the list of subitems of @item.
  *
- * Doesn't modify the reference count on @object.
+ * Doesn't modify the reference count on @child.
  */
 void
-na_object_item_insert_at( NAObjectItem *item, const NAObjectId *object, gint pos )
+na_object_item_insert_at( NAObjectItem *item, const NAObjectId *child, gint pos )
 {
-	GList *childs, *it;
+	GList *children, *it;
 	gint i;
 
 	g_return_if_fail( NA_IS_OBJECT_ITEM( item ));
-	g_return_if_fail( NA_IS_OBJECT_ID( object ));
+	g_return_if_fail( NA_IS_OBJECT_ID( child ));
 
 	if( !item->private->dispose_has_run ){
 
-		childs = na_object_get_items( item );
-		if( pos == -1 || pos >= g_list_length( childs )){
-			na_object_append_item( item, object );
+		children = na_object_get_items( item );
+		if( pos == -1 || pos >= g_list_length( children )){
+			na_object_append_item( item, child );
 
 		} else {
 			i = 0;
-			for( it = childs ; it && i <= pos ; it = it->next ){
+			for( it = children ; it && i <= pos ; it = it->next ){
 				if( i == pos ){
-					childs = g_list_insert_before( childs, it, ( gpointer ) object );
+					children = g_list_insert_before( children, it, ( gpointer ) child );
 				}
 				i += 1;
 			}
-			na_object_set_items( item, childs );
+			na_object_set_items( item, children );
 		}
 	}
 }
@@ -521,41 +521,41 @@ na_object_item_insert_at( NAObjectItem *item, const NAObjectId *object, gint pos
 /**
  * na_object_item_insert_item:
  * @item: the #NAObjectItem to which add the subitem.
- * @object: a #NAObject to be inserted in the list of subitems.
- * @before: the #NAObject before which the @object should be inserted.
+ * @child: a #NAObjectId to be inserted in the list of subitems.
+ * @before: the #NAObjectId before which the @child should be inserted.
  *
- * Inserts a new @object in the list of subitems of @item.
+ * Inserts a new @child in the list of subitems of @item.
  *
- * Doesn't modify the reference count on @object.
+ * Doesn't modify the reference count on @child.
  */
 void
-na_object_item_insert_item( NAObjectItem *item, const NAObject *object, const NAObject *before )
+na_object_item_insert_item( NAObjectItem *item, const NAObjectId *child, const NAObjectId *before )
 {
-	GList *childs;
+	GList *children;
 	GList *before_list;
 
 	g_return_if_fail( NA_IS_OBJECT_ITEM( item ));
-	g_return_if_fail( NA_IS_OBJECT( object ));
-	g_return_if_fail( !before || NA_IS_OBJECT( before ));
+	g_return_if_fail( NA_IS_OBJECT_ID( child ));
+	g_return_if_fail( !before || NA_IS_OBJECT_ID( before ));
 
 	if( !item->private->dispose_has_run ){
 
-		childs = na_object_get_items( item );
-		if( !g_list_find( childs, ( gpointer ) object )){
+		children = na_object_get_items( item );
+		if( !g_list_find( children, ( gpointer ) child )){
 
 			before_list = NULL;
 
 			if( before ){
-				before_list = g_list_find( childs, ( gconstpointer ) before );
+				before_list = g_list_find( children, ( gconstpointer ) before );
 			}
 
 			if( before_list ){
-				childs = g_list_insert_before( childs, before_list, ( gpointer ) object );
+				children = g_list_insert_before( children, before_list, ( gpointer ) child );
 			} else {
-				childs = g_list_prepend( childs, ( gpointer ) object );
+				children = g_list_prepend( children, ( gpointer ) child );
 			}
 
-			na_object_set_items( item, childs );
+			na_object_set_items( item, children );
 		}
 	}
 }
@@ -563,19 +563,19 @@ na_object_item_insert_item( NAObjectItem *item, const NAObject *object, const NA
 /**
  * na_object_item_remove_item:
  * @item: the #NAObjectItem from which the subitem must be removed.
- * @object: a #NAObjectId-derived to be removed from the list of subitems.
+ * @child: a #NAObjectId-derived to be removed from the list of subitems.
  *
- * Removes an @object from the list of subitems of @item.
+ * Removes a @child from the list of subitems of @item.
  *
- * Doesn't modify the reference count on @object.
+ * Doesn't modify the reference count on @child.
  */
 void
-na_object_item_remove_item( NAObjectItem *item, const NAObjectId *object )
+na_object_item_remove_item( NAObjectItem *item, const NAObjectId *child )
 {
 	GList *children;
 
 	g_return_if_fail( NA_IS_OBJECT_ITEM( item ));
-	g_return_if_fail( NA_IS_OBJECT_ID( object ));
+	g_return_if_fail( NA_IS_OBJECT_ID( child ));
 
 	if( !item->private->dispose_has_run ){
 
@@ -583,10 +583,10 @@ na_object_item_remove_item( NAObjectItem *item, const NAObjectId *object )
 
 		if( children ){
 			g_debug( "na_object_item_remove_item: removing %p (%s) from %p (%s)",
-					( void * ) object, G_OBJECT_TYPE_NAME( object ),
+					( void * ) child, G_OBJECT_TYPE_NAME( child ),
 					( void * ) item, G_OBJECT_TYPE_NAME( item ));
 
-			children = g_list_remove( children, ( gconstpointer ) object );
+			children = g_list_remove( children, ( gconstpointer ) child );
 			g_debug( "na_object_item_remove_item: after: children=%p, count=%u", ( void * ) children, g_list_length( children ));
 			na_object_set_items( item, children );
 		}
@@ -662,7 +662,7 @@ na_object_item_count_items( GList *items, gint *menus, gint *actions, gint *prof
 
 /**
  * na_object_item_unref_items:
- * @list: a list of #NAObject-derived items.
+ * @items: a list of #NAObject-derived items.
  *
  * Unref only the first level the #NAObject of the list, freeing the list at last.
  *
@@ -677,9 +677,9 @@ na_object_item_unref_items( GList *items )
 
 /**
  * na_object_item_unref_items_rec:
- * @list: a list of #NAObject-derived items.
+ * @items: a list of #NAObject-derived items.
  *
- * Recursively unref the #NAObject of the list, freeing the list at last.
+ * Recursively unref the #NAObject's of the list, freeing the list at last.
  *
  * This is heavily used by NACT.
  */
diff --git a/src/core/na-object.c b/src/core/na-object.c
index d617329..ff7b9d5 100644
--- a/src/core/na-object.c
+++ b/src/core/na-object.c
@@ -787,7 +787,7 @@ build_class_hierarchy( const NAObject *object )
 /**
  * na_object_object_get_hierarchy:
  *
- * Returns the class hierarchy,
+ * Returns: the class hierarchy,
  * from the topmost base class, to the most-derived one.
  */
 GList *
diff --git a/src/core/na-selected-info.c b/src/core/na-selected-info.c
index f301521..3bf2bbf 100644
--- a/src/core/na-selected-info.c
+++ b/src/core/na-selected-info.c
@@ -256,15 +256,15 @@ na_selected_info_copy_list( GList *files )
 
 /**
  * na_selected_info_free_list:
- * @list: a #GList of #NASelectedInfo items.
+ * @files: a #GList of #NASelectedInfo items.
  *
- * Frees up the #GList @list.
+ * Frees up the #GList @files.
  */
 void
-na_selected_info_free_list( GList *list )
+na_selected_info_free_list( GList *files )
 {
-	g_list_foreach( list, ( GFunc ) g_object_unref, NULL );
-	g_list_free( list );
+	g_list_foreach( files, ( GFunc ) g_object_unref, NULL );
+	g_list_free( files );
 }
 
 /**
diff --git a/src/core/na-selected-info.h b/src/core/na-selected-info.h
index 1946b82..18072a9 100644
--- a/src/core/na-selected-info.h
+++ b/src/core/na-selected-info.h
@@ -76,8 +76,8 @@ GType           na_selected_info_get_type( void );
 
 GList          *na_selected_info_get_list_from_item( NautilusFileInfo *item );
 GList          *na_selected_info_get_list_from_list( GList *nautilus_selection );
-GList          *na_selected_info_copy_list         ( GList *list );
-void            na_selected_info_free_list         ( GList *list );
+GList          *na_selected_info_copy_list         ( GList *files );
+void            na_selected_info_free_list         ( GList *files );
 
 GFile          *na_selected_info_get_location  ( const NASelectedInfo *nsi );
 gchar          *na_selected_info_get_basename  ( const NASelectedInfo *nsi );
diff --git a/src/core/na-tokens.c b/src/core/na-tokens.c
index bb4c9a8..e26f792 100644
--- a/src/core/na-tokens.c
+++ b/src/core/na-tokens.c
@@ -364,7 +364,7 @@ na_tokens_new_from_selection( GList *selection )
 /**
  * na_tokens_parse_parameters:
  * @tokens: a #NATokens object.
- * @input: the input string, may or may not contain tokens.
+ * @string: the input string, may or may not contain tokens.
  * @utf8: whether the @input string is UTF-8 encoded, or a standard ASCII string.
  *
  * Expands the parameters in the given string.
@@ -373,9 +373,9 @@ na_tokens_new_from_selection( GList *selection )
  * allocated string which should be g_free() by the caller.
  */
 gchar *
-na_tokens_parse_parameters( const NATokens *tokens, const gchar *input, gboolean utf8 )
+na_tokens_parse_parameters( const NATokens *tokens, const gchar *string, gboolean utf8 )
 {
-	return( parse_singular( tokens, input, 0, utf8 ));
+	return( parse_singular( tokens, string, 0, utf8 ));
 }
 
 /**



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]