794 lines
		
	
	
		
			29 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			794 lines
		
	
	
		
			29 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
<!DOCTYPE article PUBLIC "-//GNOME//DTD DocBook PNG Variant V1.1//EN"[
 | 
						|
<!ENTITY version "0.2.0"> <!-- replace with application version -->
 | 
						|
]>
 | 
						|
 | 
						|
 | 
						|
<!-- 
 | 
						|
  This is a GNOME documentation template, designed by the GNOME
 | 
						|
  Documentation Project Team. Please use it for writing GNOME
 | 
						|
  documentation, making obvious changes. In particular, all the words
 | 
						|
  written in UPPERCASE (with the exception of GNOME) should be
 | 
						|
  replaced. As for "legalnotice", please leave the reference
 | 
						|
  unchanged.
 | 
						|
 | 
						|
  Remember that this is a guide, rather than a perfect model to follow
 | 
						|
  slavishly. Make your manual logical and readable.  And don't forget
 | 
						|
  to remove these comments in your final documentation!  ;-)
 | 
						|
-->
 | 
						|
 | 
						|
<!-- 
 | 
						|
      (Do not remove this comment block.)
 | 
						|
  Maintained by the GNOME Documentation Project
 | 
						|
  http://developer.gnome.org/projects/gdp
 | 
						|
  Template version: 1.0.3
 | 
						|
  Template last modified: Nov 16, 2000
 | 
						|
-->
 | 
						|
 | 
						|
 | 
						|
<!-- =============Document Header ============================= -->
 | 
						|
 | 
						|
<article id="index"> <!-- please do not change the id -->
 | 
						|
 | 
						|
  <artheader>
 | 
						|
    <title>gramps User Manual</title>
 | 
						|
    <copyright>
 | 
						|
      <year>2001</year>
 | 
						|
      <holder>Donald N. Allingham</holder>
 | 
						|
    </copyright>
 | 
						|
 | 
						|
  <!-- translators: uncomment this:
 | 
						|
 | 
						|
  <copyright>
 | 
						|
   <year>2001</year>
 | 
						|
   <holder>ME-THE-TRANSLATOR (Latin translation)</holder>
 | 
						|
  </copyright>
 | 
						|
 | 
						|
   -->
 | 
						|
 | 
						|
  <!-- do not put authorname in the header except in copyright - use
 | 
						|
  section "authors" below -->
 | 
						|
 | 
						|
  <!-- Use this legal notice for online documents which depend on -->
 | 
						|
  <!-- core GNOME packages.                                       -->
 | 
						|
  <legalnotice id="legalnotice">
 | 
						|
   <para>
 | 
						|
    Permission is granted to copy, distribute and/or modify this document
 | 
						|
    under the terms of the <ulink type="help" 
 | 
						|
    url="gnome-help:fdl"><citetitle>GNU Free Documentation
 | 
						|
    License</citetitle></ulink>, Version 1.1 or any later version 
 | 
						|
    published by the Free Software Foundation with no Invariant Sections, 
 | 
						|
    no Front-Cover Texts, and no Back-Cover Texts.  A copy of the license
 | 
						|
    can be found <ulink type="help" url="gnome-help:fdl">here</ulink>.
 | 
						|
   </para>
 | 
						|
   <para>
 | 
						|
    Many of the names used by companies to distinguish their products and
 | 
						|
    services are claimed as trademarks. Where those names appear in any
 | 
						|
    GNOME documentation, and those trademarks are made aware to the members
 | 
						|
    of the GNOME Documentation Project, the names have been printed in caps
 | 
						|
    or initial caps.
 | 
						|
   </para>
 | 
						|
  </legalnotice>
 | 
						|
 | 
						|
  <!-- Use this legal notice for documents which are placed on  -->
 | 
						|
  <!-- the web, shipped in any way other than online documents  -->
 | 
						|
  <!-- (eg. PS, PDF, or RTF), or which do not depend on the     -->
 | 
						|
  <!-- core GNOME distribution.                                 -->
 | 
						|
  <!--                                                          -->
 | 
						|
  <!-- If you use this version, you must place the following    -->
 | 
						|
  <!-- line in the document declaration at the top of your      -->
 | 
						|
  <!-- document:                                                -->
 | 
						|
  <!--   <!ENTITY FDL SYSTEM "fdl.sgml">                        -->
 | 
						|
  <!-- and the following line at the bottom of your document    -->
 | 
						|
  <!-- after the last </sect1>.                                 -->
 | 
						|
  <!--   &FDL;                                                  -->
 | 
						|
  <!--
 | 
						|
  <legalnotice id="legalnotice">
 | 
						|
   <para>
 | 
						|
    Permission is granted to copy, distribute and/or modify this document
 | 
						|
    under the terms of the <link linkend="fdl"><citetitle>GNU
 | 
						|
    Free Documentation License</citetitle></link>, Version 1.1 or any later
 | 
						|
    version published by the Free Software Foundation with no Invariant
 | 
						|
    Sections, no Front-Cover Texts, and no Back-Cover Texts.  A copy of the
 | 
						|
    license can be found in <xref linkend="fdl">.
 | 
						|
   </para>
 | 
						|
   <para>
 | 
						|
    Many of the names used by companies to distinguish their products and
 | 
						|
    services are claimed as trademarks. Where those names appear in any
 | 
						|
    GNOME documentation, and those trademarks are made aware to the members
 | 
						|
    of the GNOME Documentation Project, the names have been printed in caps
 | 
						|
    or initial caps.
 | 
						|
   </para>
 | 
						|
  </legalnotice>
 | 
						|
  -->
 | 
						|
 | 
						|
  <!-- This is the manual version, not application version. --> 
 | 
						|
    <releaseinfo>
 | 
						|
       This is version 1.0 of the gramps manual.
 | 
						|
    </releaseinfo>
 | 
						|
 | 
						|
  </artheader>
 | 
						|
 | 
						|
 <!-- ============= Document Body ============================= -->
 | 
						|
 | 
						|
 <!-- ============= Introduction ============================== -->
 | 
						|
  <sect1 id="intro">
 | 
						|
    <title>Introduction</title>
 | 
						|
 | 
						|
    <para>
 | 
						|
    gramps is an acronym for the Genealogical Research and Analysis
 | 
						|
    Management Programming System.  It was conceived under the concept
 | 
						|
    that most genealogy programs were designed to provide the
 | 
						|
    researcher the capability to input information related to a
 | 
						|
    particular family tree.  Most of these programs have allowed for
 | 
						|
    the arranging and storing of information consistent with the
 | 
						|
    GEDCOM standards.  They usually provide a means for displaying
 | 
						|
    descendant or ancestral relationships by means of graphical
 | 
						|
    displays, charts, or reports.  These may be augmented with
 | 
						|
    pictures or other media to enhance the data.  Most provide for
 | 
						|
    inputting data on unconnected individuals/families that may or may
 | 
						|
    not have a relationship to the primary surname being researched.
 | 
						|
    Various other enhancements may also be provided in the
 | 
						|
    genealogical program that allows for different degrees of
 | 
						|
    importing and exporting data from other programs and printing of
 | 
						|
    the data contained in the various reports.  gramps, on the other
 | 
						|
    hand, attempts to provide all of the common capabilities of these
 | 
						|
    programs, but, more importantly, to provide a capability not
 | 
						|
    common to these programs.  This is the ability to input any bits
 | 
						|
    and pieces of information directly into gramps and
 | 
						|
    rearrange/manipulate any/all data events in the entire data base
 | 
						|
    (in any order or sequence) to assist the user in doing research,
 | 
						|
    analysis and correlation with the potential of filling
 | 
						|
    relationship gaps.  In short, a tool that provides a way to input
 | 
						|
    all your research into one place and do your analysis and
 | 
						|
    correlation using the speed, power, and accuracy of your computer
 | 
						|
    instead of pencils and unmanageable reams of paper.
 | 
						|
    </para>
 | 
						|
    <para>
 | 
						|
      To run <application>gramps</application>, select
 | 
						|
      <menuchoice>
 | 
						|
	<guisubmenu>Programs</guisubmenu>
 | 
						|
	<guisubmenu>Applications</guisubmenu>
 | 
						|
	<guimenuitem>gramps</guimenuitem>
 | 
						|
      </menuchoice>
 | 
						|
      from the <guimenu>Main Menu</guimenu>, or type
 | 
						|
      <command>gramps</command> on the command line.
 | 
						|
    </para>
 | 
						|
    <para>
 | 
						|
      <application>gramps</application> is included in the
 | 
						|
      <filename>gramps</filename> package, which is part of the
 | 
						|
      GNOME desktop environment. This document describes version
 | 
						|
      &version; of <application>gramps</application>.
 | 
						|
    </para>
 | 
						|
  </sect1>
 | 
						|
 | 
						|
 <!-- ================ Usage ================================ -->
 | 
						|
 <!-- This section should describe basic usage of the application. -->
 | 
						|
 | 
						|
  <sect1 id="usage">
 | 
						|
    <title>Using gramps</title>
 | 
						|
    <para>
 | 
						|
      <application>gramps</application> is a genealogy program.
 | 
						|
      This section describes basic usage of
 | 
						|
      <application>gramps</application>.
 | 
						|
    </para>
 | 
						|
  </sect1>
 | 
						|
 | 
						|
  <sect1 id="firsttime">
 | 
						|
    <title>Running gramps for the first time.</title>
 | 
						|
    <para>
 | 
						|
      This section should discuss the start up druid.
 | 
						|
    </para>
 | 
						|
  </sect1>
 | 
						|
 | 
						|
  <sect1 id="mainwindow">
 | 
						|
    <title>Main Window</title>
 | 
						|
    <para>
 | 
						|
      Starting <application>gramps</application> opens the
 | 
						|
      <interface>Main window</interface>, shown in <xref
 | 
						|
      linkend="mainwindow-fig">. The window is at first empty.
 | 
						|
 | 
						|
      <!-- ==== Figure ==== -->
 | 
						|
      <figure id="mainwindow-fig">
 | 
						|
        <title>gramps Main Window</title>
 | 
						|
	<screenshot>
 | 
						|
	  <screeninfo>gramps Main Window</screeninfo>
 | 
						|
	  <graphic fileref="mainwin" format="PNG" srccredit="Don Allingham">
 | 
						|
          </graphic>
 | 
						|
	</screenshot>
 | 
						|
      </figure>
 | 
						|
    <!-- ==== End of Figure ==== -->
 | 
						|
    </para>
 | 
						|
  </sect1>
 | 
						|
 | 
						|
 <!-- ========= Basic Usage =========================== -->
 | 
						|
  <sect1 id="personlist">
 | 
						|
    <title>Person List</title>
 | 
						|
    <para>
 | 
						|
    The Person List window is the initial view seen on the main
 | 
						|
    window.  It displays the name, gender, birth date, and death
 | 
						|
    date of all individuals in the database.  At any time, you can
 | 
						|
    return to the this view either by pressing the People button at
 | 
						|
    the top of the screen, or by choosing the
 | 
						|
    <menuchoice>
 | 
						|
    <guisubmenu>View</guisubmenu>
 | 
						|
    <guimenuitem>Person List</guimenuitem> 
 | 
						|
    </menuchoice>
 | 
						|
    entry from the menus.
 | 
						|
    </para> 
 | 
						|
    <sect2>
 | 
						|
    <title>Selecting and Editing Individuals</title>
 | 
						|
    <para>
 | 
						|
    The Person List view lists the individuals in the database. A
 | 
						|
    individual can be selected as the active person by clicking on
 | 
						|
    an entry in the list. Once a person has been selected as the active 
 | 
						|
    person, the person's name appears in the status bar in the lower
 | 
						|
    left hand corner of the window.
 | 
						|
    </para>
 | 
						|
    <para>
 | 
						|
    Once the active person has been selected, pressing the Edit
 | 
						|
    Person button will display the Edit Person dialog allowing you
 | 
						|
    to edit the individual's personal information.  If the Edit
 | 
						|
    Person button is pressed without an active person being set, a
 | 
						|
    blank Edit Person dialog is presented, allowing you to enter a
 | 
						|
    new person.  Double-clicking on a entry will set the active
 | 
						|
    person and bring up the individual in the Edit Person dialog.
 | 
						|
    </para>
 | 
						|
    <para>
 | 
						|
    Pressing the Add Person button will display a blank Edit Person
 | 
						|
    dialog, allowing you to add a new person to the database.
 | 
						|
    </para>
 | 
						|
    <para>
 | 
						|
    If the Delete Person button is pressed, the active person and
 | 
						|
    all of the personal information related to the active person are
 | 
						|
    removed from the database.
 | 
						|
    </para>
 | 
						|
    </sect2>
 | 
						|
    <sect2>
 | 
						|
     <title>Applying Filters</title>
 | 
						|
    <para>
 | 
						|
    <application>gramps</application> allows you to apply filters to
 | 
						|
    the Person List. When a filter is applied, the Person List will
 | 
						|
    only display the entries matching the filter. All of the entries
 | 
						|
    remain in the database, but are temporarily hidden.
 | 
						|
    </para>
 | 
						|
    <para>
 | 
						|
    There are three parts to a filter. The first part is the
 | 
						|
    selection of the filter to be applied. A filter is selected from
 | 
						|
    the option menu directly above the Person List.  The second part
 | 
						|
    is an option qualifier. This qualifier provides more specific
 | 
						|
    information for the filter. Many filters do not require the
 | 
						|
    qualifier, and it will be grayed out if not needed.  The third
 | 
						|
    part of the filter is the invert selection.  When this option is
 | 
						|
    selected, <application>gramps</application> will display the
 | 
						|
    entries that do not match the filter.
 | 
						|
    </para>
 | 
						|
    <para>
 | 
						|
    A filter is not applied until the Apply button is pressed.  The
 | 
						|
    filter will remain in effect until the next time the Apply
 | 
						|
    button is pressed.
 | 
						|
    </para>
 | 
						|
    </sect2>
 | 
						|
    <sect2>
 | 
						|
     <title>Sorting</title>
 | 
						|
    <para>
 | 
						|
    Four columns are shown in the Person List display. The entries in
 | 
						|
    the list can be sorted by three of the field: Name, Birth Date, or 
 | 
						|
    Death Date.  Clicking on the column label will cause the list to 
 | 
						|
    be resorted by that column.  Arrows on the label indicate whether
 | 
						|
    the list is sort by ascending or descending order. 
 | 
						|
    </para>
 | 
						|
    <para>
 | 
						|
    If the list is already sorted by a particular column, clicking on
 | 
						|
    the same column label will switch sorting order.  For example, if
 | 
						|
    the list is currently sorted in ascending order by Name, clicking
 | 
						|
    on the Name column header will resort the list in descending order.
 | 
						|
    </para>
 | 
						|
    </sect2>
 | 
						|
 | 
						|
  </sect1>
 | 
						|
 | 
						|
  <sect1 id="familyview">
 | 
						|
    <title>Family View</title>
 | 
						|
    <para>
 | 
						|
    The Family View window displays the spouses, parents, and children
 | 
						|
    of the active person. At any time, you can return to the this view
 | 
						|
    either by pressing the Family button at the top of the screen, or
 | 
						|
    by choosing the
 | 
						|
    <menuchoice>
 | 
						|
    <guisubmenu>View</guisubmenu>
 | 
						|
    <guimenuitem>Family View</guimenuitem> 
 | 
						|
    </menuchoice>
 | 
						|
    entry from the menus.
 | 
						|
    </para> 
 | 
						|
    <para> 
 | 
						|
    This section should describe the family view.
 | 
						|
    </para>
 | 
						|
  </sect1>
 | 
						|
 | 
						|
  <sect1 id="pedegreeview">
 | 
						|
    <title>Pedegree View</title>
 | 
						|
    <para>
 | 
						|
    The Pedegree View window displays the active person, the active
 | 
						|
    person's parents, and the active parent's grandparents in a somewhat
 | 
						|
    graphical manner. At any time, you can return to the this view
 | 
						|
    either by pressing the Pedegree button at the top of the screen, or
 | 
						|
    by choosing the
 | 
						|
    <menuchoice>
 | 
						|
    <guisubmenu>View</guisubmenu>
 | 
						|
    <guimenuitem>Pedgree</guimenuitem> 
 | 
						|
    </menuchoice>
 | 
						|
    entry from the menus.
 | 
						|
    </para>
 | 
						|
    <para>
 | 
						|
    This section should describe the pedegree view.
 | 
						|
    </para>
 | 
						|
  </sect1>
 | 
						|
 | 
						|
  <sect1 id="sourcelist">
 | 
						|
    <title>Source List</title>
 | 
						|
    <para>
 | 
						|
    The Source List window displays the different sources which have been
 | 
						|
    entered into the database. At any time, you can return to the this view
 | 
						|
    either by pressing the Sources button at the top of the screen, or
 | 
						|
    by choosing the
 | 
						|
    <menuchoice>
 | 
						|
    <guisubmenu>View</guisubmenu>
 | 
						|
    <guimenuitem>Sources</guimenuitem> 
 | 
						|
    </menuchoice>
 | 
						|
    entry from the menus.
 | 
						|
    </para>
 | 
						|
    <para>
 | 
						|
    This section should describe the source list.
 | 
						|
    </para>
 | 
						|
  </sect1>
 | 
						|
 | 
						|
 <!-- ============= Customization ============================= -->
 | 
						|
 | 
						|
 <sect1 id="prefs">
 | 
						|
  <title>Customization</title>
 | 
						|
  <para>
 | 
						|
   To change the application settings, select
 | 
						|
   <menuchoice>
 | 
						|
    <guimenu>Settings</guimenu>
 | 
						|
    <guimenuitem>Preferences...</guimenuitem>
 | 
						|
   </menuchoice>.  This opens the
 | 
						|
   <interface>Preferences</interface> dialog, shown in <xref
 | 
						|
   linkend="preferences-fig">.
 | 
						|
  </para>
 | 
						|
 | 
						|
  <figure id="preferences-fig">
 | 
						|
   <title>Preferences Dialog</title>
 | 
						|
   <screenshot>
 | 
						|
    <screeninfo>Preferences Dialog</screeninfo>
 | 
						|
    <graphic fileref="preferences" format="png" srccredit="Don Allingham">
 | 
						|
    </graphic>
 | 
						|
   </screenshot>
 | 
						|
  </figure>
 | 
						|
 | 
						|
  <para>
 | 
						|
  </para>
 | 
						|
 | 
						|
 </sect1>
 | 
						|
 | 
						|
 <!-- ============= Generating Reports ============================= -->
 | 
						|
 | 
						|
 <sect1 id="genreports">
 | 
						|
  <title>Generating Reports</title>
 | 
						|
  <para>
 | 
						|
  <application>gramps</application> can produce a wide variety of 
 | 
						|
  reports. New report generators can be written by the user without
 | 
						|
  modifying the main program. For this reason, there may be more 
 | 
						|
  reports available than are documented by this manual
 | 
						|
  </para>
 | 
						|
  <para>
 | 
						|
  Unlike many genealogy programs, <application>gramps</application>
 | 
						|
  does not directly print reports. Instead,
 | 
						|
  <application>gramps</application> produces reports in formats that
 | 
						|
  are understood by other programs.  These formats include OpenOffice,
 | 
						|
  AbiWord, PDF, and HTML, among others. This allows the generated
 | 
						|
  reports to be modified after they are generated, stored for use
 | 
						|
  later, or emailed to another person.
 | 
						|
  </para>
 | 
						|
  <sect2 id="htmltemplates">
 | 
						|
  <title>Using HTML templates</title>
 | 
						|
  <para>
 | 
						|
  Many programs exist to convert GEDCOM files into HTML files that
 | 
						|
  can be viewed in a web browser. Most of these programs generate
 | 
						|
  HTML files according to their own predefined style. Since most
 | 
						|
  people have a style that they prefer, they are left with the option
 | 
						|
  of modifying hundreds of files by hand.
 | 
						|
  </para>
 | 
						|
  <para>
 | 
						|
  To solve this problem, <application>gramps</application> allows the
 | 
						|
  user to specify a template to be used for generating HTML files.  At
 | 
						|
  the time the report is generated, if HTML is selected as the target
 | 
						|
  format, the user can select an HTML template to be used.  Since the
 | 
						|
  template is chosen at report generation time, a different template
 | 
						|
  may be chosen each time, allowing the user to change the appearence
 | 
						|
  of the generated files at any time.  Nearly any existing HTML file
 | 
						|
  can be used as an HTML template for
 | 
						|
  <application>gramps</application>.
 | 
						|
  </para>
 | 
						|
  <para>
 | 
						|
  When a file has been established as the HTML template file,
 | 
						|
  <application>gramps</application> uses the template for each file
 | 
						|
  that it generates. <application>gramps</application> starts each
 | 
						|
  file by copying data from the template until it reaches an HTML
 | 
						|
  comment uses as a marker.  At that point,
 | 
						|
  <application>gramps</application> inserts its data into the output
 | 
						|
  file. <application>gramps</application> the continues reading the
 | 
						|
  until it reaches a second comment that tells it to resume copying
 | 
						|
  from the template.
 | 
						|
  </para>
 | 
						|
  <para>
 | 
						|
  <application>gramps</application> uses the string <function><!--
 | 
						|
  START --></function> to indicate where it should start inserting
 | 
						|
  its information, and the string <function><!-- STOP
 | 
						|
  --></function> to indicate where it should resume copying data
 | 
						|
  from the template.  The effect is that
 | 
						|
  <application>gramps</application> will create a new document,
 | 
						|
  replacing everything between the <function><!-- START
 | 
						|
  --></function> and <function><!-- STOP --></function> comments
 | 
						|
  with the report information.
 | 
						|
  </para>
 | 
						|
  <para>
 | 
						|
  The comment markers should be at the beginning of a line in the HTML
 | 
						|
  template file.  Adding the comments to an existing HTML document will
 | 
						|
  not affect the original HTML document in any way.
 | 
						|
  </para>
 | 
						|
  <para>
 | 
						|
  If no HTML template is specified, or if the specified template
 | 
						|
  cannot be read, <application>gramps</application> will use a
 | 
						|
  default, predefined template.
 | 
						|
  </para>
 | 
						|
  <para>
 | 
						|
    <figure id="templateexample">
 | 
						|
    <title>Sample HTML Template Example</title>
 | 
						|
    <programlisting>
 | 
						|
<HTML>
 | 
						|
<HEAD>
 | 
						|
<TITLE>
 | 
						|
This is my Title
 | 
						|
</TITLE>
 | 
						|
</HEAD>
 | 
						|
<BODY BGCOLOR="#FFFFFF">
 | 
						|
<P>
 | 
						|
This is a simple template.  This text will appear in the html output.
 | 
						|
</P>
 | 
						|
<!-- START -->
 | 
						|
<P>
 | 
						|
This is where gramps will place its report information. Any 
 | 
						|
information between the two comments, including this paragraph,
 | 
						|
will not appear in the gramps generated output.
 | 
						|
</P>
 | 
						|
<!-- STOP -->
 | 
						|
<P>
 | 
						|
This text, since it appears after the stop comment, will also
 | 
						|
appear in every gramps generated file.
 | 
						|
</P>
 | 
						|
</BODY>
 | 
						|
</HTML>
 | 
						|
    </programlisting>
 | 
						|
    </figure>
 | 
						|
  </para>
 | 
						|
  </sect2>
 | 
						|
 | 
						|
 </sect1>
 | 
						|
 | 
						|
 <!-- ============= Writing Filters ============================= -->
 | 
						|
 | 
						|
 <sect1 id="writingfilters">
 | 
						|
  <title>Writing Filters</title>
 | 
						|
  <para>
 | 
						|
   Users can create their own filters and add them to
 | 
						|
   <application>gramps</application>.  By adding the filter to the
 | 
						|
   user's private filter directory 
 | 
						|
   (<filename class="directory">~/.gramps/filters</filename>), 
 | 
						|
   the filter will be automatically
 | 
						|
   recognized the next time that the program is started.
 | 
						|
   </para>
 | 
						|
   <sect2 id="createfilter">
 | 
						|
    <title>Creating a filter</title>
 | 
						|
    <para>
 | 
						|
     Filters are written in the <application>python</application>
 | 
						|
     language.  Each filter is initialized with the qualifier string.
 | 
						|
     The qualifier string passes an additional text string to the
 | 
						|
     filter. This string can be used to further qualify the filter.
 | 
						|
     For example, if the filter is used to match names, the qualifier
 | 
						|
     would be used to provide the name that is being compared against.
 | 
						|
    </para>
 | 
						|
    <para>
 | 
						|
    Each filter is a python class, and should be in its own separate
 | 
						|
    module (file). The module should consist of the filter class
 | 
						|
    definition, and three functions —
 | 
						|
    <function>create</function>, <function>need_qualifier</function>,
 | 
						|
    and <function>get_name</function>.
 | 
						|
    </para>
 | 
						|
    <para>
 | 
						|
    The <function>create</function> function takes a string as its
 | 
						|
    only argument, returns a instance of the filter class. The string
 | 
						|
    argument is the qualifier string used to provide more specific
 | 
						|
    information.
 | 
						|
    </para>
 | 
						|
    <para>
 | 
						|
    The <function>need_qualifier</function> function takes no
 | 
						|
    arguments, and returns either a 0 or 1 to indicate if a qualifier
 | 
						|
    string is needed by the filter. Regardless of what
 | 
						|
    <function>need_qualifier</function> indicates, a text string is
 | 
						|
    always passed to the filter and the <function>create</function>
 | 
						|
    function.  The value returned by
 | 
						|
    <function>need_qualifier</function> indicates to the program
 | 
						|
    whether or not the qualifier field in the display should be
 | 
						|
    enabled or disabled.
 | 
						|
    </para>
 | 
						|
    <para>
 | 
						|
    The <function>get_name</function> function is used to provide a
 | 
						|
    description for the filter. This description is entered into
 | 
						|
    filter selection menus. If the filter is intended to be used by
 | 
						|
    others, it should be prepared for internationalization.  This is
 | 
						|
    accomplished by importing the <function>intl</function> module,
 | 
						|
    add defining <function>_</function> to be
 | 
						|
    <function>intl.gettext</function>.  The string returned by
 | 
						|
    <function>get_name</function> should be passed through the
 | 
						|
    <function>_</function> function to allow for conversion to the
 | 
						|
    target langauge.
 | 
						|
    </para>
 | 
						|
    <para>
 | 
						|
    All filters must be derived from the
 | 
						|
    <function>Filter.Filter</function> class. The
 | 
						|
    <function>__init__</function> task may be overridden, but if so,
 | 
						|
    should call the <function>__init__</function> function on the
 | 
						|
    <function>Filter.Filter</function> class.  The parent class
 | 
						|
    provides the variable <function>self.text</function>, which
 | 
						|
    contains the text string passed as the qualifier.
 | 
						|
    </para>
 | 
						|
    <para>
 | 
						|
    All filter classes must define a <function>match</function>
 | 
						|
    function. The function takes one argument (other than
 | 
						|
    <function>self</function>), which is an object of type
 | 
						|
    <function>Person</function> to compare against. The function
 | 
						|
    should return a 1 if the person matches the filter, or a zero if
 | 
						|
    the person does not.
 | 
						|
    </para>
 | 
						|
    <figure id="filtersrc">
 | 
						|
    <title>Sample filter implementation</title>
 | 
						|
    <programlisting>
 | 
						|
import Filter
 | 
						|
import string
 | 
						|
import intl
 | 
						|
_ = intl.gettext
 | 
						|
 | 
						|
# class definition
 | 
						|
 | 
						|
class SubString(Filter.Filter):
 | 
						|
 | 
						|
    def match(self,person):
 | 
						|
        name = person.getPrimaryName().getName()
 | 
						|
        return string.find(name,self.text) >= 0
 | 
						|
 | 
						|
# module functions
 | 
						|
 | 
						|
def get_name(s):
 | 
						|
    return _("Names that contain a substring")
 | 
						|
 | 
						|
def create(text):
 | 
						|
    return SubString(text)
 | 
						|
 | 
						|
def need_qualifier():
 | 
						|
    return 1
 | 
						|
    </programlisting>
 | 
						|
    </figure>
 | 
						|
   </sect2>
 | 
						|
 </sect1>
 | 
						|
 | 
						|
 <!-- ============= Writing Reports ============================= -->
 | 
						|
 | 
						|
 <sect1 id="writingreports">
 | 
						|
  <title>Writing Reports</title>
 | 
						|
   <para>
 | 
						|
   Users can create their own report generators and add them to
 | 
						|
   <application>gramps</application>.  By adding the report generator
 | 
						|
   to the user's private filter directory (<filename
 | 
						|
   class="directory">~/.gramps/plugins</filename>), the report
 | 
						|
   generator filter will be automatically recognized the next time
 | 
						|
   that the program is started.
 | 
						|
   </para>
 | 
						|
   <sect2 id="createreport">
 | 
						|
    <title>Creating a report generator</title>
 | 
						|
    <para>
 | 
						|
     Like filters, report generators are written in the
 | 
						|
     <application>python</application> language. Fewer restrictions
 | 
						|
     are made on report generators than on filters.  The report
 | 
						|
     generator is passed the current <application>gramps</application>
 | 
						|
     database and the active person.  The generator needs to take
 | 
						|
     special care to make sure that it does not alter the database in
 | 
						|
     anyway.
 | 
						|
    </para>
 | 
						|
    <para>
 | 
						|
    The function <function>get_name</function> is used to provide the
 | 
						|
    name of the the report generator. As with a filter definition,
 | 
						|
    this string should support internationalization via the
 | 
						|
    <function>intl</function> module. The returned string consists of
 | 
						|
    two parts, separated by a forward slash.  The first part of the
 | 
						|
    string is the category of the report generator.
 | 
						|
    <application>gramps</application> uses this part to group similar
 | 
						|
    reports together in the interface. The second part of the string
 | 
						|
    is the actual name of the reprot generator, and will be displayed
 | 
						|
    in the report menu.
 | 
						|
    </para>
 | 
						|
    <para>
 | 
						|
    A report generator module must supply the
 | 
						|
    <function>report</function> function, and can optionally define
 | 
						|
    the <function>get_description</function> and
 | 
						|
    <function>get_xpm_data</function> functions.  The
 | 
						|
    <function>report</function> takes two arguments — a database
 | 
						|
    (of type <function>RelDataBase</function>) and the currently
 | 
						|
    selected person (of type <function>Person</function>). The
 | 
						|
    <function>report</function> is reponsible for generating the
 | 
						|
    actual report.
 | 
						|
    </para>
 | 
						|
    <para>
 | 
						|
    If the <function>get_description</function> is defined, it is used
 | 
						|
    to provide a more detailed description of the report. The
 | 
						|
    description is used to provide the user with more information in
 | 
						|
    the report selection window.  The function takes no arguments, and
 | 
						|
    should return a text string.
 | 
						|
    </para>
 | 
						|
    <para>
 | 
						|
    If the <function>get_xpm_data</function> is defined, it is used to
 | 
						|
    provide an graphic logo for the report in the report selection
 | 
						|
    window.  The function takes no arguments, and should return a list
 | 
						|
    of strings containing the XPM file data.  The XPM image should be
 | 
						|
    48x48 pixels in size.
 | 
						|
    </para>
 | 
						|
    <figure id="reportsrc">
 | 
						|
    <title>Sample report implementation</title>
 | 
						|
    <programlisting>
 | 
						|
import intl
 | 
						|
_ = intl.gettext
 | 
						|
 | 
						|
def report(database,person):
 | 
						|
   ... actual code ...
 | 
						|
 | 
						|
def get_description():
 | 
						|
    return "A detailed text description of what the report generator does"
 | 
						|
 | 
						|
def get_name():
 | 
						|
    return _("Category/report name")
 | 
						|
 | 
						|
def get_xpm_image():
 | 
						|
    return [
 | 
						|
    "... XPM image data"
 | 
						|
    ]
 | 
						|
    </programlisting>
 | 
						|
    </figure>
 | 
						|
   </sect2>
 | 
						|
   <sect2 id="alittlehelp">
 | 
						|
    <title>A little help - Format Interfaces</title>
 | 
						|
    <para>
 | 
						|
    <application>gramps</application> provides some help with writing
 | 
						|
    reports.  Several generic python classes exist that aid in the
 | 
						|
    writing of report generators.  These classes provide an abstract
 | 
						|
    interface for a type of document, such as a drawing, word
 | 
						|
    processor document, or a spreadsheet.  From these core classes,
 | 
						|
    <application>gramps</application> derives interfaces to various
 | 
						|
    document formats.  This means that by coding to the generic word
 | 
						|
    processing class (<function>TextDoc</function>), a report
 | 
						|
    generator can instant access to multiple file formats (such as
 | 
						|
    HTML, OpenOffice, and AbiWord).
 | 
						|
    </para>
 | 
						|
    <para>
 | 
						|
    This scheme of deriving a output format from a generic base class
 | 
						|
    also makes it easier to add new formats.  Creating a new
 | 
						|
    derivied class targeting a different format (such as
 | 
						|
    <application>KWord</application> or
 | 
						|
    <application>LaTeX</application>) makes it easy for existing
 | 
						|
    report generators to use the new formats.
 | 
						|
    </para>
 | 
						|
   </sect2>
 | 
						|
 </sect1>
 | 
						|
 | 
						|
 <!-- ============= Writing Tools ============================= -->
 | 
						|
 | 
						|
 <sect1 id="writingtools">
 | 
						|
  <title>Writing Tools</title>
 | 
						|
  <para>
 | 
						|
  </para>
 | 
						|
 | 
						|
 </sect1>
 | 
						|
 | 
						|
 <!-- ============= Various Sections ============================= -->
 | 
						|
 | 
						|
 <!-- Here you should add, if necessary, several more sect1's,
 | 
						|
 describing other windows (besides the main one), file formats,
 | 
						|
 preferences dialogs,  etc. as appropriate. Try not to make any of
 | 
						|
 these sections too long. -->
 | 
						|
 | 
						|
 | 
						|
 <!-- ============= Bugs ================================== -->
 | 
						|
 <!-- This section should describe known bugs and limitations of
 | 
						|
      the program if there are any - please be frank and list all
 | 
						|
      problems you know of. -->
 | 
						|
 <sect1 id="bugs">
 | 
						|
  <title>Known Bugs and Limitations</title>
 | 
						|
  <para>
 | 
						|
   This application has no known bugs.
 | 
						|
  </para>
 | 
						|
 </sect1>
 | 
						|
 | 
						|
 | 
						|
<!-- ============= Authors ================================ -->
 | 
						|
 | 
						|
 <sect1 id="authors">
 | 
						|
  <title>Authors</title>
 | 
						|
  <para>
 | 
						|
   <application>gramps</application> was written by Donald N. Allingham
 | 
						|
   (<email>donaldallingham@home.com</email>). To find more information about
 | 
						|
   <application>gramps</application>, please visit the <ulink
 | 
						|
   url="http://gramps.sourceforge.net" type="http">gramps Web
 | 
						|
   page</ulink>.  
 | 
						|
  </para>
 | 
						|
 | 
						|
  <para>
 | 
						|
   This manual was written by Donald N. Allingham
 | 
						|
   (<email>donaldallingham@home.com</email>) and Lawrence L. Allingham
 | 
						|
   (<email>llkla@erinet.com</email>).
 | 
						|
  </para>
 | 
						|
 | 
						|
  <!-- For translations: uncomment this:
 | 
						|
 | 
						|
  <para>
 | 
						|
   Latin translation was done by ME
 | 
						|
   (<email>MYNAME@MYADDRESS</email>). Please send all  comments  and
 | 
						|
   suggestions regarding this translation to SOMEWHERE.
 | 
						|
  </para>
 | 
						|
 | 
						|
  -->
 | 
						|
 | 
						|
 </sect1>
 | 
						|
 | 
						|
 | 
						|
 <!-- ============= Application License ============================= -->
 | 
						|
 | 
						|
 <sect1 id="license">
 | 
						|
  <title>License</title>
 | 
						|
  <para>
 | 
						|
   This program is free software; you can redistribute it and/or
 | 
						|
   modify it under the terms of the  <ulink type="help" url="gnome-help:gpl">
 | 
						|
    <citetitle>GNU General Public License</citetitle></ulink> as
 | 
						|
   published by the Free Software Foundation; 
 | 
						|
   either version 2 of the License, or (at your option) any later
 | 
						|
   version.
 | 
						|
  </para>
 | 
						|
  <para>
 | 
						|
   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
 | 
						|
   <citetitle>GNU General Public License</citetitle> for more details.
 | 
						|
  </para>
 | 
						|
  <para>
 | 
						|
   A copy of the <citetitle>GNU General Public License</citetitle> is
 | 
						|
   included as an appendix to the <citetitle>GNOME Users
 | 
						|
   Guide</citetitle>.  You may also obtain a copy of the
 | 
						|
   <citetitle>GNU General Public License</citetitle> from the Free
 | 
						|
   Software Foundation by visiting <ulink type="http"
 | 
						|
   url="http://www.fsf.org">their Web site</ulink> or by writing to
 | 
						|
   <address>
 | 
						|
    Free Software Foundation, Inc.
 | 
						|
    <street>59 Temple Place</street> - Suite 330
 | 
						|
    <city>Boston</city>, <state>MA</state> <postcode>02111-1307</postcode>
 | 
						|
    <country>USA</country>
 | 
						|
   </address>
 | 
						|
  </para>
 | 
						|
 </sect1>
 | 
						|
</article>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 |