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 |