gramps/gramps2/doc/extending-gramps/C/extending-gramps/x57.html
Don Allingham 0ca0ae439e Initial revision
svn: r1140
2002-10-20 14:25:16 +00:00

276 lines
4.7 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML
><HEAD
><TITLE
>Writing Filters</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="Writing Extentions for gramps"
HREF="t1.html"><LINK
REL="PREVIOUS"
TITLE="Writing Extentions for gramps"
HREF="t1.html"><LINK
REL="NEXT"
TITLE="Writing Reports"
HREF="x83.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Writing Extentions for gramps</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="t1.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x83.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="writingfilters">Writing Filters</H1
>
<P
> Users can create their own filters and add them to
<TT
CLASS="APPLICATION"
>gramps</TT
>. By adding the filter to the
user's private filter directory (<TT
CLASS="FILENAME"
>~/.gramps/filters</TT
>), the filter will
be automatically recognized the next time that the program is
started.
</P
>
<DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="createfilter">Creating a filter</H2
>
<P
> Each filter is a class derived from the
<TT
CLASS="FUNCTION"
>Filter.Filter</TT
> class. The
<TT
CLASS="FUNCTION"
>__init__</TT
> task may be overridden, but if so,
should call the <TT
CLASS="FUNCTION"
>__init__</TT
> function on the
<TT
CLASS="FUNCTION"
>Filter.Filter</TT
> class. The parent class
provides the variable <TT
CLASS="FUNCTION"
>self.text</TT
>, which
contains the text string passed as the qualifier. This string
provides additional information provided by the user. For
example, if the filter is used to match names, the qualifier
would be used to provide the name that is being compared
against.
</P
>
<P
> All filter classes must define a <TT
CLASS="FUNCTION"
>match</TT
>
function. The function takes one argument (other than
<TT
CLASS="FUNCTION"
>self</TT
>), which is an object of type
<TT
CLASS="FUNCTION"
>Person</TT
> to compare against. The function
should return a 1 if the person matches the filter, or a zero if
the person does not.
</P
>
<P
> Each filter must be registered, so that
<TT
CLASS="APPLICATION"
>gramps</TT
> knows about it. This is
accomplished by calling the
<TT
CLASS="FUNCTION"
>Filter.register_filter</TT
> function. This
function takes three arguments - the filter class, a
description, and flag that indicates if the qualifier string is
needed. The description string appears in the pull down
interface within <TT
CLASS="APPLICATION"
>gramps</TT
>, and helps
the user choose the appropriate filter. The qualifier flag tells
<TT
CLASS="APPLICATION"
>gramps</TT
> whether or not the filter
needs a qualifier string. If this flag is 0,
<TT
CLASS="APPLICATION"
>gramps</TT
> will disable the entry of a
qualifier string.
</P
>
<DIV
CLASS="FIGURE"
><A
NAME="filtersrc">
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>&#13;import Filter
import string
# class definition
class SubString(Filter.Filter):
def match(self,person):
name = person.getPrimaryName().getName()
return string.find(name,self.text) &#62;= 0
Filter.register_filter(SubString,
description="Names that contain a substring",
qualifier=1)
</PRE
></TD
></TR
></TABLE
>
<P
><B
>Figure 1. Sample filter implementation</B
></P
></DIV
>
</DIV
>
</DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="t1.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="t1.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x83.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Writing Extentions for gramps</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Writing Reports</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>