Initial revision
svn: r1140
5
.cvsignore
Normal file
@ -0,0 +1,5 @@
|
||||
Makefile
|
||||
config.cache
|
||||
config.log
|
||||
config.status
|
||||
gramps.sh
|
5
AUTHORS
Normal file
@ -0,0 +1,5 @@
|
||||
Donald N. Allingham ** Concept and main design
|
||||
|
||||
David Hampton ** Autocomp.py and Report.py
|
||||
|
||||
Donald A. Peterson ** Makefiles, LaTeXDoc.py
|
339
COPYING
Normal file
@ -0,0 +1,339 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
675 Mass Ave, Cambridge, MA 02139, USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program 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.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public 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.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
Appendix: How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) 19yy <name of author>
|
||||
|
||||
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 program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) 19yy name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
79
INSTALL
Normal file
@ -0,0 +1,79 @@
|
||||
For rebuilding from source, here are some guidelines to follow. For
|
||||
developers who may be adding functionality to the program, be sure to read
|
||||
the last section of this documen: "FINAL WORDS".
|
||||
|
||||
SUPER-SHORT VERSION:
|
||||
You should be able to just run "./configure && make". But if you make any
|
||||
significant changes or experience any problems, you may wish to run
|
||||
"./autogen.sh && make" to regenerate everything.
|
||||
|
||||
This will call aclocal if necessary, then automake, which creates
|
||||
Makefile.in from Makefile.am rules. Then it calls autoconf, which will
|
||||
generate configure from configure.in and the Makefile.{am,in} sources.
|
||||
Finally, autogen calls configure to generate the final files necessary for
|
||||
building gramps.
|
||||
|
||||
SHORT VERSION:
|
||||
Execute:
|
||||
aclocal
|
||||
automake --add-missing --gnu && autoconf && make
|
||||
|
||||
HTML documentation is built from SGML sources via jw. It is known to work
|
||||
with docbook-utils-0.6.9. There is a problem with 0.6.10, which seems to
|
||||
have some messed up dsl files. If you have difficulty building the HTML
|
||||
documentation with your version of jw, then remove "doc" from the SUBDIRS
|
||||
list in the top-level Makefile and send a report of where the failure was to
|
||||
the gramps-devel list. This distribution is tested with the style sheets
|
||||
and PNG support from the gnome-doc-tools-2-1 package.
|
||||
|
||||
MORE INFO: Version and package info is now set in configure.in through a
|
||||
call to the AM_INIT_AUTOMAKE macro. The results are stored in variables
|
||||
PACKAGE and VERSION, which then get substituted wherever necessary.
|
||||
(gramps.sh, gramps.spec, src/const.py, asst. Makefiles, etc.) We also
|
||||
manually set the RELEASE variable for setting things like "pre" or minor
|
||||
bugfix issues. * Note: Using @VERSION@ in the manuals has the advantage that
|
||||
the current manual always states that it describes current version of
|
||||
gramps. The disadvantage is that this becomes misleading if the manual
|
||||
isn't regularly updated. Keep in mind this is GRAMPS version and not
|
||||
*manual* version. Another problem is that the standard GNOME SGML
|
||||
documentation make rules (sgmldocs.make) have their own rule, but automake
|
||||
generates its own rule and this introduces a conflict.
|
||||
|
||||
"make (un)install" now runs scrollkeeper-update to ensure
|
||||
documentation database is up to date. Scrollkeeper v. > 0.1.4 should in
|
||||
principle work, v. > 0.2 should see no problems.
|
||||
|
||||
VERBOSE, UGLY DETAILS FOR DEVELOPERS:
|
||||
Using automake/autoconf adds many, MANY build targets to the makefiles.
|
||||
Basically, we only care about the main and "install" targets. However,
|
||||
there are some others that bear further notice:
|
||||
|
||||
* make dist -- will create a lovely gramps-{VERSION}.tar.gz archive with
|
||||
everything needed to distribute, including the HTML documentation just in
|
||||
case Joe User doen't know about or have a compatable jw/db2html. After
|
||||
running "make dist" you can create the rpms using
|
||||
"rpm -ta gramps-{VERSION}.tar.gz". How nice is that?
|
||||
|
||||
* make clean -- only gets rid of byte-compiled stuff like .so files.
|
||||
|
||||
* make distclean -- improves on clean by eliminating configuration (*.in,
|
||||
config.*, Makefiles, and converted documentation.) stuff. This is generally
|
||||
what you (as a developer) will want for testing "fresh" compiles.
|
||||
|
||||
* make trans -- We add this one on our own for building the template.po file.
|
||||
|
||||
Another caveat of the automake mantra is that new/overriding make
|
||||
targets/rules/defines should generally go in the Makefile.am files rather
|
||||
than Makefile.in.
|
||||
|
||||
* Note: Another beauty of the automake mechanism (and having automake macros
|
||||
in the configure script) is that once the scripts have been made, a change
|
||||
to any .am file will trigger "make" to regenerate the Makefile.in/configure
|
||||
scripts as appropriate. It is _very_ convenient.
|
||||
|
||||
FINAL WORDS: automake "thinks" of a distribution in terms of "SOURCES", such
|
||||
as raw C code, "COMPILED OBJECTS" like executables and libraries, and
|
||||
"DATA", such as images, scripts, and documentation. Thus, for gramps we
|
||||
concentrate on DATA-type objects. We must tell automake what objects are
|
||||
important. We do this by adding to the EXTRA_DIST variable in the various
|
||||
Makefile.am files before running automake.
|
30
Makefile.am
Normal file
@ -0,0 +1,30 @@
|
||||
# copyright (C) 2000 Sun Microsystems, Inc.
|
||||
|
||||
SUBDIRS = src doc omf-install
|
||||
|
||||
EXTRA_DIST = autogen.sh gramps.spec.in
|
||||
|
||||
bin_SCRIPTS = gramps
|
||||
|
||||
grampsdocdir = $(datadir)/doc/gramps-$(VERSION)
|
||||
scrollkeeper_localstate_dir = $(localstatedir)/lib/scrollkeeper
|
||||
|
||||
gramps: gramps.sh
|
||||
cp gramps.sh gramps
|
||||
|
||||
dist-hook: gramps.spec
|
||||
cp gramps.spec $(distdir)
|
||||
|
||||
# Build/rebuild the catalog
|
||||
install-data-hook:
|
||||
rm -rf $(DESTDIR)$(scrollkeeper_localstate_dir)
|
||||
$(mkinstalldirs) $(DESTDIR)$(scrollkeeper_localstate_dir)
|
||||
$(mkinstalldirs) $(DESTDIR)$(localstatedir)/log
|
||||
scrollkeeper-rebuilddb -p $(DESTDIR)$(scrollkeeper_localstate_dir)
|
||||
|
||||
# Remove generated files
|
||||
uninstall-local:
|
||||
-rm -rf $(DESTDIR)$(gramps_localstate_dir)
|
||||
-rm -f $(DESTDIR)$(localstatedir)/log/gramps.log
|
||||
-rm -f $(DESTDIR)$(localstatedir)/log/gramps.log.1
|
||||
|
18
Makefile.comm
Normal file
@ -0,0 +1,18 @@
|
||||
# Generated automatically from Makefile.comm.in by configure.
|
||||
# Hold variable definitions needed by slave Makefiles
|
||||
prefix = /usr/local
|
||||
exec_prefix = ${prefix}
|
||||
bindir = ${exec_prefix}/bin
|
||||
datadir = ${prefix}/share/gramps
|
||||
INSTALL = /usr/bin/install -c
|
||||
sharedir = ${prefix}/share/gramps
|
||||
GNOMEHELP = ${prefix}/share/gnome/help
|
||||
GM = gramps-manual
|
||||
EG = extending-gramps
|
||||
DB2HTML =
|
||||
|
||||
|
||||
|
||||
# Ensure the correct "/bin/sh" for interpreting commands
|
||||
# in case the user has some other shell environment
|
||||
SHELL = /bin/sh
|
490
Makefile.in
Normal file
@ -0,0 +1,490 @@
|
||||
# Makefile.in generated by automake 1.6.3 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
# Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# copyright (C) 2000 Sun Microsystems, Inc.
|
||||
SHELL = @SHELL@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
|
||||
bindir = @bindir@
|
||||
sbindir = @sbindir@
|
||||
libexecdir = @libexecdir@
|
||||
datadir = @datadir@
|
||||
sysconfdir = @sysconfdir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
localstatedir = @localstatedir@
|
||||
libdir = @libdir@
|
||||
infodir = @infodir@
|
||||
mandir = @mandir@
|
||||
includedir = @includedir@
|
||||
oldincludedir = /usr/include
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = .
|
||||
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = @program_transform_name@
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
|
||||
EXEEXT = @EXEEXT@
|
||||
OBJEXT = @OBJEXT@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
AMTAR = @AMTAR@
|
||||
AWK = @AWK@
|
||||
BINSH = @BINSH@
|
||||
CC = @CC@
|
||||
DEPDIR = @DEPDIR@
|
||||
DISABLE_SCROLLKEEPER = @DISABLE_SCROLLKEEPER@
|
||||
GNOMEHELP = @GNOMEHELP@
|
||||
HAVE_GNOME_CONFIG = @HAVE_GNOME_CONFIG@
|
||||
HAVE_JW = @HAVE_JW@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
INTLLIBS = @INTLLIBS@
|
||||
JW = @JW@
|
||||
LANGUAGES = @LANGUAGES@
|
||||
LIBS = @LIBS@
|
||||
MOFILES = @MOFILES@
|
||||
MSGFMT = @MSGFMT@
|
||||
P15_INCLUDES = @P15_INCLUDES@
|
||||
P20_INCLUDES = @P20_INCLUDES@
|
||||
P21_INCLUDES = @P21_INCLUDES@
|
||||
P22_INCLUDES = @P22_INCLUDES@
|
||||
PACKAGE = @PACKAGE@
|
||||
POFILES = @POFILES@
|
||||
PYTHON = @PYTHON@
|
||||
PYTHON22 = @PYTHON22@
|
||||
PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
|
||||
PYTHON_PLATFORM = @PYTHON_PLATFORM@
|
||||
PYTHON_PREFIX = @PYTHON_PREFIX@
|
||||
PYTHON_VERSION = @PYTHON_VERSION@
|
||||
RELEASE = @RELEASE@
|
||||
SCROLLKEEPER_CONFIG = @SCROLLKEEPER_CONFIG@
|
||||
SCROLLKEEPER_REQUIRED = @SCROLLKEEPER_REQUIRED@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
VERSIONSTRING = @VERSIONSTRING@
|
||||
ZIP = @ZIP@
|
||||
am__include = @am__include@
|
||||
am__quote = @am__quote@
|
||||
install_sh = @install_sh@
|
||||
pkgpyexecdir = @pkgpyexecdir@
|
||||
pkgpythondir = @pkgpythondir@
|
||||
pyexecdir = @pyexecdir@
|
||||
pythondir = @pythondir@
|
||||
|
||||
SUBDIRS = src doc omf-install
|
||||
|
||||
EXTRA_DIST = autogen.sh gramps.spec.in
|
||||
|
||||
bin_SCRIPTS = gramps
|
||||
|
||||
grampsdocdir = $(datadir)/doc/gramps-$(VERSION)
|
||||
scrollkeeper_localstate_dir = $(localstatedir)/lib/scrollkeeper
|
||||
subdir = .
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_CLEAN_FILES = gramps.spec gramps.sh
|
||||
SCRIPTS = $(bin_SCRIPTS)
|
||||
|
||||
DIST_SOURCES =
|
||||
|
||||
RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \
|
||||
uninstall-info-recursive all-recursive install-data-recursive \
|
||||
install-exec-recursive installdirs-recursive install-recursive \
|
||||
uninstall-recursive check-recursive installcheck-recursive
|
||||
DIST_COMMON = README AUTHORS COPYING ChangeLog INSTALL Makefile.am \
|
||||
Makefile.in NEWS TODO aclocal.m4 configure configure.in \
|
||||
gramps.sh.in gramps.spec.in install-sh missing mkinstalldirs \
|
||||
py-compile
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
|
||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||
configure.lineno
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)
|
||||
|
||||
$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
$(SHELL) ./config.status --recheck
|
||||
$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
|
||||
cd $(srcdir) && $(AUTOCONF)
|
||||
|
||||
$(ACLOCAL_M4): configure.in
|
||||
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||
gramps.spec: $(top_builddir)/config.status gramps.spec.in
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||
gramps.sh: $(top_builddir)/config.status gramps.sh.in
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||
binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
|
||||
install-binSCRIPTS: $(bin_SCRIPTS)
|
||||
@$(NORMAL_INSTALL)
|
||||
$(mkinstalldirs) $(DESTDIR)$(bindir)
|
||||
@list='$(bin_SCRIPTS)'; for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
if test -f $$d$$p; then \
|
||||
f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
|
||||
echo " $(binSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(bindir)/$$f"; \
|
||||
$(binSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(bindir)/$$f; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
uninstall-binSCRIPTS:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(bin_SCRIPTS)'; for p in $$list; do \
|
||||
f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
|
||||
echo " rm -f $(DESTDIR)$(bindir)/$$f"; \
|
||||
rm -f $(DESTDIR)$(bindir)/$$f; \
|
||||
done
|
||||
uninstall-info-am:
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run `make' without going through this Makefile.
|
||||
# To change the values of `make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in `config.status', edit `config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||
# (2) otherwise, pass the desired values on the `make' command line.
|
||||
$(RECURSIVE_TARGETS):
|
||||
@set fnord $$MAKEFLAGS; amf=$$2; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
mostlyclean-recursive clean-recursive distclean-recursive \
|
||||
maintainer-clean-recursive:
|
||||
@set fnord $$MAKEFLAGS; amf=$$2; \
|
||||
dot_seen=no; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
rev=''; for subdir in $$list; do \
|
||||
if test "$$subdir" = "."; then :; else \
|
||||
rev="$$subdir $$rev"; \
|
||||
fi; \
|
||||
done; \
|
||||
rev="$$rev ."; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
for subdir in $$rev; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
|
||||
ETAGS = etags
|
||||
ETAGSFLAGS =
|
||||
|
||||
tags: TAGS
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(ETAGS_ARGS)$$tags$$unique" \
|
||||
|| $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
top_distdir = .
|
||||
distdir = $(PACKAGE)-$(VERSION)
|
||||
|
||||
am__remove_distdir = \
|
||||
{ test ! -d $(distdir) \
|
||||
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||
&& rm -fr $(distdir); }; }
|
||||
|
||||
GZIP_ENV = --best
|
||||
distcleancheck_listfiles = find . -type f -print
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
$(am__remove_distdir)
|
||||
mkdir $(distdir)
|
||||
$(mkinstalldirs) $(distdir)/. $(distdir)/src
|
||||
@list='$(DISTFILES)'; for file in $$list; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkinstalldirs) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -d $(distdir)/$$subdir \
|
||||
|| mkdir $(distdir)/$$subdir \
|
||||
|| exit 1; \
|
||||
(cd $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$(top_distdir)" \
|
||||
distdir=../$(distdir)/$$subdir \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="${top_distdir}" distdir="$(distdir)" \
|
||||
dist-hook
|
||||
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
|
||||
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|
||||
|| chmod -R a+r $(distdir)
|
||||
dist-gzip: distdir
|
||||
$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist dist-all: distdir
|
||||
$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
$(am__remove_distdir)
|
||||
|
||||
# This target untars the dist file and tries a VPATH configuration. Then
|
||||
# it guarantees that the distribution is self-contained by making another
|
||||
# tarfile.
|
||||
distcheck: dist
|
||||
$(am__remove_distdir)
|
||||
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf -
|
||||
chmod -R a-w $(distdir); chmod a+w $(distdir)
|
||||
mkdir $(distdir)/=build
|
||||
mkdir $(distdir)/=inst
|
||||
chmod a-w $(distdir)
|
||||
dc_install_base=`$(am__cd) $(distdir)/=inst && pwd` \
|
||||
&& cd $(distdir)/=build \
|
||||
&& ../configure --srcdir=.. --prefix=$$dc_install_base \
|
||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||
&& (test `find $$dc_install_base -type f -print | wc -l` -le 1 \
|
||||
|| { echo "ERROR: files left after uninstall:" ; \
|
||||
find $$dc_install_base -type f -print ; \
|
||||
exit 1; } >&2 ) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dist-gzip \
|
||||
&& rm -f $(distdir).tar.gz \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
|
||||
$(am__remove_distdir)
|
||||
@echo "$(distdir).tar.gz is ready for distribution" | \
|
||||
sed 'h;s/./=/g;p;x;p;x'
|
||||
distcleancheck: distclean
|
||||
if test '$(srcdir)' = . ; then \
|
||||
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left after distclean:" ; \
|
||||
$(distcleancheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile $(SCRIPTS)
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
$(mkinstalldirs) $(DESTDIR)$(bindir)
|
||||
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
distclean-am: clean-am distclean-generic distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
@$(NORMAL_INSTALL)
|
||||
$(MAKE) $(AM_MAKEFLAGS) install-data-hook
|
||||
|
||||
install-exec-am: install-binSCRIPTS
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -rf autom4te.cache
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic
|
||||
|
||||
uninstall-am: uninstall-binSCRIPTS uninstall-info-am uninstall-local
|
||||
|
||||
uninstall-info: uninstall-info-recursive
|
||||
|
||||
.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \
|
||||
clean-generic clean-recursive dist dist-all dist-gzip distcheck \
|
||||
distclean distclean-generic distclean-recursive distclean-tags \
|
||||
distcleancheck distdir dvi dvi-am dvi-recursive info info-am \
|
||||
info-recursive install install-am install-binSCRIPTS \
|
||||
install-data install-data-am install-data-recursive \
|
||||
install-exec install-exec-am install-exec-recursive \
|
||||
install-info install-info-am install-info-recursive install-man \
|
||||
install-recursive install-strip installcheck installcheck-am \
|
||||
installdirs installdirs-am installdirs-recursive \
|
||||
maintainer-clean maintainer-clean-generic \
|
||||
maintainer-clean-recursive mostlyclean mostlyclean-generic \
|
||||
mostlyclean-recursive tags tags-recursive uninstall \
|
||||
uninstall-am uninstall-binSCRIPTS uninstall-info-am \
|
||||
uninstall-info-recursive uninstall-local uninstall-recursive
|
||||
|
||||
|
||||
gramps: gramps.sh
|
||||
cp gramps.sh gramps
|
||||
|
||||
dist-hook: gramps.spec
|
||||
cp gramps.spec $(distdir)
|
||||
|
||||
# Build/rebuild the catalog
|
||||
install-data-hook:
|
||||
rm -rf $(DESTDIR)$(scrollkeeper_localstate_dir)
|
||||
$(mkinstalldirs) $(DESTDIR)$(scrollkeeper_localstate_dir)
|
||||
$(mkinstalldirs) $(DESTDIR)$(localstatedir)/log
|
||||
scrollkeeper-rebuilddb -p $(DESTDIR)$(scrollkeeper_localstate_dir)
|
||||
|
||||
# Remove generated files
|
||||
uninstall-local:
|
||||
-rm -rf $(DESTDIR)$(gramps_localstate_dir)
|
||||
-rm -f $(DESTDIR)$(localstatedir)/log/gramps.log
|
||||
-rm -f $(DESTDIR)$(localstatedir)/log/gramps.log.1
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
362
NEWS
Normal file
@ -0,0 +1,362 @@
|
||||
Version 0.7.3
|
||||
* New Russian (Alex Roitman) and Danish (Lars Lundin) translations.
|
||||
GRAMPS now supports English, Italian, German, French, Spanish,
|
||||
Brazilian-Portuguese, Swedish, Danish, and Russian.
|
||||
* Custom filter editor allows you to create your personal complex
|
||||
filters that can be applied to reports to select the people that
|
||||
you want. Tools->Utilites->Custom Filter Editor to access the
|
||||
filter builder. (Thanks to Jeff Ollie for some major contributions
|
||||
here).
|
||||
* New report - Complete Individual Report. Allows you to produce a
|
||||
more complete form of the Individual Summary. You can use filters
|
||||
to select all ancestors, all decendants, or any custom filter you
|
||||
want to create more of a 'book' form of a report.
|
||||
* On-the-fly document generation instead of pre-built HTML files
|
||||
(Thanks to Don Peterson)
|
||||
* Web page generation now generates a two column list, along with
|
||||
labels.
|
||||
* GEDCOM impovements, including the ability to use GRAMPS as a GEDCOM
|
||||
viewer (accepts a GEDCOM file as an argument).
|
||||
|
||||
|
||||
Version 0.7.2
|
||||
* New Brazilian-Portuguese translation (Marcos Bedinelli)
|
||||
* Python Imaging Library no longer required for several report
|
||||
formats.
|
||||
* Better sizing of images in reports (Bruce DeGrasse)
|
||||
* An image subdirectory name can now be specified in the WebPage
|
||||
generation. This allows you to specify the subdirectory (or
|
||||
absence of a subdirectory) where images are placed when generating
|
||||
a web site.
|
||||
* Merging allows you to choose the GRAMPS ID of the merged person.
|
||||
* Better handling of auto completion of names, places, and other
|
||||
items.
|
||||
* Ability to rerun Startup dialog when necessary
|
||||
* More information in the Startup dialog
|
||||
* Fewer intermediate files when handling images for reports
|
||||
* Reports are now plugins, stored in the DocGen library
|
||||
* Filter out control characters on GEDCOM import
|
||||
* New document format generators for SVG and PostScript.
|
||||
* Improved document format generators for LaTeX (Donald Peterson),
|
||||
KWord (Bruce DeGrasse), and AbiWord.
|
||||
* Names now have a type (e.g. "Married Name", "Birth Name")
|
||||
associated with them.
|
||||
* Eliminated the intermediate dialog box on importing - GRAMPS
|
||||
now always appends to the current database.
|
||||
* If an imported GEDCOM contains REFN tags, they are correlated
|
||||
to the GRAMPS ID if possible.
|
||||
|
||||
|
||||
Version 0.7.1
|
||||
* A database must now be open at all times. Prevents the problem of
|
||||
not having a place to put files.
|
||||
* Several drop down menus for names have been replaced with
|
||||
autocompletion text boxes.
|
||||
* Autosave - allows the database to be saved to a backup file
|
||||
periodically.
|
||||
* New Descendant Graph dialog.
|
||||
* Reorganization of reports.
|
||||
* New preferences dialog.
|
||||
* Configurable guessing of last names for new children.
|
||||
* Slightly improved incomplete date handling.
|
||||
* More sort columns and improved sorting in the lists.
|
||||
* New tooltips (Don Peterson)
|
||||
* Improved navigation in the Pedigree View (Shane Hathaway)
|
||||
* Italian translation (Marco Molteni)
|
||||
|
||||
Version 0.7.0
|
||||
* LD_PRELOAD set to handle Mandrake 8.1 shared library problems.
|
||||
* Drag and drop copying of events, address, attributes, and URLs.
|
||||
* Improved GEDCOM. GRAMPS now understands many more of the "quirks"
|
||||
of the GEDCOM produced by other programs. In addition, GRAMPS can
|
||||
now tailor its GEDCOM output several other programs. An XML data
|
||||
file is used to describe to GRAMPS the types of quirks each
|
||||
format uses.
|
||||
* Support for French Republican, Hebrew, and Julian calendars.
|
||||
* LDS ordinance support.
|
||||
* Cleaned up report dialog code.
|
||||
* Bug fixes in GEDCOM reading and relationship calculator.
|
||||
* Toolbar may display Icons and Text, Text only, or Icons only. This
|
||||
helps in some of the translations, where the long text forced the
|
||||
toolbar to be unusually large.
|
||||
* Dragging and dropping media objects can optionally display property
|
||||
dialogs.
|
||||
* All toolbar icons have tooltips.
|
||||
* Keyboard shortcuts for bookmark saving.
|
||||
* Find dialog supports autocompletion, and has the more standard shortcut
|
||||
of C-F.
|
||||
* Change in XML database format to provides better support for dates.
|
||||
* Added entries to the Help menu to jump to the GRAMPS home page and the
|
||||
GRAMPS mailing list page.
|
||||
|
||||
Version 0.6.2
|
||||
* Fixed SuSE 7.3/lib-imlib problem.
|
||||
* Improved GEDCOM import/export. Gramps now passes the GEDCHK program
|
||||
and can now properly handle the quirks in names, notes, and parent/child
|
||||
relationships from PAF, Legacy, FTW, Brother's Keeper, and Family Origins.
|
||||
* After an Add Spouse, make the new spouse display in the Family View
|
||||
interface.
|
||||
|
||||
Version 0.6.1
|
||||
* Fixed Family View/Pedigree View button swap
|
||||
* Updated Spanish translation
|
||||
|
||||
Version 0.6.0
|
||||
* Support for QUAY, NCHI, and CAUS on GEDCOM import. GEDCOM
|
||||
import is significantly faster.
|
||||
* Support for multiple sources per item.
|
||||
* Support for revision control. RCS based revision control is
|
||||
available.
|
||||
* Confidence level moved to SourceReference instead of object.
|
||||
* All fields of birth and death events are editable. Clicking the
|
||||
Edit button brings up the event editor. Birth and death fields
|
||||
on the Edit Person dialog are now read only.
|
||||
* Support for unknown gender.
|
||||
* Central image/media repository added. All images in a gallery
|
||||
are references to these media objects. Media objects can have
|
||||
global properties (in the repository) or local properties (in
|
||||
each gallery).
|
||||
* Media types are beyond images are now supported (PDF, MP3,
|
||||
word processor documents, etc.)
|
||||
* Drag and drop of images from one gallery to another. Drag and
|
||||
drop from file managers into the gallery. Drag and drop from a
|
||||
web page to a gallery.
|
||||
* Drag and drop reordering of children in children lists.
|
||||
* Drag and drop reordering of images in a gallery.
|
||||
* Autocompletion support on most entry boxes with drop down menus.
|
||||
* Plugins can be reloaded without re-starting gramps.
|
||||
* Two people can be selected and directly merged from the main
|
||||
person list.
|
||||
* Two places can be selected and directly merged from the main
|
||||
place list.
|
||||
* The "Find and Merge" functionality has been improved to make it
|
||||
easier to find matches.
|
||||
* Web page generation is significantly faster.
|
||||
* Many plugins enhanced. Descendant browser can jump to an Edit Person
|
||||
display, Event Comparison can now save and load complex filters,
|
||||
etc.
|
||||
* User had significant more control over the format of the internal
|
||||
GRAMPS' ids. You can now set a prefix for each type (such as "I-"
|
||||
for individuals) or specify more powerful formatting using C-like
|
||||
format statements (such as "I-%04d").
|
||||
* Adoption relationships are visible on the pedigree view (seen as
|
||||
a dotted line).
|
||||
* Reordering GRAMPS' ids attempts to preserve the integer originally
|
||||
assigned to the object.
|
||||
* The person view can be sorted by GRAMPS id.
|
||||
* KWord format generated is now compatible with KWord 1.1. Images may
|
||||
now be included in KWord documents (requires Python Imaging Library).
|
||||
Tables are not working yet. I can figure out how to format a KWord
|
||||
table.
|
||||
|
||||
Version 0.5.1
|
||||
* Bug fixes
|
||||
* Allow gramps' ids to be edited
|
||||
* Added Jesper Zedlitz's PAF for Palm export
|
||||
* Progress report on GEDCOM import
|
||||
* Add a new person from the parent selection dialog
|
||||
* Improved configure script for FreeBSD
|
||||
* Documenation improvements
|
||||
* Slight performance improvements reading large databases
|
||||
|
||||
Version 0.5.0
|
||||
* New pedegree form which can display 3, 4, or 5 generations
|
||||
depending on the screen size. Supports better navigation.
|
||||
* Added a Find function to quickly find people.
|
||||
* Implemented Place objects, allowing additional information
|
||||
to be stored about a place.
|
||||
* New icons for Person View and Family View.
|
||||
* Online documentation.
|
||||
* Pressing enter on qualifier field for a filter will apply
|
||||
the filter.
|
||||
* New verification tool added to look for odd things in the
|
||||
database.
|
||||
* Improvements in GEDCOM import, including handling some
|
||||
Family Tree Maker pecularities.
|
||||
* Spanish translation is now available. This brings the languages
|
||||
to English, Spanish, Swedish, German, and French.
|
||||
|
||||
Version 0.4.1
|
||||
* Tool/Report menus added to top level menu bar
|
||||
* Extract Titles and Nicknames plugin improved to provide more
|
||||
information
|
||||
* Several bug fixes, including the problem of swapping father/
|
||||
mother relationships in families
|
||||
* Significant improvements in speed for updating displays after
|
||||
adding, editing, or deleting people, and for applying filters.
|
||||
* Added Bruce DeGrasse's Detailed Ancestral Report. This will
|
||||
eventually replace the current Ancestral Report.
|
||||
|
||||
Version 0.4.0
|
||||
* Redesigned Family page. More complex family relationships can be
|
||||
handled.
|
||||
* ISO date format supported
|
||||
* Places are stored in a pulldown menu
|
||||
* gramps ID can be displayed in many lists
|
||||
* Multiple selection in Add Children box
|
||||
* Internal gramps ID now a string instead of an integer
|
||||
* Double clicking on a name in the Pedegree view brings up the edit
|
||||
box for that person
|
||||
* Support for same sex parent families has been added
|
||||
* Complete rework of Edit Person dialog
|
||||
* Added privacy flag and confidence level to events, attributes, etc.
|
||||
* Automatically detect gzip'ed XML vs. XML
|
||||
* Added option to write either gzip'ed XML or straight XML
|
||||
* Warn on closing the edit person and marriage/relationshp window
|
||||
when modifications have been made.
|
||||
* French translation
|
||||
* New plugin from Jesper Zedlitz that implements a graphical
|
||||
representation of the people in the database, allowing you to
|
||||
reposition people according to your own desires.
|
||||
* XML is indented properly
|
||||
* XML DTD available
|
||||
|
||||
Version 0.3.2
|
||||
* Fixed Style Editor on WebPage.py, to allow styles to be edited.
|
||||
* WebPage generator now lists more information, including sources.
|
||||
* May have ironed out the PyXML/Python/SAX issues once and for all,
|
||||
cleaning up the python 1.5/2.X problems.
|
||||
* Added the ability to set default directories for reports and
|
||||
databases.
|
||||
* Fixed major bug that added a marriage and divorce to every record
|
||||
that was viewed in the family viewer.
|
||||
* Fixed bug that was dropping images
|
||||
* Many, many other bug fixes.
|
||||
* Improved many of the translations.
|
||||
|
||||
Version 0.3.1
|
||||
* Improved Web Site generation (changed from Individual Web Pages)
|
||||
* Faster load times for XML database
|
||||
* Fixed unicode problems with Python 2.0
|
||||
* Improved GEDCOM exporter
|
||||
* Use the GRAMPSDIR environment variable in the shell script to determine
|
||||
the root path instead of dynamically doing it by attempting to look
|
||||
at __file__ in const.py
|
||||
* Added better GEDCOM importing for files generated by Brother's
|
||||
Keeper and Reunion.
|
||||
|
||||
Version 0.3.0
|
||||
* Support for RTF (export to MSWord) and limited support for KWord
|
||||
and LaTeX added.
|
||||
* User defined styles for reports. Allows the selection of fonts,
|
||||
sizes, colors, alignment, and many other features in output
|
||||
reports. Styles can be saved for future use.
|
||||
* Improved report formats
|
||||
* Initial German translation. Please note that the German translation
|
||||
is new, and it will take a while before it is fully in sync with the
|
||||
program. It will probably take a release or two before it is as
|
||||
stable as the Swedish translation (it can take a while to provide the
|
||||
translations, and the code is changing, so it takes a while to flush
|
||||
things out).
|
||||
* Output format preference and page size preference can be set in the
|
||||
preferences menu.
|
||||
* Names can now have sources and notes.
|
||||
* Lots of bug fixes
|
||||
* Fixes to GEDCOM importer
|
||||
|
||||
Version 0.2.0
|
||||
* New GEDCOM importer. This new importer understands the GEDCOM
|
||||
file structure, and intelligently parses the file. More
|
||||
information is extracted from the GEDCOM file. Guessing the
|
||||
context of information is no longer done, so the data should go
|
||||
into the right place. The display dialog now displays useful and
|
||||
interesting information as the file is loaded. The importer
|
||||
has been checked with file generated Personal Ancestral File,
|
||||
Brother's Keeper, DISGEN, the GEDCOM Torture test, and even the
|
||||
sometimes strange output of Family Tree Maker.
|
||||
* Better support for sources. Source button on the main page, and
|
||||
sources are entered from the main screen, instead of being about
|
||||
five layers deep.
|
||||
* Events, sources, attributes, and addresses can now have both
|
||||
sources and notes.
|
||||
* Limited configurability in status bar display. Instead of just a
|
||||
name, you can have a name, the internal ID and a name, or a user
|
||||
selectable attribute and a name.
|
||||
* A user selectable attribute can be displayed on the Edit Person
|
||||
display along with the gramps internal ID. The attribute is
|
||||
specified in the preferences settings, and the value is taken
|
||||
from the person's attribute list.
|
||||
* Images now load faster. Thumbnail images are created and maintained
|
||||
by gramps, eliminating the need to rescale images everytime a
|
||||
gallery is displayed.
|
||||
* Paper size preference can now be specified in the preferences
|
||||
dialog. Once this is set, gramps will make this the default for
|
||||
report generators. Eventually, you will be able to do the same
|
||||
for output format preference. This button is current disabled.
|
||||
* Generating slightly better XML. Maintaining compatibility with
|
||||
the older files.
|
||||
|
||||
|
||||
Version 0.1.5
|
||||
|
||||
* Plenty of bug fixes in the report generators and merging due to the
|
||||
previous addition of date ranges.
|
||||
* Added PDF file type generation for reports. Depends on the reportlab
|
||||
package (available at www.reportlab.com). If the package is not
|
||||
installed, gramps will run, but without PDF generation ability.
|
||||
* Will use the Python Imaging Library if present to handle images. If
|
||||
not, it will revert to the old method of using Imagick (convert).
|
||||
* The user can select an attribute (from the attribute list) to display
|
||||
on the Edit Person window.
|
||||
* The internal gramps ID is now displayed on the Edit Person window.
|
||||
* Marriage types can now be recorded.
|
||||
* Addresses now use a single date instead of multiple dates, since
|
||||
dates can now deal with ranges.
|
||||
* Due to a bug in Python 2.0/GTK interaction, list colors are disabled
|
||||
for Python 2.0 and above.
|
||||
* configure script now properly deals with Python include paths,
|
||||
eliminating the need to hand edit the src/Makefile to get gramps to
|
||||
run under Python 2.X.
|
||||
* Photos are now displayed properly again in the Edit Person gallery.
|
||||
* Family notes are now implemented.
|
||||
|
||||
Version 0.1.4
|
||||
|
||||
* Implemented date ranges. Valid forms are "from <date> to <date>" and
|
||||
"between <date> and <date>".
|
||||
* Better support for partial dates. A question mark can optionally be
|
||||
used for a placeholder for a year if the year is unknown. Illegal
|
||||
date formats issue a warning upon an attempt to save the date.
|
||||
* Start of internationalization (i18n) support. Had to include a single
|
||||
C file to allow libglade to understand translations. This means that
|
||||
binary releases are no longer going to be platform independant.
|
||||
* Start of a generic output formatter for report generation. Currently
|
||||
supports HTML, OpenOffice (625+), and AbiWord (0.7.13+). Allows
|
||||
control of paragraph and font styles.
|
||||
* Added into CVS on sourceforge
|
||||
* Fixed quite a few bugs
|
||||
|
||||
Version 0.1.3
|
||||
|
||||
* Allow the user to specifiy their preferred numerical date input format,
|
||||
either DD/MM/YY or MM/DD/YY on the preferences dialog box.
|
||||
* Handles file problems a bit more gracefully.
|
||||
* Use ISO-8859-1 character set instead of ASCII to support languages other
|
||||
than English. Eventually this should go to unicode, but python 1.5.2
|
||||
does not have good unicode support. Python 2.X/Gnome 2.X will be the
|
||||
migration for this feature.
|
||||
* Handle ANSEL encoding for import and exporting GEDCOM files.
|
||||
* Fixed a bug in the selection of parents, which did not accept new parents
|
||||
if previous parents did not exist.
|
||||
|
||||
Version 0.1.2
|
||||
|
||||
* Allow the user the option to display alternate names in the person
|
||||
list. Alternate names in the list have an '*' appended to the end
|
||||
of the name.
|
||||
* Merge function now gives the user the option of saving the name of
|
||||
the merged individual as an alternate name if the names are not
|
||||
the same.
|
||||
* Added the "Alternate Birth" and "Alternate Death" to the event list,
|
||||
to allow other birthdates to be recorded. Gramps makes a distinction
|
||||
between the birthdate/deathdate and the alternates.
|
||||
* GEDCOM import and export adapted to load/save alternate birth and
|
||||
death dates. The first "BIRT" and "DEAT" tags are the ones used
|
||||
for the primary dates, the others are loaded as alternates.
|
||||
* Added the ability to store web page addresses for each person. From
|
||||
the edit person page, the "Go" button brings up a web browser to
|
||||
display the page.
|
||||
* Fixed a bug in the relationship calculator that caused a traceback
|
||||
when the person selected was a direct ancestor of the active person.
|
||||
* Added the suffix field to the alternate name entry on the Edit Person
|
||||
form.
|
65
README
Normal file
@ -0,0 +1,65 @@
|
||||
Please read the COPYING file first.
|
||||
If building from source, also read the INSTALL file (at least through the
|
||||
"SUPER-SHORT VERSION") before going further.
|
||||
|
||||
Requirements
|
||||
--------------------------------
|
||||
Python 1.5.2 or greater
|
||||
Gnome 1.2 or greater
|
||||
PyGnome 1.0.53 or greater
|
||||
|
||||
If you are using python 1.5.2, you may also need PyXML 0.6.2 or
|
||||
greater. Many distributions already provide this, but if your
|
||||
installation does not have it, you can get it from
|
||||
http://sourceforge.net/project/showfiles.php?group_id=6473
|
||||
|
||||
Documentation
|
||||
---------------------------------
|
||||
Gramps documentation is supplied in the form of SGML files, which will be
|
||||
installed in the GNOME help path(*). Recent versions of Nautilus and Galeon
|
||||
can generate HTML on-the-fly documents from these. For more information on
|
||||
building HTML files (including info about packages that do and do not work
|
||||
with the documentation) see the INSTALL file. To generate HTML
|
||||
documentation the following packages *MUST* installed:
|
||||
* db2html >= 0.6.9 (jw >= 1.1) to convert the SGML -> HTML
|
||||
* gnome-doc-tools-2-1 for the GNOME documentation style sheets
|
||||
The former is part of the docbook-utils package, the latter can be found
|
||||
from the developer section at gnome.org. (note that docbook-utils 0.6.10 is
|
||||
buggy)
|
||||
|
||||
One also needs png support for sgml, which should be a part of the
|
||||
gnome-doc-tools package. The /etc/sgml/catalog file should
|
||||
contain an entry pointing to PNG support. If configured properly, your
|
||||
db2html should automatically look up and use the /etc/sgml/catalog file.
|
||||
|
||||
Of course, current HTML documentation can also be found on the gramps website,
|
||||
http://gramps.sourceforge.net/help.html
|
||||
|
||||
(*) More precisely, they are installed in ${prefix}/share/gnome/help, where
|
||||
${prefix} is given by the --prefix= option to configure. If this is
|
||||
different from where your standard GNOME installation looks for help files
|
||||
and documentation, then set your GNOMEDIR environment variable to the
|
||||
${prefix} path before starting gramps. For example, if you are installing
|
||||
gramps in /usr/local/, then type the following:
|
||||
in tcsh: setenv GNOMEDIR /usr/local/
|
||||
in bash: GNOMEDIR=/usr/local/ ; export GNOMEDIR
|
||||
|
||||
|
||||
Building on non-Linux systems: i18n support and GNU make
|
||||
--------------------------------------------------------
|
||||
|
||||
Linux has libintl (GNU gettext) built-in the C library. Other systems
|
||||
are likely to have libintl as a separate or optional library. Also,
|
||||
other systems may have a different make utility.
|
||||
|
||||
On those systems, like FreeBSD, you must tell configure where to find
|
||||
the libintl library and the libintl.h include file:
|
||||
|
||||
CPPFLAGS="-I/usr/local/include -L/usr/local/lib" ./configure --prefix=/usr/local
|
||||
|
||||
Once you have done this, if make fails, use gmake (the name FreeBSD
|
||||
gives to GNU make) instead.
|
||||
|
||||
--------------------------------
|
||||
Donald Allingham
|
||||
dallingham@users.sourceforge.net
|
31
TODO
Normal file
@ -0,0 +1,31 @@
|
||||
* Allow for multiple notes. A tabbed interface would be really useful,
|
||||
since there are no titles for notes. Not all objects would necessarily
|
||||
need multiple notes. Determine which ones should and shouldn't.
|
||||
* Drag and drop should display the icon we are dragging instead of just
|
||||
the default icon. Nautilus does this very effectively, and GTK has
|
||||
support for this.
|
||||
* Provide an "import" of a gramps package. Not too difficult to do this,
|
||||
since there is already a ReadTarFile class which will unpackage the
|
||||
file. Needs have an interface built around it.
|
||||
* Catch uncaught exceptions at the top level, notifiy the user, and
|
||||
store the results in a file that can be emailed. Have the start of
|
||||
this with the gramps.err file, but most users don't realize that
|
||||
this file has been created. Some type of notification is needed.
|
||||
* Speed up the reading of the database. The python XML routines are not
|
||||
as fast as I would like, and it can take a minute or so to read a
|
||||
large database. This is way too slow.
|
||||
* Finish the generic load of revision control interfaces to allow a
|
||||
revision control plugin system. Most of the work is already done.
|
||||
* Extend the gramps package exporting to export to a ISO-9660 CD-ROM
|
||||
image. Thumbnails would need to be exported for this as well, since
|
||||
the CD-ROM would be read-only after burning.
|
||||
* Disable the save buttons if gramps database is marked read-only. Disable
|
||||
the adding of media objects as well, since this will cause gramps to
|
||||
try to create a thumbnail in a readonly database.
|
||||
* OpenOffice zip file is not handled very gracefully. Uses the "system"
|
||||
call to generate the zip file using the hard coded path of /usr/bin/zip.
|
||||
Python 2.0 provides a zip interface, so this may need to hold off until
|
||||
the move is made to Python 2.0.
|
||||
* Sort all lists
|
||||
* Startup tips.
|
||||
* And a whole lot more....
|
939
aclocal.m4
vendored
Normal file
@ -0,0 +1,939 @@
|
||||
# aclocal.m4 generated automatically by aclocal 1.6.3 -*- Autoconf -*-
|
||||
|
||||
# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
# Free Software Foundation, Inc.
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
# Do all the work for Automake. -*- Autoconf -*-
|
||||
|
||||
# This macro actually does too much some checks are only needed if
|
||||
# your package does certain things. But this isn't really a big deal.
|
||||
|
||||
# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# serial 8
|
||||
|
||||
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
|
||||
# written in clear, in which case automake, when reading aclocal.m4,
|
||||
# will think it sees a *use*, and therefore will trigger all it's
|
||||
# C support machinery. Also note that it means that autoscan, seeing
|
||||
# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
|
||||
|
||||
|
||||
AC_PREREQ([2.52])
|
||||
|
||||
# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow
|
||||
# the ones we care about.
|
||||
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
|
||||
|
||||
# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
|
||||
# AM_INIT_AUTOMAKE([OPTIONS])
|
||||
# -----------------------------------------------
|
||||
# The call with PACKAGE and VERSION arguments is the old style
|
||||
# call (pre autoconf-2.50), which is being phased out. PACKAGE
|
||||
# and VERSION should now be passed to AC_INIT and removed from
|
||||
# the call to AM_INIT_AUTOMAKE.
|
||||
# We support both call styles for the transition. After
|
||||
# the next Automake release, Autoconf can make the AC_INIT
|
||||
# arguments mandatory, and then we can depend on a new Autoconf
|
||||
# release and drop the old call support.
|
||||
AC_DEFUN([AM_INIT_AUTOMAKE],
|
||||
[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
|
||||
AC_REQUIRE([AC_PROG_INSTALL])dnl
|
||||
# test to see if srcdir already configured
|
||||
if test "`cd $srcdir && pwd`" != "`pwd`" &&
|
||||
test -f $srcdir/config.status; then
|
||||
AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
|
||||
fi
|
||||
|
||||
# Define the identity of the package.
|
||||
dnl Distinguish between old-style and new-style calls.
|
||||
m4_ifval([$2],
|
||||
[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
|
||||
AC_SUBST([PACKAGE], [$1])dnl
|
||||
AC_SUBST([VERSION], [$2])],
|
||||
[_AM_SET_OPTIONS([$1])dnl
|
||||
AC_SUBST([PACKAGE], [AC_PACKAGE_TARNAME])dnl
|
||||
AC_SUBST([VERSION], [AC_PACKAGE_VERSION])])dnl
|
||||
|
||||
_AM_IF_OPTION([no-define],,
|
||||
[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
|
||||
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
|
||||
|
||||
# Some tools Automake needs.
|
||||
AC_REQUIRE([AM_SANITY_CHECK])dnl
|
||||
AC_REQUIRE([AC_ARG_PROGRAM])dnl
|
||||
AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
|
||||
AM_MISSING_PROG(AUTOCONF, autoconf)
|
||||
AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
|
||||
AM_MISSING_PROG(AUTOHEADER, autoheader)
|
||||
AM_MISSING_PROG(MAKEINFO, makeinfo)
|
||||
AM_MISSING_PROG(AMTAR, tar)
|
||||
AM_PROG_INSTALL_SH
|
||||
AM_PROG_INSTALL_STRIP
|
||||
# We need awk for the "check" target. The system "awk" is bad on
|
||||
# some platforms.
|
||||
AC_REQUIRE([AC_PROG_AWK])dnl
|
||||
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
|
||||
|
||||
_AM_IF_OPTION([no-dependencies],,
|
||||
[AC_PROVIDE_IFELSE([AC_PROG_][CC],
|
||||
[_AM_DEPENDENCIES(CC)],
|
||||
[define([AC_PROG_][CC],
|
||||
defn([AC_PROG_][CC])[_AM_DEPENDENCIES(CC)])])dnl
|
||||
AC_PROVIDE_IFELSE([AC_PROG_][CXX],
|
||||
[_AM_DEPENDENCIES(CXX)],
|
||||
[define([AC_PROG_][CXX],
|
||||
defn([AC_PROG_][CXX])[_AM_DEPENDENCIES(CXX)])])dnl
|
||||
])
|
||||
])
|
||||
|
||||
# Copyright 2002 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
|
||||
# AM_AUTOMAKE_VERSION(VERSION)
|
||||
# ----------------------------
|
||||
# Automake X.Y traces this macro to ensure aclocal.m4 has been
|
||||
# generated from the m4 files accompanying Automake X.Y.
|
||||
AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.6"])
|
||||
|
||||
# AM_SET_CURRENT_AUTOMAKE_VERSION
|
||||
# -------------------------------
|
||||
# Call AM_AUTOMAKE_VERSION so it can be traced.
|
||||
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
|
||||
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
||||
[AM_AUTOMAKE_VERSION([1.6.3])])
|
||||
|
||||
# Helper functions for option handling. -*- Autoconf -*-
|
||||
|
||||
# Copyright 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# serial 2
|
||||
|
||||
# _AM_MANGLE_OPTION(NAME)
|
||||
# -----------------------
|
||||
AC_DEFUN([_AM_MANGLE_OPTION],
|
||||
[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
|
||||
|
||||
# _AM_SET_OPTION(NAME)
|
||||
# ------------------------------
|
||||
# Set option NAME. Presently that only means defining a flag for this option.
|
||||
AC_DEFUN([_AM_SET_OPTION],
|
||||
[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
|
||||
|
||||
# _AM_SET_OPTIONS(OPTIONS)
|
||||
# ----------------------------------
|
||||
# OPTIONS is a space-separated list of Automake options.
|
||||
AC_DEFUN([_AM_SET_OPTIONS],
|
||||
[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
|
||||
|
||||
# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
|
||||
# -------------------------------------------
|
||||
# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
|
||||
AC_DEFUN([_AM_IF_OPTION],
|
||||
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
|
||||
|
||||
#
|
||||
# Check to make sure that the build environment is sane.
|
||||
#
|
||||
|
||||
# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# serial 3
|
||||
|
||||
# AM_SANITY_CHECK
|
||||
# ---------------
|
||||
AC_DEFUN([AM_SANITY_CHECK],
|
||||
[AC_MSG_CHECKING([whether build environment is sane])
|
||||
# Just in case
|
||||
sleep 1
|
||||
echo timestamp > conftest.file
|
||||
# Do `set' in a subshell so we don't clobber the current shell's
|
||||
# arguments. Must try -L first in case configure is actually a
|
||||
# symlink; some systems play weird games with the mod time of symlinks
|
||||
# (eg FreeBSD returns the mod time of the symlink's containing
|
||||
# directory).
|
||||
if (
|
||||
set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
|
||||
if test "$[*]" = "X"; then
|
||||
# -L didn't work.
|
||||
set X `ls -t $srcdir/configure conftest.file`
|
||||
fi
|
||||
rm -f conftest.file
|
||||
if test "$[*]" != "X $srcdir/configure conftest.file" \
|
||||
&& test "$[*]" != "X conftest.file $srcdir/configure"; then
|
||||
|
||||
# If neither matched, then we have a broken ls. This can happen
|
||||
# if, for instance, CONFIG_SHELL is bash and it inherits a
|
||||
# broken ls alias from the environment. This has actually
|
||||
# happened. Such a system could not be considered "sane".
|
||||
AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
|
||||
alias in your environment])
|
||||
fi
|
||||
|
||||
test "$[2]" = conftest.file
|
||||
)
|
||||
then
|
||||
# Ok.
|
||||
:
|
||||
else
|
||||
AC_MSG_ERROR([newly created file is older than distributed files!
|
||||
Check your system clock])
|
||||
fi
|
||||
AC_MSG_RESULT(yes)])
|
||||
|
||||
# -*- Autoconf -*-
|
||||
|
||||
|
||||
# Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# serial 3
|
||||
|
||||
# AM_MISSING_PROG(NAME, PROGRAM)
|
||||
# ------------------------------
|
||||
AC_DEFUN([AM_MISSING_PROG],
|
||||
[AC_REQUIRE([AM_MISSING_HAS_RUN])
|
||||
$1=${$1-"${am_missing_run}$2"}
|
||||
AC_SUBST($1)])
|
||||
|
||||
|
||||
# AM_MISSING_HAS_RUN
|
||||
# ------------------
|
||||
# Define MISSING if not defined so far and test if it supports --run.
|
||||
# If it does, set am_missing_run to use it, otherwise, to nothing.
|
||||
AC_DEFUN([AM_MISSING_HAS_RUN],
|
||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||
test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
|
||||
# Use eval to expand $SHELL
|
||||
if eval "$MISSING --run true"; then
|
||||
am_missing_run="$MISSING --run "
|
||||
else
|
||||
am_missing_run=
|
||||
AC_MSG_WARN([`missing' script is too old or missing])
|
||||
fi
|
||||
])
|
||||
|
||||
# AM_AUX_DIR_EXPAND
|
||||
|
||||
# Copyright 2001 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
|
||||
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
|
||||
# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
|
||||
#
|
||||
# Of course, Automake must honor this variable whenever it calls a
|
||||
# tool from the auxiliary directory. The problem is that $srcdir (and
|
||||
# therefore $ac_aux_dir as well) can be either absolute or relative,
|
||||
# depending on how configure is run. This is pretty annoying, since
|
||||
# it makes $ac_aux_dir quite unusable in subdirectories: in the top
|
||||
# source directory, any form will work fine, but in subdirectories a
|
||||
# relative path needs to be adjusted first.
|
||||
#
|
||||
# $ac_aux_dir/missing
|
||||
# fails when called from a subdirectory if $ac_aux_dir is relative
|
||||
# $top_srcdir/$ac_aux_dir/missing
|
||||
# fails if $ac_aux_dir is absolute,
|
||||
# fails when called from a subdirectory in a VPATH build with
|
||||
# a relative $ac_aux_dir
|
||||
#
|
||||
# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
|
||||
# are both prefixed by $srcdir. In an in-source build this is usually
|
||||
# harmless because $srcdir is `.', but things will broke when you
|
||||
# start a VPATH build or use an absolute $srcdir.
|
||||
#
|
||||
# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
|
||||
# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
|
||||
# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
|
||||
# and then we would define $MISSING as
|
||||
# MISSING="\${SHELL} $am_aux_dir/missing"
|
||||
# This will work as long as MISSING is not called from configure, because
|
||||
# unfortunately $(top_srcdir) has no meaning in configure.
|
||||
# However there are other variables, like CC, which are often used in
|
||||
# configure, and could therefore not use this "fixed" $ac_aux_dir.
|
||||
#
|
||||
# Another solution, used here, is to always expand $ac_aux_dir to an
|
||||
# absolute PATH. The drawback is that using absolute paths prevent a
|
||||
# configured tree to be moved without reconfiguration.
|
||||
|
||||
# Rely on autoconf to set up CDPATH properly.
|
||||
AC_PREREQ([2.50])
|
||||
|
||||
AC_DEFUN([AM_AUX_DIR_EXPAND], [
|
||||
# expand $ac_aux_dir to an absolute path
|
||||
am_aux_dir=`cd $ac_aux_dir && pwd`
|
||||
])
|
||||
|
||||
# AM_PROG_INSTALL_SH
|
||||
# ------------------
|
||||
# Define $install_sh.
|
||||
|
||||
# Copyright 2001 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
AC_DEFUN([AM_PROG_INSTALL_SH],
|
||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||
install_sh=${install_sh-"$am_aux_dir/install-sh"}
|
||||
AC_SUBST(install_sh)])
|
||||
|
||||
# AM_PROG_INSTALL_STRIP
|
||||
|
||||
# Copyright 2001 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# One issue with vendor `install' (even GNU) is that you can't
|
||||
# specify the program used to strip binaries. This is especially
|
||||
# annoying in cross-compiling environments, where the build's strip
|
||||
# is unlikely to handle the host's binaries.
|
||||
# Fortunately install-sh will honor a STRIPPROG variable, so we
|
||||
# always use install-sh in `make install-strip', and initialize
|
||||
# STRIPPROG with the value of the STRIP variable (set by the user).
|
||||
AC_DEFUN([AM_PROG_INSTALL_STRIP],
|
||||
[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
|
||||
# Installed binaries are usually stripped using `strip' when the user
|
||||
# run `make install-strip'. However `strip' might not be the right
|
||||
# tool to use in cross-compilation environments, therefore Automake
|
||||
# will honor the `STRIP' environment variable to overrule this program.
|
||||
dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
|
||||
if test "$cross_compiling" != no; then
|
||||
AC_CHECK_TOOL([STRIP], [strip], :)
|
||||
fi
|
||||
INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
|
||||
AC_SUBST([INSTALL_STRIP_PROGRAM])])
|
||||
|
||||
# serial 4 -*- Autoconf -*-
|
||||
|
||||
# Copyright 1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
|
||||
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
|
||||
# written in clear, in which case automake, when reading aclocal.m4,
|
||||
# will think it sees a *use*, and therefore will trigger all it's
|
||||
# C support machinery. Also note that it means that autoscan, seeing
|
||||
# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
|
||||
|
||||
|
||||
|
||||
# _AM_DEPENDENCIES(NAME)
|
||||
# ----------------------
|
||||
# See how the compiler implements dependency checking.
|
||||
# NAME is "CC", "CXX", "GCJ", or "OBJC".
|
||||
# We try a few techniques and use that to set a single cache variable.
|
||||
#
|
||||
# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
|
||||
# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
|
||||
# dependency, and given that the user is not expected to run this macro,
|
||||
# just rely on AC_PROG_CC.
|
||||
AC_DEFUN([_AM_DEPENDENCIES],
|
||||
[AC_REQUIRE([AM_SET_DEPDIR])dnl
|
||||
AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
|
||||
AC_REQUIRE([AM_MAKE_INCLUDE])dnl
|
||||
AC_REQUIRE([AM_DEP_TRACK])dnl
|
||||
|
||||
ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
|
||||
[$1], CXX, [depcc="$CXX" am_compiler_list=],
|
||||
[$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
|
||||
[$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
|
||||
[depcc="$$1" am_compiler_list=])
|
||||
|
||||
AC_CACHE_CHECK([dependency style of $depcc],
|
||||
[am_cv_$1_dependencies_compiler_type],
|
||||
[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
|
||||
# We make a subdir and do the tests there. Otherwise we can end up
|
||||
# making bogus files that we don't know about and never remove. For
|
||||
# instance it was reported that on HP-UX the gcc test will end up
|
||||
# making a dummy file named `D' -- because `-MD' means `put the output
|
||||
# in D'.
|
||||
mkdir conftest.dir
|
||||
# Copy depcomp to subdir because otherwise we won't find it if we're
|
||||
# using a relative directory.
|
||||
cp "$am_depcomp" conftest.dir
|
||||
cd conftest.dir
|
||||
|
||||
am_cv_$1_dependencies_compiler_type=none
|
||||
if test "$am_compiler_list" = ""; then
|
||||
am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
|
||||
fi
|
||||
for depmode in $am_compiler_list; do
|
||||
# We need to recreate these files for each test, as the compiler may
|
||||
# overwrite some of them when testing with obscure command lines.
|
||||
# This happens at least with the AIX C compiler.
|
||||
echo '#include "conftest.h"' > conftest.c
|
||||
echo 'int i;' > conftest.h
|
||||
echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf
|
||||
|
||||
case $depmode in
|
||||
nosideeffect)
|
||||
# after this tag, mechanisms are not by side-effect, so they'll
|
||||
# only be used when explicitly requested
|
||||
if test "x$enable_dependency_tracking" = xyes; then
|
||||
continue
|
||||
else
|
||||
break
|
||||
fi
|
||||
;;
|
||||
none) break ;;
|
||||
esac
|
||||
# We check with `-c' and `-o' for the sake of the "dashmstdout"
|
||||
# mode. It turns out that the SunPro C++ compiler does not properly
|
||||
# handle `-M -o', and we need to detect this.
|
||||
if depmode=$depmode \
|
||||
source=conftest.c object=conftest.o \
|
||||
depfile=conftest.Po tmpdepfile=conftest.TPo \
|
||||
$SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 &&
|
||||
grep conftest.h conftest.Po > /dev/null 2>&1 &&
|
||||
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
|
||||
am_cv_$1_dependencies_compiler_type=$depmode
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
cd ..
|
||||
rm -rf conftest.dir
|
||||
else
|
||||
am_cv_$1_dependencies_compiler_type=none
|
||||
fi
|
||||
])
|
||||
AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
|
||||
])
|
||||
|
||||
|
||||
# AM_SET_DEPDIR
|
||||
# -------------
|
||||
# Choose a directory name for dependency files.
|
||||
# This macro is AC_REQUIREd in _AM_DEPENDENCIES
|
||||
AC_DEFUN([AM_SET_DEPDIR],
|
||||
[rm -f .deps 2>/dev/null
|
||||
mkdir .deps 2>/dev/null
|
||||
if test -d .deps; then
|
||||
DEPDIR=.deps
|
||||
else
|
||||
# MS-DOS does not allow filenames that begin with a dot.
|
||||
DEPDIR=_deps
|
||||
fi
|
||||
rmdir .deps 2>/dev/null
|
||||
AC_SUBST([DEPDIR])
|
||||
])
|
||||
|
||||
|
||||
# AM_DEP_TRACK
|
||||
# ------------
|
||||
AC_DEFUN([AM_DEP_TRACK],
|
||||
[AC_ARG_ENABLE(dependency-tracking,
|
||||
[ --disable-dependency-tracking Speeds up one-time builds
|
||||
--enable-dependency-tracking Do not reject slow dependency extractors])
|
||||
if test "x$enable_dependency_tracking" != xno; then
|
||||
am_depcomp="$ac_aux_dir/depcomp"
|
||||
AMDEPBACKSLASH='\'
|
||||
fi
|
||||
AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
|
||||
AC_SUBST([AMDEPBACKSLASH])
|
||||
])
|
||||
|
||||
# Generate code to set up dependency tracking. -*- Autoconf -*-
|
||||
|
||||
# Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
#serial 2
|
||||
|
||||
# _AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||
# ------------------------------
|
||||
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
[for mf in $CONFIG_FILES; do
|
||||
# Strip MF so we end up with the name of the file.
|
||||
mf=`echo "$mf" | sed -e 's/:.*$//'`
|
||||
# Check whether this is an Automake generated Makefile or not.
|
||||
# We used to match only the files named `Makefile.in', but
|
||||
# some people rename them; so instead we look at the file content.
|
||||
# Grep'ing the first line is not enough: some people post-process
|
||||
# each Makefile.in and add a new line on top of each file to say so.
|
||||
# So let's grep whole file.
|
||||
if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
|
||||
dirpart=`AS_DIRNAME("$mf")`
|
||||
else
|
||||
continue
|
||||
fi
|
||||
grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue
|
||||
# Extract the definition of DEP_FILES from the Makefile without
|
||||
# running `make'.
|
||||
DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"`
|
||||
test -z "$DEPDIR" && continue
|
||||
# When using ansi2knr, U may be empty or an underscore; expand it
|
||||
U=`sed -n -e '/^U = / s///p' < "$mf"`
|
||||
test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
|
||||
# We invoke sed twice because it is the simplest approach to
|
||||
# changing $(DEPDIR) to its actual value in the expansion.
|
||||
for file in `sed -n -e '
|
||||
/^DEP_FILES = .*\\\\$/ {
|
||||
s/^DEP_FILES = //
|
||||
:loop
|
||||
s/\\\\$//
|
||||
p
|
||||
n
|
||||
/\\\\$/ b loop
|
||||
p
|
||||
}
|
||||
/^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \
|
||||
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
|
||||
# Make sure the directory exists.
|
||||
test -f "$dirpart/$file" && continue
|
||||
fdir=`AS_DIRNAME(["$file"])`
|
||||
AS_MKDIR_P([$dirpart/$fdir])
|
||||
# echo "creating $dirpart/$file"
|
||||
echo '# dummy' > "$dirpart/$file"
|
||||
done
|
||||
done
|
||||
])# _AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||
|
||||
|
||||
# AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||
# -----------------------------
|
||||
# This macro should only be invoked once -- use via AC_REQUIRE.
|
||||
#
|
||||
# This code is only required when automatic dependency tracking
|
||||
# is enabled. FIXME. This creates each `.P' file that we will
|
||||
# need in order to bootstrap the dependency handling code.
|
||||
AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
[AC_CONFIG_COMMANDS([depfiles],
|
||||
[test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
|
||||
])
|
||||
|
||||
# Copyright 2001 Free Software Foundation, Inc. -*- Autoconf -*-
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# serial 2
|
||||
|
||||
# AM_MAKE_INCLUDE()
|
||||
# -----------------
|
||||
# Check to see how make treats includes.
|
||||
AC_DEFUN([AM_MAKE_INCLUDE],
|
||||
[am_make=${MAKE-make}
|
||||
cat > confinc << 'END'
|
||||
doit:
|
||||
@echo done
|
||||
END
|
||||
# If we don't find an include directive, just comment out the code.
|
||||
AC_MSG_CHECKING([for style of include used by $am_make])
|
||||
am__include="#"
|
||||
am__quote=
|
||||
_am_result=none
|
||||
# First try GNU make style include.
|
||||
echo "include confinc" > confmf
|
||||
# We grep out `Entering directory' and `Leaving directory'
|
||||
# messages which can occur if `w' ends up in MAKEFLAGS.
|
||||
# In particular we don't look at `^make:' because GNU make might
|
||||
# be invoked under some other name (usually "gmake"), in which
|
||||
# case it prints its new name instead of `make'.
|
||||
if test "`$am_make -s -f confmf 2> /dev/null | fgrep -v 'ing directory'`" = "done"; then
|
||||
am__include=include
|
||||
am__quote=
|
||||
_am_result=GNU
|
||||
fi
|
||||
# Now try BSD make style include.
|
||||
if test "$am__include" = "#"; then
|
||||
echo '.include "confinc"' > confmf
|
||||
if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
|
||||
am__include=.include
|
||||
am__quote="\""
|
||||
_am_result=BSD
|
||||
fi
|
||||
fi
|
||||
AC_SUBST(am__include)
|
||||
AC_SUBST(am__quote)
|
||||
AC_MSG_RESULT($_am_result)
|
||||
rm -f confinc confmf
|
||||
])
|
||||
|
||||
# AM_CONDITIONAL -*- Autoconf -*-
|
||||
|
||||
# Copyright 1997, 2000, 2001 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# serial 5
|
||||
|
||||
AC_PREREQ(2.52)
|
||||
|
||||
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
|
||||
# -------------------------------------
|
||||
# Define a conditional.
|
||||
AC_DEFUN([AM_CONDITIONAL],
|
||||
[ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
|
||||
[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
|
||||
AC_SUBST([$1_TRUE])
|
||||
AC_SUBST([$1_FALSE])
|
||||
if $2; then
|
||||
$1_TRUE=
|
||||
$1_FALSE='#'
|
||||
else
|
||||
$1_TRUE='#'
|
||||
$1_FALSE=
|
||||
fi
|
||||
AC_CONFIG_COMMANDS_PRE(
|
||||
[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
|
||||
AC_MSG_ERROR([conditional \"$1\" was never defined.
|
||||
Usually this means the macro was only invoked conditionally.])
|
||||
fi])])
|
||||
|
||||
|
||||
# Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# AM_PATH_PYTHON([MINIMUM-VERSION])
|
||||
|
||||
# Adds support for distributing Python modules and packages. To
|
||||
# install modules, copy them to $(pythondir), using the python_PYTHON
|
||||
# automake variable. To install a package with the same name as the
|
||||
# automake package, install to $(pkgpythondir), or use the
|
||||
# pkgpython_PYTHON automake variable.
|
||||
|
||||
# The variables $(pyexecdir) and $(pkgpyexecdir) are provided as
|
||||
# locations to install python extension modules (shared libraries).
|
||||
# Another macro is required to find the appropriate flags to compile
|
||||
# extension modules.
|
||||
|
||||
# If your package is configured with a different prefix to python,
|
||||
# users will have to add the install directory to the PYTHONPATH
|
||||
# environment variable, or create a .pth file (see the python
|
||||
# documentation for details).
|
||||
|
||||
# If the MINIUMUM-VERSION argument is passed, AM_PATH_PYTHON will
|
||||
# cause an error if the version of python installed on the system
|
||||
# doesn't meet the requirement. MINIMUM-VERSION should consist of
|
||||
# numbers and dots only.
|
||||
|
||||
AC_DEFUN([AM_PATH_PYTHON],
|
||||
[
|
||||
dnl Find a Python interpreter. Python versions prior to 1.5 are not
|
||||
dnl supported because the default installation locations changed from
|
||||
dnl $prefix/lib/site-python in 1.4 to $prefix/lib/python1.5/site-packages
|
||||
dnl in 1.5.
|
||||
m4_define([_AM_PYTHON_INTERPRETER_LIST],
|
||||
[python python2 python2.2 python2.1 python2.0 python1.6 python1.5])
|
||||
|
||||
m4_if([$1],[],[
|
||||
dnl No version check is needed.
|
||||
# Find any Python interpreter.
|
||||
AC_PATH_PROG([PYTHON], _AM_PYTHON_INTERPRETER_LIST)],[
|
||||
dnl A version check is needed.
|
||||
if test -n "$PYTHON"; then
|
||||
# If the user set $PYTHON, use it and don't search something else.
|
||||
AC_MSG_CHECKING([whether $PYTHON version >= $1])
|
||||
AM_PYTHON_CHECK_VERSION([$PYTHON], [$1],
|
||||
[AC_MSG_RESULT(yes)],
|
||||
[AC_MSG_ERROR(too old)])
|
||||
else
|
||||
# Otherwise, try each interpreter until we find one that satisfies
|
||||
# VERSION.
|
||||
AC_CACHE_CHECK([for a Python interpreter with version >= $1],
|
||||
[am_cv_pathless_PYTHON],[
|
||||
for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST : ; do
|
||||
if test "$am_cv_pathless_PYTHON" = : ; then
|
||||
AC_MSG_ERROR([no suitable Python interpreter found])
|
||||
fi
|
||||
AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break])
|
||||
done])
|
||||
# Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
|
||||
AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON])
|
||||
fi
|
||||
])
|
||||
|
||||
dnl Query Python for its version number. Getting [:3] seems to be
|
||||
dnl the best way to do this; it's what "site.py" does in the standard
|
||||
dnl library.
|
||||
|
||||
AC_CACHE_CHECK([for $am_cv_pathless_PYTHON version], [am_cv_python_version],
|
||||
[am_cv_python_version=`$PYTHON -c "import sys; print sys.version[[:3]]"`])
|
||||
AC_SUBST([PYTHON_VERSION], [$am_cv_python_version])
|
||||
|
||||
dnl Use the values of $prefix and $exec_prefix for the corresponding
|
||||
dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made
|
||||
dnl distinct variables so they can be overridden if need be. However,
|
||||
dnl general consensus is that you shouldn't need this ability.
|
||||
|
||||
AC_SUBST([PYTHON_PREFIX], ['${prefix}'])
|
||||
AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}'])
|
||||
|
||||
dnl At times (like when building shared libraries) you may want
|
||||
dnl to know which OS platform Python thinks this is.
|
||||
|
||||
AC_CACHE_CHECK([for $am_cv_pathless_PYTHON platform],
|
||||
[am_cv_python_platform],
|
||||
[am_cv_python_platform=`$PYTHON -c "import sys; print sys.platform"`])
|
||||
AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
|
||||
|
||||
|
||||
dnl Set up 4 directories:
|
||||
|
||||
dnl pythondir -- where to install python scripts. This is the
|
||||
dnl site-packages directory, not the python standard library
|
||||
dnl directory like in previous automake betas. This behaviour
|
||||
dnl is more consistent with lispdir.m4 for example.
|
||||
dnl
|
||||
dnl Also, if the package prefix isn't the same as python's prefix,
|
||||
dnl then the old $(pythondir) was pretty useless.
|
||||
|
||||
AC_SUBST([pythondir],
|
||||
[$PYTHON_PREFIX"/lib/python"$PYTHON_VERSION/site-packages])
|
||||
|
||||
dnl pkgpythondir -- $PACKAGE directory under pythondir. Was
|
||||
dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is
|
||||
dnl more consistent with the rest of automake.
|
||||
dnl Maybe this should be put in python.am?
|
||||
|
||||
AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE])
|
||||
|
||||
dnl pyexecdir -- directory for installing python extension modules
|
||||
dnl (shared libraries) Was PYTHON_SITE_EXEC in previous betas.
|
||||
|
||||
AC_SUBST([pyexecdir],
|
||||
[${PYTHON_EXEC_PREFIX}/lib/python${PYTHON_VERSION}/site-packages])
|
||||
|
||||
dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE)
|
||||
dnl Maybe this should be put in python.am?
|
||||
|
||||
AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE])
|
||||
])
|
||||
|
||||
|
||||
# AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
|
||||
# ---------------------------------------------------------------------------
|
||||
# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION.
|
||||
# Run ACTION-IF-FALSE otherwise.
|
||||
# This test uses sys.hexversion instead of the string equivalant (first
|
||||
# word of sys.version), in order to cope with versions such as 2.2c1.
|
||||
# hexversion has been introduced in Python 1.5.2; it's probably not
|
||||
# worth to support older versions (1.5.1 was released on October 31, 1998).
|
||||
AC_DEFUN([AM_PYTHON_CHECK_VERSION],
|
||||
[prog="import sys, string
|
||||
# split strings by '.' and convert to numeric. Append some zeros
|
||||
# because we need at least 4 digits for the hex conversion.
|
||||
minver = map(int, string.split('$2', '.')) + [[0, 0, 0]]
|
||||
minverhex = 0
|
||||
for i in xrange(0, 4): minverhex = (minverhex << 8) + minver[[i]]
|
||||
sys.exit(sys.hexversion < minverhex)"
|
||||
AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
|
||||
|
||||
# Copyright 2001 Free Software Foundation, Inc. -*- Autoconf -*-
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
# 02111-1307, USA.
|
||||
|
||||
# AM_RUN_LOG(COMMAND)
|
||||
# -------------------
|
||||
# Run COMMAND, save the exit status in ac_status, and log it.
|
||||
# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
|
||||
AC_DEFUN([AM_RUN_LOG],
|
||||
[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
|
||||
($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
|
||||
(exit $ac_status); }])
|
||||
|
96
autogen.sh
Executable file
@ -0,0 +1,96 @@
|
||||
#!/bin/sh
|
||||
# Run this to generate all the initial makefiles, etc.
|
||||
# shamelessly borrowed and hacked from the Galeon source distribution
|
||||
|
||||
srcdir=`dirname $0`
|
||||
test -z "$srcdir" && srcdir=.
|
||||
|
||||
PKG_NAME="gramps"
|
||||
|
||||
(test -f $srcdir/configure.in \
|
||||
&& test -f $srcdir/src/gramps_main.py) || {
|
||||
echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
|
||||
echo " top-level $PKG_NAME directory"
|
||||
exit 1
|
||||
}
|
||||
|
||||
DIE=0
|
||||
|
||||
|
||||
(autoconf --version) < /dev/null > /dev/null 2>&1 || {
|
||||
echo
|
||||
echo "**Error**: You must have \`autoconf' installed to compile $PKG_NAME."
|
||||
echo "Download the appropriate package for your distribution,"
|
||||
echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
|
||||
DIE=1
|
||||
}
|
||||
|
||||
(automake --version) < /dev/null > /dev/null 2>&1 || {
|
||||
echo
|
||||
echo "**Error**: You must have \`automake' installed to compile $PKG_NAME."
|
||||
echo "Get ftp://ftp.gnu.org/pub/gnu/automake/automake-1.6.tar.gz"
|
||||
echo "(or a newer version if it is available)"
|
||||
DIE=1
|
||||
NO_AUTOMAKE=yes
|
||||
}
|
||||
|
||||
|
||||
# if no automake, don't bother testing for aclocal
|
||||
test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || {
|
||||
echo
|
||||
echo "**Error**: Missing \`aclocal'. The version of \`automake'"
|
||||
echo "installed doesn't appear recent enough."
|
||||
echo "Get ftp://ftp.gnu.org/pub/gnu/automake/automake-1.6.tar.gz"
|
||||
echo "(or a newer version if it is available)"
|
||||
DIE=1
|
||||
}
|
||||
|
||||
if test "$DIE" -eq 1; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test -z "$*"; then
|
||||
echo "**Warning**: I am going to run \`configure' with no arguments."
|
||||
echo "If you wish to pass any to it, please specify them on the"
|
||||
echo \`$0\'" command line."
|
||||
echo
|
||||
fi
|
||||
|
||||
case $CC in
|
||||
xlc )
|
||||
am_opt=--include-deps;;
|
||||
esac
|
||||
|
||||
|
||||
dr=$srcdir
|
||||
echo processing $dr
|
||||
( cd $dr
|
||||
aclocalinclude="$ACLOCAL_FLAGS"
|
||||
echo "Running aclocal $aclocalinclude ..."
|
||||
aclocal $aclocalinclude || {
|
||||
echo
|
||||
echo "**Error**: aclocal failed. This may mean that you have not"
|
||||
echo "installed all of the packages you need, or you may need to"
|
||||
echo "set ACLOCAL_FLAGS to include \"-I \$prefix/share/aclocal\""
|
||||
echo "for the prefix where you installed the packages whose"
|
||||
echo "macros were not found"
|
||||
exit 1
|
||||
}
|
||||
|
||||
echo "Running automake --gnu $am_opt ..."
|
||||
automake --add-missing --gnu $am_opt ||
|
||||
{ echo "**Error**: automake failed."; exit 1; }
|
||||
echo "Running autoconf ..."
|
||||
autoconf || { echo "**Error**: autoconf failed."; exit 1; }
|
||||
) || exit 1
|
||||
|
||||
echo "Setting py-compile script executable ..."
|
||||
chmod 755 py-compile
|
||||
|
||||
if test x$NOCONFIGURE = x; then
|
||||
echo Running $srcdir/configure $conf_flags "$@" ...
|
||||
$srcdir/configure $conf_flags "$@" \
|
||||
&& echo Now type \`make\' to compile $PKG_NAME || exit 1
|
||||
else
|
||||
echo Skipping configure process.
|
||||
fi
|
293
configure.in
Normal file
@ -0,0 +1,293 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
dnl May need to run automake && aclocal first
|
||||
AC_INIT(src/gramps.py)
|
||||
AM_INIT_AUTOMAKE(gramps, 0.9.0pre1)
|
||||
RELEASE=rc4
|
||||
|
||||
VERSIONSTRING=$VERSION
|
||||
if test x"$RELEASE" != "x"
|
||||
then
|
||||
VERSIONSTRING="$VERSION-$RELEASE"
|
||||
fi
|
||||
|
||||
AC_SUBST(PACKAGE)
|
||||
AC_SUBST(VERSION)
|
||||
AC_SUBST(RELEASE)
|
||||
AC_SUBST(VERSIONSTRING)
|
||||
|
||||
AC_PATH_PROG(MSGFMT, msgfmt)
|
||||
AC_SUBST(MSGFMT)
|
||||
|
||||
LANGUAGES="sv de fr es it pt_BR ru da_DK cs"
|
||||
AC_SUBST(LANGUAGES)
|
||||
|
||||
DISTLANGS=
|
||||
POFILES=
|
||||
MOFILES=
|
||||
for lang in $LANGUAGES; do
|
||||
POFILES="$POFILES $lang.po"
|
||||
MOFILES="$MOFILES $lang.mo"
|
||||
done
|
||||
AC_SUBST(POFILES)
|
||||
AC_SUBST(MOFILES)
|
||||
|
||||
dnl Checks for programs.
|
||||
dnl We first only check for python >= 1.5
|
||||
AM_PATH_PYTHON(2.2)
|
||||
|
||||
dnl override automatic python detection with our own place
|
||||
pythondir=\${prefix}/share
|
||||
pyexecdir=\${prefix}/share
|
||||
pkgpythondir=\${prefix}/share/\${PACKAGE}
|
||||
pkgpyexecdir=\${prefix}/share/\${PACKAGE}
|
||||
|
||||
AC_PATH_PROG(BINSH, sh)
|
||||
|
||||
changequote(<<, >>)dnl
|
||||
PYTHON_VERSION=`$PYTHON -c "import sys; print sys.version[:3]"`
|
||||
changequote([, ])dnl
|
||||
|
||||
if test "$PYTHON_VERSION" != "2.2"
|
||||
then
|
||||
AC_PATH_PROG(PYTHON22, python2.2)
|
||||
else
|
||||
PYTHON22=$PYTHON
|
||||
fi
|
||||
|
||||
AC_PATH_PROG(ZIP, zip)
|
||||
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_MAKE_SET
|
||||
|
||||
AC_PROG_CC
|
||||
|
||||
AC_CHECK_HEADER(libintl.h)
|
||||
|
||||
AC_CHECK_LIB(c,textdomain,LIBS="",
|
||||
[ AC_CHECK_LIB(intl,textdomain,
|
||||
LIBS="-lintl",
|
||||
AC_MSG_ERROR("Could not find internationalization libraries"))
|
||||
])
|
||||
|
||||
dnl Check for programs
|
||||
|
||||
AC_CHECK_PROG(HAVE_GNOME_CONFIG, gnome-config, "YES", "NO")
|
||||
GNOMEHELP=`gnome-config --prefix`
|
||||
|
||||
dnl Check if python bindings for gtk are installed
|
||||
|
||||
AC_MSG_CHECKING(Python bindings for sax/xml)
|
||||
changequote(,)
|
||||
cat > conftest.py <<EOF
|
||||
try:
|
||||
from xml.sax import make_parser, handler
|
||||
f = open("conftest.out", "w")
|
||||
f.write("YES")
|
||||
f.close()
|
||||
except ImportError:
|
||||
|
||||
try:
|
||||
from _xmlplus.sax import make_parser, handler
|
||||
f = open("conftest.out", "w")
|
||||
f.write("YES")
|
||||
f.close()
|
||||
except ImportError:
|
||||
f = open("conftest.out", "w")
|
||||
f.write("NO")
|
||||
f.close()
|
||||
EOF
|
||||
changequote([, ])
|
||||
$PYTHON conftest.py
|
||||
has_sax=`cat conftest.out`
|
||||
rm -f conftest.out conftest.py
|
||||
if test "YES" != $has_sax
|
||||
then
|
||||
AC_MSG_ERROR([
|
||||
|
||||
**** The python interpreter can't find the SAX/XML bindings.])
|
||||
fi
|
||||
AC_MSG_RESULT(ok)
|
||||
|
||||
AC_MSG_CHECKING(Python bindings for gtk)
|
||||
changequote(,)
|
||||
cat > conftest.py <<EOF
|
||||
try:
|
||||
import gobject
|
||||
f = open("conftest.out", "w")
|
||||
f.write("YES")
|
||||
f.close()
|
||||
except ImportError:
|
||||
f = open("conftest.out", "w")
|
||||
f.write("NO")
|
||||
f.close()
|
||||
EOF
|
||||
changequote([, ])
|
||||
$PYTHON conftest.py
|
||||
has_pygtk=`cat conftest.out`
|
||||
rm -f conftest.out conftest.py
|
||||
if test "YES" != $has_pygtk
|
||||
then
|
||||
AC_MSG_ERROR([
|
||||
|
||||
**** The python interpreter can't find the python bindings for gtk 2.0.])
|
||||
fi
|
||||
AC_MSG_RESULT(ok)
|
||||
|
||||
AC_MSG_CHECKING(Python bindings for GNOME)
|
||||
changequote(,)
|
||||
cat > conftest.py <<EOF
|
||||
try:
|
||||
import gnome, gnome.ui
|
||||
f = open("conftest.out", "w")
|
||||
f.write("YES")
|
||||
f.close()
|
||||
except ImportError:
|
||||
f = open("conftest.out", "w")
|
||||
f.write("NO")
|
||||
f.close()
|
||||
EOF
|
||||
changequote([, ])
|
||||
$PYTHON conftest.py
|
||||
has_pygnome=`cat conftest.out`
|
||||
rm -f conftest.out conftest.py
|
||||
if test "YES" != $has_pygnome
|
||||
then
|
||||
AC_MSG_ERROR([
|
||||
**** The python interpreter can't find the python bindings for GNOME.])
|
||||
fi
|
||||
AC_MSG_RESULT(ok)
|
||||
|
||||
AC_MSG_CHECKING(Python/libglade bindings)
|
||||
changequote(,)
|
||||
cat > conftest.py <<EOF
|
||||
try:
|
||||
import gtk.glade
|
||||
f = open("conftest.out", "w")
|
||||
f.write("YES")
|
||||
f.close()
|
||||
except ImportError:
|
||||
f = open("conftest.out", "w")
|
||||
f.write("NO")
|
||||
f.close()
|
||||
EOF
|
||||
changequote([, ])
|
||||
$PYTHON conftest.py
|
||||
has_pygtk=`cat conftest.out`
|
||||
rm -f conftest.out conftest.py
|
||||
if test "YES" != $has_pygtk
|
||||
then
|
||||
AC_MSG_ERROR([
|
||||
|
||||
**** The python interpreter can't find the python bindings for libglade.])
|
||||
fi
|
||||
AC_MSG_RESULT(ok)
|
||||
|
||||
AC_MSG_CHECKING(Python bindings for gconf)
|
||||
changequote(,)
|
||||
cat > conftest.py <<EOF
|
||||
try:
|
||||
import gconf
|
||||
f = open("conftest.out", "w")
|
||||
f.write("YES")
|
||||
f.close()
|
||||
except ImportError:
|
||||
f = open("conftest.out", "w")
|
||||
f.write("NO")
|
||||
f.close()
|
||||
EOF
|
||||
changequote([, ])
|
||||
$PYTHON conftest.py
|
||||
has_gconf=`cat conftest.out`
|
||||
rm -f conftest.out conftest.py
|
||||
if test "YES" != $has_gconf
|
||||
then
|
||||
AC_MSG_ERROR([
|
||||
|
||||
**** The python interpreter can't find the python bindings for gconf.])
|
||||
fi
|
||||
AC_MSG_RESULT(ok)
|
||||
|
||||
dnl Checks for libraries.
|
||||
|
||||
dnl Checks for header files.
|
||||
|
||||
AC_MSG_CHECKING(for headers required to compile python extensions)
|
||||
|
||||
if test "$PYTHON22" != ""; then
|
||||
py_prefix=`$PYTHON22 -c "import sys; print sys.prefix"`
|
||||
py_exec_prefix=`$PYTHON22 -c "import sys; print sys.exec_prefix"`
|
||||
P22_INCLUDES="-I${py_prefix}/include/python2.2"
|
||||
if test "$py_prefix" != "$py_exec_prefix"; then
|
||||
P22_INCLUDES="$P22_INCLUDES -I${py_exec_prefix}/include/python2.2"
|
||||
fi
|
||||
if test -f "${py_exec_prefix}/include/python2.2/Python.h"
|
||||
then
|
||||
INTLLIBS="${INTLLIBS}intl22.so "
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_MSG_RESULT(ok)
|
||||
|
||||
dnl ======================================================
|
||||
dnl == Modern documentation tools (scrollkeeper) checks
|
||||
dnl == We may need a more recent version (GNOME2 will use
|
||||
dnl == scrollkeeper > 0.3) but basic scrollkeeper instructions
|
||||
dnl == use 0.1.4 example so we'll just check for that
|
||||
dnl ======================================================
|
||||
SCROLLKEEPER_REQUIRED=0.1.4
|
||||
AC_SUBST(SCROLLKEEPER_REQUIRED)
|
||||
|
||||
dnl First see that *some* version of scrollkeeper is installed
|
||||
AC_PATH_PROG(SCROLLKEEPER_CONFIG, scrollkeeper-config, no)
|
||||
if test x$SCROLLKEEPER_CONFIG = xno; then
|
||||
AC_MSG_ERROR(Couldn't find scrollkeeper-config. Please install the scrollkeeper package.)
|
||||
DISABLE_SCROLLKEEPER=1
|
||||
AC_SUBST(DISABLE_SCROLLKEEPER)
|
||||
fi
|
||||
|
||||
dnl ======================================================
|
||||
dnl == GNOME modified DTD's need jw, not db2html
|
||||
dnl ======================================================
|
||||
AC_PATH_PROG(JW, jw, no)
|
||||
if test x$JW = xno; then
|
||||
HAVE_JW="no"
|
||||
else
|
||||
HAVE_JW="yes"
|
||||
fi
|
||||
AC_SUBST(HAVE_JW)
|
||||
|
||||
dnl ======================================================
|
||||
dnl == end of modern doc tests
|
||||
dnl ======================================================
|
||||
|
||||
|
||||
AC_SUBST(BINSH)
|
||||
AC_SUBST(PYTHON)
|
||||
AC_SUBST(PYTHON_VERSION)
|
||||
AC_SUBST(GNOMEHELP)
|
||||
AC_SUBST(LIBS)
|
||||
|
||||
AC_SUBST(P15_INCLUDES)
|
||||
AC_SUBST(P20_INCLUDES)
|
||||
AC_SUBST(P21_INCLUDES)
|
||||
AC_SUBST(P22_INCLUDES)
|
||||
AC_SUBST(INTLLIBS)
|
||||
|
||||
AC_OUTPUT([
|
||||
Makefile
|
||||
src/Makefile
|
||||
src/const.py
|
||||
src/docgen/Makefile
|
||||
src/filters/Makefile
|
||||
src/plugins/Makefile
|
||||
src/data/Makefile
|
||||
src/data/templates/Makefile
|
||||
src/po/Makefile
|
||||
doc/Makefile
|
||||
doc/gramps-manual/Makefile
|
||||
doc/gramps-manual/C/Makefile
|
||||
doc/extending-gramps/Makefile
|
||||
doc/extending-gramps/C/Makefile
|
||||
omf-install/Makefile
|
||||
gramps.spec
|
||||
gramps.sh])
|
11
doc/Makefile.am
Normal file
@ -0,0 +1,11 @@
|
||||
# Process this file with automake to produce Makefile.in
|
||||
|
||||
SUBDIRS = gramps-manual extending-gramps
|
||||
|
||||
man_IN_FILES = gramps.1.in
|
||||
man_MANS = ${man_IN_FILES:.1.in=.1}
|
||||
|
||||
EXTRA_DIST = $(man_MANS) $(man_IN_FILES) sgmldocs.make
|
||||
|
||||
gramps.1: $(top_builddir)/config.status gramps.1.in
|
||||
cd $(top_builddir) && CONFIG_FILES=doc/$@ $(SHELL) ./config.status
|
409
doc/Makefile.in
Normal file
@ -0,0 +1,409 @@
|
||||
# Makefile.in generated by automake 1.6.3 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
# Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# Process this file with automake to produce Makefile.in
|
||||
SHELL = @SHELL@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
|
||||
bindir = @bindir@
|
||||
sbindir = @sbindir@
|
||||
libexecdir = @libexecdir@
|
||||
datadir = @datadir@
|
||||
sysconfdir = @sysconfdir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
localstatedir = @localstatedir@
|
||||
libdir = @libdir@
|
||||
infodir = @infodir@
|
||||
mandir = @mandir@
|
||||
includedir = @includedir@
|
||||
oldincludedir = /usr/include
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = ..
|
||||
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = @program_transform_name@
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
|
||||
EXEEXT = @EXEEXT@
|
||||
OBJEXT = @OBJEXT@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
AMTAR = @AMTAR@
|
||||
AWK = @AWK@
|
||||
BINSH = @BINSH@
|
||||
CC = @CC@
|
||||
DEPDIR = @DEPDIR@
|
||||
DISABLE_SCROLLKEEPER = @DISABLE_SCROLLKEEPER@
|
||||
GNOMEHELP = @GNOMEHELP@
|
||||
HAVE_GNOME_CONFIG = @HAVE_GNOME_CONFIG@
|
||||
HAVE_JW = @HAVE_JW@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
INTLLIBS = @INTLLIBS@
|
||||
JW = @JW@
|
||||
LANGUAGES = @LANGUAGES@
|
||||
LIBS = @LIBS@
|
||||
MOFILES = @MOFILES@
|
||||
MSGFMT = @MSGFMT@
|
||||
P15_INCLUDES = @P15_INCLUDES@
|
||||
P20_INCLUDES = @P20_INCLUDES@
|
||||
P21_INCLUDES = @P21_INCLUDES@
|
||||
P22_INCLUDES = @P22_INCLUDES@
|
||||
PACKAGE = @PACKAGE@
|
||||
POFILES = @POFILES@
|
||||
PYTHON = @PYTHON@
|
||||
PYTHON22 = @PYTHON22@
|
||||
PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
|
||||
PYTHON_PLATFORM = @PYTHON_PLATFORM@
|
||||
PYTHON_PREFIX = @PYTHON_PREFIX@
|
||||
PYTHON_VERSION = @PYTHON_VERSION@
|
||||
RELEASE = @RELEASE@
|
||||
SCROLLKEEPER_CONFIG = @SCROLLKEEPER_CONFIG@
|
||||
SCROLLKEEPER_REQUIRED = @SCROLLKEEPER_REQUIRED@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
VERSIONSTRING = @VERSIONSTRING@
|
||||
ZIP = @ZIP@
|
||||
am__include = @am__include@
|
||||
am__quote = @am__quote@
|
||||
install_sh = @install_sh@
|
||||
pkgpyexecdir = @pkgpyexecdir@
|
||||
pkgpythondir = @pkgpythondir@
|
||||
pyexecdir = @pyexecdir@
|
||||
pythondir = @pythondir@
|
||||
|
||||
SUBDIRS = gramps-manual extending-gramps
|
||||
|
||||
man_IN_FILES = gramps.1.in
|
||||
man_MANS = ${man_IN_FILES:.1.in=.1}
|
||||
|
||||
EXTRA_DIST = $(man_MANS) $(man_IN_FILES) sgmldocs.make
|
||||
subdir = doc
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_CLEAN_FILES =
|
||||
DIST_SOURCES =
|
||||
|
||||
NROFF = nroff
|
||||
MANS = $(man_MANS)
|
||||
|
||||
RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \
|
||||
uninstall-info-recursive all-recursive install-data-recursive \
|
||||
install-exec-recursive installdirs-recursive install-recursive \
|
||||
uninstall-recursive check-recursive installcheck-recursive
|
||||
DIST_COMMON = Makefile.am Makefile.in
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu doc/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
|
||||
uninstall-info-am:
|
||||
|
||||
man1dir = $(mandir)/man1
|
||||
install-man1: $(man1_MANS) $(man_MANS)
|
||||
@$(NORMAL_INSTALL)
|
||||
$(mkinstalldirs) $(DESTDIR)$(man1dir)
|
||||
@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
|
||||
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
|
||||
for i in $$l2; do \
|
||||
case "$$i" in \
|
||||
*.1*) list="$$list $$i" ;; \
|
||||
esac; \
|
||||
done; \
|
||||
for i in $$list; do \
|
||||
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
|
||||
else file=$$i; fi; \
|
||||
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
||||
case "$$ext" in \
|
||||
1*) ;; \
|
||||
*) ext='1' ;; \
|
||||
esac; \
|
||||
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
||||
inst=`echo $$inst | sed -e 's/^.*\///'`; \
|
||||
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
||||
echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \
|
||||
$(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \
|
||||
done
|
||||
uninstall-man1:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
|
||||
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
|
||||
for i in $$l2; do \
|
||||
case "$$i" in \
|
||||
*.1*) list="$$list $$i" ;; \
|
||||
esac; \
|
||||
done; \
|
||||
for i in $$list; do \
|
||||
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
||||
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
||||
inst=`echo $$inst | sed -e 's/^.*\///'`; \
|
||||
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
||||
echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \
|
||||
rm -f $(DESTDIR)$(man1dir)/$$inst; \
|
||||
done
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run `make' without going through this Makefile.
|
||||
# To change the values of `make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in `config.status', edit `config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||
# (2) otherwise, pass the desired values on the `make' command line.
|
||||
$(RECURSIVE_TARGETS):
|
||||
@set fnord $$MAKEFLAGS; amf=$$2; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
mostlyclean-recursive clean-recursive distclean-recursive \
|
||||
maintainer-clean-recursive:
|
||||
@set fnord $$MAKEFLAGS; amf=$$2; \
|
||||
dot_seen=no; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
rev=''; for subdir in $$list; do \
|
||||
if test "$$subdir" = "."; then :; else \
|
||||
rev="$$subdir $$rev"; \
|
||||
fi; \
|
||||
done; \
|
||||
rev="$$rev ."; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
for subdir in $$rev; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
|
||||
ETAGS = etags
|
||||
ETAGSFLAGS =
|
||||
|
||||
tags: TAGS
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(ETAGS_ARGS)$$tags$$unique" \
|
||||
|| $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
top_distdir = ..
|
||||
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@list='$(DISTFILES)'; for file in $$list; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkinstalldirs) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -d $(distdir)/$$subdir \
|
||||
|| mkdir $(distdir)/$$subdir \
|
||||
|| exit 1; \
|
||||
(cd $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$(top_distdir)" \
|
||||
distdir=../$(distdir)/$$subdir \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile $(MANS)
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
$(mkinstalldirs) $(DESTDIR)$(man1dir)
|
||||
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
|
||||
distclean-am: clean-am distclean-generic distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am: install-man
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-man: install-man1
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic
|
||||
|
||||
uninstall-am: uninstall-info-am uninstall-man
|
||||
|
||||
uninstall-info: uninstall-info-recursive
|
||||
|
||||
uninstall-man: uninstall-man1
|
||||
|
||||
.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \
|
||||
clean-generic clean-recursive distclean distclean-generic \
|
||||
distclean-recursive distclean-tags distdir dvi dvi-am \
|
||||
dvi-recursive info info-am info-recursive install install-am \
|
||||
install-data install-data-am install-data-recursive \
|
||||
install-exec install-exec-am install-exec-recursive \
|
||||
install-info install-info-am install-info-recursive install-man \
|
||||
install-man1 install-recursive install-strip installcheck \
|
||||
installcheck-am installdirs installdirs-am \
|
||||
installdirs-recursive maintainer-clean maintainer-clean-generic \
|
||||
maintainer-clean-recursive mostlyclean mostlyclean-generic \
|
||||
mostlyclean-recursive tags tags-recursive uninstall \
|
||||
uninstall-am uninstall-info-am uninstall-info-recursive \
|
||||
uninstall-man uninstall-man1 uninstall-recursive
|
||||
|
||||
|
||||
gramps.1: $(top_builddir)/config.status gramps.1.in
|
||||
cd $(top_builddir) && CONFIG_FILES=doc/$@ $(SHELL) ./config.status
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
10
doc/extending-gramps/C/Makefile.am
Normal file
@ -0,0 +1,10 @@
|
||||
SGML_FILES =
|
||||
|
||||
figs =
|
||||
|
||||
docname = extending-gramps
|
||||
lang = C
|
||||
omffile = extending-gramps-C.omf
|
||||
sgml_ents =
|
||||
include ${top_srcdir}/doc/sgmldocs.make
|
||||
dist-hook: app-dist-hook
|
240
doc/extending-gramps/C/Makefile.in
Normal file
@ -0,0 +1,240 @@
|
||||
# Makefile.in generated by automake 1.6.3 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
# Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
|
||||
bindir = @bindir@
|
||||
sbindir = @sbindir@
|
||||
libexecdir = @libexecdir@
|
||||
datadir = @datadir@
|
||||
sysconfdir = @sysconfdir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
localstatedir = @localstatedir@
|
||||
libdir = @libdir@
|
||||
infodir = @infodir@
|
||||
mandir = @mandir@
|
||||
includedir = @includedir@
|
||||
oldincludedir = /usr/include
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = ../../..
|
||||
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = @program_transform_name@
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
|
||||
EXEEXT = @EXEEXT@
|
||||
OBJEXT = @OBJEXT@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
AMTAR = @AMTAR@
|
||||
AWK = @AWK@
|
||||
BINSH = @BINSH@
|
||||
CC = @CC@
|
||||
DEPDIR = @DEPDIR@
|
||||
DISABLE_SCROLLKEEPER = @DISABLE_SCROLLKEEPER@
|
||||
GNOMEHELP = @GNOMEHELP@
|
||||
HAVE_GNOME_CONFIG = @HAVE_GNOME_CONFIG@
|
||||
HAVE_JW = @HAVE_JW@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
INTLLIBS = @INTLLIBS@
|
||||
JW = @JW@
|
||||
LANGUAGES = @LANGUAGES@
|
||||
LIBS = @LIBS@
|
||||
MOFILES = @MOFILES@
|
||||
MSGFMT = @MSGFMT@
|
||||
P15_INCLUDES = @P15_INCLUDES@
|
||||
P20_INCLUDES = @P20_INCLUDES@
|
||||
P21_INCLUDES = @P21_INCLUDES@
|
||||
P22_INCLUDES = @P22_INCLUDES@
|
||||
PACKAGE = @PACKAGE@
|
||||
POFILES = @POFILES@
|
||||
PYTHON = @PYTHON@
|
||||
PYTHON22 = @PYTHON22@
|
||||
PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
|
||||
PYTHON_PLATFORM = @PYTHON_PLATFORM@
|
||||
PYTHON_PREFIX = @PYTHON_PREFIX@
|
||||
PYTHON_VERSION = @PYTHON_VERSION@
|
||||
RELEASE = @RELEASE@
|
||||
SCROLLKEEPER_CONFIG = @SCROLLKEEPER_CONFIG@
|
||||
SCROLLKEEPER_REQUIRED = @SCROLLKEEPER_REQUIRED@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
VERSIONSTRING = @VERSIONSTRING@
|
||||
ZIP = @ZIP@
|
||||
am__include = @am__include@
|
||||
am__quote = @am__quote@
|
||||
install_sh = @install_sh@
|
||||
pkgpyexecdir = @pkgpyexecdir@
|
||||
pkgpythondir = @pkgpythondir@
|
||||
pyexecdir = @pyexecdir@
|
||||
pythondir = @pythondir@
|
||||
SGML_FILES =
|
||||
|
||||
figs =
|
||||
|
||||
docname = extending-gramps
|
||||
lang = C
|
||||
omffile = extending-gramps-C.omf
|
||||
sgml_ents =
|
||||
subdir = doc/extending-gramps/C
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_CLEAN_FILES =
|
||||
DIST_SOURCES =
|
||||
DIST_COMMON = Makefile.am Makefile.in
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu doc/extending-gramps/C/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
|
||||
uninstall-info-am:
|
||||
tags: TAGS
|
||||
TAGS:
|
||||
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
top_distdir = ../../..
|
||||
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@list='$(DISTFILES)'; for file in $$list; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkinstalldirs) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="${top_distdir}" distdir="$(distdir)" \
|
||||
dist-hook
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile
|
||||
|
||||
installdirs:
|
||||
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic
|
||||
|
||||
uninstall-am: uninstall-info-am
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic distclean \
|
||||
distclean-generic distdir dvi dvi-am info info-am install \
|
||||
install-am install-data install-data-am install-exec \
|
||||
install-exec-am install-info install-info-am install-man \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-generic uninstall uninstall-am uninstall-info-am
|
||||
|
||||
include ${top_srcdir}/doc/sgmldocs.make
|
||||
dist-hook: app-dist-hook
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
14
doc/extending-gramps/C/extending-gramps-C.omf
Normal file
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<omf>
|
||||
<resource>
|
||||
<title>
|
||||
Writing GRAMPS Extensions
|
||||
</title>
|
||||
<subject>
|
||||
<category>GNOME|Applications</category>
|
||||
</subject>
|
||||
<format mime="text/sgml"/>
|
||||
<identifier url="extending-gramps.sgml"/>
|
||||
<language code="C"/>
|
||||
</resource>
|
||||
</omf>
|
774
doc/extending-gramps/C/extending-gramps.sgml
Normal file
@ -0,0 +1,774 @@
|
||||
<!DOCTYPE article PUBLIC "-//GNOME//DTD DocBook PNG Variant V1.1//EN"[
|
||||
<!ENTITY version "0.5.0"> <!-- replace with application version -->
|
||||
]>
|
||||
|
||||
<!-- =============Document Header ============================= -->
|
||||
|
||||
<article id="index"> <!-- please do not change the id -->
|
||||
|
||||
<artheader>
|
||||
<title>Writing Extentions for gramps</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 Writing Extentions for gramps manual.
|
||||
</releaseinfo>
|
||||
|
||||
</artheader>
|
||||
|
||||
<!-- ============= Introduction ============================== -->
|
||||
<sect1 id="intro">
|
||||
<title>Introduction</title>
|
||||
<para>
|
||||
<application>gramps</application> was intended from the start to
|
||||
allow the user to extend it through a plugin system. Five types of
|
||||
plugins are supported - filters, reports, tools, import filters,
|
||||
and export filters. In a way, an export filter can be viewed as a
|
||||
special type of report, and an import filter can be viewed as a
|
||||
special type of tool.
|
||||
</para>
|
||||
<para>
|
||||
All plugins are written in the <application>python</application>
|
||||
language.
|
||||
</para>
|
||||
<sect2 id="intro-filter">
|
||||
<title>Filters</title>
|
||||
<para>
|
||||
A filter is a plugin that be used to temporarily display or hide
|
||||
individuals in the <interface>People View</interface>. The
|
||||
filter is the simplest form of plugin, which only needs to
|
||||
determine if a person meets or fails to meet its criteria. It
|
||||
operates on a single person at a time.
|
||||
</para>
|
||||
<para>
|
||||
Filters should never alter a database.
|
||||
</para>
|
||||
</sect2>
|
||||
<sect2 id="intro-report">
|
||||
<title>Reports</title>
|
||||
<para>
|
||||
A report is a plugin that generates output. The output may be in
|
||||
either a interactive, graphical form, or as an output
|
||||
file. Report plugins are passed a reference to the internal
|
||||
database and a reference to the active person, which allows the
|
||||
plugn to operate on a single person, the entire database, or
|
||||
anything in between.
|
||||
</para>
|
||||
<para>
|
||||
Plugins that conform to the reportplugin interface appear in the
|
||||
<menuchoice>
|
||||
<guimenu>Reports</guimenu>
|
||||
</menuchoice>
|
||||
menu and in the <interface>Report Selection</interface> dialog
|
||||
box.
|
||||
</para>
|
||||
<para>
|
||||
A report should never alter the database.
|
||||
</para>
|
||||
</sect2>
|
||||
<sect2 id="intro-tool">
|
||||
<title>Tools</title>
|
||||
<para>
|
||||
A tool is a plugin that alters the database. It may perform
|
||||
something as small changing the case of some text to something
|
||||
as complex as merging redundant individuals. Tools plugins are
|
||||
passed a reference to the internal database, the active person,
|
||||
and a callback function. The callback function is used to notify
|
||||
the main program if it needs to update the display with any
|
||||
modified information.
|
||||
</para>
|
||||
<para>
|
||||
Plugins that conform to the tool plugin interface appear in the
|
||||
<menuchoice>
|
||||
<guimenu>Tools</guimenu>
|
||||
</menuchoice>
|
||||
menu and in the <interface>Tool Selection</interface> dialog
|
||||
box.
|
||||
</para>
|
||||
<para>
|
||||
A tool is allowed (and usually expected) to alter the database.
|
||||
</para>
|
||||
</sect2>
|
||||
<sect2 id="intro-import">
|
||||
<title>Import Filters</title>
|
||||
<para>
|
||||
An import filter is a plugin that adds information from another
|
||||
source to the database. It is similar to a tool, but is called
|
||||
differently to allow gramps to distinguish it from a tool.
|
||||
</para>
|
||||
<para>
|
||||
Plugins that conform to the import filter calling syntax appear
|
||||
in the
|
||||
<menuchoice>
|
||||
<guimenu>File</guimenu>
|
||||
<guisubmenu>Import</guisubmenu>
|
||||
</menuchoice>
|
||||
menu.
|
||||
</para>
|
||||
<para>
|
||||
An import filter is allowed to modify the database.
|
||||
</para>
|
||||
</sect2>
|
||||
<sect2 id="intro-export">
|
||||
<title>Export Filters</title>
|
||||
<para>
|
||||
An export filter is a plugin that translates the gramps database
|
||||
into the format expected by another program. Since it generates
|
||||
an output file, it is similar to a report generator. However,
|
||||
its calling syntax is different, so that gramps knows how to
|
||||
distiguish it from a report generator.
|
||||
</para>
|
||||
<para>
|
||||
Plugins that conform to the export filter calling syntax appear
|
||||
in the
|
||||
<menuchoice>
|
||||
<guimenu>File</guimenu>
|
||||
<guisubmenu>Export</guisubmenu>
|
||||
</menuchoice>
|
||||
menu.
|
||||
</para>
|
||||
<para>
|
||||
An export filter should not alter the database.
|
||||
</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>
|
||||
Each filter is a class 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. 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.
|
||||
</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>
|
||||
<para>
|
||||
Each filter must be registered, so that
|
||||
<application>gramps</application> knows about it. This is
|
||||
accomplished by calling the
|
||||
<function>Filter.register_filter</function> 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 <application>gramps</application>, and helps
|
||||
the user choose the appropriate filter. The qualifier flag tells
|
||||
<application>gramps</application> whether or not the filter
|
||||
needs a qualifier string. If this flag is 0,
|
||||
<application>gramps</application> will disable the entry of a
|
||||
qualifier string.
|
||||
</para>
|
||||
<figure id="filtersrc">
|
||||
<title>Sample filter implementation</title>
|
||||
<programlisting>
|
||||
|
||||
import Filter
|
||||
import string
|
||||
|
||||
# class definition
|
||||
|
||||
class SubString(Filter.Filter):
|
||||
|
||||
def match(self,person):
|
||||
name = person.getPrimaryName().getName()
|
||||
return string.find(name,self.text) >= 0
|
||||
|
||||
Filter.register_filter(SubString,
|
||||
description="Names that contain a substring",
|
||||
qualifier=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 plugin directory (<filename
|
||||
class="directory">~/.gramps/plugins</filename>), the report
|
||||
generator will be automatically recognized the next time that the
|
||||
program is started.
|
||||
</para>
|
||||
<sect2 id="createreport">
|
||||
<title>Creating a report generator</title>
|
||||
<para>
|
||||
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>
|
||||
A report generator is a function that takes two arguments
|
||||
— a database (of type <function>RelDataBase</function>)
|
||||
and the currently selected person (of type
|
||||
<function>Person</function>). When called, this task should
|
||||
generate the desired report.
|
||||
</para>
|
||||
<para>
|
||||
This function's implementation can be as simple as generating
|
||||
output without the user's intervention, or it could display a
|
||||
graphical interface to allow the user to select options and
|
||||
customize a report.
|
||||
</para>
|
||||
<para>
|
||||
As with filters, the report generator must be registered before
|
||||
<application>gramps</application> will understand it. The report
|
||||
generator is registered using the
|
||||
<function>Plugins.register_report</function>. This function
|
||||
takes five arguments.
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
<guilabel>The report generation task</guilabel> This task
|
||||
that generates the report.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<guilabel>The report category</guilabel> The category in
|
||||
which the report is grouped in the
|
||||
<menuchoice><guimenu>Reports</guimenu></menuchoice> menu and
|
||||
in the <interface>Report Selection</interface> dialog.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<guilabel>The report name</guilabel>
|
||||
The name of the report.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<guilabel>A text description of the report</guilabel> The
|
||||
description appears in the report selection tool to provide
|
||||
the user with a description of what the tools does.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<guilabel>A graphic logo in XPM format</guilabel> This may
|
||||
be either a path to a filename, or a list of strings
|
||||
containting the XPM data. If a filename is specified, care
|
||||
must be taken to make sure the file location is relocatable
|
||||
and can be determined at runtime.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>
|
||||
While only the task and report name are required, it is
|
||||
recommended to provide all five parameters.
|
||||
</para>
|
||||
<figure id="reportsrc">
|
||||
<title>Sample report implementation</title>
|
||||
<programlisting>
|
||||
|
||||
import Plugins
|
||||
|
||||
def report(database,person):
|
||||
... actual code ...
|
||||
|
||||
Plugins.register_report(
|
||||
task=report,
|
||||
category="Category",
|
||||
name="Report Name",
|
||||
description="A text descripition of the report generator",
|
||||
xpm="%s/myfile.xpm" % os.path.dirname(__file__)
|
||||
)
|
||||
</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>
|
||||
Users can create their own tools and add them to
|
||||
<application>gramps</application>. By adding the tool to the
|
||||
user's private plugin directory (<filename
|
||||
class="directory">~/.gramps/plugins</filename>), the tool will be
|
||||
automatically recognized the next time that
|
||||
<application>gramps</application> is started.
|
||||
</para>
|
||||
<para>
|
||||
Unlike a report generator, a tool is allowed to modify the
|
||||
database. The tool is passed the current
|
||||
<application>gramps</application> database, the active person,
|
||||
and a callback function. The callback function should be called
|
||||
with a non-zero argument upon completion of the tool if the
|
||||
database has been altered.
|
||||
</para>
|
||||
<para>
|
||||
As with filters and report generators, tools must be registered
|
||||
before <application>gramps</application> will understand it. The
|
||||
tool is registered using the
|
||||
<function>Plugins.register_tool</function>. This function takes
|
||||
four arguments.
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
<guilabel>The tool task</guilabel> This task
|
||||
that executes the tool.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<guilabel>The tool category</guilabel> The category in which
|
||||
the tool is grouped in the
|
||||
<menuchoice><guimenu>Tools</guimenu></menuchoice> menu and in
|
||||
the <interface>Tool Selection</interface> dialog.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<guilabel>The tool name</guilabel>
|
||||
The name of the tool.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<guilabel>A text description of the tool</guilabel> The
|
||||
description appears in the Tool Selection dialog to provide
|
||||
the user with a description of what the tool does.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>
|
||||
While only the task and report name are required, it is
|
||||
recommended to provide all five parameters.
|
||||
</para>
|
||||
<figure id="toolsrc">
|
||||
<title>Sample tool implementation</title>
|
||||
<programlisting>
|
||||
|
||||
import Plugins
|
||||
|
||||
def tool(database,person,callback):
|
||||
... actual code ...
|
||||
callback(1)
|
||||
|
||||
Plugins.register_tool(
|
||||
task=tool,
|
||||
category="Category",
|
||||
name="Tool Name",
|
||||
description="A text descripition of the tool"
|
||||
)
|
||||
</programlisting>
|
||||
</figure>
|
||||
</sect1>
|
||||
|
||||
<!-- ============= Import Filters ============================= -->
|
||||
|
||||
<sect1 id="writingimportfilters">
|
||||
<title>Writing Import Filters</title>
|
||||
<para>
|
||||
Import filters are similar to tools, since they are allowed to
|
||||
modify the databases. An import filter is a task that accepts
|
||||
three arguments — a database, the filename of the file that
|
||||
is to be imported, and a callback function.
|
||||
</para>
|
||||
<para>
|
||||
The database may or may not have data already in it. The import
|
||||
filter cannot assume that data neither already exists nor that the
|
||||
database is empty.
|
||||
</para>
|
||||
<para>
|
||||
The callback function is different from the callback function used
|
||||
for tools. The import filter's callback function is used to
|
||||
indicate progress and update the status bar during the import
|
||||
process. The function takes a value between 0.0 and 1.0, where 0.0
|
||||
represents the start of the import and 1.0 represents the
|
||||
completion of the import.
|
||||
</para>
|
||||
<para>
|
||||
As with the other plugin types, an import filter must be
|
||||
registered with <application>gramps</application>. This is
|
||||
accomplished by calling the
|
||||
<function>Plugins.register_import</function> task. The
|
||||
<function>Plugins.register_import</function> accepts two arguments
|
||||
— the function the performs the import and a string
|
||||
providing a brief description. This description is used as the
|
||||
menu entry under the
|
||||
<menuchoice>
|
||||
<guimenu>File</guimenu>
|
||||
<guisubmenu>Import</guisubmenu>
|
||||
</menuchoice>
|
||||
menu.
|
||||
</para>
|
||||
<figure id="importexample">
|
||||
<title>Sample Import Implementation</title>
|
||||
<programlisting>
|
||||
|
||||
import Plugins
|
||||
|
||||
def gedcom_import(database,filename,callback):
|
||||
... actual code ...
|
||||
|
||||
Plugins.register_import(gedcom_import,"GEDCOM import")
|
||||
|
||||
</programlisting>
|
||||
</figure>
|
||||
</sect1>
|
||||
|
||||
<!-- ============= Export Filters ============================= -->
|
||||
|
||||
<sect1 id="writingexportfilters">
|
||||
<title>Writing Export Filters</title>
|
||||
<para>
|
||||
Export filters are similar to report generators. They are not
|
||||
allowed to modify the database. An export filter accepts three
|
||||
arguments — a database, the filename of the file that is to
|
||||
be written, and a callback function.
|
||||
</para>
|
||||
<para>
|
||||
The callback function is indentical from the callback function
|
||||
used for import filters. The export filter's callback function is
|
||||
used to indicate progress and update the status bar during the
|
||||
export process. The function takes a value between 0.0 and 1.0,
|
||||
where 0.0 represents the start of the export and 1.0 represents
|
||||
the completion of the export.
|
||||
</para>
|
||||
<para>
|
||||
As with the other plugin types, an export filter must be
|
||||
registered with <application>gramps</application>. This is
|
||||
accomplished by calling the
|
||||
<function>Plugins.register_export</function> task. The
|
||||
<function>Plugins.register_export</function> accepts two arguments
|
||||
— the function the performs the import and a string
|
||||
providing a brief description. This description is used as the
|
||||
menu entry under the
|
||||
<menuchoice>
|
||||
<guimenu>File</guimenu>
|
||||
<guisubmenu>Export</guisubmenu>
|
||||
</menuchoice>
|
||||
menu.
|
||||
</para>
|
||||
<figure id="exportexample">
|
||||
<title>Sample Export Implementation</title>
|
||||
<programlisting>
|
||||
|
||||
import Plugins
|
||||
|
||||
def gedcom_export(database,filename,callback):
|
||||
... actual code ...
|
||||
|
||||
Plugins.register_export(gedcom_export,"GEDCOM export")
|
||||
|
||||
</programlisting>
|
||||
</figure>
|
||||
</sect1>
|
||||
<sect1 id="commontasks">
|
||||
<title>Common tasks</title>
|
||||
<para>
|
||||
While this manual does not document the
|
||||
<application>gramps</application> database interface, this section
|
||||
shows a few common tasks.
|
||||
</para>
|
||||
<sect2 id="gettingnames">
|
||||
<title>Printing names of people</title>
|
||||
<para>
|
||||
This example shows how to display the name of people in the
|
||||
database. It assumes that the database is called
|
||||
<function>db</function>. To get a list of people, it calls the
|
||||
<function>getPersonMap</function> method, which returns a map of
|
||||
<application>gramps</application> ID to
|
||||
<function>Person</function> objects. Calling the
|
||||
<function>valus</function> method of the returned map returns a
|
||||
list of people. For each person, the primary name is extracted,
|
||||
and then the <function>Name</function> object's
|
||||
<function>getName</function> method is called to build a
|
||||
presentable name from the individual name components.
|
||||
</para>
|
||||
<figure id="displaynames">
|
||||
<title>Displaying names</title>
|
||||
<programlisting>
|
||||
|
||||
for person in db.getPersonMap().values():
|
||||
name = person.getPrimaryName()
|
||||
print name.getName()
|
||||
|
||||
</programlisting>
|
||||
</figure>
|
||||
</sect2>
|
||||
<sect2 id="listingevents">
|
||||
<title>Displaying the events of person</title>
|
||||
<para>
|
||||
This example shows how to display the public events associated
|
||||
with a person. It assumes that the person is called
|
||||
<function>person</function>.
|
||||
</para>
|
||||
<figure id="eventexample">
|
||||
<title>Displaying Event Information</title>
|
||||
<programlisting>
|
||||
|
||||
for event in person.getEventList():
|
||||
if event.getPrivacy() == 0:
|
||||
print "Event:",event.getName()
|
||||
print "Date:",event.getDate()
|
||||
print "Place:",event.getPlaceName()
|
||||
|
||||
</programlisting>
|
||||
</figure>
|
||||
</sect2>
|
||||
<sect2 id="printfamily">
|
||||
<title>Print the members of each family</title>
|
||||
<para>
|
||||
This example shows how to display the parents and children of
|
||||
each family in the database. It assumes that the database is called
|
||||
<function>db</function>.
|
||||
</para>
|
||||
<figure id="familyexample">
|
||||
<title>Displaying Family Information</title>
|
||||
<programlisting>
|
||||
|
||||
for family in db.getFamilyMap().values:
|
||||
print "-------------------"
|
||||
print "Family ID:",family.getId()
|
||||
father = family.getFather()
|
||||
if father != None:
|
||||
print "Father:",father.getPrimaryName().getName()
|
||||
mother = family.getMother()
|
||||
if mother != None:
|
||||
print "Mother:",mother.getPrimaryName().getName()
|
||||
for child in family.getChildList():
|
||||
print "Child:",child.getPrimaryName().getName()
|
||||
|
||||
</programlisting>
|
||||
</figure>
|
||||
</sect2>
|
||||
<sect2 id="personsfamily">
|
||||
<title>Display the marriages/relationships of a person</title>
|
||||
<para>
|
||||
This example shows how to display the families and relationships
|
||||
in which the person is considered a spouse or parent. It assumes
|
||||
that the person is called <function>person</function>.
|
||||
</para>
|
||||
<para>
|
||||
Relationships between people can be complex. Because someone is
|
||||
male, does not necessarily mean that the person will be
|
||||
considered the "Father" of a relationship. In relationships of
|
||||
type "Partners", the "father" and "mother" of the relationship
|
||||
should be of the same gender. So to determine the spouse of a
|
||||
person, it is usually best to compare the person against what is
|
||||
returned by <function>getFather</function> and
|
||||
<function>getMother</function> to find the one that is not
|
||||
equal. It should also be noted that the
|
||||
<function>getFather</function> and
|
||||
<function>getMother</function> methods will return None if noone
|
||||
has been associated with that role in the family.
|
||||
</para>
|
||||
<figure id="relexample">
|
||||
<title>Displaying Relationship Information</title>
|
||||
<programlisting>
|
||||
|
||||
for family in person.getFamilyList():
|
||||
print "-------------------"
|
||||
print "Family ID:",family.getId()
|
||||
print "Relationship Type:",family.getRelationship()
|
||||
father = family.getFather()
|
||||
if father != None and father != person:
|
||||
print "Spouse:",father.getPrimaryName().getName()
|
||||
mother = family.getMother()
|
||||
if mother != None and mother != person:
|
||||
print "Spouse:",mother.getPrimaryName().getName()
|
||||
|
||||
</programlisting>
|
||||
</figure>
|
||||
</sect2>
|
||||
</sect1>
|
||||
|
||||
<!-- ============= Authors ================================ -->
|
||||
|
||||
<sect1 id="authors">
|
||||
<title>Authors</title>
|
||||
<para>
|
||||
<application>gramps</application> was written by Don Allingham
|
||||
(<email>dallingham@users.sourceforge.net</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 Don Allingham
|
||||
(<email>dallingham@users.sourceforge.net</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>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
345
doc/extending-gramps/C/extending-gramps/index.html
Normal file
@ -0,0 +1,345 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
||||
<HTML
|
||||
><HEAD
|
||||
><TITLE
|
||||
>Writing Extentions for gramps</TITLE
|
||||
><META
|
||||
NAME="GENERATOR"
|
||||
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
|
||||
"><LINK
|
||||
REL="NEXT"
|
||||
TITLE="Writing Filters"
|
||||
HREF="x57.html"></HEAD
|
||||
><BODY
|
||||
CLASS="ARTICLE"
|
||||
BGCOLOR="#FFFFFF"
|
||||
TEXT="#000000"
|
||||
LINK="#0000FF"
|
||||
VLINK="#840084"
|
||||
ALINK="#0000FF"
|
||||
><DIV
|
||||
CLASS="ARTICLE"
|
||||
><DIV
|
||||
CLASS="TITLEPAGE"
|
||||
><H1
|
||||
CLASS="TITLE"
|
||||
><A
|
||||
NAME="AEN2">Writing Extentions for gramps</H1
|
||||
><P
|
||||
CLASS="COPYRIGHT"
|
||||
><A
|
||||
HREF="ln7.html"
|
||||
>Copyright</A
|
||||
> © 2001 by Donald N. Allingham</P
|
||||
><HR
|
||||
WIDTH="75%"
|
||||
ALIGN="CENTER"
|
||||
COLOR="#000000"
|
||||
SIZE="1"></DIV
|
||||
><DIV
|
||||
CLASS="TOC"
|
||||
><DL
|
||||
><DT
|
||||
><B
|
||||
>Table of Contents</B
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="t1.html#intro"
|
||||
>Introduction</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x57.html"
|
||||
>Writing Filters</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x83.html"
|
||||
>Writing Reports</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x131.html"
|
||||
>Writing Tools</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x162.html"
|
||||
>Writing Import Filters</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x177.html"
|
||||
>Writing Export Filters</A
|
||||
></DT
|
||||
></DL
|
||||
></DIV
|
||||
>
|
||||
|
||||
|
||||
|
||||
<DIV
|
||||
CLASS="SECT1"
|
||||
><H1
|
||||
CLASS="SECT1"
|
||||
><A
|
||||
NAME="intro">Introduction</H1
|
||||
>
|
||||
<P
|
||||
> <TT
|
||||
CLASS="APPLICATION"
|
||||
>gramps</TT
|
||||
> was intended from the start to
|
||||
allow the user to extend it through a plugin system. Five types of
|
||||
plugins are supported - filters, reports, tools, import filters,
|
||||
and export filters. In a way, an export filter can be viewed as a
|
||||
special type of report, and an import filter can be viewed as a
|
||||
special type of tool.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> All plugins are written in the <TT
|
||||
CLASS="APPLICATION"
|
||||
>python</TT
|
||||
>
|
||||
language.
|
||||
</P
|
||||
>
|
||||
<DIV
|
||||
CLASS="SECT2"
|
||||
><H2
|
||||
CLASS="SECT2"
|
||||
><A
|
||||
NAME="intro-filter">Filters</H2
|
||||
>
|
||||
<P
|
||||
> A filter is a plugin that be used to temporarily display or hide
|
||||
individuals in the <SPAN
|
||||
CLASS="INTERFACE"
|
||||
>People View</SPAN
|
||||
>. The
|
||||
filter is the simplest form of plugin, which only needs to
|
||||
determine if a person meets or fails to meet its criteria. It
|
||||
operates on a single person at a time.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> Filters should never alter a database.
|
||||
</P
|
||||
>
|
||||
</DIV
|
||||
>
|
||||
<DIV
|
||||
CLASS="SECT2"
|
||||
><H2
|
||||
CLASS="SECT2"
|
||||
><A
|
||||
NAME="intro-report">Reports</H2
|
||||
>
|
||||
<P
|
||||
> A report is a plugin that generates output. The output may be in
|
||||
either a interactive, graphical form, or as an output
|
||||
file. Report plugins are passed a reference to the internal
|
||||
database and a reference to the active person, which allows the
|
||||
plugn to operate on a single person, the entire database, or
|
||||
anything in between.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> Plugins that conform to the reportplugin interface appear in the
|
||||
+ + + + + + + + + +<B
|
||||
CLASS="GUIMENU"
|
||||
>Reports</B
|
||||
>+
|
||||
+ + + + + + + +
|
||||
menu and in the <SPAN
|
||||
CLASS="INTERFACE"
|
||||
>Report Selection</SPAN
|
||||
> dialog
|
||||
box.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> A report should never alter the database.
|
||||
</P
|
||||
>
|
||||
</DIV
|
||||
>
|
||||
<DIV
|
||||
CLASS="SECT2"
|
||||
><H2
|
||||
CLASS="SECT2"
|
||||
><A
|
||||
NAME="intro-tool">Tools</H2
|
||||
>
|
||||
<P
|
||||
> A tool is a plugin that alters the database. It may perform
|
||||
something as small changing the case of some text to something
|
||||
as complex as merging redundant individuals. Tools plugins are
|
||||
passed a reference to the internal database, the active person,
|
||||
and a callback function. The callback function is used to notify
|
||||
the main program if it needs to update the display with any
|
||||
modified information.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> Plugins that conform to the tool plugin interface appear in the
|
||||
+ + + + + + + + + +<B
|
||||
CLASS="GUIMENU"
|
||||
>Tools</B
|
||||
>+
|
||||
+ + + + + + + +
|
||||
menu and in the <SPAN
|
||||
CLASS="INTERFACE"
|
||||
>Tool Selection</SPAN
|
||||
> dialog
|
||||
box.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> A tool is allowed (and usually expected) to alter the database.
|
||||
</P
|
||||
>
|
||||
</DIV
|
||||
>
|
||||
<DIV
|
||||
CLASS="SECT2"
|
||||
><H2
|
||||
CLASS="SECT2"
|
||||
><A
|
||||
NAME="intro-import">Import Filters</H2
|
||||
>
|
||||
<P
|
||||
> An import filter is a plugin that adds information from another
|
||||
source to the database. It is similar to a tool, but is called
|
||||
differently to allow gramps to distinguish it from a tool.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> Plugins that conform to the import filter calling syntax appear
|
||||
in the
|
||||
+ + + + + + + + + +<B
|
||||
CLASS="GUIMENU"
|
||||
>File</B
|
||||
>+
|
||||
+ + + + + + + + + + -><B
|
||||
CLASS="GUISUBMENU"
|
||||
>Import</B
|
||||
>+
|
||||
+ + + + + + + +
|
||||
menu.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> An import filter is allowed to modify the database.
|
||||
</P
|
||||
>
|
||||
</DIV
|
||||
>
|
||||
<DIV
|
||||
CLASS="SECT2"
|
||||
><H2
|
||||
CLASS="SECT2"
|
||||
><A
|
||||
NAME="intro-export">Export Filters</H2
|
||||
>
|
||||
<P
|
||||
> An export filter is a plugin that translates the gramps database
|
||||
into the format expected by another program. Since it generates
|
||||
an output file, it is similar to a report generator. However,
|
||||
its calling syntax is different, so that gramps knows how to
|
||||
distiguish it from a report generator.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> Plugins that conform to the export filter calling syntax appear
|
||||
in the
|
||||
+ + + + + + + + + +<B
|
||||
CLASS="GUIMENU"
|
||||
>File</B
|
||||
>+
|
||||
+ + + + + + + + + + -><B
|
||||
CLASS="GUISUBMENU"
|
||||
>Export</B
|
||||
>+
|
||||
+ + + + + + + +
|
||||
menu.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> An export filter should not alter the database.
|
||||
</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"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
><A
|
||||
HREF="x57.html"
|
||||
ACCESSKEY="N"
|
||||
>Next >>></A
|
||||
></TD
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="left"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
>Writing Filters</TD
|
||||
></TR
|
||||
></TABLE
|
||||
></DIV
|
||||
></BODY
|
||||
></HTML
|
||||
>
|
133
doc/extending-gramps/C/extending-gramps/ln7.html
Normal file
@ -0,0 +1,133 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
||||
<HTML
|
||||
><HEAD
|
||||
><META
|
||||
NAME="GENERATOR"
|
||||
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
|
||||
"><LINK
|
||||
REL="HOME"
|
||||
TITLE="Writing Extentions for gramps"
|
||||
HREF="t1.html"><LINK
|
||||
REL="UP"
|
||||
TITLE="Writing Extentions for gramps"
|
||||
HREF="t1.html#AEN2"><LINK
|
||||
REL="NEXT"
|
||||
TITLE="Writing Filters"
|
||||
HREF="x57.html"></HEAD
|
||||
><BODY
|
||||
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
|
||||
></TABLE
|
||||
><HR
|
||||
ALIGN="LEFT"
|
||||
WIDTH="100%"></DIV
|
||||
><DIV
|
||||
CLASS="LEGALNOTICE"
|
||||
><A
|
||||
NAME="legalnotice"><P
|
||||
></P
|
||||
> <P
|
||||
> Permission is granted to copy, distribute and/or modify this
|
||||
document under the terms of the <A
|
||||
HREF="gnome-help:fdl"
|
||||
TARGET="_top"
|
||||
><I
|
||||
CLASS="CITETITLE"
|
||||
>GNU Free Documentation
|
||||
License</I
|
||||
></A
|
||||
>, 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 <A
|
||||
HREF="gnome-help:fdl"
|
||||
TARGET="_top"
|
||||
>here</A
|
||||
>.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> 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.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
></P
|
||||
></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"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
><A
|
||||
HREF="t1.html"
|
||||
ACCESSKEY="H"
|
||||
>Home</A
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="left"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
><A
|
||||
HREF="t1.html#AEN2"
|
||||
ACCESSKEY="U"
|
||||
>Up</A
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
></TR
|
||||
></TABLE
|
||||
></DIV
|
||||
></BODY
|
||||
></HTML
|
||||
>
|
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 995 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 964 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 944 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 95 B |
After Width: | Height: | Size: 843 B |
After Width: | Height: | Size: 846 B |
BIN
doc/extending-gramps/C/extending-gramps/stylesheet-images/up.gif
Normal file
After Width: | Height: | Size: 922 B |
After Width: | Height: | Size: 1.0 KiB |
345
doc/extending-gramps/C/extending-gramps/t1.html
Normal file
@ -0,0 +1,345 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
||||
<HTML
|
||||
><HEAD
|
||||
><TITLE
|
||||
>Writing Extentions for gramps</TITLE
|
||||
><META
|
||||
NAME="GENERATOR"
|
||||
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
|
||||
"><LINK
|
||||
REL="NEXT"
|
||||
TITLE="Writing Filters"
|
||||
HREF="x57.html"></HEAD
|
||||
><BODY
|
||||
CLASS="ARTICLE"
|
||||
BGCOLOR="#FFFFFF"
|
||||
TEXT="#000000"
|
||||
LINK="#0000FF"
|
||||
VLINK="#840084"
|
||||
ALINK="#0000FF"
|
||||
><DIV
|
||||
CLASS="ARTICLE"
|
||||
><DIV
|
||||
CLASS="TITLEPAGE"
|
||||
><H1
|
||||
CLASS="TITLE"
|
||||
><A
|
||||
NAME="AEN2">Writing Extentions for gramps</H1
|
||||
><P
|
||||
CLASS="COPYRIGHT"
|
||||
><A
|
||||
HREF="ln7.html"
|
||||
>Copyright</A
|
||||
> © 2001 by Donald N. Allingham</P
|
||||
><HR
|
||||
WIDTH="75%"
|
||||
ALIGN="CENTER"
|
||||
COLOR="#000000"
|
||||
SIZE="1"></DIV
|
||||
><DIV
|
||||
CLASS="TOC"
|
||||
><DL
|
||||
><DT
|
||||
><B
|
||||
>Table of Contents</B
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="t1.html#intro"
|
||||
>Introduction</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x57.html"
|
||||
>Writing Filters</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x83.html"
|
||||
>Writing Reports</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x131.html"
|
||||
>Writing Tools</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x162.html"
|
||||
>Writing Import Filters</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x177.html"
|
||||
>Writing Export Filters</A
|
||||
></DT
|
||||
></DL
|
||||
></DIV
|
||||
>
|
||||
|
||||
|
||||
|
||||
<DIV
|
||||
CLASS="SECT1"
|
||||
><H1
|
||||
CLASS="SECT1"
|
||||
><A
|
||||
NAME="intro">Introduction</H1
|
||||
>
|
||||
<P
|
||||
> <TT
|
||||
CLASS="APPLICATION"
|
||||
>gramps</TT
|
||||
> was intended from the start to
|
||||
allow the user to extend it through a plugin system. Five types of
|
||||
plugins are supported - filters, reports, tools, import filters,
|
||||
and export filters. In a way, an export filter can be viewed as a
|
||||
special type of report, and an import filter can be viewed as a
|
||||
special type of tool.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> All plugins are written in the <TT
|
||||
CLASS="APPLICATION"
|
||||
>python</TT
|
||||
>
|
||||
language.
|
||||
</P
|
||||
>
|
||||
<DIV
|
||||
CLASS="SECT2"
|
||||
><H2
|
||||
CLASS="SECT2"
|
||||
><A
|
||||
NAME="intro-filter">Filters</H2
|
||||
>
|
||||
<P
|
||||
> A filter is a plugin that be used to temporarily display or hide
|
||||
individuals in the <SPAN
|
||||
CLASS="INTERFACE"
|
||||
>People View</SPAN
|
||||
>. The
|
||||
filter is the simplest form of plugin, which only needs to
|
||||
determine if a person meets or fails to meet its criteria. It
|
||||
operates on a single person at a time.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> Filters should never alter a database.
|
||||
</P
|
||||
>
|
||||
</DIV
|
||||
>
|
||||
<DIV
|
||||
CLASS="SECT2"
|
||||
><H2
|
||||
CLASS="SECT2"
|
||||
><A
|
||||
NAME="intro-report">Reports</H2
|
||||
>
|
||||
<P
|
||||
> A report is a plugin that generates output. The output may be in
|
||||
either a interactive, graphical form, or as an output
|
||||
file. Report plugins are passed a reference to the internal
|
||||
database and a reference to the active person, which allows the
|
||||
plugn to operate on a single person, the entire database, or
|
||||
anything in between.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> Plugins that conform to the reportplugin interface appear in the
|
||||
+ + + + + + + + + +<B
|
||||
CLASS="GUIMENU"
|
||||
>Reports</B
|
||||
>+
|
||||
+ + + + + + + +
|
||||
menu and in the <SPAN
|
||||
CLASS="INTERFACE"
|
||||
>Report Selection</SPAN
|
||||
> dialog
|
||||
box.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> A report should never alter the database.
|
||||
</P
|
||||
>
|
||||
</DIV
|
||||
>
|
||||
<DIV
|
||||
CLASS="SECT2"
|
||||
><H2
|
||||
CLASS="SECT2"
|
||||
><A
|
||||
NAME="intro-tool">Tools</H2
|
||||
>
|
||||
<P
|
||||
> A tool is a plugin that alters the database. It may perform
|
||||
something as small changing the case of some text to something
|
||||
as complex as merging redundant individuals. Tools plugins are
|
||||
passed a reference to the internal database, the active person,
|
||||
and a callback function. The callback function is used to notify
|
||||
the main program if it needs to update the display with any
|
||||
modified information.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> Plugins that conform to the tool plugin interface appear in the
|
||||
+ + + + + + + + + +<B
|
||||
CLASS="GUIMENU"
|
||||
>Tools</B
|
||||
>+
|
||||
+ + + + + + + +
|
||||
menu and in the <SPAN
|
||||
CLASS="INTERFACE"
|
||||
>Tool Selection</SPAN
|
||||
> dialog
|
||||
box.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> A tool is allowed (and usually expected) to alter the database.
|
||||
</P
|
||||
>
|
||||
</DIV
|
||||
>
|
||||
<DIV
|
||||
CLASS="SECT2"
|
||||
><H2
|
||||
CLASS="SECT2"
|
||||
><A
|
||||
NAME="intro-import">Import Filters</H2
|
||||
>
|
||||
<P
|
||||
> An import filter is a plugin that adds information from another
|
||||
source to the database. It is similar to a tool, but is called
|
||||
differently to allow gramps to distinguish it from a tool.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> Plugins that conform to the import filter calling syntax appear
|
||||
in the
|
||||
+ + + + + + + + + +<B
|
||||
CLASS="GUIMENU"
|
||||
>File</B
|
||||
>+
|
||||
+ + + + + + + + + + -><B
|
||||
CLASS="GUISUBMENU"
|
||||
>Import</B
|
||||
>+
|
||||
+ + + + + + + +
|
||||
menu.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> An import filter is allowed to modify the database.
|
||||
</P
|
||||
>
|
||||
</DIV
|
||||
>
|
||||
<DIV
|
||||
CLASS="SECT2"
|
||||
><H2
|
||||
CLASS="SECT2"
|
||||
><A
|
||||
NAME="intro-export">Export Filters</H2
|
||||
>
|
||||
<P
|
||||
> An export filter is a plugin that translates the gramps database
|
||||
into the format expected by another program. Since it generates
|
||||
an output file, it is similar to a report generator. However,
|
||||
its calling syntax is different, so that gramps knows how to
|
||||
distiguish it from a report generator.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> Plugins that conform to the export filter calling syntax appear
|
||||
in the
|
||||
+ + + + + + + + + +<B
|
||||
CLASS="GUIMENU"
|
||||
>File</B
|
||||
>+
|
||||
+ + + + + + + + + + -><B
|
||||
CLASS="GUISUBMENU"
|
||||
>Export</B
|
||||
>+
|
||||
+ + + + + + + +
|
||||
menu.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> An export filter should not alter the database.
|
||||
</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"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
><A
|
||||
HREF="x57.html"
|
||||
ACCESSKEY="N"
|
||||
>Next >>></A
|
||||
></TD
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="left"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
>Writing Filters</TD
|
||||
></TR
|
||||
></TABLE
|
||||
></DIV
|
||||
></BODY
|
||||
></HTML
|
||||
>
|
282
doc/extending-gramps/C/extending-gramps/x131.html
Normal file
@ -0,0 +1,282 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
||||
<HTML
|
||||
><HEAD
|
||||
><TITLE
|
||||
>Writing Tools</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 Reports"
|
||||
HREF="x83.html"><LINK
|
||||
REL="NEXT"
|
||||
TITLE="Writing Import Filters"
|
||||
HREF="x162.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="x83.html"
|
||||
ACCESSKEY="P"
|
||||
><<< Previous</A
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="80%"
|
||||
ALIGN="center"
|
||||
VALIGN="bottom"
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="10%"
|
||||
ALIGN="right"
|
||||
VALIGN="bottom"
|
||||
><A
|
||||
HREF="x162.html"
|
||||
ACCESSKEY="N"
|
||||
>Next >>></A
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
><HR
|
||||
ALIGN="LEFT"
|
||||
WIDTH="100%"></DIV
|
||||
><DIV
|
||||
CLASS="SECT1"
|
||||
><H1
|
||||
CLASS="SECT1"
|
||||
><A
|
||||
NAME="writingtools">Writing Tools</H1
|
||||
>
|
||||
<P
|
||||
> Users can create their own tools and add them to
|
||||
<TT
|
||||
CLASS="APPLICATION"
|
||||
>gramps</TT
|
||||
>. By adding the tool to the
|
||||
user's private plugin directory (<TT
|
||||
CLASS="FILENAME"
|
||||
>~/.gramps/plugins</TT
|
||||
>), the tool will be
|
||||
automatically recognized the next time that
|
||||
<TT
|
||||
CLASS="APPLICATION"
|
||||
>gramps</TT
|
||||
> is started.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> Unlike a report generator, a tool is allowed to modify the
|
||||
database. The tool is passed the current
|
||||
<TT
|
||||
CLASS="APPLICATION"
|
||||
>gramps</TT
|
||||
> database, the active person,
|
||||
and a callback function. The callback function should be called
|
||||
with a non-zero argument upon completion of the tool if the
|
||||
database has been altered.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> As with filters and report generators, tools must be registered
|
||||
before <TT
|
||||
CLASS="APPLICATION"
|
||||
>gramps</TT
|
||||
> will understand it. The
|
||||
tool is registered using the
|
||||
<TT
|
||||
CLASS="FUNCTION"
|
||||
>Plugins.register_tool</TT
|
||||
>. This function takes
|
||||
four arguments.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
></P
|
||||
><UL
|
||||
><LI
|
||||
> <P
|
||||
> <TT
|
||||
CLASS="GUILABEL"
|
||||
><B
|
||||
>The tool task</B
|
||||
></TT
|
||||
> This task
|
||||
that executes the tool.
|
||||
</P
|
||||
>
|
||||
</LI
|
||||
><LI
|
||||
> <P
|
||||
> <TT
|
||||
CLASS="GUILABEL"
|
||||
><B
|
||||
>The tool category</B
|
||||
></TT
|
||||
> The category in which
|
||||
the tool is grouped in the
|
||||
<B
|
||||
CLASS="GUIMENU"
|
||||
>Tools</B
|
||||
> menu and in
|
||||
the <SPAN
|
||||
CLASS="INTERFACE"
|
||||
>Tool Selection</SPAN
|
||||
> dialog.
|
||||
</P
|
||||
>
|
||||
</LI
|
||||
><LI
|
||||
> <P
|
||||
> <TT
|
||||
CLASS="GUILABEL"
|
||||
><B
|
||||
>The tool name</B
|
||||
></TT
|
||||
>
|
||||
The name of the tool.
|
||||
</P
|
||||
>
|
||||
</LI
|
||||
><LI
|
||||
> <P
|
||||
> <TT
|
||||
CLASS="GUILABEL"
|
||||
><B
|
||||
>A text description of the tool</B
|
||||
></TT
|
||||
> The
|
||||
description appears in the Tool Selection dialog to provide
|
||||
the user with a description of what the tool does.
|
||||
</P
|
||||
>
|
||||
</LI
|
||||
></UL
|
||||
>
|
||||
<P
|
||||
> While only the task and report name are required, it is
|
||||
recommended to provide all five parameters.
|
||||
</P
|
||||
>
|
||||
<DIV
|
||||
CLASS="FIGURE"
|
||||
><A
|
||||
NAME="toolsrc">
|
||||
<TABLE
|
||||
BORDER="0"
|
||||
BGCOLOR="#E0E0E0"
|
||||
WIDTH="100%"
|
||||
><TR
|
||||
><TD
|
||||
><PRE
|
||||
CLASS="PROGRAMLISTING"
|
||||
> import Plugins
|
||||
|
||||
def tool(database,person,callback):
|
||||
... actual code ...
|
||||
callback(1)
|
||||
|
||||
Plugins.register_tool(
|
||||
task=tool,
|
||||
category="Category",
|
||||
name="Tool Name",
|
||||
description="A text descripition of the tool"
|
||||
)
|
||||
</PRE
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
>
|
||||
<P
|
||||
><B
|
||||
>Figure 3. Sample tool implementation</B
|
||||
></P
|
||||
></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="x83.html"
|
||||
ACCESSKEY="P"
|
||||
><<< 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="x162.html"
|
||||
ACCESSKEY="N"
|
||||
>Next >>></A
|
||||
></TD
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="left"
|
||||
VALIGN="top"
|
||||
>Writing Reports</TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
>Writing Import Filters</TD
|
||||
></TR
|
||||
></TABLE
|
||||
></DIV
|
||||
></BODY
|
||||
></HTML
|
||||
>
|
219
doc/extending-gramps/C/extending-gramps/x162.html
Normal file
@ -0,0 +1,219 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
||||
<HTML
|
||||
><HEAD
|
||||
><TITLE
|
||||
>Writing Import 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 Tools"
|
||||
HREF="x131.html"><LINK
|
||||
REL="NEXT"
|
||||
TITLE="Writing Export Filters"
|
||||
HREF="x177.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="x131.html"
|
||||
ACCESSKEY="P"
|
||||
><<< Previous</A
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="80%"
|
||||
ALIGN="center"
|
||||
VALIGN="bottom"
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="10%"
|
||||
ALIGN="right"
|
||||
VALIGN="bottom"
|
||||
><A
|
||||
HREF="x177.html"
|
||||
ACCESSKEY="N"
|
||||
>Next >>></A
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
><HR
|
||||
ALIGN="LEFT"
|
||||
WIDTH="100%"></DIV
|
||||
><DIV
|
||||
CLASS="SECT1"
|
||||
><H1
|
||||
CLASS="SECT1"
|
||||
><A
|
||||
NAME="writingimportfilters">Writing Import Filters</H1
|
||||
>
|
||||
<P
|
||||
> Import filters are similar to tools, since they are allowed to
|
||||
modify the databases. An import filter is a task that accepts
|
||||
three arguments a database, the filename of the file that
|
||||
is to be imported, and a callback function.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> The database may or may not have data already in it. The import
|
||||
filter cannot assume that data neither already exists nor that the
|
||||
database is empty.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> The callback function is different from the callback function used
|
||||
for tools. The import filter's callback function is used to
|
||||
indicate progress and update the status bar during the import
|
||||
process. The function takes a value between 0.0 and 1.0, where 0.0
|
||||
represents the start of the import and 1.0 represents the
|
||||
completion of the import.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> As with the other plugin types, an import filter must be
|
||||
registered with <TT
|
||||
CLASS="APPLICATION"
|
||||
>gramps</TT
|
||||
>. This is
|
||||
accomplished by calling the
|
||||
<TT
|
||||
CLASS="FUNCTION"
|
||||
>Plugins.register_import</TT
|
||||
> task. The
|
||||
<TT
|
||||
CLASS="FUNCTION"
|
||||
>Plugins.register_import</TT
|
||||
> accepts two arguments
|
||||
the function the performs the import and a string
|
||||
providing a brief description. This description is used as the
|
||||
menu entry under the
|
||||
+ + + + + +<B
|
||||
CLASS="GUIMENU"
|
||||
>File</B
|
||||
>+
|
||||
+ + + + + + -><B
|
||||
CLASS="GUISUBMENU"
|
||||
>Import</B
|
||||
>+
|
||||
+ + + +
|
||||
menu.
|
||||
</P
|
||||
>
|
||||
<DIV
|
||||
CLASS="FIGURE"
|
||||
><A
|
||||
NAME="importexample">
|
||||
<TABLE
|
||||
BORDER="0"
|
||||
BGCOLOR="#E0E0E0"
|
||||
WIDTH="100%"
|
||||
><TR
|
||||
><TD
|
||||
><PRE
|
||||
CLASS="PROGRAMLISTING"
|
||||
> import Plugins
|
||||
|
||||
def gedcom_import(database,filename,callback):
|
||||
... actual code ...
|
||||
|
||||
Plugins.register_import(gedcom_import,"GEDCOM import")
|
||||
|
||||
</PRE
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
>
|
||||
<P
|
||||
><B
|
||||
>Figure 4. Sample Import Implementation</B
|
||||
></P
|
||||
></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="x131.html"
|
||||
ACCESSKEY="P"
|
||||
><<< 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="x177.html"
|
||||
ACCESSKEY="N"
|
||||
>Next >>></A
|
||||
></TD
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="left"
|
||||
VALIGN="top"
|
||||
>Writing Tools</TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
>Writing Export Filters</TD
|
||||
></TR
|
||||
></TABLE
|
||||
></DIV
|
||||
></BODY
|
||||
></HTML
|
||||
>
|
180
doc/extending-gramps/C/extending-gramps/x177.html
Normal file
@ -0,0 +1,180 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
||||
<HTML
|
||||
><HEAD
|
||||
><TITLE
|
||||
>Writing Export 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 Import Filters"
|
||||
HREF="x162.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="x162.html"
|
||||
ACCESSKEY="P"
|
||||
><<< Previous</A
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="80%"
|
||||
ALIGN="center"
|
||||
VALIGN="bottom"
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="10%"
|
||||
ALIGN="right"
|
||||
VALIGN="bottom"
|
||||
> </TD
|
||||
></TR
|
||||
></TABLE
|
||||
><HR
|
||||
ALIGN="LEFT"
|
||||
WIDTH="100%"></DIV
|
||||
><DIV
|
||||
CLASS="SECT1"
|
||||
><H1
|
||||
CLASS="SECT1"
|
||||
><A
|
||||
NAME="writingexportfilters">Writing Export Filters</H1
|
||||
>
|
||||
<P
|
||||
> Export filters are similar to report generators. They are not
|
||||
allowed to modify the database. An export filter accepts three
|
||||
arguments a database, the filename of the file that is to
|
||||
be written, and a callback function.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> The callback function is indentical from the callback function
|
||||
used for import filters. The export filter's callback function is
|
||||
used to indicate progress and update the status bar during the
|
||||
export process. The function takes a value between 0.0 and 1.0,
|
||||
where 0.0 represents the start of the export and 1.0 represents
|
||||
the completion of the export.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> As with the other plugin types, an export filter must be
|
||||
registered with <TT
|
||||
CLASS="APPLICATION"
|
||||
>gramps</TT
|
||||
>. This is
|
||||
accomplished by calling the
|
||||
<TT
|
||||
CLASS="FUNCTION"
|
||||
>Plugins.register_export</TT
|
||||
> task. The
|
||||
<TT
|
||||
CLASS="FUNCTION"
|
||||
>Plugins.register_export</TT
|
||||
> accepts two arguments
|
||||
the function the performs the import and a string
|
||||
providing a brief description. This description is used as the
|
||||
menu entry under the
|
||||
+ + + + + +<B
|
||||
CLASS="GUIMENU"
|
||||
>File</B
|
||||
>+
|
||||
+ + + + + + -><B
|
||||
CLASS="GUISUBMENU"
|
||||
>Export</B
|
||||
>+
|
||||
+ + + +
|
||||
menu.
|
||||
</P
|
||||
>
|
||||
<DIV
|
||||
CLASS="FIGURE"
|
||||
><A
|
||||
NAME="exportexample"> <P
|
||||
><B
|
||||
>Figure 5. </B
|
||||
></P
|
||||
></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="x162.html"
|
||||
ACCESSKEY="P"
|
||||
><<< 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"
|
||||
> </TD
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="left"
|
||||
VALIGN="top"
|
||||
>Writing Import Filters</TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
></TR
|
||||
></TABLE
|
||||
></DIV
|
||||
></BODY
|
||||
></HTML
|
||||
>
|
276
doc/extending-gramps/C/extending-gramps/x57.html
Normal file
@ -0,0 +1,276 @@
|
||||
<!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"
|
||||
><<< 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 >>></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"
|
||||
> import Filter
|
||||
import string
|
||||
|
||||
# class definition
|
||||
|
||||
class SubString(Filter.Filter):
|
||||
|
||||
def match(self,person):
|
||||
name = person.getPrimaryName().getName()
|
||||
return string.find(name,self.text) >= 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"
|
||||
><<< 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 >>></A
|
||||
></TD
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="left"
|
||||
VALIGN="top"
|
||||
>Writing Extentions for gramps</TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
>Writing Reports</TD
|
||||
></TR
|
||||
></TABLE
|
||||
></DIV
|
||||
></BODY
|
||||
></HTML
|
||||
>
|
369
doc/extending-gramps/C/extending-gramps/x83.html
Normal file
@ -0,0 +1,369 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
||||
<HTML
|
||||
><HEAD
|
||||
><TITLE
|
||||
>Writing Reports</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 Filters"
|
||||
HREF="x57.html"><LINK
|
||||
REL="NEXT"
|
||||
TITLE="Writing Tools"
|
||||
HREF="x131.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="x57.html"
|
||||
ACCESSKEY="P"
|
||||
><<< Previous</A
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="80%"
|
||||
ALIGN="center"
|
||||
VALIGN="bottom"
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="10%"
|
||||
ALIGN="right"
|
||||
VALIGN="bottom"
|
||||
><A
|
||||
HREF="x131.html"
|
||||
ACCESSKEY="N"
|
||||
>Next >>></A
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
><HR
|
||||
ALIGN="LEFT"
|
||||
WIDTH="100%"></DIV
|
||||
><DIV
|
||||
CLASS="SECT1"
|
||||
><H1
|
||||
CLASS="SECT1"
|
||||
><A
|
||||
NAME="writingreports">Writing Reports</H1
|
||||
>
|
||||
<P
|
||||
> Users can create their own report generators and add them to
|
||||
<TT
|
||||
CLASS="APPLICATION"
|
||||
>gramps</TT
|
||||
>. By adding the report generator
|
||||
to the user's private plugin directory (<TT
|
||||
CLASS="FILENAME"
|
||||
>~/.gramps/plugins</TT
|
||||
>), the report
|
||||
generator will be automatically recognized the next time that the
|
||||
program is started.
|
||||
</P
|
||||
>
|
||||
<DIV
|
||||
CLASS="SECT2"
|
||||
><H2
|
||||
CLASS="SECT2"
|
||||
><A
|
||||
NAME="createreport">Creating a report generator</H2
|
||||
>
|
||||
<P
|
||||
> Fewer restrictions are made on report generators than on
|
||||
filters. The report generator is passed the current
|
||||
<TT
|
||||
CLASS="APPLICATION"
|
||||
>gramps</TT
|
||||
> database and the active
|
||||
person. The generator needs to take special care to make sure
|
||||
that it does not alter the database in anyway.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> A report generator is a function that takes two arguments
|
||||
a database (of type <TT
|
||||
CLASS="FUNCTION"
|
||||
>RelDataBase</TT
|
||||
>)
|
||||
and the currently selected person (of type
|
||||
<TT
|
||||
CLASS="FUNCTION"
|
||||
>Person</TT
|
||||
>). When called, this task should
|
||||
generate the desired report.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> This function's implementation can be as simple as generating
|
||||
output without the user's intervention, or it could display a
|
||||
graphical interface to allow the user to select options and
|
||||
customize a report.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> As with filters, the report generator must be registered before
|
||||
<TT
|
||||
CLASS="APPLICATION"
|
||||
>gramps</TT
|
||||
> will understand it. The report
|
||||
generator is registered using the
|
||||
<TT
|
||||
CLASS="FUNCTION"
|
||||
>Plugins.register_report</TT
|
||||
>. This function
|
||||
takes five arguments.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
></P
|
||||
><UL
|
||||
><LI
|
||||
> <P
|
||||
> <TT
|
||||
CLASS="GUILABEL"
|
||||
><B
|
||||
>The report generation task</B
|
||||
></TT
|
||||
> This task
|
||||
that generates the report.
|
||||
</P
|
||||
>
|
||||
</LI
|
||||
><LI
|
||||
> <P
|
||||
> <TT
|
||||
CLASS="GUILABEL"
|
||||
><B
|
||||
>The report category</B
|
||||
></TT
|
||||
> The category in
|
||||
which the report is grouped in the
|
||||
<B
|
||||
CLASS="GUIMENU"
|
||||
>Reports</B
|
||||
> menu and
|
||||
in the <SPAN
|
||||
CLASS="INTERFACE"
|
||||
>Report Selection</SPAN
|
||||
> dialog.
|
||||
</P
|
||||
>
|
||||
</LI
|
||||
><LI
|
||||
> <P
|
||||
> <TT
|
||||
CLASS="GUILABEL"
|
||||
><B
|
||||
>The report name</B
|
||||
></TT
|
||||
>
|
||||
The name of the report.
|
||||
</P
|
||||
>
|
||||
</LI
|
||||
><LI
|
||||
> <P
|
||||
> <TT
|
||||
CLASS="GUILABEL"
|
||||
><B
|
||||
>A text description of the report</B
|
||||
></TT
|
||||
> The
|
||||
description appears in the report selection tool to provide
|
||||
the user with a description of what the tools does.
|
||||
</P
|
||||
>
|
||||
</LI
|
||||
><LI
|
||||
> <P
|
||||
> <TT
|
||||
CLASS="GUILABEL"
|
||||
><B
|
||||
>A graphic logo in XPM format</B
|
||||
></TT
|
||||
> This may
|
||||
be either a path to a filename, or a list of strings
|
||||
containting the XPM data. If a filename is specified, care
|
||||
must be taken to make sure the file location is relocatable
|
||||
and can be determined at runtime.
|
||||
</P
|
||||
>
|
||||
</LI
|
||||
></UL
|
||||
>
|
||||
<P
|
||||
> While only the task and report name are required, it is
|
||||
recommended to provide all five parameters.
|
||||
</P
|
||||
>
|
||||
<DIV
|
||||
CLASS="FIGURE"
|
||||
><A
|
||||
NAME="reportsrc">
|
||||
<TABLE
|
||||
BORDER="0"
|
||||
BGCOLOR="#E0E0E0"
|
||||
WIDTH="100%"
|
||||
><TR
|
||||
><TD
|
||||
><PRE
|
||||
CLASS="PROGRAMLISTING"
|
||||
> import Plugins
|
||||
|
||||
def report(database,person):
|
||||
... actual code ...
|
||||
|
||||
Plugins.register_report(
|
||||
task=report,
|
||||
category="Category",
|
||||
name="Report Name",
|
||||
description="A text descripition of the report generator",
|
||||
xpm="%s/myfile.xpm" % os.path.dirname(__file__)
|
||||
)
|
||||
</PRE
|
||||
></TD
|
||||
></TR
|
||||
></TABLE
|
||||
>
|
||||
<P
|
||||
><B
|
||||
>Figure 2. Sample report implementation</B
|
||||
></P
|
||||
></DIV
|
||||
>
|
||||
</DIV
|
||||
>
|
||||
<DIV
|
||||
CLASS="SECT2"
|
||||
><H2
|
||||
CLASS="SECT2"
|
||||
><A
|
||||
NAME="alittlehelp">A little help - Format Interfaces</H2
|
||||
>
|
||||
<P
|
||||
> <TT
|
||||
CLASS="APPLICATION"
|
||||
>gramps</TT
|
||||
> 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, <TT
|
||||
CLASS="APPLICATION"
|
||||
>gramps</TT
|
||||
> derives interfaces to
|
||||
various document formats. This means that by coding to the
|
||||
generic word processing class (<TT
|
||||
CLASS="FUNCTION"
|
||||
>TextDoc</TT
|
||||
>), a
|
||||
report generator can instant access to multiple file formats
|
||||
(such as HTML, OpenOffice, and AbiWord).
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> 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
|
||||
<TT
|
||||
CLASS="APPLICATION"
|
||||
>KWord</TT
|
||||
> or
|
||||
<TT
|
||||
CLASS="APPLICATION"
|
||||
>LaTeX</TT
|
||||
>) makes it easy for existing
|
||||
report generators to use the new formats.
|
||||
</P
|
||||
>
|
||||
</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="x57.html"
|
||||
ACCESSKEY="P"
|
||||
><<< 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="x131.html"
|
||||
ACCESSKEY="N"
|
||||
>Next >>></A
|
||||
></TD
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="left"
|
||||
VALIGN="top"
|
||||
>Writing Filters</TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
>Writing Tools</TD
|
||||
></TR
|
||||
></TABLE
|
||||
></DIV
|
||||
></BODY
|
||||
></HTML
|
||||
>
|
345
doc/extending-gramps/C/index.html
Normal file
@ -0,0 +1,345 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
||||
<HTML
|
||||
><HEAD
|
||||
><TITLE
|
||||
>Writing Extentions for gramps</TITLE
|
||||
><META
|
||||
NAME="GENERATOR"
|
||||
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
|
||||
"><LINK
|
||||
REL="NEXT"
|
||||
TITLE="Writing Filters"
|
||||
HREF="x57.html"></HEAD
|
||||
><BODY
|
||||
CLASS="ARTICLE"
|
||||
BGCOLOR="#FFFFFF"
|
||||
TEXT="#000000"
|
||||
LINK="#0000FF"
|
||||
VLINK="#840084"
|
||||
ALINK="#0000FF"
|
||||
><DIV
|
||||
CLASS="ARTICLE"
|
||||
><DIV
|
||||
CLASS="TITLEPAGE"
|
||||
><H1
|
||||
CLASS="TITLE"
|
||||
><A
|
||||
NAME="AEN2">Writing Extentions for gramps</H1
|
||||
><P
|
||||
CLASS="COPYRIGHT"
|
||||
><A
|
||||
HREF="ln7.html"
|
||||
>Copyright</A
|
||||
> © 2001 by Donald N. Allingham</P
|
||||
><HR
|
||||
WIDTH="75%"
|
||||
ALIGN="CENTER"
|
||||
COLOR="#000000"
|
||||
SIZE="1"></DIV
|
||||
><DIV
|
||||
CLASS="TOC"
|
||||
><DL
|
||||
><DT
|
||||
><B
|
||||
>Table of Contents</B
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="t1.html#intro"
|
||||
>Introduction</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x57.html"
|
||||
>Writing Filters</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x83.html"
|
||||
>Writing Reports</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x131.html"
|
||||
>Writing Tools</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x162.html"
|
||||
>Writing Import Filters</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x177.html"
|
||||
>Writing Export Filters</A
|
||||
></DT
|
||||
></DL
|
||||
></DIV
|
||||
>
|
||||
|
||||
|
||||
|
||||
<DIV
|
||||
CLASS="SECT1"
|
||||
><H1
|
||||
CLASS="SECT1"
|
||||
><A
|
||||
NAME="intro">Introduction</H1
|
||||
>
|
||||
<P
|
||||
> <TT
|
||||
CLASS="APPLICATION"
|
||||
>gramps</TT
|
||||
> was intended from the start to
|
||||
allow the user to extend it through a plugin system. Five types of
|
||||
plugins are supported - filters, reports, tools, import filters,
|
||||
and export filters. In a way, an export filter can be viewed as a
|
||||
special type of report, and an import filter can be viewed as a
|
||||
special type of tool.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> All plugins are written in the <TT
|
||||
CLASS="APPLICATION"
|
||||
>python</TT
|
||||
>
|
||||
language.
|
||||
</P
|
||||
>
|
||||
<DIV
|
||||
CLASS="SECT2"
|
||||
><H2
|
||||
CLASS="SECT2"
|
||||
><A
|
||||
NAME="intro-filter">Filters</H2
|
||||
>
|
||||
<P
|
||||
> A filter is a plugin that be used to temporarily display or hide
|
||||
individuals in the <SPAN
|
||||
CLASS="INTERFACE"
|
||||
>People View</SPAN
|
||||
>. The
|
||||
filter is the simplest form of plugin, which only needs to
|
||||
determine if a person meets or fails to meet its criteria. It
|
||||
operates on a single person at a time.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> Filters should never alter a database.
|
||||
</P
|
||||
>
|
||||
</DIV
|
||||
>
|
||||
<DIV
|
||||
CLASS="SECT2"
|
||||
><H2
|
||||
CLASS="SECT2"
|
||||
><A
|
||||
NAME="intro-report">Reports</H2
|
||||
>
|
||||
<P
|
||||
> A report is a plugin that generates output. The output may be in
|
||||
either a interactive, graphical form, or as an output
|
||||
file. Report plugins are passed a reference to the internal
|
||||
database and a reference to the active person, which allows the
|
||||
plugn to operate on a single person, the entire database, or
|
||||
anything in between.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> Plugins that conform to the reportplugin interface appear in the
|
||||
+ + + + + + + + + +<B
|
||||
CLASS="GUIMENU"
|
||||
>Reports</B
|
||||
>+
|
||||
+ + + + + + + +
|
||||
menu and in the <SPAN
|
||||
CLASS="INTERFACE"
|
||||
>Report Selection</SPAN
|
||||
> dialog
|
||||
box.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> A report should never alter the database.
|
||||
</P
|
||||
>
|
||||
</DIV
|
||||
>
|
||||
<DIV
|
||||
CLASS="SECT2"
|
||||
><H2
|
||||
CLASS="SECT2"
|
||||
><A
|
||||
NAME="intro-tool">Tools</H2
|
||||
>
|
||||
<P
|
||||
> A tool is a plugin that alters the database. It may perform
|
||||
something as small changing the case of some text to something
|
||||
as complex as merging redundant individuals. Tools plugins are
|
||||
passed a reference to the internal database, the active person,
|
||||
and a callback function. The callback function is used to notify
|
||||
the main program if it needs to update the display with any
|
||||
modified information.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> Plugins that conform to the tool plugin interface appear in the
|
||||
+ + + + + + + + + +<B
|
||||
CLASS="GUIMENU"
|
||||
>Tools</B
|
||||
>+
|
||||
+ + + + + + + +
|
||||
menu and in the <SPAN
|
||||
CLASS="INTERFACE"
|
||||
>Tool Selection</SPAN
|
||||
> dialog
|
||||
box.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> A tool is allowed (and usually expected) to alter the database.
|
||||
</P
|
||||
>
|
||||
</DIV
|
||||
>
|
||||
<DIV
|
||||
CLASS="SECT2"
|
||||
><H2
|
||||
CLASS="SECT2"
|
||||
><A
|
||||
NAME="intro-import">Import Filters</H2
|
||||
>
|
||||
<P
|
||||
> An import filter is a plugin that adds information from another
|
||||
source to the database. It is similar to a tool, but is called
|
||||
differently to allow gramps to distinguish it from a tool.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> Plugins that conform to the import filter calling syntax appear
|
||||
in the
|
||||
+ + + + + + + + + +<B
|
||||
CLASS="GUIMENU"
|
||||
>File</B
|
||||
>+
|
||||
+ + + + + + + + + + -><B
|
||||
CLASS="GUISUBMENU"
|
||||
>Import</B
|
||||
>+
|
||||
+ + + + + + + +
|
||||
menu.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> An import filter is allowed to modify the database.
|
||||
</P
|
||||
>
|
||||
</DIV
|
||||
>
|
||||
<DIV
|
||||
CLASS="SECT2"
|
||||
><H2
|
||||
CLASS="SECT2"
|
||||
><A
|
||||
NAME="intro-export">Export Filters</H2
|
||||
>
|
||||
<P
|
||||
> An export filter is a plugin that translates the gramps database
|
||||
into the format expected by another program. Since it generates
|
||||
an output file, it is similar to a report generator. However,
|
||||
its calling syntax is different, so that gramps knows how to
|
||||
distiguish it from a report generator.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> Plugins that conform to the export filter calling syntax appear
|
||||
in the
|
||||
+ + + + + + + + + +<B
|
||||
CLASS="GUIMENU"
|
||||
>File</B
|
||||
>+
|
||||
+ + + + + + + + + + -><B
|
||||
CLASS="GUISUBMENU"
|
||||
>Export</B
|
||||
>+
|
||||
+ + + + + + + +
|
||||
menu.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> An export filter should not alter the database.
|
||||
</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"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
><A
|
||||
HREF="x57.html"
|
||||
ACCESSKEY="N"
|
||||
>Next >>></A
|
||||
></TD
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="left"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
>Writing Filters</TD
|
||||
></TR
|
||||
></TABLE
|
||||
></DIV
|
||||
></BODY
|
||||
></HTML
|
||||
>
|
0
doc/extending-gramps/C/omf_timestamp
Normal file
4
doc/extending-gramps/Makefile.am
Normal file
@ -0,0 +1,4 @@
|
||||
# Process this file with automake to produce Makefile.in
|
||||
|
||||
SUBDIRS = C
|
||||
|
352
doc/extending-gramps/Makefile.in
Normal file
@ -0,0 +1,352 @@
|
||||
# Makefile.in generated by automake 1.6.3 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
# Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# Process this file with automake to produce Makefile.in
|
||||
SHELL = @SHELL@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
|
||||
bindir = @bindir@
|
||||
sbindir = @sbindir@
|
||||
libexecdir = @libexecdir@
|
||||
datadir = @datadir@
|
||||
sysconfdir = @sysconfdir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
localstatedir = @localstatedir@
|
||||
libdir = @libdir@
|
||||
infodir = @infodir@
|
||||
mandir = @mandir@
|
||||
includedir = @includedir@
|
||||
oldincludedir = /usr/include
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = ../..
|
||||
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = @program_transform_name@
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
|
||||
EXEEXT = @EXEEXT@
|
||||
OBJEXT = @OBJEXT@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
AMTAR = @AMTAR@
|
||||
AWK = @AWK@
|
||||
BINSH = @BINSH@
|
||||
CC = @CC@
|
||||
DEPDIR = @DEPDIR@
|
||||
DISABLE_SCROLLKEEPER = @DISABLE_SCROLLKEEPER@
|
||||
GNOMEHELP = @GNOMEHELP@
|
||||
HAVE_GNOME_CONFIG = @HAVE_GNOME_CONFIG@
|
||||
HAVE_JW = @HAVE_JW@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
INTLLIBS = @INTLLIBS@
|
||||
JW = @JW@
|
||||
LANGUAGES = @LANGUAGES@
|
||||
LIBS = @LIBS@
|
||||
MOFILES = @MOFILES@
|
||||
MSGFMT = @MSGFMT@
|
||||
P15_INCLUDES = @P15_INCLUDES@
|
||||
P20_INCLUDES = @P20_INCLUDES@
|
||||
P21_INCLUDES = @P21_INCLUDES@
|
||||
P22_INCLUDES = @P22_INCLUDES@
|
||||
PACKAGE = @PACKAGE@
|
||||
POFILES = @POFILES@
|
||||
PYTHON = @PYTHON@
|
||||
PYTHON22 = @PYTHON22@
|
||||
PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
|
||||
PYTHON_PLATFORM = @PYTHON_PLATFORM@
|
||||
PYTHON_PREFIX = @PYTHON_PREFIX@
|
||||
PYTHON_VERSION = @PYTHON_VERSION@
|
||||
RELEASE = @RELEASE@
|
||||
SCROLLKEEPER_CONFIG = @SCROLLKEEPER_CONFIG@
|
||||
SCROLLKEEPER_REQUIRED = @SCROLLKEEPER_REQUIRED@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
VERSIONSTRING = @VERSIONSTRING@
|
||||
ZIP = @ZIP@
|
||||
am__include = @am__include@
|
||||
am__quote = @am__quote@
|
||||
install_sh = @install_sh@
|
||||
pkgpyexecdir = @pkgpyexecdir@
|
||||
pkgpythondir = @pkgpythondir@
|
||||
pyexecdir = @pyexecdir@
|
||||
pythondir = @pythondir@
|
||||
|
||||
SUBDIRS = C
|
||||
subdir = doc/extending-gramps
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_CLEAN_FILES =
|
||||
DIST_SOURCES =
|
||||
|
||||
RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \
|
||||
uninstall-info-recursive all-recursive install-data-recursive \
|
||||
install-exec-recursive installdirs-recursive install-recursive \
|
||||
uninstall-recursive check-recursive installcheck-recursive
|
||||
DIST_COMMON = Makefile.am Makefile.in
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu doc/extending-gramps/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
|
||||
uninstall-info-am:
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run `make' without going through this Makefile.
|
||||
# To change the values of `make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in `config.status', edit `config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||
# (2) otherwise, pass the desired values on the `make' command line.
|
||||
$(RECURSIVE_TARGETS):
|
||||
@set fnord $$MAKEFLAGS; amf=$$2; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
mostlyclean-recursive clean-recursive distclean-recursive \
|
||||
maintainer-clean-recursive:
|
||||
@set fnord $$MAKEFLAGS; amf=$$2; \
|
||||
dot_seen=no; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
rev=''; for subdir in $$list; do \
|
||||
if test "$$subdir" = "."; then :; else \
|
||||
rev="$$subdir $$rev"; \
|
||||
fi; \
|
||||
done; \
|
||||
rev="$$rev ."; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
for subdir in $$rev; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
|
||||
ETAGS = etags
|
||||
ETAGSFLAGS =
|
||||
|
||||
tags: TAGS
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(ETAGS_ARGS)$$tags$$unique" \
|
||||
|| $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
top_distdir = ../..
|
||||
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@list='$(DISTFILES)'; for file in $$list; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkinstalldirs) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -d $(distdir)/$$subdir \
|
||||
|| mkdir $(distdir)/$$subdir \
|
||||
|| exit 1; \
|
||||
(cd $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$(top_distdir)" \
|
||||
distdir=../$(distdir)/$$subdir \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
|
||||
distclean-am: clean-am distclean-generic distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic
|
||||
|
||||
uninstall-am: uninstall-info-am
|
||||
|
||||
uninstall-info: uninstall-info-recursive
|
||||
|
||||
.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \
|
||||
clean-generic clean-recursive distclean distclean-generic \
|
||||
distclean-recursive distclean-tags distdir dvi dvi-am \
|
||||
dvi-recursive info info-am info-recursive install install-am \
|
||||
install-data install-data-am install-data-recursive \
|
||||
install-exec install-exec-am install-exec-recursive \
|
||||
install-info install-info-am install-info-recursive install-man \
|
||||
install-recursive install-strip installcheck installcheck-am \
|
||||
installdirs installdirs-am installdirs-recursive \
|
||||
maintainer-clean maintainer-clean-generic \
|
||||
maintainer-clean-recursive mostlyclean mostlyclean-generic \
|
||||
mostlyclean-recursive tags tags-recursive uninstall \
|
||||
uninstall-am uninstall-info-am uninstall-info-recursive \
|
||||
uninstall-recursive
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
53
doc/gramps-manual/C/Makefile.am
Normal file
@ -0,0 +1,53 @@
|
||||
SGML_FILES = gramps-manual.sgml
|
||||
|
||||
figs = \
|
||||
figures/addmedia.png \
|
||||
figures/druidpg1.png \
|
||||
figures/editbookmarks.png \
|
||||
figures/ep-address.png \
|
||||
figures/ep-altname.png \
|
||||
figures/ep-attributes.png \
|
||||
figures/ep-event.png \
|
||||
figures/ep-gallery.png \
|
||||
figures/ep-general.png \
|
||||
figures/ep-internet.png \
|
||||
figures/ep-lds.png \
|
||||
figures/ep-notes.png \
|
||||
figures/familyview.png \
|
||||
figures/filter.png \
|
||||
figures/globalmedia.png \
|
||||
figures/gotobookmark.png \
|
||||
figures/localmedia.png \
|
||||
figures/mainwin.png \
|
||||
figures/mediaview.png \
|
||||
figures/opendb.png \
|
||||
figures/pedegreesel.png \
|
||||
figures/pedegreeview.png \
|
||||
figures/peoplelist.png \
|
||||
figures/placelist.png \
|
||||
figures/prefs-bars.png \
|
||||
figures/prefs-colors.png \
|
||||
figures/prefs-dates.png \
|
||||
figures/prefs-disp.png \
|
||||
figures/prefs-find.png \
|
||||
figures/prefs-gen.png \
|
||||
figures/prefs-guess.png \
|
||||
figures/prefs-ids.png \
|
||||
figures/prefs-main.png \
|
||||
figures/prefs-media.png \
|
||||
figures/prefs-report.png \
|
||||
figures/prefs-research.png \
|
||||
figures/prefs-revision.png \
|
||||
figures/reportsel.png \
|
||||
figures/revcontrol.png \
|
||||
figures/savecomment.png \
|
||||
figures/sourcelist.png \
|
||||
figures/sourcerefsel.png \
|
||||
figures/toolsel.png
|
||||
|
||||
docname = gramps-manual
|
||||
lang = C
|
||||
omffile = gramps-manual-C.omf
|
||||
sgml_ents =
|
||||
include $(top_srcdir)/doc/sgmldocs.make
|
||||
dist-hook: app-dist-hook
|
461
doc/gramps-manual/C/Makefile.in
Normal file
@ -0,0 +1,461 @@
|
||||
# Makefile.in generated by automake 1.6.3 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
# Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# To use this template:
|
||||
# 1) Define: figs, docname, lang, omffile, sgml_ents although figs,
|
||||
# omffile, and sgml_ents may be empty in your Makefile.am which
|
||||
# will "include" this one
|
||||
# 2) Figures must go under figures/ and be in PNG format
|
||||
# 3) You should only have one document per directory
|
||||
#
|
||||
# Note that this makefile forces the directory name under
|
||||
# $prefix/share/gnome/help/ to be the same as the SGML filename
|
||||
# of the document. This is required by GNOME. eg:
|
||||
# $prefix/share/gnome/help/fish_applet/C/fish_applet.sgml
|
||||
# ^^^^^^^^^^^ ^^^^^^^^^^^
|
||||
# Definitions:
|
||||
# figs A list of screenshots which will be included in EXTRA_DIST
|
||||
# Note that these should reside in figures/ and should be .png
|
||||
# files, or you will have to make modifications below.
|
||||
# docname This is the name of the SGML file: <docname>.sgml
|
||||
# lang This is the document locale
|
||||
# omffile This is the name of the OMF file. Convention is to name
|
||||
# it <docname>-<locale>.omf.
|
||||
# sgml_ents This is a list of SGML entities which must be installed
|
||||
# with the main SGML file and included in EXTRA_DIST.
|
||||
# eg:
|
||||
# figs = \
|
||||
# figures/fig1.png \
|
||||
# figures/fig2.png
|
||||
# docname = scrollkeeper-manual
|
||||
# lang = C
|
||||
# omffile=scrollkeeper-manual-C.omf
|
||||
# sgml_ents = fdl.sgml
|
||||
# include $(top_srcdir)/help/sgmldocs.make
|
||||
# dist-hook: app-dist-hook
|
||||
#
|
||||
SHELL = @SHELL@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
|
||||
bindir = @bindir@
|
||||
sbindir = @sbindir@
|
||||
libexecdir = @libexecdir@
|
||||
datadir = @datadir@
|
||||
sysconfdir = @sysconfdir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
localstatedir = @localstatedir@
|
||||
libdir = @libdir@
|
||||
infodir = @infodir@
|
||||
mandir = @mandir@
|
||||
includedir = @includedir@
|
||||
oldincludedir = /usr/include
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = ../../..
|
||||
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = @program_transform_name@
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
|
||||
EXEEXT = @EXEEXT@
|
||||
OBJEXT = @OBJEXT@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
AMTAR = @AMTAR@
|
||||
AWK = @AWK@
|
||||
BINSH = @BINSH@
|
||||
CC = @CC@
|
||||
DEPDIR = @DEPDIR@
|
||||
DISABLE_SCROLLKEEPER = @DISABLE_SCROLLKEEPER@
|
||||
GNOMEHELP = @GNOMEHELP@
|
||||
HAVE_GNOME_CONFIG = @HAVE_GNOME_CONFIG@
|
||||
HAVE_JW = @HAVE_JW@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
INTLLIBS = @INTLLIBS@
|
||||
JW = @JW@
|
||||
LANGUAGES = @LANGUAGES@
|
||||
LIBS = @LIBS@
|
||||
MOFILES = @MOFILES@
|
||||
MSGFMT = @MSGFMT@
|
||||
P15_INCLUDES = @P15_INCLUDES@
|
||||
P20_INCLUDES = @P20_INCLUDES@
|
||||
P21_INCLUDES = @P21_INCLUDES@
|
||||
P22_INCLUDES = @P22_INCLUDES@
|
||||
PACKAGE = @PACKAGE@
|
||||
POFILES = @POFILES@
|
||||
PYTHON = @PYTHON@
|
||||
PYTHON22 = @PYTHON22@
|
||||
PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
|
||||
PYTHON_PLATFORM = @PYTHON_PLATFORM@
|
||||
PYTHON_PREFIX = @PYTHON_PREFIX@
|
||||
PYTHON_VERSION = @PYTHON_VERSION@
|
||||
RELEASE = @RELEASE@
|
||||
SCROLLKEEPER_CONFIG = @SCROLLKEEPER_CONFIG@
|
||||
SCROLLKEEPER_REQUIRED = @SCROLLKEEPER_REQUIRED@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
VERSIONSTRING = @VERSIONSTRING@
|
||||
ZIP = @ZIP@
|
||||
am__include = @am__include@
|
||||
am__quote = @am__quote@
|
||||
install_sh = @install_sh@
|
||||
pkgpyexecdir = @pkgpyexecdir@
|
||||
pkgpythondir = @pkgpythondir@
|
||||
pyexecdir = @pyexecdir@
|
||||
pythondir = @pythondir@
|
||||
SGML_FILES = gramps-manual.sgml
|
||||
|
||||
figs = \
|
||||
figures/addmedia.png \
|
||||
figures/druidpg1.png \
|
||||
figures/editbookmarks.png \
|
||||
figures/ep-address.png \
|
||||
figures/ep-altname.png \
|
||||
figures/ep-attributes.png \
|
||||
figures/ep-event.png \
|
||||
figures/ep-gallery.png \
|
||||
figures/ep-general.png \
|
||||
figures/ep-internet.png \
|
||||
figures/ep-lds.png \
|
||||
figures/ep-notes.png \
|
||||
figures/familyview.png \
|
||||
figures/filter.png \
|
||||
figures/globalmedia.png \
|
||||
figures/gotobookmark.png \
|
||||
figures/localmedia.png \
|
||||
figures/mainwin.png \
|
||||
figures/mediaview.png \
|
||||
figures/opendb.png \
|
||||
figures/pedegreesel.png \
|
||||
figures/pedegreeview.png \
|
||||
figures/peoplelist.png \
|
||||
figures/placelist.png \
|
||||
figures/prefs-bars.png \
|
||||
figures/prefs-colors.png \
|
||||
figures/prefs-dates.png \
|
||||
figures/prefs-disp.png \
|
||||
figures/prefs-find.png \
|
||||
figures/prefs-gen.png \
|
||||
figures/prefs-guess.png \
|
||||
figures/prefs-ids.png \
|
||||
figures/prefs-main.png \
|
||||
figures/prefs-media.png \
|
||||
figures/prefs-report.png \
|
||||
figures/prefs-research.png \
|
||||
figures/prefs-revision.png \
|
||||
figures/reportsel.png \
|
||||
figures/revcontrol.png \
|
||||
figures/savecomment.png \
|
||||
figures/sourcelist.png \
|
||||
figures/sourcerefsel.png \
|
||||
figures/toolsel.png
|
||||
|
||||
|
||||
docname = gramps-manual
|
||||
lang = C
|
||||
omffile = gramps-manual-C.omf
|
||||
sgml_ents =
|
||||
|
||||
docdir = $(datadir)/gnome/help/$(docname)/$(lang)
|
||||
|
||||
doc_DATA = index.html
|
||||
|
||||
sgml_files = $(sgml_ents) $(docname).sgml
|
||||
|
||||
omf_dir = $(top_srcdir)/omf-install
|
||||
|
||||
EXTRA_DIST = $(sgml_files) $(doc_DATA) $(omffile) $(figs)
|
||||
|
||||
CLEANFILES = omf_timestamp
|
||||
|
||||
# when doing a distclean, we also want to clear out html files:
|
||||
CONFIG_CLEAN_FILES = index.html $(docname)/*.html $(docname)/stylesheet-images/*.gif
|
||||
subdir = doc/gramps-manual/C
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
DIST_SOURCES =
|
||||
DATA = $(doc_DATA)
|
||||
|
||||
DIST_COMMON = Makefile.am Makefile.in
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/doc/sgmldocs.make $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu doc/gramps-manual/C/Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
|
||||
uninstall-info-am:
|
||||
docDATA_INSTALL = $(INSTALL_DATA)
|
||||
install-docDATA: $(doc_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
$(mkinstalldirs) $(DESTDIR)$(docdir)
|
||||
@list='$(doc_DATA)'; for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
f="`echo $$p | sed -e 's|^.*/||'`"; \
|
||||
echo " $(docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f"; \
|
||||
$(docDATA_INSTALL) $$d$$p $(DESTDIR)$(docdir)/$$f; \
|
||||
done
|
||||
|
||||
uninstall-docDATA:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(doc_DATA)'; for p in $$list; do \
|
||||
f="`echo $$p | sed -e 's|^.*/||'`"; \
|
||||
echo " rm -f $(DESTDIR)$(docdir)/$$f"; \
|
||||
rm -f $(DESTDIR)$(docdir)/$$f; \
|
||||
done
|
||||
tags: TAGS
|
||||
TAGS:
|
||||
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
top_distdir = ../../..
|
||||
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
$(mkinstalldirs) $(distdir)/figures
|
||||
@list='$(DISTFILES)'; for file in $$list; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkinstalldirs) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="${top_distdir}" distdir="$(distdir)" \
|
||||
dist-hook
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(DATA)
|
||||
|
||||
installdirs:
|
||||
$(mkinstalldirs) $(DESTDIR)$(docdir)
|
||||
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am: install-docDATA
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic
|
||||
|
||||
uninstall-am: uninstall-docDATA uninstall-info-am uninstall-local
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic distclean \
|
||||
distclean-generic distdir dvi dvi-am info info-am install \
|
||||
install-am install-data install-data-am install-docDATA \
|
||||
install-exec install-exec-am install-info install-info-am \
|
||||
install-man install-strip installcheck installcheck-am \
|
||||
installdirs maintainer-clean maintainer-clean-generic \
|
||||
mostlyclean mostlyclean-generic uninstall uninstall-am \
|
||||
uninstall-docDATA uninstall-info-am uninstall-local
|
||||
|
||||
|
||||
all: index.html omf
|
||||
|
||||
omf: omf_timestamp
|
||||
|
||||
omf_timestamp: $(omffile)
|
||||
-for file in $(omffile); do \
|
||||
scrollkeeper-preinstall $(docdir)/$(docname).sgml $$file $(omf_dir)/$$file; \
|
||||
done
|
||||
touch omf_timestamp
|
||||
|
||||
index.html: $(docname)/index.html
|
||||
-cp $(docname)/index.html .
|
||||
|
||||
# The weird srcdir trick is because the db2html from the Cygnus RPMs
|
||||
# cannot handle relative filenames.
|
||||
# The t1 test is for certain versions of jw that create cryptic
|
||||
# html pages, o fwhich the index is called "t1". Also, the jw
|
||||
# script from docbook-utils 0.6.9 does not copy the template
|
||||
# stylesheet-images directory like the db2html script does, so
|
||||
# we give it a little help (at least for now)
|
||||
|
||||
$(docname)/index.html: $(docname).sgml
|
||||
-srcdir=`cd $(srcdir) && pwd`; \
|
||||
if test "$(HAVE_JW)" = 'yes' ; then \
|
||||
if test -f /usr/share/sgml/docbook/dsssl-stylesheets/images/next.gif ; then \
|
||||
mkdir -p $$srcdir/$(docname)/stylesheet-images ; \
|
||||
cp /usr/share/sgml/docbook/dsssl-stylesheets/images/*.gif $$srcdir/$(docname)/stylesheet-images/ ; \
|
||||
fi; \
|
||||
jw -c /etc/sgml/catalog $$srcdir/$(docname).sgml -o $$srcdir/$(docname); \
|
||||
else \
|
||||
db2html $$srcdir/$(docname).sgml; \
|
||||
fi
|
||||
if test -f $(docname)/t1.html; then \
|
||||
cd $(srcdir)/$(docname) && cp t1.html index.html; \
|
||||
cd $(srcdir); \
|
||||
fi
|
||||
|
||||
$(docname).sgml: $(sgml_ents)
|
||||
-ourdir=`cd . && pwd`; \
|
||||
cd $(srcdir); \
|
||||
cp $(sgml_ents) $$ourdir
|
||||
|
||||
app-dist-hook: index.html
|
||||
-$(mkinstalldirs) $(distdir)/$(docname)/stylesheet-images
|
||||
-$(mkinstalldirs) $(distdir)/figures
|
||||
-cp $(srcdir)/$(docname)/*.html $(distdir)/$(docname)
|
||||
-for file in $(srcdir)/$(docname)/*.css; do \
|
||||
basefile=`echo $$file | sed -e 's,^.*/,,'`; \
|
||||
cp $$file $(distdir)/$(docname)/$$basefile ; \
|
||||
done
|
||||
-for file in $(srcdir)/$(docname)/stylesheet-images/*.gif; do \
|
||||
basefile=`echo $$file | sed -e 's,^.*/,,'`; \
|
||||
cp $$file $(distdir)/$(docname)/stylesheet-images/$$basefile ; \
|
||||
done
|
||||
-if [ -e topic.dat ]; then \
|
||||
cp $(srcdir)/topic.dat $(distdir); \
|
||||
fi
|
||||
|
||||
install-data-am: index.html omf
|
||||
-$(mkinstalldirs) $(DESTDIR)$(docdir)/stylesheet-images
|
||||
-$(mkinstalldirs) $(DESTDIR)$(docdir)/figures
|
||||
-cp $(srcdir)/$(sgml_files) $(DESTDIR)$(docdir)
|
||||
-for file in $(srcdir)/$(docname)/*.html $(srcdir)/$(docname)/*.css; do \
|
||||
basefile=`echo $$file | sed -e 's,^.*/,,'`; \
|
||||
$(INSTALL_DATA) $$file $(DESTDIR)$(docdir)/$$basefile; \
|
||||
done
|
||||
-for file in $(srcdir)/figures/*.png; do \
|
||||
basefile=`echo $$file | sed -e 's,^.*/,,'`; \
|
||||
$(INSTALL_DATA) $$file $(DESTDIR)$(docdir)/figures/$$basefile; \
|
||||
done
|
||||
-for file in $(srcdir)/$(docname)/stylesheet-images/*.gif; do \
|
||||
basefile=`echo $$file | sed -e 's,^.*/,,'`; \
|
||||
$(INSTALL_DATA) $$file $(DESTDIR)$(docdir)/stylesheet-images/$$basefile; \
|
||||
done
|
||||
-if [ -e $(srcdir)/topic.dat ]; then \
|
||||
$(INSTALL_DATA) $(srcdir)/topic.dat $(DESTDIR)$(docdir); \
|
||||
fi
|
||||
|
||||
$(docname).ps: $(srcdir)/$(docname).sgml
|
||||
-srcdir=`cd $(srcdir) && pwd`; \
|
||||
db2ps $$srcdir/$(docname).sgml
|
||||
|
||||
$(docname).rtf: $(srcdir)/$(docname).sgml
|
||||
-srcdir=`cd $(srcdir) && pwd`; \
|
||||
db2ps $$srcdir/$(docname).sgml
|
||||
|
||||
uninstall-local:
|
||||
-for file in $(srcdir)/$(docname)/stylesheet-images/*.gif; do \
|
||||
basefile=`echo $$file | sed -e 's,^.*/,,'`; \
|
||||
rm -f $(docdir)/stylesheet-images/$$basefile; \
|
||||
done
|
||||
-for file in $(srcdir)/figures/*.png; do \
|
||||
basefile=`echo $$file | sed -e 's,^.*/,,'`; \
|
||||
rm -f $(docdir)/figures/$$basefile; \
|
||||
done
|
||||
-for file in $(srcdir)/$(docname)/*.html $(srcdir)/$(docname)/*.css; do \
|
||||
basefile=`echo $$file | sed -e 's,^.*/,,'`; \
|
||||
rm -f $(DESTDIR)$(docdir)/$$basefile; \
|
||||
done
|
||||
-for file in $(sgml_files); do \
|
||||
rm -f $(DESTDIR)$(docdir)/$$file; \
|
||||
done
|
||||
-rmdir $(DESTDIR)$(docdir)/stylesheet-images
|
||||
-rmdir $(DESTDIR)$(docdir)/figures
|
||||
-rmdir $(DESTDIR)$(docdir)
|
||||
dist-hook: app-dist-hook
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
BIN
doc/gramps-manual/C/figures/addmedia.png
Normal file
BIN
doc/gramps-manual/C/figures/druidpg1.png
Normal file
BIN
doc/gramps-manual/C/figures/editbookmarks.png
Normal file
BIN
doc/gramps-manual/C/figures/ep-address.png
Normal file
BIN
doc/gramps-manual/C/figures/ep-altname.png
Normal file
BIN
doc/gramps-manual/C/figures/ep-attributes.png
Normal file
BIN
doc/gramps-manual/C/figures/ep-event.png
Normal file
BIN
doc/gramps-manual/C/figures/ep-gallery.png
Normal file
BIN
doc/gramps-manual/C/figures/ep-general.png
Normal file
BIN
doc/gramps-manual/C/figures/ep-internet.png
Normal file
BIN
doc/gramps-manual/C/figures/ep-lds.png
Normal file
BIN
doc/gramps-manual/C/figures/ep-notes.png
Normal file
BIN
doc/gramps-manual/C/figures/familyview.png
Normal file
BIN
doc/gramps-manual/C/figures/filter.png
Normal file
BIN
doc/gramps-manual/C/figures/globalmedia.png
Normal file
BIN
doc/gramps-manual/C/figures/gotobookmark.png
Normal file
BIN
doc/gramps-manual/C/figures/localmedia.png
Normal file
BIN
doc/gramps-manual/C/figures/mainwin.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
doc/gramps-manual/C/figures/mediaview.png
Normal file
BIN
doc/gramps-manual/C/figures/opendb.png
Normal file
BIN
doc/gramps-manual/C/figures/pedegreesel.png
Normal file
BIN
doc/gramps-manual/C/figures/pedegreeview.png
Normal file
BIN
doc/gramps-manual/C/figures/peoplelist.png
Normal file
BIN
doc/gramps-manual/C/figures/placelist.png
Normal file
BIN
doc/gramps-manual/C/figures/prefs-bars.png
Normal file
BIN
doc/gramps-manual/C/figures/prefs-colors.png
Normal file
BIN
doc/gramps-manual/C/figures/prefs-dates.png
Normal file
BIN
doc/gramps-manual/C/figures/prefs-disp.png
Normal file
BIN
doc/gramps-manual/C/figures/prefs-find.png
Normal file
BIN
doc/gramps-manual/C/figures/prefs-gen.png
Normal file
BIN
doc/gramps-manual/C/figures/prefs-guess.png
Normal file
BIN
doc/gramps-manual/C/figures/prefs-ids.png
Normal file
BIN
doc/gramps-manual/C/figures/prefs-main.png
Normal file
BIN
doc/gramps-manual/C/figures/prefs-media.png
Normal file
BIN
doc/gramps-manual/C/figures/prefs-report.png
Normal file
BIN
doc/gramps-manual/C/figures/prefs-research.png
Normal file
BIN
doc/gramps-manual/C/figures/prefs-revision.png
Normal file
BIN
doc/gramps-manual/C/figures/reportsel.png
Normal file
BIN
doc/gramps-manual/C/figures/revcontrol.png
Normal file
BIN
doc/gramps-manual/C/figures/savecomment.png
Normal file
BIN
doc/gramps-manual/C/figures/sourcelist.png
Normal file
BIN
doc/gramps-manual/C/figures/sourcerefsel.png
Normal file
BIN
doc/gramps-manual/C/figures/toolsel.png
Normal file
14
doc/gramps-manual/C/gramps-manual-C.omf
Normal file
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<omf>
|
||||
<resource>
|
||||
<title>
|
||||
GRAMPS User Manual
|
||||
</title>
|
||||
<subject>
|
||||
<category>GNOME|Applications</category>
|
||||
</subject>
|
||||
<format mime="text/sgml"/>
|
||||
<identifier url="gramps-manual.sgml"/>
|
||||
<language code="C"/>
|
||||
</resource>
|
||||
</omf>
|
1863
doc/gramps-manual/C/gramps-manual.sgml
Normal file
222
doc/gramps-manual/C/gramps-manual/index.html
Normal file
@ -0,0 +1,222 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
||||
<HTML
|
||||
><HEAD
|
||||
><TITLE
|
||||
>GRAMPS User Manual</TITLE
|
||||
><META
|
||||
NAME="GENERATOR"
|
||||
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
|
||||
"><LINK
|
||||
REL="NEXT"
|
||||
TITLE="Running GRAMPS for the first time."
|
||||
HREF="x28.html"></HEAD
|
||||
><BODY
|
||||
CLASS="ARTICLE"
|
||||
BGCOLOR="#FFFFFF"
|
||||
TEXT="#000000"
|
||||
LINK="#0000FF"
|
||||
VLINK="#840084"
|
||||
ALINK="#0000FF"
|
||||
><DIV
|
||||
CLASS="ARTICLE"
|
||||
><DIV
|
||||
CLASS="TITLEPAGE"
|
||||
><H1
|
||||
CLASS="TITLE"
|
||||
><A
|
||||
NAME="AEN2">GRAMPS User Manual</H1
|
||||
><P
|
||||
CLASS="COPYRIGHT"
|
||||
><A
|
||||
HREF="ln7.html"
|
||||
>Copyright</A
|
||||
> © 2001 by Donald N. Allingham</P
|
||||
><HR
|
||||
WIDTH="75%"
|
||||
ALIGN="CENTER"
|
||||
COLOR="#000000"
|
||||
SIZE="1"></DIV
|
||||
><DIV
|
||||
CLASS="TOC"
|
||||
><DL
|
||||
><DT
|
||||
><B
|
||||
>Table of Contents</B
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="t1.html#intro"
|
||||
>Introduction</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x28.html"
|
||||
>Running GRAMPS for the first time.</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x41.html"
|
||||
>Getting Started</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x84.html"
|
||||
>People View</A
|
||||
></DT
|
||||
><DT
|
||||
><A
|
||||
HREF="x129.html"
|
||||
>Editing a person's data</A
|
||||
></DT
|
||||
></DL
|
||||
></DIV
|
||||
>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<DIV
|
||||
CLASS="SECT1"
|
||||
><H1
|
||||
CLASS="SECT1"
|
||||
><A
|
||||
NAME="intro">Introduction</H1
|
||||
>
|
||||
<P
|
||||
> <TT
|
||||
CLASS="APPLICATION"
|
||||
>GRAMPS</TT
|
||||
> 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.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> To run <TT
|
||||
CLASS="APPLICATION"
|
||||
>GRAMPS</TT
|
||||
>, select
|
||||
-><B
|
||||
CLASS="GUISUBMENU"
|
||||
>Programs</B
|
||||
>+
|
||||
+ -><B
|
||||
CLASS="GUISUBMENU"
|
||||
>Applications</B
|
||||
>+
|
||||
+ -><B
|
||||
CLASS="GUIMENUITEM"
|
||||
>gramps</B
|
||||
>+
|
||||
+ + + + + +
|
||||
from the <B
|
||||
CLASS="GUIMENU"
|
||||
>Main Menu</B
|
||||
>, or type
|
||||
<B
|
||||
CLASS="COMMAND"
|
||||
>gramps</B
|
||||
> on the command line.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> This document describes version 0.7.3 of
|
||||
<TT
|
||||
CLASS="APPLICATION"
|
||||
>GRAMPS</TT
|
||||
>.
|
||||
</P
|
||||
>
|
||||
</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"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
><A
|
||||
HREF="x28.html"
|
||||
ACCESSKEY="N"
|
||||
>Next >>></A
|
||||
></TD
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="left"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
>Running GRAMPS for the first time.</TD
|
||||
></TR
|
||||
></TABLE
|
||||
></DIV
|
||||
></BODY
|
||||
></HTML
|
||||
>
|
133
doc/gramps-manual/C/gramps-manual/ln7.html
Normal file
@ -0,0 +1,133 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
||||
<HTML
|
||||
><HEAD
|
||||
><META
|
||||
NAME="GENERATOR"
|
||||
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
|
||||
"><LINK
|
||||
REL="HOME"
|
||||
TITLE="GRAMPS User Manual"
|
||||
HREF="t1.html"><LINK
|
||||
REL="UP"
|
||||
TITLE="GRAMPS User Manual"
|
||||
HREF="t1.html#AEN2"><LINK
|
||||
REL="NEXT"
|
||||
TITLE="Running GRAMPS for the first time."
|
||||
HREF="x28.html"></HEAD
|
||||
><BODY
|
||||
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"
|
||||
>GRAMPS User Manual</TH
|
||||
></TR
|
||||
></TABLE
|
||||
><HR
|
||||
ALIGN="LEFT"
|
||||
WIDTH="100%"></DIV
|
||||
><DIV
|
||||
CLASS="LEGALNOTICE"
|
||||
><A
|
||||
NAME="legalnotice"><P
|
||||
></P
|
||||
> <P
|
||||
> Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the <A
|
||||
HREF="gnome-help:fdl"
|
||||
TARGET="_top"
|
||||
><I
|
||||
CLASS="CITETITLE"
|
||||
>GNU Free Documentation
|
||||
License</I
|
||||
></A
|
||||
>, 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 <A
|
||||
HREF="gnome-help:fdl"
|
||||
TARGET="_top"
|
||||
>here</A
|
||||
>.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
> 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.
|
||||
</P
|
||||
>
|
||||
<P
|
||||
></P
|
||||
></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"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
><A
|
||||
HREF="t1.html"
|
||||
ACCESSKEY="H"
|
||||
>Home</A
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
></TR
|
||||
><TR
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="left"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
><TD
|
||||
WIDTH="34%"
|
||||
ALIGN="center"
|
||||
VALIGN="top"
|
||||
><A
|
||||
HREF="t1.html#AEN2"
|
||||
ACCESSKEY="U"
|
||||
>Up</A
|
||||
></TD
|
||||
><TD
|
||||
WIDTH="33%"
|
||||
ALIGN="right"
|
||||
VALIGN="top"
|
||||
> </TD
|
||||
></TR
|
||||
></TABLE
|
||||
></DIV
|
||||
></BODY
|
||||
></HTML
|
||||
>
|
BIN
doc/gramps-manual/C/gramps-manual/stylesheet-images/caution.gif
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
doc/gramps-manual/C/gramps-manual/stylesheet-images/home.gif
Normal file
After Width: | Height: | Size: 995 B |
After Width: | Height: | Size: 1.1 KiB |
BIN
doc/gramps-manual/C/gramps-manual/stylesheet-images/next.gif
Normal file
After Width: | Height: | Size: 964 B |
BIN
doc/gramps-manual/C/gramps-manual/stylesheet-images/note.gif
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
doc/gramps-manual/C/gramps-manual/stylesheet-images/prev.gif
Normal file
After Width: | Height: | Size: 944 B |