Merge changes made in gramps20 into HEAD
svn: r4549
@ -1,10 +1,243 @@
|
||||
2005-05-11 Alex Roitman <shura@gramps-project.org>
|
||||
* INSTALL, NEWS, README, acinclude.m4, configure.in, doc/gramps.1.in,
|
||||
doc/gramps-manual/Makefile.am, doc/gramps-manual/C/*.xml,
|
||||
doc/gramps-manual/C/figures/*.png, src/AddSpouse.py, src/AddrEdit.py,
|
||||
src/AttrEdit.py, src/ChooseParents.py, src/Date.py, src/DateEdit.py,
|
||||
src/DbPrompter.py, src/DisplayModels.py,
|
||||
src/EditPlace.py, src/EditSource.py, src/EventEdit.py,
|
||||
src/FamilyView.py, src/GenericFilter.py, src/GrampsBSDDB.py,
|
||||
src/GrampsGconfKeys.py, src/GrampsIniKeys.py, src/GrampsXMLDB.py,
|
||||
src/ImageSelect.py, src/Marriage.py, src/MergeData.py,
|
||||
src/MergePeople.py, src/NameEdit.py, src/PedView.py, src/PeopleModel.py,
|
||||
src/ReadGedcom.py, src/ReadXML.py, src/RelLib.py, src/ReportUtils.py,
|
||||
src/SourceView.py, src/StartupDialog.py, src/UrlEdit.py, src/Witness.py,
|
||||
src/WriteGedcom.py, src/WriteXML.py, src/gramps.glade,
|
||||
src/gramps_main.py, src/mergedata.glade, src/data/Makefile.am,
|
||||
src/data/gramps.schemas, src/data/tips.xml, src/dates/Date_fi.py,
|
||||
src/dates/Makefile.am, src/plugins/Check.py,
|
||||
src/plugins/FilterEditor.py, src/plugins/GraphViz.py,
|
||||
src/plugins/ImportGeneWeb.py, src/plugins/PatchNames.py,
|
||||
src/plugins/ReorderIds.py, src/plugins/ScratchPad.py,
|
||||
src/plugins/SoundGen.py, src/plugins/StatisticsChart.py,
|
||||
src/plugins/TestcaseGenerator.py, src/plugins/Verify.py,
|
||||
src/plugins/rel_es.py, src/po/da.po, src/po/de.po, src/po/es.po,
|
||||
src/po/fi.po, src/po/fr.po, src/po/nb.po, src/po/nl.po, src/po/no.po,
|
||||
src/po/ru.po, src/po/sv.po, src/po/template.po:
|
||||
Merge changes made in gramps20 into HEAD.
|
||||
|
||||
2005-05-10 Don Allingham <don@gramps-project.org>
|
||||
* src/DbPrompter.py: add callback for progressbar
|
||||
* src/GrampsXMLDB.py: pass callback task
|
||||
* src/ReadXML.py: handle progress callback, fix placeobj error
|
||||
* src/gramps_main.py: define progress bar callback, remove problem
|
||||
filters
|
||||
|
||||
2005-05-10 Eero Tamminen <eerot@sf>
|
||||
* src/plugins/StatisticsChart.po: add gettext _() to three strings
|
||||
where it was missing
|
||||
|
||||
2005-05-10 Don Allingham <don@gramps-project.org>
|
||||
* src/StartupDialog.py: check for broken Slackware library, and
|
||||
missing gconf installation, present error messages instead of
|
||||
tracebacks
|
||||
|
||||
2005-05-10 Alex Roitman <shura@gramps-project.org>
|
||||
* src/data/gramps.schemas: Add a welcome key.
|
||||
* src/GrampsGconfKeys.py: Add get/set methods for welcome key.
|
||||
* src/GrampsIniKeys.py: Add get/set methods for welcome key.
|
||||
|
||||
* src/po/ru.po: Update.
|
||||
|
||||
* src/gramps.glade: Remove unused widget.
|
||||
* src/gramps_main.py: Use new welcome key for the welcome dialog.
|
||||
|
||||
* src/data/tips.xml: Update tips.
|
||||
|
||||
* src/WriteXML.py (write_witness): Proper witness reference.
|
||||
* src/ReadXML.py (start_witness): Initialize empty comment.
|
||||
|
||||
2005-05-10 Julio Sanchez <jsanchez@users.sourceforge.net>
|
||||
* src/po/es.po: Updated translation
|
||||
* src/plugins/rel_es.py: Revert to more conservative relationships
|
||||
|
||||
2005-05-09 Don Allingham <don@gramps-project.org>
|
||||
* src/gramps.glade: new scrollable message dialog
|
||||
* src/gramps_main.py: add new upgrading information message
|
||||
* src/template.po: new translatable string
|
||||
* src/StartupDialog.py: Added Alex's configuration upgrade, but
|
||||
wrapped in gconf detection
|
||||
|
||||
2005-05-09 Alex Roitman <shura@gramps-project.org>
|
||||
* doc/gramps-manual/C/authors.xml: Update.
|
||||
|
||||
* src/DisplayModels.py (column_change): Use localized time string.
|
||||
* src/PeopleModel.py (column_change): Use localized time string.
|
||||
* src/RelLib.py (get_change_display): Use localized time string.
|
||||
|
||||
2005-05-09 Baruch Even <baruch@ev-en.org>
|
||||
* src/plugins/GraphViz.py (parse_user_options): Use 'justyears'.
|
||||
|
||||
2005-05-08 Don Allingham <don@gramps-project.org>
|
||||
* src/WriteGedcom.py: fix adopted relationship generation
|
||||
|
||||
2005-05-08 Alex Roitman <shura@gramps-project.org>
|
||||
* src/po/ru.po: Typos.
|
||||
|
||||
* doc/gramps-manual/C/usage.xml: Typo.
|
||||
|
||||
2005-05-07 Alex Roitman <shura@gramps-project.org>
|
||||
* INSTALL: Update.
|
||||
|
||||
2005-05-07 Julio Sanchez <jsanchez@users.sourceforge.net>
|
||||
* src/po/es.po: Updated translation
|
||||
|
||||
2005-05-07 Jens Arvidsson <jya@sverige.nu>
|
||||
* src/po/sv.po: Partial translation update for version 2.0.0.
|
||||
|
||||
2005-05-07 Martin Hawlisch <Martin.Hawlisch@gmx.de>
|
||||
* src/PedView.py (build_detail_string), src/FamilyView.py (load_family):
|
||||
Dont crash on strange signal race condition, that leaves database in
|
||||
corrupt state before sending "active-changed"
|
||||
* src/plugins/ImportGeneWeb.py (read_children_lines): Properly add
|
||||
birth event; (parse_person): Remove brackets from name;
|
||||
(get_or_create_place): Fix typo
|
||||
|
||||
2005-05-06 Alex Roitman <shura@gramps-project.org>
|
||||
* acinclude.m4: Copy macro for GCONF configuration from gconf2-dev;
|
||||
add --disable-mime-install and --enable-packager-mode arguments.
|
||||
* configure.in: Call new macros; Remove obsolete French and Russian
|
||||
manuals for the time being.
|
||||
* doc/gramps-manual/Makefile.am: Remove obsolete manuals.
|
||||
* src/data/Makefile.am: Conditional installation of gconf keys and
|
||||
mime types.
|
||||
* src/po/da.po: Typos preventing make.
|
||||
* NEWS: Update.
|
||||
* README: Update.
|
||||
|
||||
2005-05-06 Larry Allingham <lallingham@woh.rr.com>
|
||||
* doc/gramps-manual/C/authors.xml, doc/gramps-manual/C/faq.xml,
|
||||
doc/gramps-manual/C/mainwin.xml, doc/gramps-manual/C/usage.xml:
|
||||
Typos and corrections.
|
||||
|
||||
2005-05-06 Don Allingham <don@gramps-project.org>
|
||||
* src/ReadGedcomp.py: Handle inline sources better in GEDCOM files
|
||||
* src/ReportUtils.py: check for spouse existance before creating a
|
||||
marriage string - return an empty string instead.
|
||||
* src/ReadXML.py: fix handling of non-gregorian dates
|
||||
* src/EditPerson.py: faster building of place lists using cursors
|
||||
|
||||
2005-05-06 Martin Hawlisch <Martin.Hawlisch@gmx.de>
|
||||
* src/gramps_main.py (undo): Block signals during undo to make
|
||||
it MUCH faster when undoing larger imports or plugin runs
|
||||
|
||||
2005-05-06 Don Allingham <don@gramps-project.org>
|
||||
* src/gramps_main.py: fix beta warning dialog
|
||||
|
||||
2005-05-05 Alex Roitman <shura@gramps-project.org>
|
||||
* doc/gramps.1.in, doc/gramps-manual/C/bugs.xml,
|
||||
doc/gramps-manual/C/cmdline.xml, doc/gramps-manual/C/faq.xml,
|
||||
doc/gramps-manual/C/getstart.xml,
|
||||
doc/gramps-manual/C/gramps-manual.xml,
|
||||
doc/gramps-manual/C/mainwin.xml,
|
||||
doc/gramps-manual/C/preface.xml: Update.
|
||||
|
||||
2005-05-05 Don Allingham <don@gramps-project.org>
|
||||
* src/plugins/PatchNames.py: handle multiple titles (bug 1196056)
|
||||
* src/plugins/ReorderIDs.py: bring up to speed with new handle/id methodology,
|
||||
|
||||
2005-05-05 Martin Hawlisch <Martin.Hawlisch@gmx.de>
|
||||
* src/GenericFilter.py: Fix copy-n-paste errors;
|
||||
dont crash on empty database
|
||||
|
||||
2005-05-04 Alex Roitman <shura@gramps-project.org>
|
||||
* doc/gramps-manual/C/figures/scratch-pad.png: Add new figure.
|
||||
* doc/gramps-manual/C/authors.xml: Update.
|
||||
* doc/gramps-manual/C/keybind.xml: Update.
|
||||
* doc/gramps-manual/C/usage.xml: Update.
|
||||
* doc/gramps-manual/C/figures/cfe-ar.png: Update.
|
||||
* doc/gramps-manual/C/figures/cfe-df.png: Update.
|
||||
* src/plugins/FilterEditor.py: Correct manual section.
|
||||
* src/plugins/ScratchPad.py: Correct manual section.
|
||||
* src/plugins/SoundGen.py: Correct manual section.
|
||||
* src/plugins/Verify.py: Correct manual section.
|
||||
|
||||
* src/SourceView.py (__init__): Connect to the key-press-event.
|
||||
* doc/gramps-manual/C/keybind.xml: Update.
|
||||
* doc/gramps-manual/C/cmdline.xml: Update.
|
||||
* doc/gramps-manual/C/custom.xml: Update.
|
||||
* doc/gramps-manual/C/filtref.xml: Update.
|
||||
|
||||
2005-05-03 Don Allingham <don@gramps-project.org>
|
||||
* src/gramps_main.py: remove beta warning, handle OSError
|
||||
on config open
|
||||
|
||||
2005-05-03 Tino Meinen <a.t.meinen@chello.nl>
|
||||
* src/po/nl.po: Updated Dutch translation
|
||||
|
||||
2005-05-03 Eero Tamminen <eerot@sf>
|
||||
* src/po/fi.po: Updated to new template.
|
||||
|
||||
2005-05-03 Martin Hawlisch <Martin.Hawlisch@gmx.de>
|
||||
* src/GenericFilter.py (HaveChildren): Match what it should
|
||||
|
||||
2005-05-03 Alex Roitman <shura@gramps-project.org>
|
||||
* doc/gramps-manual/C/usage.xml: Update.
|
||||
* doc/gramps-manual/C/figures/*.png: Add new figures.
|
||||
* src/MergePeople.py: Minor cleanups; Help buttons.
|
||||
* src/MergeData.py: Minor cleanups; Help buttons.
|
||||
* src/mergedata.glade: Minor cleanups; Help buttons.
|
||||
|
||||
* doc/gramps-manual/C/prefs.xml: Update.
|
||||
* doc/gramps-manual/C/figures/prefs.png: Add new figure.
|
||||
|
||||
2005-05-03 Don Allingham <don@gramps-project.org>
|
||||
* src/ReportUtils.py: fixed type (get-day() -> get_day())
|
||||
|
||||
2005-05-03 Don Allingham <don@gramps-project.org>
|
||||
* src/ListBox.py: added to CVS
|
||||
* src/Makefile.am: added ListBox.py
|
||||
|
||||
2005-05-02 Don Allingham <don@gramps-project.org>
|
||||
* src/gramps.glade: remove place field, fixed parent relationships
|
||||
* src/ImageSelect.py: remove place handling
|
||||
|
||||
2005-05-02 Alex Roitman <shura@gramps-project.org>
|
||||
* src/DateEdit.py (DateEditorDialog.__init__): Correct manual section.
|
||||
* doc/gramps-manual/C/usage.xml: Update.
|
||||
* doc/gramps-manual/C/figures/edit-person-notes.png: Update.
|
||||
* doc/gramps-manual/C/figures/date-selection.png: Add new figure.
|
||||
|
||||
* src/EditPlace.py: Correct manual section.
|
||||
* src/EditSource.py: Correct manual section.
|
||||
* src/EventEdit.py: Correct manual section.
|
||||
* src/ImageSelect.py: Correct manual section.
|
||||
* src/Marriage.py: Correct manual section.
|
||||
* src/NameEdit.py: Correct manual section.
|
||||
* doc/gramps-manual/C/usage.xml: Update.
|
||||
* doc/gramps-manual/C/figures/edit-*.png: Update.
|
||||
|
||||
* src/AddrEdit.py: Correct manual section.
|
||||
* src/AttrEdit.py: Correct manual section.
|
||||
* src/Witness.py: Correct manual section.
|
||||
* doc/gramps-manual/C/usage.xml: Update.
|
||||
* doc/gramps-manual/C/figures/edit-*.png: Update.
|
||||
|
||||
* src/po/ru.po: Translation update.
|
||||
|
||||
2005-05-02 Martin Hawlisch <Martin.Hawlisch@gmx.de>
|
||||
* src/gramps_main.py: Disable fast merge on a readonly db
|
||||
* src/plugins/Check.py: Disable on readonly db
|
||||
* src/plugins/TestcaseGenerator.py: Disable on readonly db
|
||||
|
||||
2005-05-02 Don Allingham <dona@gramps-project.org>
|
||||
* src/GrampsBSDDB.py: handle missing version number properly, detect
|
||||
empty database properly.
|
||||
* src/ReadGedcom.py: set default gedcom parser class to "GEDCOM 5.5"
|
||||
instead of None
|
||||
* src/AddSpouse.py: fix filtering of lists using GenericFilters
|
||||
* src/ChooseParents.py: fix filtering of lists using GenericFilters
|
||||
* src/GenericFilter.py: fix date comparison
|
||||
|
||||
2005-05-02 Don Allingham <don@gramps-project.org>
|
||||
* src/EditPerson.py: start of new gallery
|
||||
* src/ImageSelect.py: start of new gallery
|
||||
@ -12,6 +245,23 @@
|
||||
* src/const.py.in: LDS temple names
|
||||
* src/edit_person.glade: start of new gallery
|
||||
|
||||
2005-05-01 Alex Roitman <shura@gramps-project.org>
|
||||
* src/EditPerson.py (on_help_clicked): Call appropriate manual section.
|
||||
* doc/gramps-manual/C/usage.xml: Update.
|
||||
* doc/gramps-manual/C/figures/edit-person-*.png: Update.
|
||||
* configure.in: Bump up version, to distinguish from released 1.1.99.
|
||||
|
||||
2005-05-01 Don Allingham <don@gramps-project.org>
|
||||
* src/po/template.po: updated for string changes
|
||||
* src/Date.py: add the ui_calendar_names for translation for the ui
|
||||
* src/DateEdit.py: use the new ui_calendar_names for the ui
|
||||
* src/plugins/Check.py: delete families that contain only a
|
||||
single parent and no children
|
||||
|
||||
2005-05-01 Eero Tamminen <eerot@sf>
|
||||
* src/dates/Date_fi.py: Fixed Display class + other changes.
|
||||
Parser is waiting for Gramps DateParser.py update
|
||||
|
||||
2005-04-30 Don Allingham <don@gramps-project.org>
|
||||
* src/EditPerson.py: Add support for inline editing
|
||||
* src/EventEdit.py: Don't commit events here - should be commited
|
||||
@ -21,6 +271,12 @@
|
||||
* src/const.py.in: convert Alternate Birth and Alternate Death to
|
||||
Birth and Death
|
||||
|
||||
2005-04-29 Eero Tamminen <eerot@sf>
|
||||
* src/dates/Date_fi.py: initial Finnish date parser, doesn't yet
|
||||
work correctly
|
||||
* src/dates/Makefile.am: Added Date_fi.py
|
||||
* src/po/fi.po: Updated translation from template.po + some fixes
|
||||
|
||||
2005-04-29 Alex Roitman <shura@gramps-project.org>
|
||||
* src/edit_person.glade: Compact name edit button.
|
||||
|
||||
@ -29,6 +285,14 @@
|
||||
New files. Start of a client interface for phpGedView.
|
||||
unfinished. Put them in CVS to not loose them.
|
||||
|
||||
2005-04-28 Alex Roitman <shura@gramps-project.org>
|
||||
* src/EditPlace.py (on_add_url_clicked,on_update_url_clicked):
|
||||
Use empty name when not available.
|
||||
* src/UrlEdit.py (__init__): Work with empty names.
|
||||
|
||||
2005-04-28 Don Allingham <don@gramps-project.org>
|
||||
* src/FamilyView.py: fix adding child to wrong family
|
||||
|
||||
2005-04-28 Don Allingham <don@gramps-project.org>
|
||||
* src/EditPerson.py: remove dead logic for birth/death editing,
|
||||
fix list handling
|
||||
@ -60,6 +324,12 @@
|
||||
src/po/fr.po, src/po/ru.po, src/po/template.po: Merge changes
|
||||
made in gramps20 into HEAD.
|
||||
|
||||
2005-04-26 Martin Hawlisch <Martin.Hawlisch@gmx.de>
|
||||
* src/EditPerson.py (on_apply_person_clicked): Fix crash when
|
||||
changing gender caused by a family handle/object mismatch
|
||||
|
||||
* src/MergePeople.py: Corrected gender display (closes #1190203)
|
||||
|
||||
2005-04-26 Martin Hawlisch <Martin.Hawlisch@gmx.de>
|
||||
* src/PedView.py: Removed navigation buttons in flavour of a menu;
|
||||
|
||||
|
104
gramps2/INSTALL
@ -1,71 +1,53 @@
|
||||
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".
|
||||
$Id$
|
||||
|
||||
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 file contains some useful details on the installation from source code
|
||||
for GRAMPS. It does not cover installation of a pre-built binary package.
|
||||
For that use your package manager, the rest is done by the packager.
|
||||
|
||||
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
|
||||
configure vs autogen scripts
|
||||
----------------------------
|
||||
If you are building from released tarball, you should be able to just
|
||||
run "./configure && make". However, if you're building from the CVS,
|
||||
the configure is not present. You should auto-generate it by
|
||||
running ./autogen.sh and then "make" and, finally, "make install".
|
||||
|
||||
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.3 is required
|
||||
to properly register documentation.
|
||||
Regular vs local installation
|
||||
-----------------------------
|
||||
This version of gramps requires, among others, the two things to be done:
|
||||
gconf schemas and mime types for gramps MUST be properly installed.
|
||||
The usual ./configure, make, and make install as a root should do the trick.
|
||||
But be careful if you're using the non-default options or would like
|
||||
to install without being root.
|
||||
|
||||
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:
|
||||
The latter is possible, but you should supply additional arguments to
|
||||
autogen or configrue:
|
||||
--with-gconf-source=xml::$HOME/.gconf --with-mime-dir=$HOME/.local/share
|
||||
Most likely, such local install will also need some prefix with write
|
||||
permissions for you:
|
||||
--prefix=$HOME/my_gramps_path
|
||||
|
||||
* 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?
|
||||
Whether you're doing local install or regular install, YOU MUST INSTALL
|
||||
GCONF SCHEMAS AND MIME TYPES. YOU HAVE BEEN WARNED!
|
||||
|
||||
* 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.
|
||||
Packager's issues
|
||||
------------------
|
||||
The above mentioned gconf schemas and mime types must be installed.
|
||||
However, the update-mime-database and the gconftool-2 calls to process
|
||||
the newly installed types and schemas must be done in POST-INSTALLATION.
|
||||
In packager's world, the install happens on packager's machine
|
||||
into something like /tmp/gramps-tmp. However, the postinstall
|
||||
should happen on the user's machine.
|
||||
|
||||
* 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.
|
||||
To assist with that, there's an argument available in configure
|
||||
(or autogen, which will pass it to configure) which disables
|
||||
the gconf schema and mime type processing:
|
||||
--enable-packager-mode
|
||||
This argument should disable postinstall calls made during
|
||||
make install, and print a nasty warning during configure.
|
||||
IT IS PACKAGER'S RESPONSIBILITY to follow the advice given
|
||||
by the configure output and to copy the appropriate code
|
||||
from the src/data/Makefile.am into the pos-tinstall (and post-uninstall)
|
||||
of the particular packaging system.
|
||||
|
@ -1,3 +1,8 @@
|
||||
Version 2.0.0 -- the "The Bright Side of Life" release
|
||||
* Bug fixes
|
||||
* Translation updates.
|
||||
* Manual update (English only).
|
||||
|
||||
Version 1.1.99 -- the "What... is your favourite colour?" release
|
||||
* Bug fixes
|
||||
* GEDCOM import fixes with parent/child relationships
|
||||
|
@ -5,28 +5,18 @@ If building from source, also read the INSTALL file (at least through the
|
||||
Requirements
|
||||
--------------------------------
|
||||
The following packages *MUST* be installed in order for Gramps to work:
|
||||
Python 2.2 or greater
|
||||
Gnome 2.0 or greater
|
||||
PyGTK2 1.99.14 or greater
|
||||
Gnome-python 1.99.14 or greater
|
||||
|
||||
Many distributions already provide PyXML, but if your
|
||||
installation does not have it, you can get it from
|
||||
http://sourceforge.net/project/showfiles.php?group_id=6473
|
||||
Python 2.3 or greater
|
||||
Gnome 2.8 or greater
|
||||
PyGTK2 2.4 or greater
|
||||
Gnome-python 2.6 or greater
|
||||
|
||||
The following packages are *STRONGLY RECOMMENDED* to be installed:
|
||||
Reportlab Enable creation of PDF documents
|
||||
http://www.reportlab.com
|
||||
|
||||
Python Imaging Library (PIL)
|
||||
Enable generation of thumbnails for images
|
||||
http://www.pythonware.com/products/pil
|
||||
GraphViz Enable creation of graphs using GraphViz engine
|
||||
http://www.graphviz.org
|
||||
|
||||
If, for some reason, you can't/don't want to install PIL, at least make sure
|
||||
that ImageMagick is available on your system: http://www.imagemagick.org
|
||||
|
||||
WITHOUT eithr PIL or ImageMagick *YOU WILL NOT BE ABLE TO USE THUMBNAILS*
|
||||
for any of your images.
|
||||
|
||||
Documentation
|
||||
---------------------------------
|
||||
@ -35,7 +25,7 @@ installed in the GNOME help path(*). Gnome help browser (Yelp) uses these
|
||||
(properly installed) XML files to display the documentation.
|
||||
|
||||
Of course, current HTML documentation can also be found on the gramps website,
|
||||
http://gramps.sourceforge.net/help.html
|
||||
http://gramps-project.org/index.php?module=pagemaster&PAGE_user_op=view_page&PAGE_id=7
|
||||
|
||||
(*) More precisely, they are installed
|
||||
in ${prefix}/share/gramps/gnome/help/gramps,
|
||||
|
@ -1,3 +1,46 @@
|
||||
dnl AM_GCONF2_REPLACEMENT
|
||||
dnl Defines GCONF_SCHEMA_CONFIG_SOURCE which is where you should install schemas
|
||||
dnl (i.e. pass to gconftool-2
|
||||
dnl Defines GCONF_SCHEMA_FILE_DIR which is a filesystem directory where
|
||||
dnl you should install foo.schemas files
|
||||
dnl
|
||||
dnl This macro was copied from AM_GCONF_SOURCE_2 from the gconf2-dev package.
|
||||
dnl By copying it here we remove the requirement for having it on the system.
|
||||
|
||||
AC_DEFUN([AM_GCONF2_REPLACEMENT],
|
||||
[
|
||||
if test "x$GCONF_SCHEMA_INSTALL_SOURCE" = "x"; then
|
||||
GCONF_SCHEMA_CONFIG_SOURCE=`gconftool-2 --get-default-source`
|
||||
else
|
||||
GCONF_SCHEMA_CONFIG_SOURCE=$GCONF_SCHEMA_INSTALL_SOURCE
|
||||
fi
|
||||
|
||||
AC_ARG_WITH(gconf-source,
|
||||
[ --with-gconf-source=sourceaddress Config database for installing schema files.],GCONF_SCHEMA_CONFIG_SOURCE="$withval",)
|
||||
|
||||
AC_SUBST(GCONF_SCHEMA_CONFIG_SOURCE)
|
||||
AC_MSG_RESULT([Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation])
|
||||
|
||||
if test "x$GCONF_SCHEMA_FILE_DIR" = "x"; then
|
||||
GCONF_SCHEMA_FILE_DIR='$(sysconfdir)/gconf/schemas'
|
||||
fi
|
||||
|
||||
AC_ARG_WITH(gconf-schema-file-dir,
|
||||
[ --with-gconf-schema-file-dir=dir Directory for installing schema files.],GCONF_SCHEMA_FILE_DIR="$withval",)
|
||||
|
||||
AC_SUBST(GCONF_SCHEMA_FILE_DIR)
|
||||
AC_MSG_RESULT([Using $GCONF_SCHEMA_FILE_DIR as install directory for schema files])
|
||||
|
||||
AC_ARG_ENABLE(schemas-install,
|
||||
[ --disable-schemas-install Disable the schemas installation],
|
||||
[case "${enableval}" in
|
||||
yes) schemas_install=true ;;
|
||||
no) schemas_install=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --disable-schemas-install) ;;
|
||||
esac],[schemas_install=true])
|
||||
AM_CONDITIONAL(GCONF_SCHEMAS_INSTALL, test x$schemas_install = xtrue)
|
||||
])
|
||||
|
||||
dnl AM_SHARED_MIME
|
||||
dnl Defines SHARED_MIME_DIR which is where mime type definitions should go.
|
||||
dnl
|
||||
@ -9,8 +52,46 @@ AC_DEFUN([AM_SHARED_MIME],
|
||||
fi
|
||||
|
||||
AC_ARG_WITH(mime-dir,
|
||||
[ --with-mime-dir=dir Shared mime directory.],SHARED_MIME_DIR="$withval",)
|
||||
[ --with-mime-dir=dir Shared mime directory.],SHARED_MIME_DIR="$withval",)
|
||||
|
||||
AC_SUBST(SHARED_MIME_DIR)
|
||||
AC_MSG_RESULT([Using directory $SHARED_MIME_DIR for installation of mime type definitions])
|
||||
|
||||
AC_ARG_ENABLE(mime-install,
|
||||
[ --disable-mime-install Disable the mime types installation],
|
||||
[case "${enableval}" in
|
||||
yes) mime_install=true ;;
|
||||
no) mime_install=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --disable-mime-install) ;;
|
||||
esac],[mime_install=true])
|
||||
AM_CONDITIONAL(SHARED_MIME_INSTALL, test x$mime_install = xtrue)
|
||||
|
||||
])
|
||||
|
||||
|
||||
dnl AM_PACKAGER
|
||||
dnl Defines conditional PACKAGER_MODE to define packager mode
|
||||
dnl
|
||||
|
||||
AC_DEFUN([AM_PACKAGER],
|
||||
[
|
||||
AC_ARG_ENABLE(packager_mode,
|
||||
[ --enable-packager-mode Enable packager mode],
|
||||
[case "${enableval}" in
|
||||
yes) packager_mode=true ;;
|
||||
no) packager_mode=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-packager-mode) ;;
|
||||
esac],[packager_mode=false])
|
||||
AM_CONDITIONAL(PACKAGER_MODE, test x$packager_mode = xtrue)
|
||||
if test "x$packager_mode" = "xtrue"; then
|
||||
AC_MSG_RESULT([WARNING:
|
||||
Packager mode enabled.
|
||||
GConf schemas and shared mime types WILL NOT BE INSTALLED.
|
||||
You will need to place the contents of the
|
||||
GCONF_SCHEMAS_INSTALLATION and SHARED_MIME_INSTALLATION
|
||||
commands MANUALLY into the postinstall script of your package,
|
||||
see src/data/Makefile.am file for details.
|
||||
Otherwise you will end up with the unusable package.
|
||||
YOU HAVE BEEN WARNED!])
|
||||
fi
|
||||
])
|
||||
|
@ -4,7 +4,7 @@ dnl Process this file with autoconf to produce a configure script.
|
||||
dnl May need to run automake && aclocal first
|
||||
|
||||
AC_PREREQ(2.57)
|
||||
AC_INIT(gramps, 1.1.99, gramps-bugs@lists.sourceforge.net)
|
||||
AC_INIT(gramps, 2.0.0, gramps-bugs@lists.sourceforge.net)
|
||||
AC_CONFIG_SRCDIR(src/gramps.py)
|
||||
AM_INIT_AUTOMAKE(1.6.3)
|
||||
dnl RELEASE=0.CVS$(head -c 10 ${srcdir}/ChangeLog | tr -d '-')
|
||||
@ -16,8 +16,9 @@ then
|
||||
VERSIONSTRING="$VERSION-$RELEASE"
|
||||
fi
|
||||
|
||||
AM_GCONF_SOURCE_2
|
||||
AM_GCONF2_REPLACEMENT
|
||||
AM_SHARED_MIME
|
||||
AM_PACKAGER
|
||||
AC_SUBST(RELEASE)
|
||||
AC_SUBST(VERSIONSTRING)
|
||||
|
||||
@ -253,8 +254,6 @@ src/po/Makefile
|
||||
doc/Makefile
|
||||
doc/gramps-manual/Makefile
|
||||
doc/gramps-manual/C/Makefile
|
||||
doc/gramps-manual/fr/Makefile
|
||||
doc/gramps-manual/ru/Makefile
|
||||
example/Makefile
|
||||
example/gramps/Makefile
|
||||
gramps.spec
|
||||
|
@ -29,52 +29,56 @@
|
||||
<para>
|
||||
The somewhat incomplete list of contributors includes (in alphabetical order):
|
||||
<itemizedlist>
|
||||
<listitem><para>Alexandre Duret-Lutz</para></listitem>
|
||||
<listitem><para>Alexander Bogdashevsky</para></listitem>
|
||||
<listitem><para>Alexander Roitman</para></listitem>
|
||||
<listitem><para>Arkadiusz Lipiec</para></listitem>
|
||||
<listitem><para>Bernd Felsche</para></listitem>
|
||||
<listitem><para>David R. Hampton</para></listitem>
|
||||
<listitem><para>Bernd Schandl</para></listitem>
|
||||
<listitem><para>Billy C. Earney</para></listitem>
|
||||
<listitem><para>Bruce J. DeGrasse</para></listitem>
|
||||
<listitem><para>Donald A. Peterson</para></listitem>
|
||||
<listitem><para>Douglas S. Blank</para></listitem>
|
||||
<listitem><para>Eero Tamminen</para></listitem>
|
||||
<listitem><para>Egyeki Gergely</para></listitem>
|
||||
<listitem><para>Frederick Noronha</para></listitem>
|
||||
<listitem><para>Frode Jemtland</para></listitem>
|
||||
<listitem><para>Gary Shao</para></listitem>
|
||||
<listitem><para>Greg Kuperberg</para></listitem>
|
||||
<listitem><para>Guillaume Pratte</para></listitem>
|
||||
<listitem><para>James Treacy</para></listitem>
|
||||
<listitem><para>Jason Salaz</para></listitem>
|
||||
<listitem><para>Jeffrey C. Ollie</para></listitem>
|
||||
|
||||
<listitem><para>Larry Allingham</para></listitem>
|
||||
<listitem><para>Jens Arvidsson</para></listitem>
|
||||
<listitem><para>Jesper Zedlitz</para></listitem>
|
||||
<listitem><para>Jim Smart</para></listitem>
|
||||
<listitem><para>Julio Sanchez</para></listitem>
|
||||
<listitem><para>Lars Kr. Lundin</para></listitem>
|
||||
<listitem><para>Laurent Protois</para></listitem>
|
||||
<listitem><para>Leonid Mamtchenkov</para></listitem>
|
||||
<listitem><para>Lorenzo Cappelletti</para></listitem>
|
||||
<listitem><para>Marcos Bedinelli</para></listitem>
|
||||
<listitem><para>Martin Hawlisch</para></listitem>
|
||||
<listitem><para>Martin Senftleben</para></listitem>
|
||||
<listitem><para>Matthieu Pupat</para></listitem>
|
||||
<listitem><para>Michel Guitel</para></listitem>
|
||||
<listitem><para>Nathan Bullock</para></listitem>
|
||||
<listitem><para>Pier Luigi Cinquantini</para></listitem>
|
||||
<listitem><para>Radek Malcic</para></listitem>
|
||||
<listitem><para>Douglas S. Blank</para></listitem>
|
||||
<listitem><para>Radu Bogdan Mare</para></listitem>
|
||||
<listitem><para>Alexander Bogdashevsky</para></listitem>
|
||||
<listitem><para>Richard Bos</para></listitem>
|
||||
<listitem><para>Samuel Tardieu</para></listitem>
|
||||
<listitem><para>Sebastian Voecking</para></listitem>
|
||||
<listitem><para>Nathan Bullock</para></listitem>
|
||||
<listitem><para>Lorenzo Cappelletti</para></listitem>
|
||||
<listitem><para>Pier Luigi Cinquantini</para></listitem>
|
||||
<listitem><para>Bruce J. DeGrasse</para></listitem>
|
||||
<listitem><para>Alexandre Duret-Lutz</para></listitem>
|
||||
<listitem><para>Billy C. Earney</para></listitem>
|
||||
<listitem><para>Baruch Even</para></listitem>
|
||||
<listitem><para>Bernd Felsche</para></listitem>
|
||||
<listitem><para>Egyeki Gergely</para></listitem>
|
||||
<listitem><para>Michel Guitel</para></listitem>
|
||||
<listitem><para>Steve Hall</para></listitem>
|
||||
<listitem><para>Steve Swales</para></listitem>
|
||||
<listitem><para>Tim Waugh</para></listitem>
|
||||
<listitem><para>David R. Hampton</para></listitem>
|
||||
<listitem><para>Martin Hawlisch</para></listitem>
|
||||
<listitem><para>Frode Jemtland</para></listitem>
|
||||
<listitem><para>Greg Kuperberg</para></listitem>
|
||||
<listitem><para>Arkadiusz Lipiec</para></listitem>
|
||||
<listitem><para>Lars Kr. Lundin</para></listitem>
|
||||
<listitem><para>Radek Malcic</para></listitem>
|
||||
<listitem><para>Leonid Mamtchenkov</para></listitem>
|
||||
<listitem><para>Tino Meinen</para></listitem>
|
||||
<listitem><para>Frederick Noronha</para></listitem>
|
||||
<listitem><para>Jeffrey C. Ollie</para></listitem>
|
||||
<listitem><para>Donald A. Peterson</para></listitem>
|
||||
<listitem><para>Guillaume Pratte</para></listitem>
|
||||
<listitem><para>Laurent Protois</para></listitem>
|
||||
<listitem><para>Matthieu Pupat</para></listitem>
|
||||
<listitem><para>Alexander Roitman</para></listitem>
|
||||
<listitem><para>Jason Salaz</para></listitem>
|
||||
<listitem><para>Julio Sanchez</para></listitem>
|
||||
<listitem><para>Bernd Schandl</para></listitem>
|
||||
<listitem><para>Martin Senftleben</para></listitem>
|
||||
<listitem><para>Gary Shao</para></listitem>
|
||||
<listitem><para>Jim Smart</para></listitem>
|
||||
<listitem><para>Steve Swales</para></listitem>
|
||||
<listitem><para>Eero Tamminen</para></listitem>
|
||||
<listitem><para>Samuel Tardieu</para></listitem>
|
||||
<listitem><para>Richard Taylor</para></listitem>
|
||||
<listitem><para>James Treacy</para></listitem>
|
||||
<listitem><para>Sebastian Voecking</para></listitem>
|
||||
<listitem><para>Xing Wang</para></listitem>
|
||||
<listitem><para>Tim Waugh</para></listitem>
|
||||
<listitem><para>Jesper Zedlitz</para></listitem>
|
||||
</itemizedlist>
|
||||
If you know of somebody else who should be listed here, please let us know.
|
||||
</para>
|
||||
|
@ -24,4 +24,18 @@
|
||||
|
||||
<title>Known Bugs and Limitations</title>
|
||||
|
||||
<para>The bugs are tracked through the
|
||||
<ulink url="http://sourceforge.net/tracker/?group_id=25770&atid=385137" type="http">
|
||||
sourceforge.net tracking system</ulink>.
|
||||
</para>
|
||||
|
||||
<para>The known limitations include the BSDDB performance issues related
|
||||
to caching and the memory size. As long as the BSDDB cache fits completely
|
||||
into the available memory on the system, the performance should be
|
||||
adequate. When the cache size exceeds that of the free memory and
|
||||
portions of database cache start to be swapped onto the disk, the performance
|
||||
degrades appreciably. This can be solved by adjusting the BSDDB cache
|
||||
size for the large databases.
|
||||
</para>
|
||||
|
||||
</appendix >
|
||||
|
@ -27,7 +27,7 @@
|
||||
<para>This appendix provides the reference to the command line
|
||||
capabilities available when launching &app; from the terminal. </para>
|
||||
|
||||
<para>Let us note here that &app; was designed to be an interactive
|
||||
<note><para>&app; was designed to be an interactive
|
||||
program. Therefore it uses graphical display and cannot run from the
|
||||
true non-graphical console. It would take an enormous amount of effort
|
||||
to enable it to run in a text-only terminal. This is why the set of
|
||||
@ -35,49 +35,62 @@
|
||||
on the graphical display. Rather, it merely makes certain (typical) tasks
|
||||
more convenient. It also allows one to execute these tasks from the scripts.
|
||||
However, the graphical display must be accessible at all times!
|
||||
</para>
|
||||
</para></note>
|
||||
|
||||
<para>To summarize, the use of the command line options provides
|
||||
<tip><para>To summarize, the use of the command line options provides
|
||||
non-interactive behavior, but does not get rid of graphical display
|
||||
dependency. Take it or leave it!
|
||||
</para>
|
||||
</para></tip>
|
||||
|
||||
|
||||
<sect1 id="cmdline-options">
|
||||
<title>Available options</title>
|
||||
|
||||
<para>Here is the list of the command line options in &app;:
|
||||
<para>This section provides the reference list of all command line
|
||||
options available in &app;. If you want to know more than just
|
||||
a list of options, see next sections: <xref linkend="cmdline-operation"/>
|
||||
and <xref linkend="cmdline-examples"/>.
|
||||
</para>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term>Format options</term>
|
||||
<listitem><para> The format of any file destined for import or export
|
||||
can be specified with the
|
||||
<command>-f</command> <replaceable>format</replaceable>
|
||||
option. The <replaceable>format</replaceable> can be one of the
|
||||
following:
|
||||
<sect2 id="cmdline-opt-format"><title>Format options</title>
|
||||
<para> The format of any file destined for opening, importing,
|
||||
or exporting can be specified with the
|
||||
<command>-f <replaceable>format</replaceable></command>
|
||||
option. The acceptable <replaceable>format</replaceable> values
|
||||
are listed below.</para>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term>gramps</term>
|
||||
<varlistentry><term>grdb</term>
|
||||
<listitem><para> &app; database. This format is available
|
||||
for both import and export. When not specified, it can be
|
||||
guessed if the filename represents a directory.
|
||||
for opening, import, and export. When not specified, it can be
|
||||
guessed if the filename ends with .grdb
|
||||
</para></listitem></varlistentry>
|
||||
|
||||
<varlistentry><term>gramps-xml</term>
|
||||
<listitem><para> &app; XML database. This format is available
|
||||
for opening, import, and export. When not specified, it can be
|
||||
guessed if the filename represents a directory.
|
||||
</para></listitem></varlistentry>
|
||||
|
||||
<varlistentry><term>gedcom</term>
|
||||
<listitem><para> GEDCOM file. This format is available
|
||||
for both import and export. When not specified, it can be
|
||||
for opening, import, and export. When not specified, it can be
|
||||
guessed if the filename ends with .ged
|
||||
</para></listitem></varlistentry>
|
||||
|
||||
<varlistentry><term>gramps-pkg</term>
|
||||
<listitem><para> &app; package. This format is available
|
||||
for both import and export. When not specified, it can be
|
||||
for import and export. When not specified, it can be
|
||||
guessed if the filename ends with .tgz
|
||||
</para></listitem></varlistentry>
|
||||
|
||||
<varlistentry><term>geneweb</term>
|
||||
<listitem><para> GeneWen file This format is available
|
||||
for import and export. When not specified, it can be
|
||||
guessed if the filename ends with gw
|
||||
</para></listitem></varlistentry>
|
||||
|
||||
<varlistentry><term>wft</term>
|
||||
<listitem><para> Web Family Tree. This format is available
|
||||
for export only. When not specified, it can be guessed
|
||||
@ -91,79 +104,228 @@
|
||||
|
||||
</variablelist>
|
||||
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
</sect2>
|
||||
|
||||
<varlistentry><term>Import options</term>
|
||||
<listitem><para> The files destined for import can be specified with
|
||||
the
|
||||
<command>-i</command> <replaceable>filename</replaceable>
|
||||
option. The format can be specified with the <command>-f</command>
|
||||
option immediately following the <replaceable>filename</replaceable>.
|
||||
<sect2 id="cmdline-opt-open"><title>Opening options</title>
|
||||
<para>There are two ways to give &app; the name of the file to
|
||||
be opened: </para>
|
||||
<itemizedlist>
|
||||
<listitem><para>supply bare file name</para></listitem>
|
||||
|
||||
<listitem><para>use the
|
||||
<command>-O <filename>filename</filename></command> or
|
||||
<command>-open=<filename>filename</filename></command> option
|
||||
</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
<para>If the filename is given without any option flag, the attempt
|
||||
to open the file will be made, and then the interactive &app; session
|
||||
will be launched.
|
||||
</para>
|
||||
|
||||
<tip><para>If no option is given, just the file name, &app; will
|
||||
ignore the rest of the command line arguments. Use the -O flag
|
||||
to open the file and do something with the data.
|
||||
</para></tip>
|
||||
|
||||
<para>The format can be specified with the
|
||||
<command>-f <replaceable>format</replaceable></command> or
|
||||
<command>--format=<replaceable>format</replaceable></command>
|
||||
option, immediately following the <filename>filename</filename>.
|
||||
If not specified, the guess will be attempted based on
|
||||
the <replaceable>filename</replaceable>. For <term>gramps</term>
|
||||
format, the <replaceable>filename</replaceable> is actually the
|
||||
the <filename>filename</filename>. For gramps-xml
|
||||
format, the <filename>filename</filename> is actually the
|
||||
name of directory under which the gramps database resides. For
|
||||
<term>gedcom</term> and <term>gramps-pkg</term>, the
|
||||
<replaceable>filename</replaceable> is the name of the
|
||||
grdb and gedcom,
|
||||
the <filename>filename</filename> is the name of the
|
||||
corresponding file.
|
||||
</para>
|
||||
|
||||
<tip><para>Only grdb, gramps-xml,
|
||||
and gedcom formats can be opened directly.
|
||||
For other formats, you will need to use the import option
|
||||
which will set up the empty database and then import data into it.
|
||||
</para></tip>
|
||||
|
||||
<tip><para>Only a single file can be opened. If you need to combine
|
||||
data from several sources, you will need to use
|
||||
the import option.</para></tip>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2 id="cmdline-opt-import"><title>Import options</title>
|
||||
<para> The files destined for import can be specified with the
|
||||
<command>-i <filename>filename</filename></command>
|
||||
or <command>--import=<filename>filename</filename></command>
|
||||
option. The format can be specified with the
|
||||
<command>-f <replaceable>format</replaceable></command> or
|
||||
<command>--format=<replaceable>format</replaceable></command>
|
||||
option, immediately following the <filename>filename</filename>.
|
||||
If not specified, the guess will be attempted based on
|
||||
the <filename>filename</filename>. For gramps-xml
|
||||
format, the <filename>filename</filename> is actually the
|
||||
name of directory under which the gramps database resides. For
|
||||
grdb, gedcom, gramps-pkg, and geneweb,
|
||||
the <filename>filename</filename> is the name of the
|
||||
corresponding file.
|
||||
</para>
|
||||
|
||||
<tip><para>More than one file can be imported in one command.
|
||||
If this is the case, &app; will incorporate the data from
|
||||
the next file into the database available at the moment.
|
||||
</para></tip>
|
||||
|
||||
<para>When more than one input file is given, each has to be preceded
|
||||
by <command>-i</command> flag. The files are imported in the
|
||||
specified order, i.e.
|
||||
<command>-i</command> <replaceable>file1</replaceable>
|
||||
<command>-i</command> <replaceable>file2</replaceable>
|
||||
and
|
||||
<command>-i</command> <replaceable>file2</replaceable>
|
||||
<command>-i</command> <replaceable>file1</replaceable>
|
||||
specified order, i.e. <command>
|
||||
-i <filename>file1</filename>
|
||||
-i <filename>file2</filename>
|
||||
</command> and <command>
|
||||
-i <filename>file2</filename>
|
||||
-i <filename>file1</filename>
|
||||
</command>
|
||||
might produce different gramps IDs in the resulting database.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
</para></sect2>
|
||||
|
||||
|
||||
<varlistentry><term>Export options</term>
|
||||
<listitem><para> The files destined for export can be specified with
|
||||
the
|
||||
<command>-o</command> <replaceable>filename</replaceable>
|
||||
<sect2 id="cmdline-opt-export"><title>Export options</title>
|
||||
<para> The files destined for export can be specified with the
|
||||
<command>-o <filename>filename</filename></command> or
|
||||
<command>--output=<filename>filename</filename></command>
|
||||
option. The format can be specified with the <command>-f</command>
|
||||
option immediately following the <replaceable>filename</replaceable>.
|
||||
option immediately following the <filename>filename</filename>.
|
||||
If not specified, the guess will be attempted based on
|
||||
the <replaceable>filename</replaceable>. For <term>gramps</term>
|
||||
and <term>iso</term> formats, the <replaceable>filename</replaceable>
|
||||
the <filename>filename</filename>. For gramps-xml
|
||||
and iso formats, the <filename>filename</filename>
|
||||
is actually the name of directory the gramps database will be written
|
||||
into. For <term>gedcom</term>, <term>wft</term>,
|
||||
and <term>gramps-pkg</term>, the <replaceable>filename</replaceable>
|
||||
into. For grdb, gedcom, wft, geneweb,
|
||||
and gramps-pkg, the <filename>filename</filename>
|
||||
is the name of the resulting file.
|
||||
</para>
|
||||
|
||||
<tip><para>More than one file can be exported in one command.
|
||||
If this is the case, &app; will attempt to write several files
|
||||
using the data from the database available at the moment.
|
||||
</para></tip>
|
||||
|
||||
<para> When more than one output file is given, each has to be
|
||||
preceded by <command>-o</command> flag. The files are written one
|
||||
by one, in the specified order.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
</para></sect2>
|
||||
|
||||
<varlistentry><term>Action options</term>
|
||||
<listitem><para> The action to perform on the imported data can be
|
||||
<sect2 id="cmdline-opt-action"><title>Action options</title>
|
||||
<para> The action to perform on the imported data can be
|
||||
specified with the
|
||||
<command>-a</command> <replaceable>action</replaceable>
|
||||
<command>-a <replaceable>action</replaceable></command> or
|
||||
<command>--action=<replaceable>action</replaceable></command>
|
||||
option. This is done after all imports are successfully completed.
|
||||
Currently available actions are <term>summary</term> (same as
|
||||
</para>
|
||||
|
||||
<para>Currently available actions are:</para>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term>summary</term>
|
||||
<listitem><para>This action is the same as
|
||||
<menuchoice><guimenu>Reports</guimenu><guisubmenu>View</guisubmenu>
|
||||
<guimenuitem>Summary</guimenuitem></menuchoice>)
|
||||
and <term>check</term> (same as
|
||||
<guimenuitem>Summary</guimenuitem></menuchoice>
|
||||
</para></listitem></varlistentry>
|
||||
|
||||
|
||||
<varlistentry><term>check</term>
|
||||
<listitem><para>This action is the same as
|
||||
<menuchoice><guimenu>Tools</guimenu>
|
||||
<guisubmenu>Database Processing</guisubmenu>
|
||||
<guimenuitem>Check and Repair</guimenuitem></menuchoice>).
|
||||
<guimenuitem>Check and Repair</guimenuitem></menuchoice>.
|
||||
</para> </listitem> </varlistentry>
|
||||
|
||||
<varlistentry><term>report</term>
|
||||
<listitem><para>This action allows producing reports
|
||||
from the command line. As reports generally have many options
|
||||
of their own, this action should be followed by the report option
|
||||
string. The string is given using the
|
||||
<command>-p <replaceable>option_string</replaceable></command> or
|
||||
<command>--options=<replaceable>option_string</replaceable></command>
|
||||
option.
|
||||
</para>
|
||||
|
||||
<tip><para>
|
||||
The report option string should satisfy the following conditions:
|
||||
</para>
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para>It must not contain any spaces. If some arguments
|
||||
need to include spaces, the string should be enclosed with
|
||||
quotation marks.
|
||||
</para></listitem>
|
||||
|
||||
<listitem><para>Option string must list pairs of option names
|
||||
and values.
|
||||
</para></listitem>
|
||||
|
||||
<listitem><para>Withing a pair, option name and value must be
|
||||
separated by the equal sign.
|
||||
</para></listitem>
|
||||
|
||||
<listitem><para>Different pairs must be separated by commas.
|
||||
</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</tip>
|
||||
|
||||
|
||||
<para>Most of the report options are specific for every report.
|
||||
However, there some common options.
|
||||
</para>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term>name=report_name</term>
|
||||
<listitem> <para>
|
||||
This mandatory option determines which report will be
|
||||
generated. If the supplied report_name does not correspond
|
||||
to any available report, the error message will be printed
|
||||
followed by the list of available reports.
|
||||
</para>
|
||||
</listitem> </varlistentry>
|
||||
|
||||
<varlistentry><term>show=all</term>
|
||||
<listitem> <para>
|
||||
This will produce the list of names for all options available for
|
||||
a given report.
|
||||
</para>
|
||||
</listitem> </varlistentry>
|
||||
|
||||
<varlistentry><term>show=option_name</term>
|
||||
<listitem> <para>
|
||||
This will print the description of the functionality supplied
|
||||
by the option_name, as well as what are the acceptable types
|
||||
and values for this option.
|
||||
</para>
|
||||
</listitem> </varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
<para>
|
||||
Use the above options to find out everything about a given report.
|
||||
</para>
|
||||
|
||||
<tip><para>
|
||||
If an option is not supplied, the last used value will be used.
|
||||
If this report has never been generated before, then the
|
||||
value from last generated report will be used when applicable.
|
||||
Otherwise, the default value will be used.
|
||||
</para></tip>
|
||||
|
||||
</listitem> </varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
<para>When more than one output action is given, each has to be
|
||||
preceded by <command>-a</command> flag. The actions are performed
|
||||
one by one, in the specified order.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</para></sect2>
|
||||
|
||||
</sect1>
|
||||
|
||||
@ -171,83 +333,181 @@
|
||||
<sect1 id="cmdline-operation">
|
||||
<title>Operation</title>
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem>
|
||||
<para>If the first argument on the command line does not start
|
||||
with dash (i.e. no flag), &app; will attempt to open the file
|
||||
with the name given by the first argument and start interactive
|
||||
session, ignoring the rest of the command line arguments.
|
||||
</para></listitem>
|
||||
|
||||
<listitem>
|
||||
<para>If the <command>-O</command> flag is given, then &app; will
|
||||
try opening the
|
||||
supplied file name and then work with that data, as instructed by
|
||||
the further command line parameters.
|
||||
</para>
|
||||
|
||||
<note><para>Only one file can be opened in a single invokation
|
||||
of &app;. If you need to get data from multiple sources, use
|
||||
the importing options by using <command>-i</command> flag.
|
||||
</para></note>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>With or without the <command>-O</command> flag, there could
|
||||
be multiple imports, exports, and actions specified further on
|
||||
the command line by using <command>-i</command>,
|
||||
<command>-o</command>, and <command>-a</command> flags.
|
||||
</para></listitem>
|
||||
|
||||
<listitem>
|
||||
<para>The order of <command>-i</command>, <command>-o</command>,
|
||||
or <command>-a</command> options with respect to each does not matter.
|
||||
The actual execution order always is: all imports (if any) -> all
|
||||
exports (if any) -> all actions (if any).</para>
|
||||
|
||||
<para>If no <command>-i</command> option is given, gramps will launch
|
||||
|
||||
<note><para>But opening must always be first!</para></note>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>If no <command>-O</command> or <command>-i</command>
|
||||
option is given, gramps will launch
|
||||
its main window and start the usual interactive session with the empty
|
||||
database (since there is no data to process, anyway).</para>
|
||||
database, since there is no data to process, anyway.
|
||||
</para></listitem>
|
||||
|
||||
<listitem>
|
||||
<para>If no <command>-o</command> or <command>-a</command> options
|
||||
are given, gramps will launch its main window and start the usual
|
||||
interactive session with the database resulted from all imports.
|
||||
This database resides under
|
||||
<replaceable>~/.gramps/import</replaceable> directory.</para>
|
||||
|
||||
interactive session with the database resulted from opening
|
||||
and all imports (if any). This database resides in the
|
||||
<filename>import_db.grdb</filename> file under the
|
||||
<filename>~/.gramps/import/</filename> directory.
|
||||
</para></listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Any errors encountered during import, export, or action, will
|
||||
be either dumped to stdout (if these are exceptions handled by gramps)
|
||||
or or to stderr (if these are not handled). Use usual shell redirections
|
||||
of stdout and stderr to save messages and errors in files.</para>
|
||||
of stdout and stderr to save messages and errors in files.
|
||||
</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 id="cmdline-examples">
|
||||
<title>Examples</title>
|
||||
<para>To import four databases (whose formats can be determined from
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term>To import four databases (whose formats can be determined from
|
||||
their names) and then check the resulting database for errors, one may
|
||||
type:</para>
|
||||
<para><command>gramps -i</command> <replaceable>file1.ged</replaceable>
|
||||
<command>-i</command> <replaceable>file2.tgz</replaceable>
|
||||
<command>-i</command> <replaceable>~/db3</replaceable>
|
||||
<command>-i</command> <replaceable>file4.wft</replaceable>
|
||||
<command>-a</command> <replaceable>check</replaceable>
|
||||
type:</term>
|
||||
|
||||
<listitem>
|
||||
<para><command>gramps
|
||||
-i<filename>file1.ged</filename>
|
||||
-i <filename>file2.tgz</filename>
|
||||
-i <filename>~/db3</filename>
|
||||
-i <filename>file4.wft</filename>
|
||||
-a <filename>check</filename></command>
|
||||
</para> </listitem></varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>To explicitly specify the formats in the above example, append
|
||||
filenames with appropriate <command>-f</command> options:</term>
|
||||
<listitem>
|
||||
<para><command>gramps
|
||||
-i <filename>file1.ged</filename>
|
||||
-f <replaceable>gedcom</replaceable>
|
||||
-i <filename>file2.tgz</filename>
|
||||
-f <replaceable>gramps-pkg</replaceable>
|
||||
-i <filename>~/db3</filename>
|
||||
-f <replaceable>gramps</replaceable>
|
||||
-i <filename>file4.wft</filename>
|
||||
-f <replaceable>wft</replaceable>
|
||||
-a <replaceable>check</replaceable></command>
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>To record the database resulting from all imports, supply
|
||||
<command>-o</command> flag (use <command>-f</command>
|
||||
if the filename does not allow gramps to guess the format):</term>
|
||||
<listitem>
|
||||
<para><command>gramps
|
||||
-i <filename>file1.ged</filename>
|
||||
-i <filename>file2.tgz</filename>
|
||||
-o <filename>~/new-package</filename>
|
||||
-f <replaceable>gramps-pkg</replaceable></command>
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>To save any error messages of the above example into files
|
||||
<filename>outfile</filename> and
|
||||
<filename>errfile</filename>, run:</term>
|
||||
<listitem>
|
||||
<para><command>gramps
|
||||
-i <filename>file1.ged</filename>
|
||||
-i <filename>file2.tgz</filename>
|
||||
-o <filename>~/new-package</filename>
|
||||
-f <replaceable>gramps-pkg</replaceable>
|
||||
><filename>outfile</filename>
|
||||
2><filename>errfile</filename> </command>
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>To import three databases and start interactive gramps
|
||||
session with the result:</term>
|
||||
<listitem>
|
||||
<para><command>gramps
|
||||
-i <filename>file1.ged</filename>
|
||||
-i <filename>file2.tgz</filename>
|
||||
-i <filename>~/db3</filename>
|
||||
</command>
|
||||
</para> </listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>To open a database and, based on that data, generate timeline
|
||||
report in PDF format putting the output into the
|
||||
<filename>my_timeline.pdf</filename> file:</term>
|
||||
<listitem>
|
||||
<para><command>gramps
|
||||
-O <filename>file.grdb</filename>
|
||||
-a <replaceable>report</replaceable>
|
||||
-p <replaceable>name=timeline,off=pdf,of=my_timeline.pdf</replaceable>
|
||||
</command>
|
||||
</para>
|
||||
|
||||
<para>To explicitly specify the formats in the above example, append
|
||||
filenames with appropriate <command>-f</command> options:</para>
|
||||
<para><command>gramps -i</command> <replaceable>file1.ged</replaceable>
|
||||
<command>-f</command> <replaceable>gedcom</replaceable>
|
||||
<command>-i</command> <replaceable>file2.tgz</replaceable>
|
||||
<command>-f</command> <replaceable>gramps-pkg</replaceable>
|
||||
<command>-i</command> <replaceable>~/db3</replaceable>
|
||||
<command>-f</command> <replaceable>gramps</replaceable>
|
||||
<command>-i</command> <replaceable>file4.wft</replaceable>
|
||||
<command>-f</command> <replaceable>wft</replaceable>
|
||||
<command>-a</command> <replaceable>check</replaceable>
|
||||
<tip><para>Use the <replaceable>name=timeline,show=all</replaceable>
|
||||
to find out about all available options for the timeline report. To
|
||||
find out details of a particular option, use
|
||||
<replaceable>show=option_name</replaceable>,
|
||||
e.g. <replaceable>name=timeline,show=off</replaceable>
|
||||
string.</para>
|
||||
|
||||
<para>To learn about available report names, use
|
||||
<replaceable>name=show</replaceable> string.
|
||||
</para>
|
||||
</tip>
|
||||
|
||||
<para>To record the database resulting from all imports, supply
|
||||
<command>-o</command> flag (use <command>-f</command>
|
||||
if the filename does not allow gramps to guess the format):</para>
|
||||
<para><command>gramps -i</command> <replaceable>file1.ged</replaceable>
|
||||
<command>-i</command> <replaceable>file2.tgz</replaceable>
|
||||
<command>-o</command> <replaceable>~/new-package</replaceable>
|
||||
<command>-f</command> <replaceable>gramps-pkg</replaceable>
|
||||
</para>
|
||||
|
||||
<para>To save any error messages of the above example into files
|
||||
<replaceable>outfile</replaceable> and
|
||||
<replaceable>errfile</replaceable>, run:</para>
|
||||
<para><command>gramps -i</command> <replaceable>file1.ged</replaceable>
|
||||
<command>-i</command> <replaceable>file2.tgz</replaceable>
|
||||
<command>-o</command> <replaceable>~/new-package</replaceable>
|
||||
<command>-f</command> <replaceable>gramps-pkg</replaceable>
|
||||
><replaceable>outfile</replaceable>
|
||||
2><replaceable>errfile</replaceable>
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Finally, to start normal interactive session type:</term>
|
||||
<listitem><para> <command>gramps </command></para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
<para>To import three databases and start interactive gramps
|
||||
session with the result:</para>
|
||||
<para><command>gramps -i</command> <replaceable>file1.ged</replaceable>
|
||||
<command>-i</command> <replaceable>file2.tgz</replaceable>
|
||||
<command>-i</command> <replaceable>~/db3</replaceable>
|
||||
</para>
|
||||
|
||||
<para>Finally, to start normal interactive session type:</para>
|
||||
<para> <command>gramps </command></para>
|
||||
|
||||
</sect1>
|
||||
|
||||
</appendix>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<chapter id="gramps-prefs">
|
||||
<chapter id="gramps-settings">
|
||||
|
||||
<!--
|
||||
User Manual for Gramps - a GTK+/GNOME based genealogy program
|
||||
@ -23,379 +23,269 @@
|
||||
<!-- $Id$ -->
|
||||
|
||||
<title>Settings</title>
|
||||
<para>To configure &app;, choose
|
||||
<menuchoice><guimenu>Edit</guimenu>
|
||||
<guimenuitem>Preferences...</guimenuitem></menuchoice>.
|
||||
The <guilabel>Preferences</guilabel> dialog contains the following
|
||||
categories: </para>
|
||||
|
||||
<sect1 id="gramps-prefs">
|
||||
<title>Preferences</title>
|
||||
|
||||
<para>Most of the settings in &app;, are configured in the
|
||||
<guilabel>Preferences</guilabel> dialog. To invoke it, choose
|
||||
<menuchoice><guimenu>Edit</guimenu>
|
||||
<guimenuitem>Preferences...</guimenuitem></menuchoice>. </para>
|
||||
|
||||
<!-- ==== Figure: Type-ahead find ==== -->
|
||||
<figure id="prefs-fig">
|
||||
<title>Preferences dialog</title>
|
||||
<screenshot><mediaobject><imageobject><imagedata
|
||||
fileref="figures/prefs.png" format="PNG"/></imageobject>
|
||||
<textobject>
|
||||
<phrase>Shows Preferences dialog. </phrase>
|
||||
</textobject></mediaobject></screenshot></figure>
|
||||
<!-- ==== End of Figure ==== -->
|
||||
|
||||
<para>The pane on the left displays the tree of available option
|
||||
categories. Selecting a tree node will display the corresponding
|
||||
options in the right side of the dialog. </para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem><para><xref linkend="gramps-prefs-usage"/></para></listitem>
|
||||
<listitem><para><xref linkend="gramps-prefs-display"/></para></listitem>
|
||||
<listitem><para><xref linkend="gramps-prefs-db"/></para></listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<!-- =============== Customization Subsection ================ -->
|
||||
<sect1 id="gramps-prefs-usage">
|
||||
<title>Usage</title>
|
||||
<sect2 id="gramps-prefs-db">
|
||||
<title>Database</title>
|
||||
<para> This category contains preferences relevant to the
|
||||
general usage of &app;. It has the following subcategories:</para>
|
||||
|
||||
<!-- =============== Customization Sub-subsection ================ -->
|
||||
<sect2 id="prefs-usage-find">
|
||||
<title>Find</title>
|
||||
database itself. It has the following subcategories: </para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry><term><guilabel>General</guilabel></term>
|
||||
<listitem>
|
||||
<variablelist>
|
||||
<varlistentry><term><guilabel>Automatically
|
||||
load last database</guilabel></term>
|
||||
<listitem><para> Check this box to automatically load the
|
||||
last open database on startup. </para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Enable autocompletion</guilabel></term>
|
||||
<listitem><para>If this box is checked, &app; will attempt to complete
|
||||
the text as you type it into text entry fields such as family name,
|
||||
place of birth, etc. Completion is attempted based on the match
|
||||
between the beginning of the text being typed and the corresponding
|
||||
data already stored in the database.
|
||||
</para></listitem>
|
||||
<varlistentry><term><guilabel>Family name guessing</guilabel></term>
|
||||
<listitem><para> This option affects the initial family name of a
|
||||
child when he/she is added to the database. </para>
|
||||
|
||||
<tip><para>This option only
|
||||
affects the initial family name guessed by &app; when the
|
||||
<guilabel>Edit Person</guilabel> dialog is launched. You can modify
|
||||
that name the way you see fit. Set this option to the value that you
|
||||
will most frequently use, as it will save you a lot of
|
||||
typing.</para></tip>
|
||||
|
||||
<para>If <guilabel>None</guilabel> is selected, no guessing will be
|
||||
attempted. Selecting <guilabel>Father's surname</guilabel> will use
|
||||
the family name of the father. Selecting <guilabel>Combination of
|
||||
mother's and father's surname</guilabel> will use the father's name
|
||||
followed by the mother's name. Finally, <guilabel>Icelandic
|
||||
style</guilabel> will use the father's given name followed by the
|
||||
"sson" suffix (e.g. the son of Edwin will be guessed as
|
||||
Edwinsson).
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- =============== Customization Sub-subsection ================ -->
|
||||
<sect2 id="prefs-usage-report">
|
||||
<title>Report Preferences</title>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><guilabel>Preferred text format</guilabel></term>
|
||||
<listitem><para> Select the preferred format for text reports
|
||||
from the available formats listed in this menu.
|
||||
</para></listitem>
|
||||
<varlistentry><term><guilabel>GRAMPS IDs</guilabel></term>
|
||||
<listitem><para> Enter ID prefixes for various kinds of database
|
||||
entries into the corresponding text entry fields.
|
||||
</para>
|
||||
|
||||
<tip><para>The ID prefixes use formatting conventions common for
|
||||
C, Python, and other programming languages. For example, the %04d
|
||||
expands to an integer, prepended with zeros to have the total
|
||||
width of founr digits. If you would like IDs to be 1, 2, 3, etc,
|
||||
simply set the formatting parameter to %d.
|
||||
</para></tip>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Preferred graphical format</guilabel></term>
|
||||
<listitem><para> Select the preferred format for graphical reports
|
||||
from the available formats listed in this menu.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Preferred paper size</guilabel></term>
|
||||
<listitem><para> Select the preferred paper size used for reports
|
||||
from the available sizes listed in this menu.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Default report directory</guilabel></term>
|
||||
<listitem><para> Choose the default directory for the reports using the
|
||||
<guibutton>Browse...</guibutton> button or type it in the text entry
|
||||
field. </para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Default web site directory</guilabel></term>
|
||||
<listitem><para> Choose the default directory for the web site using the
|
||||
<guibutton>Browse...</guibutton> button or type it in the text entry
|
||||
field. </para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- =============== Customization Sub-subsection ================ -->
|
||||
<sect2 id="prefs-usage-res">
|
||||
<title>Researcher Information</title>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><guilabel>Researcher information</guilabel></term>
|
||||
<varlistentry><term><guilabel>Researcher Information</guilabel></term>
|
||||
<listitem><para> Enter your personal information in the corresponding
|
||||
text entry fields. Although &app; requests information about you,
|
||||
this information is used only so that &app; can create valid GEDCOM
|
||||
output files. A valid GEDCOM file requires information about the file's
|
||||
creator. If you choose, you may leave the information empty, however
|
||||
none of your exported GEDCOM files will be valid.
|
||||
</para></listitem>
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect2>
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- =============== Customization Sub-subsection ================ -->
|
||||
<sect2 id="prefs-usage-guess">
|
||||
<title>Data Guessing</title>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><guilabel>Family name guessing</guilabel></term>
|
||||
<listitem><para> This option affects the initial family name of a
|
||||
child when he/she is added to the database. NOTE: this option only
|
||||
affects the initial family name guessed by &app; when the
|
||||
<guilabel>Edit Person</guilabel> dialog is launched. You can modify
|
||||
that name the way you see fit. Set this option to the value that you
|
||||
will most frequently use, as it will save you a lot of typing.</para>
|
||||
|
||||
<para>If <guilabel>None</guilabel> is selected, no guessing will be
|
||||
attempted. Selecting <guilabel>Father's surname</guilabel> will use
|
||||
the family name of the father. Selecting <guilabel>Combination of
|
||||
mother's and father's surname</guilabel> will use the father's name
|
||||
followed by the mother's name. Finally, <guilabel>Icelandic
|
||||
style</guilabel> will use the father's given name followed by the
|
||||
"sson" suffix (e.g. the son of Edwin will be guessed as
|
||||
Edwinsson).
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</sect2>
|
||||
|
||||
</sect1>
|
||||
|
||||
<!-- =============== Customization Subsection ================ -->
|
||||
<sect1 id="gramps-prefs-display">
|
||||
<sect2 id="gramps-prefs-display">
|
||||
<title>Display</title>
|
||||
<para> This category contains preferences relevant to
|
||||
displaying database records and controls in &app;.
|
||||
It has the following subcategories:</para>
|
||||
|
||||
<!-- =============== Customization Sub-subsection ================ -->
|
||||
<sect2 id="prefs-display-gen">
|
||||
<title>General</title>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><guilabel>General</guilabel></term>
|
||||
<listitem>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><guilabel>Default view</guilabel></term>
|
||||
<listitem><para> This determines which view will appear when
|
||||
you start &app;. Choose between Person and Family views.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Family view style</guilabel></term>
|
||||
<listitem><para> This selects between the two available styles
|
||||
of the Family view layout. The <guilabel>Left to right</guilabel>
|
||||
style is similar to the Family Tree Maker (tm), while the
|
||||
<guilabel>Top to bottom</guilabel> is similar to the Reunion.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Always display the LDS ordinance
|
||||
tabs</guilabel></term>
|
||||
<listitem><para> Check this box to have LDS ordinance tabs
|
||||
displayed. If you do not know what LDS is then you probably
|
||||
should not check it. </para></listitem></varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Display Tip of the
|
||||
Day</guilabel></term>
|
||||
<listitem><para> Check this box to have the <guilabel>Tip
|
||||
of the Day</guilabel> dialog appear on every startup.
|
||||
The tips are displayed randomly from the large collection
|
||||
of information bits on &app;.
|
||||
</para>
|
||||
|
||||
<tip><para>The <guilabel>Tip of the Day</guilabel> is likely
|
||||
to be useful for new user of &app;.
|
||||
</para></tip>
|
||||
</listitem></varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Dates</guilabel></term>
|
||||
|
||||
<listitem>
|
||||
<para> Select the display format for the dates
|
||||
from the available formats listed in this menu.
|
||||
</para>
|
||||
|
||||
<varlistentry><term><guilabel>Default view</guilabel></term>
|
||||
<listitem><para> This determines which view will appear when you
|
||||
start &app;. Choose between Person and Family views.
|
||||
</para></listitem>
|
||||
<tip><para>Available date display formats are language-specific.
|
||||
Depending on whether or not there is a &app; date displayer
|
||||
available for your language, you may or may not have a lot of
|
||||
choices.
|
||||
</para></tip>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Family view style</guilabel></term>
|
||||
<listitem><para> This selects between the two available styles of the Family
|
||||
view layout. The <guilabel>Left to right</guilabel> style is similar to the
|
||||
Family Tree Maker (tm), while the <guilabel>Top to bottom</guilabel> is
|
||||
similar to the Reunion.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry><term><guilabel>Toolbar and Statusbar</guilabel></term>
|
||||
<listitem>
|
||||
|
||||
<varlistentry><term><guilabel>Always display the LDS ordinance tabs</guilabel></term>
|
||||
<listitem><para> Check this box to have LDS ordinance tabs displayed.
|
||||
If you do not know what LDS is then you probably should not check it.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><guilabel>Toolbar</guilabel></term>
|
||||
<listitem><para> Select the desired appearance of the toolbar
|
||||
icons from the menu. Selecting <guilabel>GNOME
|
||||
Settings</guilabel> will use the overall settings selected
|
||||
for your GNOME desktop.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Show index numbers in child list</guilabel></term>
|
||||
<listitem><para>
|
||||
This option is not currently implemented.
|
||||
</para></listitem>
|
||||
<varlistentry><term><guilabel>Statusbar</guilabel></term>
|
||||
<listitem><para> Select the desired contents displayed in the
|
||||
statusbar using the radio buttons.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect2>
|
||||
|
||||
<!-- =============== Customization Sub-subsection ================ -->
|
||||
<sect2 id="prefs-display-date">
|
||||
<title>Dates and Calendar</title>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><guilabel>Display: Date format</guilabel></term>
|
||||
<listitem><para> Select the display format for the dates
|
||||
from the available formats listed in this menu.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Name format</guilabel></term>
|
||||
<listitem><para> Select the display format for the names
|
||||
from the available formats listed in this menu.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Entry: Date format</guilabel></term>
|
||||
<listitem><para> Select the entry format for the dates
|
||||
from the available formats listed in this menu.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Show calendar format selection menu</guilabel></term>
|
||||
<listitem><para> Check this box to enable the calendar format selection
|
||||
menu when you are entering dates in the <guilabel>Event
|
||||
Editor</guilabel> dialog. This will allow you to select different
|
||||
calendars when editing the dates.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect2>
|
||||
|
||||
<!-- =============== Customization Sub-subsection ================ -->
|
||||
<sect2 id="prefs-display-bars">
|
||||
<title>Toolbar and Statusbar</title>
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><guilabel>Toolbar</guilabel></term>
|
||||
<listitem><para> Select the desired appearance of the toolbar icons
|
||||
from the menu. Selecting <guilabel>GNOME Settings</guilabel> will use
|
||||
the overall settings selected for your GNOME desktop.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Statusbar</guilabel></term>
|
||||
<listitem><para> Select the desired contents displayed in the
|
||||
statusbar using the radio buttons.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect2>
|
||||
</sect2>
|
||||
|
||||
</sect1>
|
||||
|
||||
<!-- =============== Customization Subsection ================ -->
|
||||
<sect1 id="gramps-prefs-db">
|
||||
<title>Database</title>
|
||||
<para> This category contains preferences relevant to the
|
||||
database itself. It has the following subcategories: </para>
|
||||
|
||||
<!-- =============== Customization Sub-subsection ================ -->
|
||||
<sect2 id="prefs-db-gen">
|
||||
<title>General</title>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><guilabel>Automatically load last database</guilabel></term>
|
||||
<listitem><para> Check this box to automatically load the last open
|
||||
database on startup. </para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Do not compress XML data file</guilabel></term>
|
||||
<listitem><para> Check this box to disable compression of the XML
|
||||
data file. Compression significantly reduces the file size. While it
|
||||
creates an overhead in performance (some processor cycles must be spent
|
||||
to decompress the file before use), this overhead is extremely small.
|
||||
Now that the compression-related bugs have long been fixed, there is
|
||||
virtually no reason to disable data file compression.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Autosave interval</guilabel></term>
|
||||
<listitem><para> Set the interval (in minutes) after which &app; will
|
||||
automatically save your database. Setting the interval to zero (0)
|
||||
disables autosaving. </para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Default database directory</guilabel></term>
|
||||
<listitem><para> Choose the default directory in which &app; starts
|
||||
looking when saving the database using the <guibutton>Browse...</guibutton>
|
||||
or type its path into the text entry field. </para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect2>
|
||||
|
||||
<!-- =============== Customization Sub-subsection ================ -->
|
||||
<sect2 id="prefs-db-media">
|
||||
<title>Media Objects</title>
|
||||
|
||||
<para>Before describing preferences for media objects, let us
|
||||
review the background on local and non-local objects. A local object
|
||||
is the object whose file is stored inside the same directory in which
|
||||
the &app; database file resides. A non-local object is stored
|
||||
elsewhere, so that the database has only the reference to the file's
|
||||
location and some records of the object's properties. </para>
|
||||
|
||||
<para>You may choose to store your media objects either locally
|
||||
or externally. Making your objects local will increase the amount
|
||||
of disk space consumed by the &app; database directory. However,
|
||||
if the external file is deleted or removed, &app; will still be able
|
||||
to use the local copy. In contrast, leaving your objects non-local
|
||||
will decrease the disk space requirements. However, losing the
|
||||
original file will render your media object unusable.
|
||||
|
||||
<sect1 id="gramps-prefs-other">
|
||||
<title>Other settings</title>
|
||||
|
||||
<para>Besides <guilabel>Preferences</guilabel> dialog, there are
|
||||
other settings available in &app;. For various reasons they have been
|
||||
made more readily accessible, as listed below.</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>Column Editor</term>
|
||||
<listitem>
|
||||
<para>The columns of the list views may be added, removed, or reordered
|
||||
in a <guilabel>Column Editor Dialog</guilabel>,
|
||||
see <xref linkend="column-editor-fig"/>. Only checked columns will
|
||||
be shown in the view. To change their order, drag any column to its desired place inside
|
||||
the editor. Clicking <guibutton>OK</guibutton> will reflect the changes
|
||||
in the appropriate view. To invoke <guilabel>Column Editor Dialog</guilabel>,
|
||||
choose <menuchoice><guimenu>Edit</guimenu><guimenuitem>Column
|
||||
Editor...</guimenuitem></menuchoice>.
|
||||
</para>
|
||||
|
||||
<para>Note that exporting your database to any format will compile
|
||||
all medial objects, no matter whether they are local or not.
|
||||
Specifically, export to gramps package will include all the media
|
||||
object files in the package and change the references accordingly.
|
||||
Export to CD will copy all media object files to the directory under
|
||||
the <guilabel>burn:///</guilabel> location in Nautilus and change the
|
||||
references accordingly. Finally, export to GEDCOM will place all
|
||||
media object files next to the GEDCOM file with the appropriate
|
||||
changes in the path names.
|
||||
</para>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><guilabel>Drag and drop from an external
|
||||
source</guilabel></term>
|
||||
<listitem><para> Choose between a reference and a local copy made when
|
||||
the object is dropped into the gallery. The reference saves disk
|
||||
space as it does not copy the object. The local copy makes your
|
||||
database portable as it does not depend on an external file. Consult
|
||||
your needs to make best choice.</para>
|
||||
|
||||
<para>Check the <guilabel>Display global properties editor when
|
||||
object is dropped</guilabel> box to invoke the global properties
|
||||
editor after you drop an external object into the gallery.
|
||||
</para></listitem>
|
||||
<tip>
|
||||
<para>The <guilabel>Column Editor</guilabel> is available
|
||||
and works in the same way for all list views.
|
||||
Specifically, it is available for People View, Family View (children list).
|
||||
Sources View, Places View, and Media View.</para> </tip>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Drag and drop from an internal
|
||||
source</guilabel></term>
|
||||
<listitem><para> Check the <guilabel>Display local properties editor
|
||||
when object is dropped</guilabel> box to invoke the local properties
|
||||
editor after you drop an internal object into the gallery.
|
||||
</para></listitem>
|
||||
<varlistentry><term>Setting Home person</term>
|
||||
<listitem><para>The Home person is the person who becomes active
|
||||
when database opened, when <guibutton>Home</guibutton> button is clicked
|
||||
or the <guimenuitem>Home</guimenuitem> menu item is selected from
|
||||
either <guimenu>Go</guimenu> menu or the right-click context menu
|
||||
anywhere.</para>
|
||||
|
||||
<para>To set Home person, make the desired person active and
|
||||
then choose <menuchoice><guimenu>Edit</guimenu><guimenuitem>Set Home
|
||||
person...</guimenuitem></menuchoice>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect2>
|
||||
|
||||
<!-- =============== Customization Sub-subsection ================ -->
|
||||
<sect2 id="prefs-db-id">
|
||||
<title>GRAMPS internal IDs</title>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><guilabel> GRAMPS ID prefixes</guilabel></term>
|
||||
<listitem><para> Enter ID prefixes for various kinds of database
|
||||
entries into the corresponding text entry fields.
|
||||
</para></listitem>
|
||||
<varlistentry><term>Adjusting viewing controls</term>
|
||||
<listitem>Whether the toolbar, the sidebar, or the filter (People View
|
||||
only) are displayed in the main window is adjusted through
|
||||
the <guimenu>View</guimenu> menu.
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Allow internal GRAMPS ID numbers to be
|
||||
edited</guilabel></term>
|
||||
<listitem><para> Check this box to enable editing of the internal &app;
|
||||
ID numbers. Unless you know what you are doing, leave it unchecked.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect2>
|
||||
|
||||
<!-- =============== Customization Sub-subsection ================ -->
|
||||
<sect2 id="prefs-db-rcs">
|
||||
<title>Revision Control</title>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><guilabel>Use revision control</guilabel></term>
|
||||
<listitem><para> Check this box to enable &app; to use the revision control
|
||||
system for your database. If you choose this option, select the
|
||||
particular revision control system from the menu.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Prompt for comment on save</guilabel></term>
|
||||
<listitem><para> Check this box to instruct &app; to prompt you to enter
|
||||
the comment when you save the database.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</sect2>
|
||||
</variablelist>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 id="gramps-prefs-adv">
|
||||
<title>Advanced manipulation of settings</title>
|
||||
|
||||
<warning><para>The contents of this section is outside the scope
|
||||
of interest of a general user of &app;. If you proceed with tweaking
|
||||
the options on the low level you may damage your &app; installation.
|
||||
Be careful. YOU HAVE BEEN WARNED!
|
||||
</para></warning>
|
||||
|
||||
<para>By default, &app; stores its settings using gconf2 system.
|
||||
All the settings used in this version of &app; are stored in
|
||||
subdirectories under <filename>/apps/gramps/</filename> in the
|
||||
gconf2 namespace. Accessing the keys can be done either using
|
||||
<command>gconftool-2</command> command line tool, or the
|
||||
<command>gconf-editor</command> GUI tool.
|
||||
</para>
|
||||
|
||||
<para>All keys are documented, and the notification mechanisms
|
||||
are used as appropriate. Therefore, updating keys from outside
|
||||
of &app; should lead to updating &app; in real time, without
|
||||
necessarily restarting it.</para>
|
||||
</sect1>
|
||||
|
||||
</chapter>
|
||||
|
@ -61,13 +61,15 @@ This, however, may change in the future.
|
||||
|
||||
<varlistentry><term>Does it work with the Mac?</term>
|
||||
<listitem><para>
|
||||
The Fink project (<ulink url="http://fink.sf.net"
|
||||
type="http">http://fink.sf.net</ulink>) has ported an old version of
|
||||
&app; (0.8.0) to OSX. The Mac OSX port is not directly supported by
|
||||
<ulink url="http://fink.sourceforge.net"
|
||||
type="http">The Fink project</ulink> has ported
|
||||
<ulink url="http://fink.sourceforge.net/pdb/package.php/gramps"
|
||||
type="http">some older versions</ulink> of
|
||||
&app; to OSX (tm). The Mac OSX port is not directly supported by
|
||||
the &app; project, primarily because none of the &app; developers
|
||||
have access to Mac OSX.</para>
|
||||
have access to Mac OSX and because OSX is not Free Software.</para>
|
||||
|
||||
<para>The GNOME 2 version of &app; (0.9.x) does not appear to have been
|
||||
<para>This version of &app; (&appversion;) does not appear to have been
|
||||
ported by the Fink project. Please contact the Fink project for more
|
||||
information.
|
||||
</para></listitem>
|
||||
@ -86,8 +88,8 @@ Yes, as long as the required GNOME libraries are installed.
|
||||
|
||||
<varlistentry><term>What version of GNOME do I need?</term>
|
||||
<listitem><para>
|
||||
The latest versions of gramps (0.9.0 and higher) require GNOME 2.0 or higher.
|
||||
Previous versions required GNOME 1.X.
|
||||
This version of gramps requires GNOME 2.8.0 or higher.
|
||||
Previous versions in 1.0.x series required GNOME 2.0.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
@ -137,7 +139,7 @@ their own plugins which could be new reports, charts, or research tools.
|
||||
<listitem><para>
|
||||
Text reports are available in HTML, PDF, AbiWord, KWord, LaTeX, RTF, and
|
||||
OpenOffice formats. Graphical reports (charts and diagrams) are available in
|
||||
PostScript, PDF, SVG, OpenOffice and GraphViz formats.
|
||||
PostScript, PDF, SVG, OpenOffice, and GraphViz formats.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
@ -148,7 +150,7 @@ data that you download from the Internet. It can export data that you could
|
||||
send over the Internet. &app; is familiar with the standard file formats
|
||||
widely used on the Internet (e.g. JPEG, PNG, and GIF images, MP3, OGG, and
|
||||
WAV sound files, QuickTime, MPEG, and AVI movie files, etc). Other than that,
|
||||
there is little that a genealogical program can do with the Internet :-)
|
||||
there is little that a genealogical program can do with the Internet.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
@ -170,7 +172,7 @@ knowledge of programming in Python.
|
||||
<varlistentry><term>What standards does &app; support?</term>
|
||||
<listitem><para>
|
||||
The nice thing about the standards is that there never is a shortage of
|
||||
them :-). &app; is tested to support the following flavors of GEDCOM:
|
||||
them. &app; is tested to support the following flavors of GEDCOM:
|
||||
GEDCOM5.5, Brother's Keeper, Family Origins, Familty Tree Maker, Ftree,
|
||||
GeneWeb, Legacy, Personal Ancestral File, Pro-Gen, Reunion, and
|
||||
Visual Genealogie.
|
||||
@ -181,43 +183,34 @@ Visual Genealogie.
|
||||
size (bytes) &app; can handle?</term>
|
||||
<listitem><para>
|
||||
&app; has no hard limits on the size of a database that it can handle.
|
||||
In reality, however, there are practical limits. Currently &app; loads all
|
||||
data into memory, so the limiting factor tends to be the available memory
|
||||
on the system.
|
||||
Starting with this release, &app; no longer loads all data into memory,
|
||||
which allows it to work with much larger database than before.
|
||||
In reality, however, there are practical limits. The main limiting factors
|
||||
are the available memory on the system and the cache size used for BSDDB
|
||||
database access. With common memory sizes these days, &app; should have
|
||||
no problem using databases with tens of thousands of people.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>How many people can &app; database handle?</term>
|
||||
<listitem><para>
|
||||
We have found that on a typical system, &app; tends to bog down after the
|
||||
database has around 15,000 people. Again, this is dependant on how much
|
||||
database has around 150,000 people. Again, this is dependent on how much
|
||||
memory you have.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Why is &app; running so slowly?</term>
|
||||
<listitem><para>
|
||||
If &app; seems too slow to you, it is most likely that you have a large
|
||||
database. Currently, &app; loads all the database into memory, therefore
|
||||
large databases tend to be less than responsive. Specifically, the system
|
||||
can be virtually brought to its knees if swapping is needed for &app;' data.
|
||||
</para> <para>
|
||||
This will be addressed in the next stable release following version 1.0.
|
||||
Temporarily, adding more memory could make a huge difference, but we realize
|
||||
that this is a poor way of treating the problem. If you would like to help
|
||||
with the implementation of the real database backend, please don't hesitate
|
||||
to email us at <ulink url="mailto:gramps-devel@lists.sf.net"
|
||||
type="mailto">gramps-devel@lists.sf.net</ulink>
|
||||
<listitem><para> It does not anymore! Just try out the current
|
||||
version, &appversion;.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>My database is really big.
|
||||
Is there a way around loading all the data into memory?</term>
|
||||
<listitem><para>
|
||||
Currently, there is no way around it. However, this is our biggest priority
|
||||
after releasing version 1.0. The real database backend will be incorporated
|
||||
in the next stable release (1.2) which will dramatically improve performance
|
||||
in both speed and memory usage.
|
||||
Starting with this release, &app; no longer loads all data into memory,
|
||||
which allows it to work with much larger database than before.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
@ -229,34 +222,30 @@ in both speed and memory usage.
|
||||
the flag needs to be reset. This can be done with the following
|
||||
command: </para>
|
||||
|
||||
<para><command>gconftool-2 -u /apps/gramps/startup</command>
|
||||
<para><command>gconftool-2 -u /apps/gramps/behavior/startup</command>
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Why are non-latin characters displayed
|
||||
as garbage in PDF/PS reports?</term>
|
||||
<listitem><para>
|
||||
This is a known problem -- PS (and PDF) have builtin fonts which pretty much
|
||||
reflect the latin-1 charset. Any font in principle could be used with PS/PDF
|
||||
but then it would have to be embedded in the file. This is problematic since
|
||||
every system has different idea about fonts and their setup.</para>
|
||||
|
||||
<para>
|
||||
This should be resolved as we move to gnome-print. In the meantime, a useable
|
||||
workaround is to generate reports in OpenOffice.org format and then export
|
||||
to PDF from the OpenOffice.org application.
|
||||
</para></listitem>
|
||||
<listitem><para> This is a limitation of the builtin fonts of PS
|
||||
and PDF formats. To print non-latin text, use the Print...
|
||||
in the format selection menu of the report dialog. This will use
|
||||
the gnome-print backend, which supports PS and PDF creation,
|
||||
as well as direct printing.</para>
|
||||
|
||||
<para>If you only have latin text, the PDF option will produce
|
||||
a smalled PDF compared to that created by gnome-print, simply because
|
||||
no font information will be embedded.
|
||||
</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Why can I not add/remove/edit columns to the lists
|
||||
in People View and Family View?</term>
|
||||
<listitem><para>
|
||||
This will be addressed after the TreeModelSort bug is fixed in pygtk,
|
||||
see <ulink url="http://bugzilla.gnome.org/show_bug.cgi?id=125172"
|
||||
type="http">http://bugzilla.gnome.org/show_bug.cgi?id=125172</ulink>
|
||||
for the details.
|
||||
Once the patch is committed and incorporated into pygtk, we will add the
|
||||
ability to add/remove/edit sortable columns.
|
||||
<listitem><para> Now you can! Just try out the current
|
||||
version, &appversion;.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
@ -374,13 +363,13 @@ If, however, you would like the &app; project to to adopt your strategy,
|
||||
you would need to convince &app; developers that your strategy is good
|
||||
for &app; and superior to the present development strategy.</para>
|
||||
|
||||
<para>
|
||||
HINT: if &app; developers are still not convinced after about three
|
||||
<tip><para>
|
||||
If &app; developers are still not convinced after about three
|
||||
messages sent to gramps-devel, maybe you are better off on your own
|
||||
rather than with a company of retards who can't fully realize the
|
||||
potential of your great idea :-)
|
||||
|
||||
</para></listitem>
|
||||
</para></tip></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 16 KiB |
BIN
gramps2/doc/gramps-manual/C/figures/comp-people.png
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
gramps2/doc/gramps-manual/C/figures/date-selection.png
Normal file
After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 7.5 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 8.9 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 9.6 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 9.9 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 8.3 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 8.1 KiB |
BIN
gramps2/doc/gramps-manual/C/figures/find-people.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
gramps2/doc/gramps-manual/C/figures/merge-people.png
Normal file
After Width: | Height: | Size: 7.0 KiB |
BIN
gramps2/doc/gramps-manual/C/figures/merge-plc.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
gramps2/doc/gramps-manual/C/figures/merge-src.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
gramps2/doc/gramps-manual/C/figures/prefs.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
gramps2/doc/gramps-manual/C/figures/scratch-pad.png
Normal file
After Width: | Height: | Size: 12 KiB |
@ -25,7 +25,8 @@
|
||||
<title>Filter rules reference</title>
|
||||
<para>This appendix lists of all the filter rules currently defined
|
||||
in &app;. Each of these rules is available for use when creating custom
|
||||
filters. The rules are listed by their categories.
|
||||
filters, see <xref linkend="tools-util-cfe"/>. The rules are
|
||||
listed by their categories.
|
||||
</para>
|
||||
|
||||
<!-- =============== Appendices Sub-subsection ================ -->
|
||||
@ -43,6 +44,26 @@
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>People with incomplete names</term>
|
||||
<listitem><para> This rule matches all people with either
|
||||
given name or family name missing.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Is bookmarked person</term>
|
||||
<listitem><para> This rule matches all people who are on the
|
||||
bookmark list.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Has text matching substring of</term>
|
||||
<listitem><para> This rule matches all people whose records contain
|
||||
specified substring. All textual records are searched. Optionally,
|
||||
the search can be made case sensitive, or a regular expression
|
||||
match.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Everyone</term>
|
||||
<listitem><para> This rule matches any person in the database.
|
||||
As such it is not very useful on its own except for testing purposes.
|
||||
@ -50,6 +71,13 @@
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>People probably alive</term>
|
||||
<listitem><para> This rule matches all people whose records do
|
||||
not indicate their death and who are not unreasonably old,
|
||||
judging by their available birth data and today's date.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Has a name</term>
|
||||
<listitem><para> This rule matches any person whose name
|
||||
matches the specified value in full or in part. For example,
|
||||
@ -58,7 +86,7 @@
|
||||
</para>
|
||||
|
||||
<para> Separate values can be used for Given name, Family name,
|
||||
Suffix, and the Title. The rule returns a match if and only if
|
||||
Suffix, and the Title. The rule returns a match if, and only if,
|
||||
all non-empty values are (partially) matched by a person's
|
||||
name. To use just one value, leave the other values empty.
|
||||
</para></listitem>
|
||||
@ -77,11 +105,33 @@
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Is default person</term>
|
||||
<listitem><para> This rule matches the default (home) person.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>People marked private</term>
|
||||
<listitem><para> This rule matches people whose records are marked
|
||||
as private.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Is a female</term>
|
||||
<listitem><para> This rule matches any female person.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>People who have images</term>
|
||||
<listitem><para> This rule matches people with images in their
|
||||
galleries.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>People without a birth date</term>
|
||||
<listitem><para> This rule matches people missing birth date.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Is a male</term>
|
||||
<listitem><para> This rule matches any male person.
|
||||
</para></listitem>
|
||||
@ -107,7 +157,7 @@
|
||||
using the value "sw" for the Place.
|
||||
</para>
|
||||
|
||||
<para> The rule returns a match if and only if
|
||||
<para> The rule returns a match if, and only if,
|
||||
all non-empty values are (partially) matched by a person's
|
||||
birth. To use just one value, leave the other values empty.
|
||||
</para></listitem>
|
||||
@ -122,12 +172,18 @@
|
||||
will be matched by the rule using the value "sw" for the Place.
|
||||
</para>
|
||||
|
||||
<para> The rule returns a match if and only if
|
||||
<para> The rule returns a match if, and only if,
|
||||
all non-empty values are (partially) matched by a person's
|
||||
death. To use just one value, leave the other values empty.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Has source of</term>
|
||||
<listitem><para> This rule matches people whose records refer
|
||||
to the specified source.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Has the personal event</term>
|
||||
<listitem><para> This rule matches people that have a personal
|
||||
event matching specified values for the Event type, Date, Place,
|
||||
@ -139,7 +195,7 @@
|
||||
</para>
|
||||
|
||||
<para> The personal events should be selected from a pull-down menu.
|
||||
The rule returns a match if and only if all non-empty values
|
||||
The rule returns a match if, and only if, all non-empty values
|
||||
are (partially) matched by the personal event.
|
||||
To use just one value, leave the other values empty.
|
||||
</para></listitem>
|
||||
@ -156,12 +212,30 @@
|
||||
</para>
|
||||
|
||||
<para> The family events should be selected from a pull-down menu.
|
||||
The rule returns a match if and only if all non-empty values
|
||||
The rule returns a match if, and only if, all non-empty values
|
||||
are (partially) matched by the personal event.
|
||||
To use just one value, leave the other values empty.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Witness</term>
|
||||
<listitem><para> This rule matches people who are present as
|
||||
a witness in the event. If the personal or family event type is
|
||||
specified, only the events of this type will be searched.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>People with incomplete events</term>
|
||||
<listitem><para> This rule matches people missing date or place in
|
||||
any personal event.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Families with incomplete events</term>
|
||||
<listitem><para> This rule matches people missing date or place in
|
||||
any family event of any of their families.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect1>
|
||||
@ -173,6 +247,26 @@
|
||||
based on their family relationships:</para>
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term>People with children</term>
|
||||
<listitem><para> This rule matches people with children.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>People with multiple marriage records</term>
|
||||
<listitem><para> This rule matches people with more than one spouse.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>People with no marriage records</term>
|
||||
<listitem><para> This rule matches people with no spouses.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>People who were adopted</term>
|
||||
<listitem><para> This rule matches adopted people.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Has the relationships</term>
|
||||
<listitem><para> This rule matches people with a particular
|
||||
relationship. The relationship must match the type selected from
|
||||
@ -180,7 +274,7 @@
|
||||
of children can be specified.
|
||||
</para>
|
||||
|
||||
<para> The rule returns a match if and only if
|
||||
<para> The rule returns a match if, and only if,
|
||||
all non-empty values are (partially) matched by a person's
|
||||
relationship. To use just one value, leave the other values empty.
|
||||
</para></listitem>
|
||||
@ -207,6 +301,13 @@
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Is a sibling of filter match</term>
|
||||
<listitem><para> This rule matches people whose sibling
|
||||
is matched by the specified filter.
|
||||
The specified filter name should be selected from the menu.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect1>
|
||||
|
||||
|
@ -25,8 +25,9 @@
|
||||
|
||||
<title>Getting Started</title>
|
||||
|
||||
<para>This chapter provides the most basic information on starting &app; and
|
||||
obtaining help. Please procede to the following chapters for more information.</para>
|
||||
<para>This chapter provides the most basic information on starting &app;
|
||||
and obtaining help. Please procede to the following chapters for more
|
||||
information.</para>
|
||||
|
||||
<!-- ================ Getting Started Subsection ====== -->
|
||||
<sect1 id="gramps-start">
|
||||
@ -35,13 +36,15 @@
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><guimenu>Applications</guimenu> menu</term>
|
||||
<listitem><para>Choose <menuchoice><guisubmenu>Other</guisubmenu>
|
||||
<listitem><para>The method of starting &app; from the menus may vary from
|
||||
distribution to distribution. On default GNOME desktop,
|
||||
choose <menuchoice><guisubmenu>Other</guisubmenu>
|
||||
<guimenuitem>Gramps</guimenuitem></menuchoice>. </para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Command line</term>
|
||||
<listitem><para>To start &app; from a command line, type
|
||||
<command>gramps</command>, then press <keycap>Return</keycap>.</para>
|
||||
<command>gramps</command>, then press <keycap>Enter</keycap>.</para>
|
||||
|
||||
<para>If you would like &app; to open a specific database or to
|
||||
import a specific file on startup, you can supply the filename
|
||||
|
@ -34,9 +34,9 @@
|
||||
|
||||
<!ENTITY legal SYSTEM "legal.xml">
|
||||
|
||||
<!ENTITY appversion "1.2.0">
|
||||
<!ENTITY appversion "2.0.0">
|
||||
<!ENTITY manrevision "2.6">
|
||||
<!ENTITY date "February 2005">
|
||||
<!ENTITY date "May 2005">
|
||||
<!ENTITY app "GRAMPS">
|
||||
|
||||
<!-- The rest of the entities is simply the chapters of the manual.. -->
|
||||
@ -93,7 +93,7 @@
|
||||
<surname>Roitman</surname>
|
||||
<affiliation>
|
||||
<orgname>GRAMPS Project</orgname>
|
||||
<address> <email>shura@alex.neuro.umn.edu</email> </address>
|
||||
<address> <email>shura@gramps-project.org</email> </address>
|
||||
</affiliation>
|
||||
</author>
|
||||
<author>
|
||||
@ -101,7 +101,7 @@
|
||||
<surname>Allingham</surname>
|
||||
<affiliation>
|
||||
<orgname>GRAMPS Project</orgname>
|
||||
<address> <email>dallingham@users.sourceforge.net</email> </address>
|
||||
<address> <email>don@gramps-project.org</email> </address>
|
||||
</affiliation>
|
||||
</author>
|
||||
|
||||
@ -139,7 +139,7 @@
|
||||
<date>&date;</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@alex.neuro.umn.edu</email></para>
|
||||
<email>shura@gramps-project.org</email></para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
</revision>
|
||||
@ -148,7 +148,7 @@
|
||||
<date>February 2004</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@alex.neuro.umn.edu</email></para>
|
||||
<email>shura@gramps-project.org</email></para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
</revision>
|
||||
@ -157,7 +157,7 @@
|
||||
<date>December 2003</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@alex.neuro.umn.edu</email></para>
|
||||
<email>shura@gramps-project.org</email></para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
</revision>
|
||||
@ -166,7 +166,7 @@
|
||||
<date>September 2003</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@alex.neuro.umn.edu</email></para>
|
||||
<email>shura@gramps-project.org</email></para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
</revision>
|
||||
@ -175,7 +175,7 @@
|
||||
<date>July 2003</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@alex.neuro.umn.edu</email></para>
|
||||
<email>shura@gramps-project.org</email></para>
|
||||
<para role="author">Donald A. Peterson
|
||||
<email>dpeterson@sigmaxi.org</email></para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
@ -186,7 +186,7 @@
|
||||
<date>May 2003</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@alex.neuro.umn.edu</email>
|
||||
<email>shura@gramps-project.org</email>
|
||||
</para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
@ -196,7 +196,7 @@
|
||||
<date>April 2003</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@alex.neuro.umn.edu</email>
|
||||
<email>shura@gramps-project.org</email>
|
||||
</para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
@ -206,7 +206,7 @@
|
||||
<date>2001</date>
|
||||
<revdescription>
|
||||
<para role="author">Donald N. Allingham
|
||||
<email>dallingham@users.sourceforge.net</email>
|
||||
<email>don@gramps-project.org</email>
|
||||
</para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
@ -216,7 +216,7 @@
|
||||
<date>2001</date>
|
||||
<revdescription>
|
||||
<para role="author">Donald N. Allingham
|
||||
<email>dallingham@users.sourceforge.net</email>
|
||||
<email>don@gramps-project.org</email>
|
||||
</para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
@ -231,7 +231,8 @@
|
||||
<para>
|
||||
To report a bug or make a suggestion regarding this application or
|
||||
this manual, use the help menu in &app;, or follow the directions
|
||||
on <ulink url="http://gramps.sourceforce.net/contact.html" type="http">this site.</ulink>
|
||||
found on <ulink url="http://gramps-project.org/index.php?module=pagemaster&PAGE_user_op=view_page&PAGE_id=3"
|
||||
type="http">this site</ulink>.
|
||||
</para>
|
||||
|
||||
<!-- Translators may also add here feedback address for translations -->
|
||||
|
@ -23,13 +23,19 @@
|
||||
<!-- $Id$ -->
|
||||
|
||||
<title>Keybindings reference</title>
|
||||
<para>Most of the standard menu items define equivalent keybindings.
|
||||
These are apparent because they are displayed on the right of
|
||||
the menu item. However, some keybindings are not associated with
|
||||
any items in the menu. </para>
|
||||
|
||||
<para>This appendix contains the list of keybindings that are not
|
||||
displayed in menus of &app;.
|
||||
</para>
|
||||
|
||||
<sect1 id="keybind-people">
|
||||
<title>People View</title>
|
||||
<para>The following bindings are available in the People View:</para>
|
||||
<sect1 id="keybind-lists">
|
||||
<title>List Views</title>
|
||||
<para>The following bindings are available in all list views:
|
||||
People View, Sources View, Places View, and Media View.</para>
|
||||
|
||||
<informaltable frame="topbot">
|
||||
<tgroup cols="2">
|
||||
@ -140,8 +146,8 @@
|
||||
<entry><para><keycap>Ctrl</keycap>+<keycap>Up</keycap>
|
||||
or <keycap>Ctrl</keycap>+<keycap>Left</keycap></para></entry>
|
||||
<entry><para>Swap the selected spouse and the Active Person.
|
||||
Use <keycap>Ctrl</keycap>+<keycap>Down</keycap> in standard Family View and
|
||||
<keycap>Ctrl</keycap>+<keycap>Right</keycap> in alternative Family
|
||||
Use <keycap>Ctrl</keycap>+<keycap>Up</keycap> in standard Family View and
|
||||
<keycap>Ctrl</keycap>+<keycap>Left</keycap> in alternative Family
|
||||
View.</para></entry>
|
||||
</row>
|
||||
</tbody>
|
||||
@ -262,4 +268,4 @@
|
||||
|
||||
</sect1>
|
||||
|
||||
</appendix>
|
||||
</appendix>
|
||||
|
@ -123,7 +123,7 @@
|
||||
<!-- ==== End of Figure ==== -->
|
||||
</listitem></varlistentry>
|
||||
|
||||
<varlistentry><term>To switch the View while in a Notebook mode,
|
||||
<varlistentry><term>To switch the View while in a Tabbed mode,
|
||||
click on the desired notebook tab.</term>
|
||||
<listitem>
|
||||
<!-- ==== Figure: Tabbed Notebook Mode ==== -->
|
||||
@ -138,7 +138,7 @@
|
||||
</listitem></varlistentry>
|
||||
</variablelist>
|
||||
|
||||
<para>To switch between sidebar and notebook viewing modes,
|
||||
<para>To switch between sidebar and tabbed viewing modes,
|
||||
choose <menuchoice> <guimenu>View</guimenu>
|
||||
<guimenuitem>Sidebar</guimenuitem>
|
||||
</menuchoice> from the &app; menu.</para>
|
||||
@ -156,7 +156,7 @@
|
||||
<para> The individuals are arranged in a tree-like structure,
|
||||
according to their family names. Every family name is a node of the
|
||||
tree. Clicking the arrow on the left of the node will toggle its
|
||||
expansion state. When expanded, the node's contents is listed in the
|
||||
expansion state. When expanded, the node's content is listed in the
|
||||
window. When collapsed, the contents is rolled up and not visible.
|
||||
However, all the data is still intact, it is just not being displayed.
|
||||
</para>
|
||||
@ -179,7 +179,7 @@
|
||||
see <xref linkend="column-editor-fig"/>. Only checked columns will be shown
|
||||
in the view. To change their order, drag any column to its desired place inside
|
||||
the editor. Clicking <guibutton>OK</guibutton> will reflect the changes
|
||||
in the People View. To incoke <guilabel>Column Editor Dialog</guilabel>,
|
||||
in the People View. To invoke <guilabel>Column Editor Dialog</guilabel>,
|
||||
choose <menuchoice><guimenu>Edit</guimenu><guimenuitem>Column
|
||||
Editor</guimenuitem></menuchoice>.
|
||||
</para>
|
||||
@ -286,7 +286,7 @@
|
||||
allows you to edit their relationship information. Shift-clicking on
|
||||
the Current spouse allows the editing of the Current spouse's data.</para>
|
||||
|
||||
<para> To add a new relationship use one of the two upper buttons to the
|
||||
<para> To add a new relationship, use one of the two upper buttons to the
|
||||
right of the spouse box. Click the top one to add a new person to a
|
||||
database and to the new relationship. Click the middle one to add a
|
||||
person already existing in the database to the new relationship.
|
||||
@ -295,7 +295,7 @@
|
||||
right of the spouse box. Note that removing a spouse from the
|
||||
relationship does not remove the person from the database. Most of these
|
||||
functions are also available by right-clicking into the spouse box and
|
||||
selecting an appropriate items from the context menu. </para>
|
||||
selecting an appropriate item from the context menu. </para>
|
||||
|
||||
<para>The parents of both the Active person and the Current spouse
|
||||
are listed in the corresponding list boxes in the right-hand part of
|
||||
@ -308,7 +308,7 @@
|
||||
That is, it makes the selected Father the Active person, and the
|
||||
selected Mother the Current spouse. Most of these
|
||||
functions are also available by right-clicking into the parent box and
|
||||
selecting an appropriate items from the context menu. </para>
|
||||
selecting an appropriate item from the context menu. </para>
|
||||
|
||||
<para>The bottom list box displays children of the Active person and
|
||||
the Current Spouse. The Children's list can be ordered by the Birth date
|
||||
@ -329,7 +329,7 @@
|
||||
button removes the selected child from the family. Note that removing
|
||||
a child from the family does not remove the person from the
|
||||
database. Most of these functions are also available by right-clicking
|
||||
into the children box and selecting an appropriate items from the
|
||||
into the children box and selecting an appropriate item from the
|
||||
context menu.</para>
|
||||
|
||||
<para>The layout of the Family View can be switched from the
|
||||
@ -378,7 +378,7 @@
|
||||
relations (such as adoption, step-parenthood, guardianship, etc.).
|
||||
When the mouse moves over the white box, it expands to display the
|
||||
corresponding person's dates of birth and death. When the mouse is
|
||||
placed over the family line, the line become highlighted to indicate
|
||||
placed over the family line, the line becomes highlighted to indicate
|
||||
an active link: double-clicking on the line makes the corresponding
|
||||
ancestor the Active person. The display in that case is re-adjusted
|
||||
to show four generations, starting from the newly selected Active
|
||||
@ -428,7 +428,7 @@
|
||||
context menu. Among other useful items, the context menu has submenus
|
||||
listing <guilabel>Spouses</guilabel>, <guilabel>Siblings</guilabel>,
|
||||
<guilabel>Children</guilabel>, and <guilabel>Parents</guilabel>
|
||||
of that person. Insensitive (greyed out) submenus indicate the absense
|
||||
of that person. Insensitive (greyed out) submenus indicate the absence
|
||||
of the data in the appropriate category. Similarly to the children menu above,
|
||||
children's and parents' menus distinguish continuing lines from dead ends.
|
||||
</para>
|
||||
@ -465,7 +465,7 @@
|
||||
of the display area.
|
||||
The set anchor person will stay in effect until either the anchor is
|
||||
removed (by selecting the <guilabel>Remove anchor</guilabel> item from the
|
||||
context menu) or until the active person chosen is unrelated to the anchor
|
||||
context menu), or until the active person chosen is unrelated to the anchor
|
||||
person. The latter move can be made using extensive navigation tools
|
||||
available in &app;, see <xref linkend="gramps-nav"/> for the detailed
|
||||
reference.
|
||||
@ -546,8 +546,10 @@
|
||||
Media Objects are any files that relate somehow to the stored
|
||||
genealogical data. Technically, any file can be stored as a Media
|
||||
Object. Most frequently, these are images, audio files, animation
|
||||
files, etc. The list box on the bottom lists the Name, ID, Type, and
|
||||
Path to the Media Object. <guilabel>Column Editor Dialog</guilabel>
|
||||
files, etc. The list box on the bottom lists the <guilabel>Name</guilabel>,
|
||||
<guilabel>ID</guilabel>, <guilabel>Type</guilabel>, and
|
||||
<guilabel>Path</guilabel> of the Media Object.
|
||||
<guilabel>Column Editor Dialog</guilabel>
|
||||
may be used to rearrange the displayed columns, which obey usual
|
||||
sorting rules. The top part of the GRAMPS window shows
|
||||
a preview (if available) and information about the Media
|
||||
|
@ -67,10 +67,11 @@
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term>Berkely database backend</term>
|
||||
<listitem><para>The default format for &app; is now the BSDDB database. This change
|
||||
allowed us to overcome performance issues and memory requirements of the 1.0.X branch.
|
||||
With the database backend, the database sizes of several hunder thousand people do not
|
||||
<varlistentry><term>Berkeley database backend</term>
|
||||
<listitem><para>The default format for &app; is now the BSDDB database.
|
||||
This change allowed us to overcome performance issues and memory
|
||||
requirements of the 1.0.X branch. With the database backend, the database
|
||||
sizes of up to a hundred thousand people do not
|
||||
present a major obstacle any longer.</para>
|
||||
|
||||
<para>
|
||||
@ -161,14 +162,15 @@
|
||||
|
||||
<varlistentry><term>Internationalization</term>
|
||||
<listitem><para>
|
||||
The approach for entering and displaying dates has been completely re-worked. In
|
||||
particular, the new framework allows for a deeper localization of displayed dates than
|
||||
was ever possible using the translatable strings.</para>
|
||||
The approach for entering and displaying dates has been completely
|
||||
re-worked. In particular, the new framework allows for a deeper
|
||||
localization of displayed dates than was ever possible using the
|
||||
translatable strings.</para>
|
||||
|
||||
<para>The internationalization of names have also been improved. Names can be
|
||||
grouped under a non-default string. Patronymic names are supported, and it is easy
|
||||
to program new ways on displaying names, as may be required by other cultures
|
||||
and languages.
|
||||
<para>The internationalization of names have also been improved.
|
||||
Names can be grouped under a non-default string. Patronymic names are
|
||||
supported, and it is easy to program new ways on displaying names, as
|
||||
may be required by various cultures and languages.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
@ -191,27 +193,27 @@
|
||||
<title>Typographical conventions</title>
|
||||
<para>
|
||||
In this book, we some words are marked with special typography:
|
||||
<simplelist>
|
||||
<member><application>Applications</application></member>
|
||||
<member><command>Commands</command> you type at the command
|
||||
line</member>
|
||||
<member><filename>Filenames</filename></member>
|
||||
<member><replaceable>Replaceable text</replaceable></member>
|
||||
<member><guilabel>Labels</guilabel> for buttons and other
|
||||
portions of the graphical interface</member>
|
||||
<itemizedlist>
|
||||
<listitem><application>Applications</application></listitem>
|
||||
<listitem><command>Commands</command> you type at the command
|
||||
line</listitem>
|
||||
<listitem><filename>Filenames</filename></listitem>
|
||||
<listitem><replaceable>Replaceable text</replaceable></listitem>
|
||||
<listitem><guilabel>Labels</guilabel> for buttons and other
|
||||
portions of the graphical interface</listitem>
|
||||
|
||||
<member> Menu selections look like this:
|
||||
<listitem> Menu selections look like this:
|
||||
<menuchoice>
|
||||
<guimenu>Menu</guimenu>
|
||||
<guisubmenu>Submenu</guisubmenu>
|
||||
<guimenuitem>Menu Item</guimenuitem>
|
||||
</menuchoice>
|
||||
</member>
|
||||
<member><guibutton>Buttons</guibutton> you can
|
||||
click</member>
|
||||
<member><userinput>Anything you type
|
||||
in</userinput></member>
|
||||
</simplelist>
|
||||
</listitem>
|
||||
<listitem><guibutton>Buttons</guibutton> you can
|
||||
click</listitem>
|
||||
<listitem><userinput>Anything you type
|
||||
in</userinput></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
|
@ -1,3 +1,3 @@
|
||||
# Process this file with automake to produce Makefile.in
|
||||
|
||||
SUBDIRS = C fr ru
|
||||
SUBDIRS = C
|
||||
|
@ -1,4 +1,4 @@
|
||||
.TH gramps 1 "@VERSION@" "June 2004" "@VERSION@"
|
||||
.TH gramps 1 "@VERSION@" "May 2005" "@VERSION@"
|
||||
.SH NAME
|
||||
gramps \- Genealogical Research and Analysis Management Programming System.
|
||||
|
||||
@ -7,6 +7,10 @@ gramps \- Genealogical Research and Analysis Management Programming System.
|
||||
.RB [ \-?|\-\^\-help ]
|
||||
.RB [ \-\^\-usage ]
|
||||
.RB [ \-\^\-version ]
|
||||
.RB [ \-O|\-\^\-open=
|
||||
.IR FILE
|
||||
.RB [ \-f|\-\^\-format=
|
||||
.IR FORMAT ]]
|
||||
.RB [ \-i|\-\^\-import=
|
||||
.IR FILE
|
||||
.RB [ \-f|\-\^\-format=
|
||||
@ -19,18 +23,19 @@ gramps \- Genealogical Research and Analysis Management Programming System.
|
||||
.IR FORMAT ]]
|
||||
.RB [ \-a|\-\^\-action=
|
||||
.IR ACTION ]
|
||||
.RB [ \-p|\-\^\-options=
|
||||
.IR OPTIONSTRING ]]
|
||||
.RB [
|
||||
.IR FILE
|
||||
.RB ]
|
||||
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
\fIGramps\fP is an open source genealogy program. It is written in Python,
|
||||
using the GTK/GNOME interface.
|
||||
.br
|
||||
\fIGramps\fP is a Free/OpenSource genealogy program. It is written in Python,
|
||||
using the GTK+/GNOME interface.
|
||||
Gramps should seem familiar to anyone who has used other geneology programs
|
||||
before such as \fIFamily Tree Maker for Windows(TM)\fR or the GNU Geneweb.
|
||||
.br
|
||||
before such as \fIFamily Tree Maker (TM)\fR, \fIPersonal Ancestral
|
||||
Files (TM)\fR, or the GNU Geneweb.
|
||||
It supports importing of the ever popular GEDCOM format which is used world
|
||||
wide by almost all other genealogy software.
|
||||
|
||||
@ -41,32 +46,56 @@ When \fIFILE\fR is given (without any flags) then it is
|
||||
opened and an interactive session is started. The rest of the options
|
||||
is ignored. This way of launching is suitable for using gramps
|
||||
as a handler for genealogical data in e.g. web browsers. This invokation
|
||||
can accept any data format known to gramps, see below.
|
||||
can accept any data format native to gramps, see below.
|
||||
.br
|
||||
|
||||
.TP
|
||||
.BI \-f,\-\^\-format= " FORMAT"
|
||||
Explicitly specify format of \fIFILE\fR given by preceding \fB\-i\fR or
|
||||
Explicitly specify format of \fIFILE\fR given by preceding \fB\-O\fR,
|
||||
\fB\-i\fR, or
|
||||
\fB\-o\fR option. If the \fB\-f\fR option is not given for any \fIFILE\fR,
|
||||
the format of that file is guessed according to its extension.
|
||||
.br
|
||||
|
||||
Formats
|
||||
available for import are \fBgramps\-xml\fR (guessed if \fIFILE\fR is a
|
||||
directory), \fBgedcom\fR (guessed if \fIFILE\fR ends with \fB.ged\fR), and
|
||||
\fBgramps\-pkg\fR (guessed if \fIFILE\fR ends with \fB.gpkg\fR).
|
||||
available for opening are \fBgrdb\fR (guessed if \fIFILE\fR ends with
|
||||
\fB.grdb\fR), \fBgramps\-xml\fR (guessed if \fIFILE\fR is a
|
||||
directory), and \fBgedcom\fR (guessed if \fIFILE\fR ends with \fB.ged\fR).
|
||||
.br
|
||||
|
||||
Formats available for export are \fBgramps\-xml\fR, \fBgedcom\fR, \fBgramps\-pkg\fR,
|
||||
\fBwft\fR (guessed if \fIFILE\fR ends with \fB.wft\fR), and \fBiso\fR
|
||||
(never guessed, always specify with \fB\-f\fR option).
|
||||
Formats
|
||||
available for import are \fBgrdb\fR, \fBgramps\-xml\fR, \fBgedcom\fR,
|
||||
\fBgramps\-pkg\fR (guessed if \fIFILE\fR ends with \fB.gpkg\fR), and
|
||||
\fBgeneweb\fR (guessed if \fIFILE\fR ends with \fB.gw\fR).
|
||||
.br
|
||||
|
||||
Formats available for export are \fBgrdb\fR, \fBgramps\-xml\fR, \fBgedcom\fR,
|
||||
\fBgramps\-pkg\fR, \fBwft\fR (guessed if \fIFILE\fR ends with \fB.wft\fR),
|
||||
\fBgeneweb\fR, and \fBiso\fR (never guessed, always specify with
|
||||
\fB\-f\fR option).
|
||||
|
||||
.TP
|
||||
.BI \-O,\-\^\-open= " FILE"
|
||||
Open \fIFILE\fR.
|
||||
Only \fBgrdb\fR, \fBgramps\-xml\fR, and \fBgedcom\fR formats can be
|
||||
opened directly. For other formats, you will need to use the import option
|
||||
which will set up the empty database and then import data into it.
|
||||
For \fBgramps\-xml\fR format, the \fIFILE\fR
|
||||
is actually the name of directory under which the gramps database resides.
|
||||
For \fBgrdb\fR and \fBgedcom\fR, the \fIFILE\fR is the name of
|
||||
the corresponding file.
|
||||
.br
|
||||
|
||||
Only a single file can be opened. If you need to combine data from several
|
||||
sources, you will need to use the import option.
|
||||
|
||||
.TP
|
||||
.BI \-i,\-\^\-import= " FILE"
|
||||
Import data from \fIFILE\fR. For \fBgramps\-xml\fR format, the \fIFILE\fR
|
||||
is actually the name of directory under which the gramps database resides.
|
||||
For \fBgedcom\fR and \fBgramps\-pkg\fR, the \fIFILE\fR is the name of
|
||||
the corresponding file.
|
||||
For \fBgrdb\fR, \fBgedcom\fR, \fBgramps\-pkg\fR, and \fBgeneweb\fR,
|
||||
the \fIFILE\fR is
|
||||
the name of the corresponding file.
|
||||
.br
|
||||
|
||||
When more than one input file is given, each has to be preceded by \fB\-i\fR
|
||||
@ -79,8 +108,8 @@ gramps IDs in the resulting database.
|
||||
.BI \-o,\-\^\-output= " FILE"
|
||||
Export data into \fIFILE\fR. For \fBgramps\-xml\fR and \fBiso\fR formats, the
|
||||
\fIFILE\fR is actually the name of directory the gramps database will be
|
||||
written into. For \fBgedcom\fR, \fBwft\fR, and \fBgramps\-pkg\fR,
|
||||
the \fIFILE\fR is the name of the resulting file.
|
||||
written into. For \fBgrdb\fR, \fBgedcom\fR, \fBwft\fR, \fBgramps\-pkg\fR,
|
||||
and \fBgeneweb\fR, the \fIFILE\fR is the name of the resulting file.
|
||||
.br
|
||||
|
||||
When more than one output file is given, each has to be preceded
|
||||
@ -90,27 +119,82 @@ by \fB\-o\fR flag. The files are written one by one, in the specified order.
|
||||
.BI \-a,\-\^\-action= " ACTION"
|
||||
Perform \fIACTION\fR on the imported data. This is done after all imports
|
||||
are succesfully completed. Currently available actions are \fBsummary\fR
|
||||
(same as Reports->View->Summary) and \fBcheck\fR (same as Tools->Database
|
||||
Processing->Check and Repair).
|
||||
(same as Reports->View->Summary), \fBcheck\fR (same as Tools->Database
|
||||
Processing->Check and Repair), and \fBreport\fR (generates report, needs
|
||||
the \fIOPTIONSTRING\fR supplied by the \fB\-p\fR flag).
|
||||
.br
|
||||
|
||||
The report option string should satisfy the following conditions:
|
||||
.br
|
||||
It must not contain any spaces.
|
||||
If some arguments need to include spaces, the string should
|
||||
be enclosed with quotation marks.
|
||||
Option string must list pairs of option names and values.
|
||||
Withing a pair, option name and value must be separated by the equality sign.
|
||||
Different pairs must be separated by commas.
|
||||
.br
|
||||
|
||||
Most of the report options are specific for every report. However, there some
|
||||
common options.
|
||||
|
||||
.BI "name=reportname"
|
||||
.br
|
||||
This mandatory option determines which report
|
||||
will be generated. If the supplied report_name does not correspond to any
|
||||
available report, the error message will be printed followed by the list of
|
||||
available reports.
|
||||
|
||||
.BI "show=all"
|
||||
.br
|
||||
This will produce the list of names for all options
|
||||
available for a given report.
|
||||
|
||||
.BI "show=optionname"
|
||||
.br
|
||||
This will print the description of
|
||||
the functionality supplied by the optionname, as well as what are the
|
||||
acceptable types and values for this option.
|
||||
|
||||
.br
|
||||
Use the above options to find out
|
||||
everything about a given report.
|
||||
|
||||
.LP
|
||||
When more than one output action is given, each has to be preceded
|
||||
by \fB\-a\fR flag. The actions are performed one by one, in the specified order.
|
||||
|
||||
.BI "Operation"
|
||||
.br
|
||||
If the first argument on the command line does not start with dash (i.e. no
|
||||
flag), gramps will attempt to open the file with the name given by the first
|
||||
argument and start interactive session, ignoring the rest of the command line
|
||||
arguments.
|
||||
|
||||
.LP
|
||||
If the \fB\-O\fR flag is given, then gramps will try opening
|
||||
the supplied file name and then work with that data, as instructed by the
|
||||
further command line parameters.
|
||||
|
||||
.LP
|
||||
With or without the \fB\-O\fR flag, there could be multiple imports,
|
||||
exports, and actions specified further on the command line by using \fB\-i\fR,
|
||||
\fB\-o\fR, and \fB\-a\fR flags.
|
||||
|
||||
.LP
|
||||
The order of \fB\-i\fR, \fB\-o\fR, or \fB\-a\fR options does not matter. The
|
||||
actual order always is: all imports (if any) -> all exports (if any) ->
|
||||
all actions (if any).
|
||||
all actions (if any). But opening must always be first!
|
||||
|
||||
.LP
|
||||
If no \fB\-i\fR option is given, gramps will launch its main
|
||||
window and start the usual interactive session with the empty database
|
||||
(since there is no data to process, anyway).
|
||||
If no \fB\-O\fR or \fB\-i\fR option is given, gramps will launch its main
|
||||
window and start the usual interactive session with the empty database,
|
||||
since there is no data to process, anyway.
|
||||
|
||||
.LP
|
||||
If no \fB\-o\fR or \fB\-a\fR options are given, gramps will launch its main
|
||||
window and start the usual interactive session with the database resulted
|
||||
from all imports. This database resides under \fB~/.gramps/import\fR directory.
|
||||
from all imports. This database resides in the \fBimport_db.grdb\fR
|
||||
under \fB~/.gramps/import\fR directory.
|
||||
|
||||
.LP
|
||||
The error encountered during import, export, or action, will be either
|
||||
@ -141,7 +225,7 @@ report generators, tools, and display filters to be added without modification
|
||||
of the main program.
|
||||
.LP
|
||||
In addition to generating direct printer output, report generators also
|
||||
target other systems, such as \fIOpenOffice.org\fR, \fIAbiWord\fR, HTML
|
||||
target other systems, such as \fIOpenOffice.org\fR, \fIAbiWord\fR, HTML,
|
||||
or LaTeX to allow the users to modify the format to suit their needs.
|
||||
|
||||
.SH KNOWN BUGS AND LIMITATIONS
|
||||
@ -155,7 +239,7 @@ or LaTeX to allow the users to modify the format to suit their needs.
|
||||
\fI${HOME}/.gramps\fP
|
||||
|
||||
.SH AUTHORS
|
||||
Donald Allingham \fI<dallingham@users.sourceforge.net>\fR
|
||||
Donald Allingham \fI<don@gramps-project.org>\fR
|
||||
.br
|
||||
\fIhttp://gramps.sourceforge.net\fR
|
||||
.LP
|
||||
@ -167,7 +251,7 @@ for inclusion in the Debian GNU/Linux system.
|
||||
.LP
|
||||
This manpage is currently maintained by:
|
||||
.br
|
||||
Alex Roitman \fI<shura@alex.neuro.umn.edu>\fR
|
||||
Alex Roitman \fI<shura@gramps-project.org>\fR
|
||||
.br
|
||||
|
||||
.SH DOCUMENTATION
|
||||
@ -176,5 +260,5 @@ in the form of Gramps Manual. The manual is also available in XML format
|
||||
as \fBgramps-manual.xml\fR under \fIdoc/gramps-manual/$LANG\fR in the official
|
||||
source distribution.
|
||||
.LP
|
||||
The developer documentation can be found in the \fBDocs\fR section
|
||||
of \fIhttp://sourceforge.net/project/gramps\fR site.
|
||||
The developer documentation can be found on the
|
||||
\fIhttp://developers.gramps-project.org\fR site.
|
||||
|
@ -53,8 +53,10 @@ import const
|
||||
import Utils
|
||||
import PeopleModel
|
||||
import Date
|
||||
import DateHandler
|
||||
import Marriage
|
||||
import NameDisplay
|
||||
import GenericFilter
|
||||
from QuestionDialog import ErrorDialog
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@ -81,25 +83,14 @@ class AddSpouse:
|
||||
self.gender = self.person.get_gender()
|
||||
self.active_family = family
|
||||
|
||||
self.filter_func = self.likely_filter
|
||||
self.likely = self.build_likely(self.gender)
|
||||
self.all = self.build_all()
|
||||
self.filter = self.likely
|
||||
|
||||
# determine the gender of the people to be loaded into
|
||||
# the potential spouse list. If Partners is selected, use
|
||||
# the same gender as the current person.
|
||||
|
||||
birth_handle = self.person.get_birth_handle()
|
||||
death_handle = self.person.get_death_handle()
|
||||
|
||||
if birth_handle:
|
||||
self.bday = self.db.get_event_from_handle(birth_handle).get_date_object()
|
||||
else:
|
||||
self.bday = Date.Date()
|
||||
|
||||
if death_handle:
|
||||
self.dday = self.db.get_event_from_handle(death_handle).get_date_object()
|
||||
else:
|
||||
self.dday = Date.Date()
|
||||
|
||||
self.glade = gtk.glade.XML(const.gladeFile, "spouseDialog","gramps")
|
||||
|
||||
self.relation_def = self.glade.get_widget("reldef")
|
||||
@ -111,7 +102,7 @@ class AddSpouse:
|
||||
|
||||
self.renderer = gtk.CellRendererText()
|
||||
|
||||
self.slist = PeopleModel.PeopleModel(self.db)
|
||||
self.slist = PeopleModel.PeopleModel(self.db,self.filter)
|
||||
self.spouse_list.set_model(self.slist)
|
||||
self.selection = self.spouse_list.get_selection()
|
||||
self.selection.connect('changed',self.select_row)
|
||||
@ -127,7 +118,6 @@ class AddSpouse:
|
||||
self.glade.get_widget('title'),title,
|
||||
_('Choose Spouse/Partner'))
|
||||
|
||||
|
||||
self.glade.signal_autoconnect({
|
||||
"on_select_spouse_clicked" : self.select_spouse_clicked,
|
||||
"on_spouse_help_clicked" : self.on_spouse_help_clicked,
|
||||
@ -138,7 +128,34 @@ class AddSpouse:
|
||||
|
||||
self.rel_combo.set_active(RelLib.Family.MARRIED)
|
||||
self.update_data()
|
||||
|
||||
def build_all(self):
|
||||
filt = GenericFilter.GenericFilter()
|
||||
filt.add_rule(GenericFilter.Everyone([]))
|
||||
return filt
|
||||
|
||||
def build_likely(self,gender):
|
||||
birth_handle = self.person.get_birth_handle()
|
||||
death_handle = self.person.get_death_handle()
|
||||
|
||||
filt = GenericFilter.GenericFilter()
|
||||
if gender == RelLib.Person.MALE:
|
||||
filt.add_rule(GenericFilter.IsFemale([]))
|
||||
else:
|
||||
filt.add_rule(GenericFilter.IsMale([]))
|
||||
|
||||
if birth_handle:
|
||||
birth = self.db.get_event_from_handle(birth_handle)
|
||||
date_obj = Date.Date(birth.get_date_object())
|
||||
year = date_obj.get_year()
|
||||
if year:
|
||||
date_obj.set_year(year-50)
|
||||
date_obj.set_modifier(Date.MOD_AFTER)
|
||||
text = DateHandler.displayer.display(date_obj)
|
||||
rule = GenericFilter.HasBirth([text,"",""])
|
||||
filt.add_rule(rule)
|
||||
return filt
|
||||
|
||||
def add_columns(self,tree):
|
||||
column = gtk.TreeViewColumn(_('Name'), self.renderer,text=0)
|
||||
column.set_resizable(True)
|
||||
@ -209,7 +226,7 @@ class AddSpouse:
|
||||
person = epo.person
|
||||
self.update_data(person.get_handle())
|
||||
|
||||
self.slist = PeopleModel.PeopleModel(self.db)
|
||||
self.slist = PeopleModel.PeopleModel(self.db,self.filter)
|
||||
self.slist.rebuild_data()
|
||||
self.spouse_list.set_model(self.slist)
|
||||
|
||||
@ -295,7 +312,6 @@ class AddSpouse:
|
||||
return person.get_gender() != self.sgender
|
||||
|
||||
def likely_filter(self, person):
|
||||
print self.sgender
|
||||
if person.get_gender() == self.sgender:
|
||||
return False
|
||||
|
||||
@ -361,12 +377,12 @@ class AddSpouse:
|
||||
the potential spouse list.
|
||||
"""
|
||||
|
||||
self.slist = PeopleModel.PeopleModel(self.db)
|
||||
self.slist = PeopleModel.PeopleModel(self.db,self.filter)
|
||||
self.spouse_list.set_model(self.slist)
|
||||
|
||||
def on_show_toggled(self,obj):
|
||||
if self.filter_func == self.likely_filter:
|
||||
self.filter_func = self.all_filter
|
||||
if self.filter == self.likely:
|
||||
self.filter = self.all
|
||||
else:
|
||||
self.filter_func = self.likely_filter
|
||||
self.filter = self.likely
|
||||
self.update_data()
|
||||
|
@ -194,7 +194,7 @@ class AddressEditor:
|
||||
|
||||
def on_help_clicked(self,obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
gnome.help_display('gramps-manual','gramps-edit-complete')
|
||||
gnome.help_display('gramps-manual','adv-ad')
|
||||
|
||||
def ok_clicked(self,obj):
|
||||
"""
|
||||
|
@ -198,7 +198,7 @@ class AttributeEditor:
|
||||
|
||||
def on_help_clicked(self,obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
gnome.help_display('gramps-manual','gramps-edit-complete')
|
||||
gnome.help_display('gramps-manual','adv-at')
|
||||
|
||||
def on_ok_clicked(self,obj):
|
||||
"""
|
||||
|
@ -53,7 +53,9 @@ import RelLib
|
||||
import const
|
||||
import Utils
|
||||
import PeopleModel
|
||||
import Date
|
||||
import NameDisplay
|
||||
import DateHandler
|
||||
import GenericFilter
|
||||
from QuestionDialog import ErrorDialog
|
||||
|
||||
@ -89,25 +91,16 @@ class ChooseParents:
|
||||
self.renderer = gtk.CellRendererText()
|
||||
|
||||
# set default filters
|
||||
self.father_filter = GenericFilter.GenericFilter()
|
||||
self.father_filter.add_rule(GenericFilter.IsMale([]))
|
||||
self.all_males_filter = GenericFilter.GenericFilter()
|
||||
self.all_males_filter.add_rule(GenericFilter.IsMale([]))
|
||||
self.likely_males_filter = self.build_likely(True)
|
||||
|
||||
self.mother_filter = GenericFilter.GenericFilter()
|
||||
self.mother_filter.add_rule(GenericFilter.IsFemale([]))
|
||||
self.all_females_filter = GenericFilter.GenericFilter()
|
||||
self.all_females_filter.add_rule(GenericFilter.IsFemale([]))
|
||||
self.likely_females_filter = self.build_likely(False)
|
||||
|
||||
bhandle = self.person.get_birth_handle()
|
||||
birth_event = self.db.get_event_from_handle(bhandle)
|
||||
if birth_event:
|
||||
self.bday = birth_event.get_date_object()
|
||||
else:
|
||||
self.bday = None
|
||||
|
||||
dhandle = self.person.get_death_handle()
|
||||
death_event = self.db.get_event_from_handle(dhandle)
|
||||
if death_event:
|
||||
self.dday = death_event.get_date_object()
|
||||
else:
|
||||
self.dday = None
|
||||
self.father_filter = self.likely_males_filter
|
||||
self.mother_filter = self.likely_females_filter
|
||||
|
||||
if self.family:
|
||||
self.father = self.family.get_father_handle()
|
||||
@ -161,11 +154,13 @@ class ChooseParents:
|
||||
self.redrawm()
|
||||
|
||||
self.glade.signal_autoconnect({
|
||||
"on_add_parent_clicked" : self.add_parent_clicked,
|
||||
"on_prel_changed" : self.parent_relation_changed,
|
||||
"destroy_passed_object" : self.close,
|
||||
"on_save_parents_clicked" : self.save_parents_clicked,
|
||||
"on_help_familyDialog_clicked" : self.on_help_clicked,
|
||||
"on_add_parent_clicked" : self.add_parent_clicked,
|
||||
"on_prel_changed" : self.parent_relation_changed,
|
||||
"destroy_passed_object" : self.close,
|
||||
"on_showallf_toggled" : self.showallf_toggled,
|
||||
"on_showallm_toggled" : self.showallm_toggled,
|
||||
"on_save_parents_clicked" : self.save_parents_clicked,
|
||||
"on_help_familyDialog_clicked" : self.on_help_clicked,
|
||||
"on_familyDialog_delete_event" : self.on_delete_event,
|
||||
})
|
||||
|
||||
@ -175,6 +170,34 @@ class ChooseParents:
|
||||
|
||||
self.window.show()
|
||||
|
||||
def build_likely(self,is_male):
|
||||
birth_handle = self.person.get_birth_handle()
|
||||
|
||||
filt = GenericFilter.GenericFilter()
|
||||
if is_male:
|
||||
filt.add_rule(GenericFilter.IsMale([]))
|
||||
else:
|
||||
filt.add_rule(GenericFilter.IsFemale([]))
|
||||
|
||||
if birth_handle:
|
||||
birth = self.db.get_event_from_handle(birth_handle)
|
||||
date_obj = Date.Date(birth.get_date_object())
|
||||
year = date_obj.get_year()
|
||||
if year:
|
||||
date_obj.set_year(year-10)
|
||||
date_obj.set_modifier(Date.MOD_BEFORE)
|
||||
rule = GenericFilter.HasBirth(
|
||||
[DateHandler.displayer.display(date_obj),"",""])
|
||||
filt.add_rule(rule)
|
||||
|
||||
date_obj = Date.Date(birth.get_date_object())
|
||||
date_obj.set_year(year-60)
|
||||
date_obj.set_modifier(Date.MOD_AFTER)
|
||||
rule = GenericFilter.HasBirth(
|
||||
[DateHandler.displayer.display(date_obj),"",""])
|
||||
filt.add_rule(rule)
|
||||
return filt
|
||||
|
||||
def build_list(self,opt_menu,sel):
|
||||
cell = gtk.CellRendererText()
|
||||
opt_menu.pack_start(cell,True)
|
||||
@ -255,12 +278,6 @@ class ChooseParents:
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
gnome.help_display('gramps-manual','gramps-edit-quick')
|
||||
|
||||
def all_males_filter(self,person):
|
||||
return (person.get_gender() == RelLib.Person.MALE)
|
||||
|
||||
def all_females_filter(self,person):
|
||||
return (person.get_gender() == RelLib.Person.FEMALE)
|
||||
|
||||
def redrawf(self):
|
||||
"""Redraws the potential father list"""
|
||||
self.father_model = PeopleModel.PeopleModel(self.db,self.father_filter)
|
||||
@ -291,17 +308,17 @@ class ChooseParents:
|
||||
self.redrawm()
|
||||
|
||||
def showallf_toggled(self,obj):
|
||||
if self.father_filter == self.likely_father_filter:
|
||||
self.father_filter = self.all_males_filter
|
||||
if self.father_filter == self.likely_males_filter:
|
||||
self.father_filter = self.all_females_filter
|
||||
else:
|
||||
self.father_filter = self.likely_father_filter
|
||||
self.father_filter = self.likely_males_filter
|
||||
self.redrawf()
|
||||
|
||||
def showallm_toggled(self,obj):
|
||||
if self.mother_filter == self.likely_mother_filter:
|
||||
if self.mother_filter == self.likely_females_filter:
|
||||
self.mother_filter = self.all_females_filter
|
||||
else:
|
||||
self.mother_filter = self.likely_mother_filter
|
||||
self.mother_filter = self.likely_females_filter
|
||||
self.redrawm()
|
||||
|
||||
def find_family(self,father_handle,mother_handle,trans):
|
||||
|
@ -99,6 +99,14 @@ class Date:
|
||||
"Persian",
|
||||
"Islamic"]
|
||||
|
||||
|
||||
ui_calendar_names = [_("Gregorian"),
|
||||
_("Julian"),
|
||||
_("Hebrew"),
|
||||
_("French Republican"),
|
||||
_("Persian"),
|
||||
_("Islamic")]
|
||||
|
||||
def __init__(self,source=None):
|
||||
"""
|
||||
Creates a new Date instance.
|
||||
|
@ -193,7 +193,7 @@ class DateEditorDialog:
|
||||
Utils.set_titles(self.top_window,title,_('Date selection'))
|
||||
|
||||
self.calendar_box = self.top.get_widget('calendar_box')
|
||||
for name in Date.Date.calendar_names:
|
||||
for name in Date.Date.ui_calendar_names:
|
||||
self.calendar_box.append_text(name)
|
||||
self.calendar_box.set_active(self.date.get_calendar())
|
||||
self.calendar_box.connect('changed',self.switch_calendar)
|
||||
@ -258,7 +258,7 @@ class DateEditorDialog:
|
||||
response = self.top_window.run()
|
||||
if response == gtk.RESPONSE_HELP:
|
||||
try:
|
||||
gnome.help_display('gramps-manual','index')
|
||||
gnome.help_display('gramps-manual','adv-dates')
|
||||
except gobject.GError, msg:
|
||||
QuestionDialog.ErrorDialog(_("Could not open help"),str(msg))
|
||||
elif response == gtk.RESPONSE_OK:
|
||||
|
@ -313,7 +313,7 @@ class ImportDbPrompter:
|
||||
elif filetype == const.app_gramps_xml:
|
||||
choose.destroy()
|
||||
import ReadXML
|
||||
ReadXML.importData(self.parent.db,filename)
|
||||
ReadXML.importData(self.parent.db,filename,self.parent.update_bar)
|
||||
return True
|
||||
elif filetype == const.app_gedcom:
|
||||
choose.destroy()
|
||||
|
@ -17,6 +17,7 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
# $Id$
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -25,6 +26,7 @@
|
||||
#-------------------------------------------------------------------------
|
||||
import time
|
||||
from gettext import gettext as _
|
||||
import locale
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -44,6 +46,14 @@ import DateHandler
|
||||
|
||||
_GENDER = [ _(u'female'), _(u'male'), _(u'unknown') ]
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Localized constants
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
_date_format = locale.nl_langinfo(locale.D_T_FMT)
|
||||
_codeset = locale.nl_langinfo(locale.CODESET)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# BaseModel
|
||||
@ -281,7 +291,8 @@ class SourceModel(BaseModel):
|
||||
return unicode(data[4])
|
||||
|
||||
def column_change(self,data):
|
||||
return unicode(time.asctime(time.localtime(data[8])))
|
||||
return unicode(time.strftime(_date_format,time.localtime(data[8])),
|
||||
_codeset)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -364,7 +375,8 @@ class PlaceModel(BaseModel):
|
||||
return u''
|
||||
|
||||
def column_change(self,data):
|
||||
return unicode(time.asctime(time.localtime(data[11])))
|
||||
return unicode(time.strftime(_date_format,time.localtime(data[11])),
|
||||
_codeset)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -423,4 +435,5 @@ class MediaModel(BaseModel):
|
||||
return unicode(data[0])
|
||||
|
||||
def column_change(self,data):
|
||||
return unicode(time.asctime(time.localtime(data[8])))
|
||||
return unicode(time.strftime(_date_format,time.localtime(data[8])),
|
||||
_codeset)
|
||||
|
@ -290,7 +290,7 @@ class EditPlace:
|
||||
|
||||
def on_help_clicked(self,obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
gnome.help_display('gramps-manual','gramps-edit-complete')
|
||||
gnome.help_display('gramps-manual','adv-plc')
|
||||
|
||||
def build_columns(self,tree,list):
|
||||
cnum = 0
|
||||
@ -418,10 +418,9 @@ class EditPlace:
|
||||
if node:
|
||||
row = store.get_path(node)
|
||||
url = self.ulist[row[0]]
|
||||
if url:
|
||||
name = _("Internet Address Editor for %s") % self.place.get_title()
|
||||
else:
|
||||
name = _("Internet Address Editor")
|
||||
name = ""
|
||||
if self.place:
|
||||
name = self.place.get_title()
|
||||
UrlEdit.UrlEditor(self,name,url,self.url_edit_callback)
|
||||
|
||||
def on_update_loc_clicked(self,obj):
|
||||
@ -445,10 +444,9 @@ class EditPlace:
|
||||
|
||||
def on_add_url_clicked(self,obj):
|
||||
import UrlEdit
|
||||
name = ""
|
||||
if self.place:
|
||||
name = _("Internet Address Editor for %s") % self.place.get_title()
|
||||
else:
|
||||
name = _("Internet Address Editor")
|
||||
name = self.place.get_title()
|
||||
UrlEdit.UrlEditor(self,name,None,self.url_edit_callback)
|
||||
|
||||
def url_edit_callback(self,url):
|
||||
|
@ -212,7 +212,7 @@ class EditSource:
|
||||
|
||||
def on_help_clicked(self,obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
gnome.help_display('gramps-manual','gramps-edit-complete')
|
||||
gnome.help_display('gramps-manual','adv-src')
|
||||
|
||||
def close(self,obj):
|
||||
self.gallery.close()
|
||||
|
@ -299,7 +299,7 @@ class EventEditor:
|
||||
|
||||
def on_help_clicked(self,obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
gnome.help_display('gramps-manual','gramps-edit-complete')
|
||||
gnome.help_display('gramps-manual','adv-ev')
|
||||
|
||||
def get_place(self,field):
|
||||
text = unicode(field.get_text().strip())
|
||||
|
@ -110,7 +110,7 @@ class FamilyView:
|
||||
db.connect('person-rebuild', self.load_family)
|
||||
|
||||
def update_callback(self,handle):
|
||||
self.load_family()
|
||||
self.load_family(self.family)
|
||||
|
||||
def set_widgets(self,val):
|
||||
already_init = self.cadded[val]
|
||||
@ -584,11 +584,13 @@ class FamilyView:
|
||||
model, node = obj.get_selected()
|
||||
if not node:
|
||||
self.display_marriage(None)
|
||||
self.family = None
|
||||
else:
|
||||
row = model.get_path(node)
|
||||
family_handle = self.person.get_family_handle_list()[row[0]]
|
||||
fam = self.parent.db.get_family_from_handle(family_handle)
|
||||
self.display_marriage(fam)
|
||||
self.family = fam
|
||||
|
||||
def build_spouse_menu(self,event):
|
||||
|
||||
@ -796,7 +798,7 @@ class FamilyView:
|
||||
self.parent.db.commit_person(new_person,trans)
|
||||
self.parent.db.commit_family(family,trans)
|
||||
self.parent.db.transaction_commit(trans,_("Add Child to Family"))
|
||||
self.display_marriage(family)
|
||||
self.load_family(family)
|
||||
|
||||
def select_child_clicked(self,obj):
|
||||
if not self.person:
|
||||
@ -966,6 +968,9 @@ class FamilyView:
|
||||
if self.parent.active_person:
|
||||
handle = self.parent.active_person.get_handle()
|
||||
self.person = self.parent.db.get_person_from_handle(handle)
|
||||
if not self.person:
|
||||
self.clear()
|
||||
return
|
||||
splist = self.person.get_family_handle_list()
|
||||
else:
|
||||
self.person = None
|
||||
|
@ -66,14 +66,16 @@ from Utils import for_each_ancestor,probably_alive,get_source_referents
|
||||
#-------------------------------------------------------------------------
|
||||
def date_cmp(rule,value):
|
||||
sd = rule.get_start_date()
|
||||
s = sd.get_modifier()
|
||||
value = s.get_start_date()
|
||||
s = rule.get_modifier()
|
||||
od = value.get_start_date()
|
||||
cmp_rule = (sd[2],sd[1],sd[0])
|
||||
cmp_value = (od[2],od[1],od[0])
|
||||
if s == Date.MOD_BEFORE:
|
||||
return rule > value
|
||||
return cmp_rule > cmp_value
|
||||
elif s == Date.MOD_AFTER:
|
||||
return rule < value
|
||||
return cmp_rule < cmp_value
|
||||
else:
|
||||
return rule == value
|
||||
return cmp_rule == cmp_value
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -410,10 +412,8 @@ class IsDescendantOf(Rule):
|
||||
except IndexError:
|
||||
first = 1
|
||||
|
||||
if not self.init:
|
||||
self.init = 1
|
||||
root_id = self.list[0]
|
||||
self.init_list(root_id,first)
|
||||
root_id = self.list[0]
|
||||
self.init_list(root_id,first)
|
||||
|
||||
def reset(self):
|
||||
self.map = {}
|
||||
@ -431,6 +431,8 @@ class IsDescendantOf(Rule):
|
||||
return self.map.has_key(p_id)
|
||||
|
||||
def init_list(self,p_id,first):
|
||||
if not p_id:
|
||||
return
|
||||
if not first:
|
||||
self.map[p_id] = 1
|
||||
|
||||
@ -501,6 +503,8 @@ class IsLessThanNthGenerationDescendantOf(Rule):
|
||||
return self.map.has_key(p_id)
|
||||
|
||||
def init_list(self,p_id,gen):
|
||||
if not p_id:
|
||||
return
|
||||
if gen:
|
||||
self.map[p_id] = 1
|
||||
if gen >= int(self.list[1]):
|
||||
@ -546,6 +550,8 @@ class IsMoreThanNthGenerationDescendantOf(Rule):
|
||||
return self.map.has_key(p_id)
|
||||
|
||||
def init_list(self,p_id,gen):
|
||||
if not p_id:
|
||||
return
|
||||
if gen >= int(self.list[1]):
|
||||
self.map[p_id] = 1
|
||||
|
||||
@ -592,6 +598,8 @@ class IsChildOfFilterMatch(Rule):
|
||||
return self.map.has_key(p_id)
|
||||
|
||||
def init_list(self,p_id):
|
||||
if not p_id:
|
||||
return
|
||||
p = self.db.get_person_from_handle(p_id)
|
||||
for fam_id in p.get_family_handle_list():
|
||||
fam = self.db.get_family_from_handle(fam_id)
|
||||
@ -635,6 +643,8 @@ class IsSiblingOfFilterMatch(Rule):
|
||||
return self.map.has_key(p_id)
|
||||
|
||||
def init_list(self,p_id):
|
||||
if not p_id:
|
||||
return
|
||||
p = self.db.get_person_from_handle(p_id)
|
||||
fam_id = p.get_main_parents_family_handle()
|
||||
fam = self.db.get_family_from_handle(fam_id)
|
||||
@ -733,6 +743,8 @@ class IsAncestorOf(Rule):
|
||||
return self.map.has_key(p_id)
|
||||
|
||||
def init_ancestor_list(self,db,p_id,first):
|
||||
if not p_id:
|
||||
return
|
||||
if not first:
|
||||
self.map[p_id] = 1
|
||||
|
||||
@ -763,6 +775,8 @@ class IsAncestorOfFilterMatch(IsAncestorOf):
|
||||
IsAncestorOf.__init__(self,list)
|
||||
|
||||
def prepare(self,db):
|
||||
self.db = db
|
||||
self.map = {}
|
||||
try:
|
||||
if int(self.list[1]):
|
||||
first = 0
|
||||
@ -771,7 +785,6 @@ class IsAncestorOfFilterMatch(IsAncestorOf):
|
||||
except IndexError:
|
||||
first = 1
|
||||
|
||||
self.init = 1
|
||||
filt = MatchesFilter(self.list)
|
||||
filt.prepare(db)
|
||||
for person_handle in db.get_person_handles(sort_handles=False):
|
||||
@ -779,6 +792,9 @@ class IsAncestorOfFilterMatch(IsAncestorOf):
|
||||
self.init_ancestor_list (db,person_handle,first)
|
||||
filt.reset()
|
||||
|
||||
def reset(self):
|
||||
self.map = {}
|
||||
|
||||
def name(self):
|
||||
return 'Is an ancestor of filter match'
|
||||
|
||||
@ -806,7 +822,8 @@ class IsLessThanNthGenerationAncestorOf(Rule):
|
||||
def prepare(self,db):
|
||||
self.db = db
|
||||
self.map = {}
|
||||
self.build_witness_list()
|
||||
root_id = self.list[0]
|
||||
self.init_ancestor_list(root_id,0)
|
||||
|
||||
def reset(self):
|
||||
self.map = {}
|
||||
@ -822,17 +839,13 @@ class IsLessThanNthGenerationAncestorOf(Rule):
|
||||
return _("Ancestral filters")
|
||||
|
||||
def apply(self,db,p_id):
|
||||
self.orig_id = p_id
|
||||
self.db = db
|
||||
if not self.init:
|
||||
self.init = 1
|
||||
root_id = self.list[0]
|
||||
self.init_ancestor_list(root_id,0)
|
||||
return self.map.has_key(p_id)
|
||||
|
||||
def init_ancestor_list(self,p_id,gen):
|
||||
# if self.map.has_key(p.get_handle()) == 1:
|
||||
# loop_error(self.orig,p)
|
||||
if not p_id:
|
||||
return
|
||||
if gen:
|
||||
self.map[p_id] = 1
|
||||
if gen >= int(self.list[1]):
|
||||
@ -886,6 +899,8 @@ class IsMoreThanNthGenerationAncestorOf(Rule):
|
||||
def init_ancestor_list(self,p_id,gen):
|
||||
# if self.map.has_key(p.get_handle()) == 1:
|
||||
# loop_error(self.orig,p)
|
||||
if not p_id:
|
||||
return
|
||||
if gen >= int(self.list[1]):
|
||||
self.map[p_id] = 1
|
||||
|
||||
@ -1243,21 +1258,21 @@ class HasBirth(Rule):
|
||||
p = db.get_person_from_handle(p_id)
|
||||
event_handle = p.get_birth_handle()
|
||||
if not event_handle:
|
||||
return 0
|
||||
return False
|
||||
event = db.get_event_from_handle(event_handle)
|
||||
ed = event.get_description().upper()
|
||||
if len(self.list) > 2 and ed.find(self.list[2].upper())==-1:
|
||||
return 0
|
||||
return False
|
||||
if self.date:
|
||||
if date_cmp(self.date,event.get_date_object()) == 0:
|
||||
return 0
|
||||
return False
|
||||
pl_id = event.get_place_handle()
|
||||
if pl_id:
|
||||
pl = db.get_place_from_handle(pl_id)
|
||||
pn = pl.get_title()
|
||||
if len(self.list) > 1 and pn.find(self.list[1].upper()) == -1:
|
||||
return 0
|
||||
return 1
|
||||
return False
|
||||
return True
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -1599,7 +1614,7 @@ class HaveChildren(Rule):
|
||||
|
||||
def apply(self,db,p_id):
|
||||
p = db.get_person_from_handle(p_id)
|
||||
for (family_handle,rel1,rel2) in p.get_parent_family_handle_list():
|
||||
for family_handle in p.get_family_handle_list():
|
||||
family = db.get_family_from_handle(family_handle)
|
||||
return len(family.get_child_handle_list()) > 0
|
||||
|
||||
|
@ -112,7 +112,7 @@ class GrampsBSDDB(GrampsDbBase):
|
||||
return GrampsBSDDBCursor(self.media_map)
|
||||
|
||||
def need_upgrade(self):
|
||||
return self.metadata['version'] < _DBVERSION
|
||||
return not self.readonly and self.metadata.get('version',0) < _DBVERSION
|
||||
|
||||
def load(self,name,callback,mode="w"):
|
||||
if self.person_map:
|
||||
@ -190,10 +190,11 @@ class GrampsBSDDB(GrampsDbBase):
|
||||
|
||||
gstats = self.metadata.get('gender_stats')
|
||||
|
||||
if not self.readonly and gstats == None:
|
||||
self.metadata['version'] = _DBVERSION
|
||||
elif not self.metadata.has_key('version'):
|
||||
self.metadata['version'] = 0
|
||||
if not self.readonly:
|
||||
if gstats == None:
|
||||
self.metadata['version'] = _DBVERSION
|
||||
elif not self.metadata.has_key('version'):
|
||||
self.metadata['version'] = 0
|
||||
|
||||
if self.bookmarks == None:
|
||||
self.bookmarks = []
|
||||
@ -207,7 +208,7 @@ class GrampsBSDDB(GrampsDbBase):
|
||||
self.close()
|
||||
|
||||
def close(self):
|
||||
if not self.person_map:
|
||||
if self.person_map == None:
|
||||
return
|
||||
self.name_group.close()
|
||||
self.person_map.close()
|
||||
@ -356,7 +357,7 @@ class GrampsBSDDB(GrampsDbBase):
|
||||
"None", "Birth", "Adopted", "Stepchild",
|
||||
"Sponsored", "Foster", "Unknown", "Other", ]
|
||||
|
||||
version = self.metadata['version']
|
||||
version = self.metadata.get('version',0)
|
||||
if version < 2:
|
||||
self.upgrade_2(child_rel_notrans)
|
||||
if version < 3:
|
||||
|
@ -164,6 +164,12 @@ def get_betawarn():
|
||||
def save_betawarn(val):
|
||||
set_bool("/apps/gramps/behavior/betawarn",val)
|
||||
|
||||
def get_welcome():
|
||||
return get_int("/apps/gramps/behavior/welcome")
|
||||
|
||||
def save_welcome(val):
|
||||
set_int("/apps/gramps/behavior/welcome",val)
|
||||
|
||||
def get_media_reference():
|
||||
return get_bool("/apps/gramps/behavior/make-reference")
|
||||
|
||||
|
@ -35,6 +35,7 @@ NL = "\n" # FIX: newlines on Mac/Windows, if different?
|
||||
_ini_schema = {
|
||||
'behavior/autoload' : '0',
|
||||
'behavior/betawarn' : '0',
|
||||
'behavior/welcome' : '100',
|
||||
'preferences/date-format' : '0',
|
||||
'preferences/dont-ask' : '0',
|
||||
'interface/defaultview' : '0',
|
||||
@ -312,6 +313,12 @@ def get_betawarn():
|
||||
def save_betawarn(val):
|
||||
set_bool("behavior", "betawarn",val)
|
||||
|
||||
def get_welcome():
|
||||
return get_bool("behavior", "welcome")
|
||||
|
||||
def save_welcome(val):
|
||||
set_bool("behavior", "welcome",val)
|
||||
|
||||
def get_media_reference():
|
||||
return get_bool("behavior", "make-reference")
|
||||
|
||||
@ -589,6 +596,8 @@ if __name__ == "__main__":
|
||||
save_autoload(val)
|
||||
print "get_betawarn()", get_betawarn()
|
||||
save_betawarn(val)
|
||||
print "get_welcome()", get_welcome()
|
||||
save_welcome(val)
|
||||
print "get_media_reference()", get_media_reference()
|
||||
save_media_reference(val)
|
||||
print "get_media_global()", get_media_global()
|
||||
|
@ -48,7 +48,7 @@ class GrampsXMLDB(GrampsInMemDB):
|
||||
GrampsInMemDB.load(self,name,callback,mode)
|
||||
self.id_trans = {}
|
||||
|
||||
ReadXML.importData(self,name,use_trans=False)
|
||||
ReadXML.importData(self,name,callback,use_trans=False)
|
||||
|
||||
self.bookmarks = self.metadata.get('bookmarks')
|
||||
if self.bookmarks == None:
|
||||
|
@ -906,19 +906,6 @@ class GlobalMediaProperties:
|
||||
self.date_entry = self.change_dialog.get_widget('date')
|
||||
self.date_entry.set_editable(mode)
|
||||
|
||||
self.pdmap = {}
|
||||
self.add_places = []
|
||||
for key in self.db.get_place_handles():
|
||||
p = db.get_place_from_handle(key).get_display_info()
|
||||
self.pdmap[p[0]] = key
|
||||
|
||||
self.place = self.change_dialog.get_widget('place')
|
||||
self.place.set_editable(mode)
|
||||
|
||||
self.place_list = self.pdmap.keys()
|
||||
self.place_list.sort()
|
||||
build_dropdown(self.place,self.place_list)
|
||||
|
||||
if self.obj:
|
||||
self.date_entry.set_text(self.dd.display(self.date_object))
|
||||
|
||||
@ -1183,10 +1170,6 @@ class GlobalMediaProperties:
|
||||
if not self.date_object.is_equal(self.obj.get_date_object()):
|
||||
self.obj.set_date_object(self.date_object)
|
||||
|
||||
p = self.get_place(self.place)
|
||||
if p:
|
||||
self.obj.set_place_handle(p)
|
||||
|
||||
format = self.preform.get_active()
|
||||
if text != note or desc != self.obj.get_description():
|
||||
self.obj.set_note(text)
|
||||
@ -1202,7 +1185,7 @@ class GlobalMediaProperties:
|
||||
|
||||
def on_help_clicked(self, obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
gnome.help_display('gramps-manual','gramps-edit-complete')
|
||||
gnome.help_display('gramps-manual','adv-media')
|
||||
|
||||
def on_ok_clicked(self, obj):
|
||||
self.on_apply_clicked(obj)
|
||||
|
@ -373,7 +373,7 @@ class Marriage:
|
||||
|
||||
def on_help_clicked(self,obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
gnome.help_display('gramps-manual','gramps-edit-complete')
|
||||
gnome.help_display('gramps-manual','adv-rel')
|
||||
|
||||
def ev_drag_begin(self, context, a):
|
||||
return
|
||||
|
@ -33,6 +33,7 @@ from gettext import gettext as _
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import gtk
|
||||
from gnome import help_display
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -73,9 +74,14 @@ class MergePlaces:
|
||||
self.glade.signal_autoconnect({
|
||||
"destroy_passed_object" : Utils.destroy_passed_object,
|
||||
"on_merge_places_clicked" : self.on_merge_places_clicked,
|
||||
"on_help_places_clicked" : self.help,
|
||||
})
|
||||
self.top.show()
|
||||
|
||||
def help(self,obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
help_display('gramps-manual','adv-merge-places')
|
||||
|
||||
def on_merge_places_clicked(self,obj):
|
||||
"""
|
||||
Performs the merge of the places when the merge button is clicked.
|
||||
@ -175,6 +181,8 @@ class MergeSources:
|
||||
|
||||
self.glade = gtk.glade.XML(const.mergeFile,"merge_sources","gramps")
|
||||
self.top = self.glade.get_widget("merge_sources")
|
||||
Utils.set_titles(self.top,self.glade.get_widget('title'),
|
||||
_("Merge Sources"))
|
||||
|
||||
self.title1 = self.glade.get_widget("title1")
|
||||
self.title2 = self.glade.get_widget("title2")
|
||||
@ -203,12 +211,17 @@ class MergeSources:
|
||||
|
||||
self.glade.get_widget('ok').connect('clicked',self.merge)
|
||||
self.glade.get_widget('cancel').connect('clicked',self.close)
|
||||
self.glade.get_widget('help').connect('clicked',self.help)
|
||||
self.trans = self.db.transaction_begin()
|
||||
self.top.show()
|
||||
|
||||
def close(self,obj):
|
||||
self.top.destroy()
|
||||
|
||||
def help(self,obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
help_display('gramps-manual','adv-merge-sources')
|
||||
|
||||
def merge(self,obj):
|
||||
"""
|
||||
Performs the merge of the sources when the merge button is clicked.
|
||||
|
@ -27,6 +27,15 @@
|
||||
#-------------------------------------------------------------------------
|
||||
from gettext import gettext as _
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# GTK/Gnome modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import gtk
|
||||
import pango
|
||||
from gnome import help_display
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# GRAMPS modules
|
||||
@ -37,8 +46,6 @@ import ReportUtils
|
||||
import Utils
|
||||
import NameDisplay
|
||||
import const
|
||||
import gtk
|
||||
import pango
|
||||
|
||||
sex = ( _("female"), _("male"), _("unknown"))
|
||||
|
||||
@ -62,10 +69,15 @@ class Compare:
|
||||
|
||||
self.glade.get_widget('cancel').connect('clicked',self.cancel)
|
||||
self.glade.get_widget('close').connect('clicked',self.merge)
|
||||
self.glade.get_widget('help').connect('clicked',self.help)
|
||||
|
||||
def cancel(self,obj):
|
||||
self.top.destroy()
|
||||
|
||||
def help(self,obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
help_display('gramps-manual','adv-merge-people')
|
||||
|
||||
def merge(self,obj):
|
||||
if self.glade.get_widget('select1').get_active():
|
||||
merge = MergePeople(self.db,self.p1,self.p2)
|
||||
@ -219,8 +231,11 @@ class MergePeopleUI:
|
||||
p1.set_label(n1)
|
||||
p2.set_label(n2)
|
||||
Utils.set_titles(top,glade.get_widget('title'),_("Merge People"))
|
||||
glade.get_widget('help').connect('clicked',self.help)
|
||||
|
||||
ret = top.run()
|
||||
ret = gtk.RESPONSE_HELP
|
||||
while ret == gtk.RESPONSE_HELP:
|
||||
ret = top.run()
|
||||
|
||||
if ret == gtk.RESPONSE_OK:
|
||||
if p1.get_active():
|
||||
@ -231,6 +246,11 @@ class MergePeopleUI:
|
||||
update()
|
||||
top.destroy()
|
||||
|
||||
def help(self,obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
help_display('gramps-manual','adv-merge-people')
|
||||
|
||||
|
||||
def name_of(p):
|
||||
if not p:
|
||||
return ""
|
||||
|
@ -245,7 +245,7 @@ class NameEditor:
|
||||
|
||||
def on_help_clicked(self,*obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
gnome.help_display('gramps-manual','gramps-edit-complete')
|
||||
gnome.help_display('gramps-manual','adv-an')
|
||||
|
||||
def on_name_edit_ok_clicked(self,obj):
|
||||
first = unicode(self.given_field.get_text())
|
||||
|
@ -761,3 +761,59 @@ def find_parents(db,p):
|
||||
if mother_handle not in parentlist:
|
||||
parentlist.append(mother_handle)
|
||||
return parentlist
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Functions to build the text displayed in the details view of a DispBox
|
||||
# aditionally used by PedigreeView to get the largest area covered by a DispBox
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
def build_detail_string(db,person):
|
||||
|
||||
detail_text = NameDisplay.displayer.display(person)
|
||||
|
||||
def format_event(db, label, event):
|
||||
if not event:
|
||||
return u""
|
||||
ed = event.get_date()
|
||||
ep = None
|
||||
place_handle = event.get_place_handle()
|
||||
if place_handle:
|
||||
place_title = db.get_place_from_handle(place_handle).get_title()
|
||||
if place_title != "":
|
||||
if len(place_title) > 15:
|
||||
ep = place_title[:14]+"..."
|
||||
else:
|
||||
ep = place_title
|
||||
if ep:
|
||||
return u"\n%s %s, %s" % (label,ed,ep)
|
||||
return u"\n%s %s" % (label,ed)
|
||||
|
||||
|
||||
birth_handle = person.get_birth_handle()
|
||||
if birth_handle:
|
||||
detail_text += format_event(db, _BORN, db.get_event_from_handle(birth_handle))
|
||||
else:
|
||||
for event_handle in person.get_event_list():
|
||||
event = db.get_event_from_handle(event_handle)
|
||||
if event and event.get_name() == "Baptism":
|
||||
detail_text += format_event(db, _BAPT, event)
|
||||
break
|
||||
if event and event.get_name() == "Christening":
|
||||
detail_text += format_event(db, _CHRI, event)
|
||||
break
|
||||
|
||||
death_handle = person.get_death_handle()
|
||||
if death_handle:
|
||||
detail_text += format_event(db, _DIED, db.get_event_from_handle(death_handle))
|
||||
else:
|
||||
for event_handle in person.get_event_list():
|
||||
event = db.get_event_from_handle(event_handle)
|
||||
if event and event.get_name() == "Burial":
|
||||
detail_text += format_event(db, _BURI, event)
|
||||
break
|
||||
if event and event.get_name() == "Cremation":
|
||||
detail_text += format_event(db, _CREM, event)
|
||||
break
|
||||
|
||||
return detail_text
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2000-2004 Donald N. Allingham
|
||||
# Copyright (C) 2000-2005 Donald N. Allingham
|
||||
#
|
||||
# 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
|
||||
@ -47,6 +47,14 @@ import pango
|
||||
from RelLib import *
|
||||
import NameDisplay
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Localized constants
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
_date_format = locale.nl_langinfo(locale.D_T_FMT)
|
||||
_codeset = locale.nl_langinfo(locale.CODESET)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# constants
|
||||
@ -280,7 +288,9 @@ class PeopleModel(gtk.GenericTreeModel):
|
||||
return data[_ID_COL]
|
||||
|
||||
def column_change(self,data,node):
|
||||
return time.asctime(time.localtime(data[_CHANGE_COL]))
|
||||
return unicode(time.strftime(_date_format,
|
||||
time.localtime(data[_CHANGE_COL])),
|
||||
_codeset)
|
||||
|
||||
def column_gender(self,data,node):
|
||||
return _GENDER[data[_GENDER_COL]]
|
||||
|
@ -71,6 +71,7 @@ class SourceView:
|
||||
self.list = glade.get_widget("source_list")
|
||||
#self.list.set_property('fixed-height-mode',True)
|
||||
self.list.connect('button-press-event',self.button_press)
|
||||
self.list.connect('key-press-event',self.key_press)
|
||||
self.selection = self.list.get_selection()
|
||||
self.selection.set_mode(gtk.SELECTION_MULTIPLE)
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2000-2004 Donald N. Allingham
|
||||
# Copyright (C) 2000-2005 Donald N. Allingham
|
||||
#
|
||||
# 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
|
||||
@ -20,23 +20,103 @@
|
||||
|
||||
# $Id$
|
||||
|
||||
import const
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Standard python modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from gettext import gettext as _
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# GTK+/GNOME modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import gtk
|
||||
import gtk.glade
|
||||
import gnome
|
||||
import gnome.ui
|
||||
|
||||
import const
|
||||
|
||||
if not const.no_gconf:
|
||||
try:
|
||||
import gconf
|
||||
except ImportError:
|
||||
import gnome.gconf
|
||||
gconf = gnome.gconf
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import const
|
||||
import GrampsKeys
|
||||
from QuestionDialog import ErrorDialog
|
||||
|
||||
from gettext import gettext as _
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
if not const.no_gconf:
|
||||
client = gconf.client_get_default()
|
||||
client.add_dir("/apps/gramps",gconf.CLIENT_PRELOAD_NONE)
|
||||
|
||||
def need_to_run():
|
||||
val = GrampsKeys.get_startup()
|
||||
if val < const.startup:
|
||||
return 1
|
||||
return 0
|
||||
return True
|
||||
return False
|
||||
|
||||
def upgrade_prefs():
|
||||
"""
|
||||
Get the preferences from the older keys, store them in the new keys.
|
||||
On success, print message and return True.
|
||||
On failure, print message and return False.
|
||||
"""
|
||||
try:
|
||||
GrampsKeys.save_fprefix(client.get_string('/apps/gramps/fprefix'))
|
||||
GrampsKeys.save_sprefix(client.get_string('/apps/gramps/sprefix'))
|
||||
GrampsKeys.save_pprefix(client.get_string('/apps/gramps/pprefix'))
|
||||
GrampsKeys.save_oprefix(client.get_string('/apps/gramps/oprefix'))
|
||||
GrampsKeys.save_iprefix(client.get_string('/apps/gramps/iprefix'))
|
||||
|
||||
GrampsKeys.save_researcher_country(client.get_string('/apps/gramps/researcher-country'))
|
||||
GrampsKeys.save_researcher_email(client.get_string('/apps/gramps/researcher-email'))
|
||||
GrampsKeys.save_researcher_phone(client.get_string('/apps/gramps/researcher-phone'))
|
||||
GrampsKeys.save_researcher_city(client.get_string('/apps/gramps/researcher-city'))
|
||||
GrampsKeys.save_researcher_postal(client.get_string('/apps/gramps/researcher-postal'))
|
||||
GrampsKeys.save_researcher_addr(client.get_string('/apps/gramps/researcher-addr'))
|
||||
GrampsKeys.save_researcher_state(client.get_string('/apps/gramps/researcher-state'))
|
||||
GrampsKeys.save_researcher_name(client.get_string('/apps/gramps/researcher-name'))
|
||||
|
||||
GrampsKeys.save_family_view(client.get_int('/apps/gramps/familyview'))
|
||||
GrampsKeys.save_default_view(client.get_int('/apps/gramps/defaultview'))
|
||||
GrampsKeys.save_autoload(client.get_bool('/apps/gramps/autoload'))
|
||||
GrampsKeys.save_uselds(client.get_bool('/apps/gramps/use-lds'))
|
||||
GrampsKeys.save_statusbar(client.get_int('/apps/gramps/statusbar'))
|
||||
GrampsKeys.save_view(not client.get_bool('/apps/gramps/view'))
|
||||
GrampsKeys.save_screen_size_checked(client.get_bool('/apps/gramps/screen-size-checked'))
|
||||
GrampsKeys.save_lastnamegen(client.get_int('/apps/gramps/surname-guessing'))
|
||||
toolbar = client.get_int('/apps/gramps/toolbar')
|
||||
if toolbar == 5:
|
||||
toolbar = -1
|
||||
GrampsKeys.save_toolbar(toolbar)
|
||||
GrampsKeys.save_toolbar_on(client.get_bool('/apps/gramps/toolbar-on'))
|
||||
print "Successfully imported preferences from the 1.0.x version."
|
||||
return True
|
||||
except:
|
||||
print "Failed to import preferences from the 1.0.x version."
|
||||
return False
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class StartupDialog:
|
||||
|
||||
def __init__(self,task,args):
|
||||
@ -44,13 +124,32 @@ class StartupDialog:
|
||||
self.task = task
|
||||
self.args = args
|
||||
|
||||
if not const.no_gconf and upgrade_prefs():
|
||||
GrampsKeys.save_startup(const.startup)
|
||||
self.close(None)
|
||||
return
|
||||
self.w = gtk.Window()
|
||||
self.fg_color = gtk.gdk.color_parse('#7d684a')
|
||||
self.bg_color = gtk.gdk.color_parse('#e1dbc5')
|
||||
self.logo = gtk.gdk.pixbuf_new_from_file("%s/gramps.png" % const.rootDir)
|
||||
self.splash = gtk.gdk.pixbuf_new_from_file("%s/splash.jpg" % const.rootDir)
|
||||
|
||||
d = gnome.ui.Druid()
|
||||
try:
|
||||
d = gnome.ui.Druid()
|
||||
except AttributeError:
|
||||
ErrorDialog(_("Broken GNOME libraries"),
|
||||
_("GRAMPS has detected an incomplete gnome-python "
|
||||
"library, which is required by GRAMPS. This is "
|
||||
"frequently seen on Slackware systems, due to the "
|
||||
"lack of support for GNOME in the Slackware "
|
||||
"environment. If you are running Slackware, this "
|
||||
"problem can be resolved by installing Dropline "
|
||||
"GNOME (http://www.dropline.net/gnome/). If you "
|
||||
"are running another distribution, please check "
|
||||
"your GNOME configuration."))
|
||||
gtk.main_quit()
|
||||
|
||||
|
||||
self.w.add(d)
|
||||
try:
|
||||
d.add(self.build_page1())
|
||||
@ -153,6 +252,7 @@ class StartupDialog:
|
||||
box.add(table)
|
||||
box.show_all()
|
||||
|
||||
|
||||
name = GrampsKeys.get_researcher_name()
|
||||
if not name or name.strip() == "":
|
||||
import pwd
|
||||
@ -164,14 +264,26 @@ class StartupDialog:
|
||||
name = ""
|
||||
|
||||
self.name.set_text(name)
|
||||
self.addr.set_text(GrampsKeys.get_researcher_addr())
|
||||
self.city.set_text(GrampsKeys.get_researcher_city())
|
||||
self.state.set_text(GrampsKeys.get_researcher_state())
|
||||
self.postal.set_text(GrampsKeys.get_researcher_postal())
|
||||
self.country.set_text(GrampsKeys.get_researcher_country())
|
||||
self.phone.set_text(GrampsKeys.get_researcher_phone())
|
||||
self.email.set_text(GrampsKeys.get_researcher_email())
|
||||
|
||||
try:
|
||||
self.addr.set_text(GrampsKeys.get_researcher_addr())
|
||||
self.city.set_text(GrampsKeys.get_researcher_city())
|
||||
self.state.set_text(GrampsKeys.get_researcher_state())
|
||||
self.postal.set_text(GrampsKeys.get_researcher_postal())
|
||||
self.country.set_text(GrampsKeys.get_researcher_country())
|
||||
self.phone.set_text(GrampsKeys.get_researcher_phone())
|
||||
self.email.set_text(GrampsKeys.get_researcher_email())
|
||||
except:
|
||||
ErrorDialog(_("Configuration/Installation error"),
|
||||
_("The gconf schemas were not found. First, try "
|
||||
"executing 'pkill gconfd' and try starting gramps "
|
||||
"again. If this does not help then the schemas "
|
||||
"were not properly installed. If you have not "
|
||||
"done 'make install' or if you installed without "
|
||||
"being a root, this is most likely a cause of the "
|
||||
"problem. Please read the INSTALL file in the "
|
||||
"top-level source directory."))
|
||||
gtk.main_quit()
|
||||
return p
|
||||
|
||||
def build_page5(self):
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2000-2004 Donald N. Allingham
|
||||
# Copyright (C) 2000-2005 Donald N. Allingham
|
||||
#
|
||||
# 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
|
||||
@ -20,6 +20,13 @@
|
||||
|
||||
# $Id$
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# python modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from gettext import gettext as _
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# GTK/Gnome modules
|
||||
@ -36,7 +43,6 @@ import gnome
|
||||
import const
|
||||
import Utils
|
||||
import RelLib
|
||||
from gettext import gettext as _
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -64,7 +70,7 @@ class UrlEditor:
|
||||
self.priv = self.top.get_widget("priv")
|
||||
title_label = self.top.get_widget("title")
|
||||
|
||||
if name == ", ":
|
||||
if not name or name == ", ":
|
||||
etitle =_('Internet Address Editor')
|
||||
else:
|
||||
etitle =_('Internet Address Editor for %s') % name,
|
||||
|
@ -209,7 +209,7 @@ class WitnessEditor:
|
||||
|
||||
def on_help_clicked(self,obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
gnome.help_display('gramps-manual','gramps-edit-complete')
|
||||
gnome.help_display('gramps-manual','adv-wit')
|
||||
|
||||
def choose(self,obj):
|
||||
import SelectPerson
|
||||
|
@ -827,9 +827,10 @@ class GedcomWriter:
|
||||
self.writeln('1 ADOP')
|
||||
fam = None
|
||||
for f in person.get_parent_family_handle_list():
|
||||
mrel = f[1].lower()
|
||||
frel = f[2].lower()
|
||||
if mrel=="adopted" or frel=="adopted":
|
||||
mrel = f[1]
|
||||
frel = f[2]
|
||||
if (mrel == RelLib.Person.CHILD_REL_ADOPT or
|
||||
frel == RelLib.Person.CHILD_REL_ADOPT):
|
||||
fam = f[0]
|
||||
break
|
||||
if fam:
|
||||
@ -853,9 +854,10 @@ class GedcomWriter:
|
||||
self.writeln('1 ADOP')
|
||||
fam = None
|
||||
for f in person.get_parent_family_handle_list():
|
||||
mrel = f[1].lower()
|
||||
frel = f[2].lower()
|
||||
if mrel=="adopted" or frel=="adopted":
|
||||
mrel = f[1]
|
||||
frel = f[2]
|
||||
if (mrel == RelLib.Person.CHILD_REL_ADOPT or
|
||||
frel == RelLib.Person.CHILD_REL_ADOPT):
|
||||
fam = f[0]
|
||||
break
|
||||
if fam:
|
||||
@ -957,7 +959,7 @@ class GedcomWriter:
|
||||
if self.flist.has_key(family[0]):
|
||||
self.writeln("1 FAMC @%s@" % self.fid(family[0]))
|
||||
if self.adopt == GedcomInfo.ADOPT_PEDI:
|
||||
if family[1].lower() == "adopted":
|
||||
if family[1] == RelLib.Person.CHILD_REL_ADOPT:
|
||||
self.writeln("2 PEDI Adopted")
|
||||
|
||||
for family_handle in person.get_family_handle_list():
|
||||
|
@ -477,15 +477,13 @@ class XmlWriter:
|
||||
sp = " "*index
|
||||
com = self.fix(w.get_comment())
|
||||
if w.get_type() == RelLib.Event.ID:
|
||||
self.g.write('%s<witness>\n' % sp)
|
||||
self.g.write(' %s<hlink>%s</hlink>\n' % (sp,w.get_value()))
|
||||
self.g.write('%s<witness hlink="%s">\n' % (sp,w.get_value()))
|
||||
if com:
|
||||
self.g.write(' %s<comment>%s</comment>\n' % (sp,com))
|
||||
self.g.write('%s</witness>\n' % sp)
|
||||
else:
|
||||
nm = self.fix(w.get_value())
|
||||
self.g.write('%s<witness>\n' % sp)
|
||||
self.g.write(' %s<name>%s</name>\n' % (sp,nm))
|
||||
self.g.write('%s<witness name="%s">\n' % (sp,nm))
|
||||
if com:
|
||||
self.g.write(' %s<comment>%s</comment>\n' % (sp,com))
|
||||
self.g.write('%s</witness>\n' % sp)
|
||||
|
@ -21,26 +21,50 @@ EXTRA_DIST = \
|
||||
gramps.mime \
|
||||
gramps.schemas
|
||||
|
||||
install-schemas:
|
||||
$(INSTALL) -d $(DESTDIR)$(GCONF_SCHEMA_FILE_DIR)
|
||||
$(INSTALL_DATA) $(top_srcdir)/src/data/gramps.schemas $(DESTDIR)$(GCONF_SCHEMA_FILE_DIR)
|
||||
-GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) \
|
||||
gconftool-2 --makefile-install-rule $(top_srcdir)/src/data/gramps.schemas
|
||||
-pkill gconfd
|
||||
# Conditionally enable/disable gconf schemas or mime types,
|
||||
# or disable both in a packager mode
|
||||
GCONF_SCHEMAS_INSTALLATION =
|
||||
GCONF_SCHEMAS_UNINSTALLATION =
|
||||
SHARED_MIME_INSTALLATION =
|
||||
SHARED_MIME_UNINSTALLATION =
|
||||
|
||||
install-data-local: install-schemas
|
||||
if !PACKAGER_MODE
|
||||
if GCONF_SCHEMAS_INSTALL
|
||||
GCONF_SCHEMAS_INSTALLATION += \
|
||||
$(INSTALL) -d $(DESTDIR)$(GCONF_SCHEMA_FILE_DIR) ;\
|
||||
$(INSTALL_DATA) $(top_srcdir)/src/data/gramps.schemas $(DESTDIR)$(GCONF_SCHEMA_FILE_DIR) ;\
|
||||
GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) \
|
||||
gconftool-2 --makefile-install-rule $(top_srcdir)/src/data/gramps.schemas ;\
|
||||
pkill gconfd ; echo Restarting gconfd
|
||||
|
||||
GCONF_SCHEMAS_UNINSTALLATION += \
|
||||
rm $(DESTDIR)$(GCONF_SCHEMA_FILE_DIR)/gramps.schemas ;\
|
||||
GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) \
|
||||
gconftool-2 --makefile-uninstall-rule $(top_srcdir)/src/data/gramps.schemas
|
||||
endif
|
||||
if SHARED_MIME_INSTALL
|
||||
SHARED_MIME_INSTALLATION += \
|
||||
$(INSTALL) -d $(DESTDIR)$(SHARED_MIME_DIR)/packages ;\
|
||||
$(INSTALL_DATA) $(top_srcdir)/src/data/gramps.xml $(DESTDIR)$(SHARED_MIME_DIR)/packages ;\
|
||||
update-mime-database $(DESTDIR)$(SHARED_MIME_DIR)
|
||||
SHARED_MIME_UNINSTALLATION += \
|
||||
rm $(DESTDIR)$(SHARED_MIME_DIR)/packages/gramps.xml ;\
|
||||
update-mime-database $(DESTDIR)$(SHARED_MIME_DIR)
|
||||
endif
|
||||
endif
|
||||
|
||||
install-data-local:
|
||||
$(INSTALL) -d $(DESTDIR)$(prefix)/share/applications
|
||||
$(INSTALL_DATA) $(top_srcdir)/src/data/gramps.desktop $(DESTDIR)$(prefix)/share/applications
|
||||
$(INSTALL) -d $(DESTDIR)$(prefix)/share/icons/gnome/48x48/mimetypes/
|
||||
$(INSTALL_DATA) $(top_srcdir)/src/data/gnome-mime-application-x-*.png $(DESTDIR)$(prefix)/share/icons/gnome/48x48/mimetypes/
|
||||
$(INSTALL) -d $(DESTDIR)$(prefix)/share/application-registry
|
||||
$(INSTALL_DATA) $(top_srcdir)/src/data/gramps.applications $(DESTDIR)$(prefix)/share/application-registry
|
||||
$(INSTALL) -d $(DESTDIR)$(SHARED_MIME_DIR)/packages
|
||||
$(INSTALL_DATA) $(top_srcdir)/src/data/gramps.xml $(DESTDIR)$(SHARED_MIME_DIR)/packages
|
||||
$(INSTALL) -d $(DESTDIR)$(prefix)/share/mime-info
|
||||
$(INSTALL_DATA) $(top_srcdir)/src/data/gramps.keys $(DESTDIR)$(prefix)/share/mime-info
|
||||
$(INSTALL_DATA) $(top_srcdir)/src/data/gramps.mime $(DESTDIR)$(prefix)/share/mime-info
|
||||
update-mime-database $(DESTDIR)$(SHARED_MIME_DIR)
|
||||
$(SHARED_MIME_INSTALLATION)
|
||||
$(GCONF_SCHEMAS_INSTALLATION)
|
||||
|
||||
uninstall-local:
|
||||
-rm $(DESTDIR)$(prefix)/share/applications/gramps.desktop
|
||||
@ -48,8 +72,5 @@ uninstall-local:
|
||||
-rm $(DESTDIR)$(prefix)/share/mime-info/gramps.keys
|
||||
-rm $(DESTDIR)$(prefix)/share/mime-info/gramps.mime
|
||||
-rm $(DESTDIR)$(prefix)/share/application-registry/gramps.applications
|
||||
-rm $(DESTDIR)$(SHARED_MIME_DIR)/packages/gramps.xml
|
||||
-rm $(DESTDIR)$(GCONF_SCHEMA_FILE_DIR)/gramps.schemas
|
||||
update-mime-database $(DESTDIR)$(SHARED_MIME_DIR)
|
||||
-GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) \
|
||||
gconftool-2 --makefile-uninstall-rule $(top_srcdir)/src/data/gramps.schemas
|
||||
$(SHARED_MIME_UNINSTALLATION)
|
||||
$(GCONF_SCHEMAS_UNINSTALLATION)
|
||||
|
@ -28,6 +28,20 @@
|
||||
</locale>
|
||||
</schema>
|
||||
|
||||
<schema>
|
||||
<key>/schemas/apps/gramps/behavior/welcome</key>
|
||||
<applyto>/apps/gramps/behavior/welcome</applyto>
|
||||
<owner>gramps</owner>
|
||||
<type>int</type>
|
||||
<default>100</default>
|
||||
<locale name="C">
|
||||
<short>Welcome message has already been displayed for this version</short>
|
||||
<long>This key keeps the version for which the welcome message
|
||||
has already been displayed. The integer denotes the major, minor,
|
||||
and release numerals, e.g. 200 denotes the 2.0.0 version.</long>
|
||||
</locale>
|
||||
</schema>
|
||||
|
||||
<schema>
|
||||
<key>/schemas/apps/gramps/preferences/date-format</key>
|
||||
<applyto>/apps/gramps/preferences/date-format</applyto>
|
||||
|
@ -31,18 +31,24 @@ often wonder why we didn't write down pieces of information that grandfather
|
||||
told us while we were young. Don't wait till it's too late...
|
||||
</tip>
|
||||
|
||||
<!--
|
||||
<tip>
|
||||
<b>EXAMPLES OF A FAMILY TREE</b>: To see how a Gramps family tree database looks,
|
||||
check Help > Open example database. You'll find the elaborate Smith family
|
||||
database, It includes 42 individuals and 15 families, with fairly complete
|
||||
basic data about many of these individuals.
|
||||
</tip>
|
||||
-->
|
||||
|
||||
|
||||
<tip>
|
||||
<b>THE PEOPLE VIEW</b>: The People view throws up a list of all individuals in the
|
||||
database. You can sort the listing simply by clicking on numerous headings
|
||||
<b>THE PEOPLE VIEW</b>: The People view throws up a list of all individuals
|
||||
in the database.
|
||||
<!--
|
||||
You can sort the listing simply by clicking on numerous headings
|
||||
such as name, gender, birth date or death date. Clicking heading the second
|
||||
time will reverse the sort.
|
||||
-->
|
||||
</tip>
|
||||
|
||||
<tip>
|
||||
@ -62,13 +68,13 @@ children in the family tree.
|
||||
|
||||
<tip>
|
||||
<b>LOCATING PEOPLE</b>: In the People view, you can locate any individual by
|
||||
navigating through the alphabetic tabs of surnames. Then, click on the names
|
||||
through the list of surnames. Then, click on the names
|
||||
themselves to unfold display of all the individuals with the same last name.
|
||||
</tip>
|
||||
|
||||
<tip>
|
||||
<b>TO ADD INFORMATION TO SELECTED PEOPLE</b>: First, locate them in the People
|
||||
view. (Use the alphabetic tabs of surnames, and click on the names to unfold
|
||||
view. (Use the list of surnames, and click on the names to unfold
|
||||
the display of all individuals sharing the name). Then, go to the Family
|
||||
view, and add the relevant information.
|
||||
</tip>
|
||||
@ -122,9 +128,6 @@ SoundEx codes.
|
||||
<tip>
|
||||
<b>SETTING YOUR PREFERENCES</b>: Edit > Preferences will allow you to choose a
|
||||
number of settings, determining how your GRAMPS program should work.
|
||||
Particularly useful are the report preferences (set the format in which you
|
||||
would like your reports to appear, and in which directory these should be
|
||||
stored).
|
||||
</tip>
|
||||
|
||||
<tip>
|
||||
@ -171,8 +174,8 @@ more than once in the database.
|
||||
</tip>
|
||||
|
||||
<tip>
|
||||
<b>ADDING A SIBLING</b>: To add siblings in Gramps, make yourself or your spouse an
|
||||
active person (i.e. navigate to yourself or your spouse). Then switch to the
|
||||
<b>ADDING A SIBLING</b>: To add siblings in Gramps, make either of your parents
|
||||
an active person (i.e. navigate to either of your parents). Then switch to the
|
||||
Family View and add a new child by clicking the button second from the top on
|
||||
the right of the Children list (the "New" button). Enter the data for the
|
||||
new person and click OK.
|
||||
@ -201,7 +204,7 @@ over-ride that filtering by checking "Show all" checkbutton.
|
||||
</tip>
|
||||
|
||||
<tip>
|
||||
<b>KEYBINDINGS</b>: GRAMP's manual is quite elaborate and well written; it also is
|
||||
<b>KEYBINDINGS</b>: GRAMPS's manual is quite elaborate and well written; it also is
|
||||
detailed about keybindings (in a separate appendix) and other matters. Check
|
||||
it out.
|
||||
</tip>
|
||||
@ -214,7 +217,7 @@ gramps-users at lists.sf.net, as appropriate for your questions.
|
||||
</tip>
|
||||
|
||||
<tip>
|
||||
<b>TIPS OF THE DAY</b>: GRAMPS's development version has the option of popping up a
|
||||
<b>TIPS OF THE DAY</b>: GRAMPS's has the option of popping up a
|
||||
window with the tip of the day about the use of GRAMPS. The tip is chosen
|
||||
randomly from the pool of tips. To add your own tip, send it in to
|
||||
gramps-users@lists.sf.net
|
||||
@ -247,7 +250,8 @@ You can visit these bookmarks much like in your browser, simply via Bookmark
|
||||
|
||||
<tip>
|
||||
<b>DATES</b>: Incorrect date formats will show up with the red button alongside the
|
||||
date. Green means okay, and amber signifies acceptable.
|
||||
date. Green means okay, and amber signifies acceptable. Click on the colored
|
||||
button to invoke Date Selection dialog, if you like.
|
||||
</tip>
|
||||
|
||||
<tip>
|
||||
@ -260,11 +264,13 @@ military service, nobility titles, number of marriages, occupations,
|
||||
ordination, property, religion, retirement, wills, etc.
|
||||
</tip>
|
||||
|
||||
<!--
|
||||
<tip>
|
||||
GRAMPS' People view gives you a list of all individuals in the database. You
|
||||
can sort the listing by differing priorities simply by clicking on headings
|
||||
like name, gender, bate date or death date.
|
||||
</tip>
|
||||
-->
|
||||
|
||||
<tip>
|
||||
<b>CHANGING PREFERRED NAME</b>: If a person has several names, it is very easy
|
||||
@ -283,14 +289,18 @@ more distant parts of the tree.
|
||||
|
||||
<tip>
|
||||
The Sources view shows all the family's referenced sources in a single view.
|
||||
<!--
|
||||
Double-click on each to edit, add notes, and to see which individuals
|
||||
reference the source.
|
||||
reference the source.-->
|
||||
</tip>
|
||||
|
||||
<tip>
|
||||
The Places view shows all places referred to in the database. It also allows
|
||||
The Places view shows all places referred to in the database.
|
||||
<!--
|
||||
It also allows
|
||||
you to sort the list by half-a-dozen different criteria, such as City,
|
||||
County or State.
|
||||
-->
|
||||
</tip>
|
||||
|
||||
<tip>
|
||||
@ -406,8 +416,7 @@ seems to be an error.
|
||||
|
||||
<tip>
|
||||
You can link any 'media' (including non-text information) and other
|
||||
file-types to your GRAMPS family tree. Choose between copying (if in text
|
||||
format) or linking the file to the database.
|
||||
file-types to your GRAMPS family tree.
|
||||
</tip>
|
||||
|
||||
<tip>
|
||||
@ -430,7 +439,7 @@ also create their own custom styles.
|
||||
<tip>
|
||||
Eight output formats are supported by GRAMPS -- PDF, AbiWord, KWord,
|
||||
OpenOffice Writer, HTML, Rich Text Format (RTF), Latex, and plain text.
|
||||
These formats generate data which can be read in Windows computers, making
|
||||
These formats generate data which can be read on all computers, making
|
||||
it easy for anyone to access it.
|
||||
</tip>
|
||||
|
||||
@ -563,14 +572,7 @@ to help too?
|
||||
</tip>
|
||||
|
||||
<tip>
|
||||
New versions of GRAMPS that are already in testing use an advanced database
|
||||
design that guarantee very fast access to many thousands of entries in the
|
||||
database. Other new features are being designed and coordinated by several
|
||||
active developers.
|
||||
</tip>
|
||||
|
||||
<tip>
|
||||
Numerous GRAMPS releases are made each year (11 during one 12-month period).
|
||||
Numerous GRAMPS releases are made each year.
|
||||
</tip>
|
||||
|
||||
<tip>
|
||||
@ -592,17 +594,12 @@ http://www.gnu.org/licenses/licenses.html#GPL !
|
||||
</tip>
|
||||
|
||||
<tip>
|
||||
GRAMPS performs slowly with databases of over 10,000 people, does not
|
||||
GRAMPS does not
|
||||
support TempleReady GEDCOM extensions, and offers limited drag-and-drop
|
||||
support. Currently, there is no support for drag and drop between databases.
|
||||
Graph reports are also limited in functionality.
|
||||
</tip>
|
||||
|
||||
<tip>
|
||||
To learn more about the GRAMPS Next Generation, visit the wiki page at
|
||||
http://gramps.sourceforge.net/wiki/index.php/GrampsNextGeneration
|
||||
</tip>
|
||||
|
||||
<tip>
|
||||
GRAMPS is the Genealogical Research and Analysis Management Program System.
|
||||
In other words, it a personal genealogy program letting you store, edit, and
|
||||
@ -635,11 +632,6 @@ To run GRAMPS, you need to have GNOME installed. But you do not need to be
|
||||
running the GNOME desktop.
|
||||
</tip>
|
||||
|
||||
<tip>
|
||||
The latest versions of gramps (0.9.0 and higher) require GNOME 2.0 or
|
||||
higher. Previous versions required GNOME 1.X.
|
||||
</tip>
|
||||
|
||||
<tip>
|
||||
GRAMPS makes every effort to maintain compatibility with GEDCOM, the general
|
||||
standard of recording genealogical information. We have import and export
|
||||
|
175
gramps2/src/dates/Date_fi.py
Normal file
@ -0,0 +1,175 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2004-2005 Donald N. Allingham
|
||||
#
|
||||
# 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
|
||||
# $Id$
|
||||
|
||||
"""
|
||||
Finnish-specific classes for parsing and displaying dates.
|
||||
"""
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Python modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import re
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import Date
|
||||
from DateParser import DateParser
|
||||
from DateDisplay import DateDisplay
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Finnish parser
|
||||
#
|
||||
# This handles only dates where days and months are given as numeric, as:
|
||||
# - That's how they are normally used in Finland
|
||||
# - Parsing Finnish is much more complicated than English
|
||||
#-------------------------------------------------------------------------
|
||||
class DateParserFI(DateParser):
|
||||
|
||||
# NOTE: these need to be in lower case because the "key" comparison
|
||||
# is done as lower case. In the display method correct capitalization
|
||||
# can be used.
|
||||
|
||||
modifier_to_int = {
|
||||
# examples:
|
||||
# - ennen 1.1.2005
|
||||
# - 1.1.2005 jälkeen
|
||||
# - noin 1.1.2005
|
||||
u'ennen' : Date.MOD_BEFORE,
|
||||
u'e.' : Date.MOD_BEFORE,
|
||||
u'jälkeen' : Date.MOD_AFTER,
|
||||
u'j.' : Date.MOD_AFTER,
|
||||
u'noin' : Date.MOD_ABOUT,
|
||||
u'n.' : Date.MOD_ABOUT,
|
||||
}
|
||||
|
||||
bce = ["ekr", "ekr\."]
|
||||
|
||||
calendar_to_int = {
|
||||
u'gregoriaaninen' : Date.CAL_GREGORIAN,
|
||||
u'greg.' : Date.CAL_GREGORIAN,
|
||||
u'juliaaninen' : Date.CAL_JULIAN,
|
||||
u'jul.' : Date.CAL_JULIAN,
|
||||
u'heprealainen' : Date.CAL_HEBREW,
|
||||
u'hepr.' : Date.CAL_HEBREW,
|
||||
u'islamilainen' : Date.CAL_ISLAMIC,
|
||||
u'isl.' : Date.CAL_ISLAMIC,
|
||||
u'ranskan vallankumouksen aikainen': Date.CAL_FRENCH,
|
||||
u'ranskan v.' : Date.CAL_FRENCH,
|
||||
u'persialainen' : Date.CAL_PERSIAN,
|
||||
u'pers.' : Date.CAL_PERSIAN,
|
||||
}
|
||||
|
||||
quality_to_int = {
|
||||
u'arviolta' : Date.QUAL_ESTIMATED,
|
||||
u'arv.' : Date.QUAL_ESTIMATED,
|
||||
u'laskettuna' : Date.QUAL_CALCULATED,
|
||||
u'lask.' : Date.QUAL_CALCULATED,
|
||||
}
|
||||
|
||||
def init_strings(self):
|
||||
DateParser.init_strings(self)
|
||||
# date, whitespace
|
||||
self._span = re.compile("(?P<start>.+)\s+-\s+(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile("(?P<start>.+)\s+ja\s+(?P<stop>.+)\s+väliltä",
|
||||
re.IGNORECASE)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Finnish display
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class DateDisplayFI(DateDisplay):
|
||||
|
||||
calendar = ("",
|
||||
u"(Juliaaninen)",
|
||||
u"(Heprealainen)",
|
||||
u"(Ranskan v.)",
|
||||
u"(Persialainen)",
|
||||
u"(Islamilainen)")
|
||||
|
||||
_qual_str = ("", "laskettuna", "arviolta")
|
||||
|
||||
formats = (
|
||||
"VVVV-KK-PP (ISO)",
|
||||
"PP.KK.VVVV"
|
||||
)
|
||||
|
||||
def display(self,date):
|
||||
"""
|
||||
Returns a text string representing the date.
|
||||
"""
|
||||
mod = date.get_modifier()
|
||||
qual = date.get_quality()
|
||||
cal = date.get_calendar()
|
||||
start = date.get_start_date()
|
||||
|
||||
if mod == Date.MOD_TEXTONLY:
|
||||
return date.get_text()
|
||||
if start == Date.EMPTY:
|
||||
return ""
|
||||
|
||||
# select numerical date format
|
||||
self.format = 1
|
||||
|
||||
if mod == Date.MOD_SPAN:
|
||||
d1 = self.display_cal[cal](start)
|
||||
d2 = self.display_cal[cal](date.get_stop_date())
|
||||
text = "%s - %s" % (d1, d2)
|
||||
elif mod == Date.MOD_RANGE:
|
||||
d1 = self.display_cal[cal](start)
|
||||
d2 = self.display_cal[cal](date.get_stop_date())
|
||||
text = "%s ja %s väliltä" % (d1, d2)
|
||||
else:
|
||||
text = self.display_cal[date.get_calendar()](start)
|
||||
if mod == Date.MOD_BEFORE:
|
||||
text = "ennen " + text
|
||||
elif mod == Date.MOD_AFTER:
|
||||
# kludge: should be actually after the date
|
||||
text = "jälkeen " + text
|
||||
elif mod == Date.MOD_ABOUT:
|
||||
text = "noin " + text
|
||||
|
||||
if qual:
|
||||
# prepend quality
|
||||
text = "%s %s" % (self._qual_str[qual], text)
|
||||
if cal:
|
||||
# append calendar type
|
||||
text = "%s %s" % (text, self.calendar[cal])
|
||||
|
||||
return text
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Register classes
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from DateHandler import register_datehandler
|
||||
register_datehandler(('fi_FI','finnish'), DateParserFI, DateDisplayFI)
|
||||
|
@ -8,7 +8,8 @@ pkgdatadir = $(datadir)/@PACKAGE@/dates
|
||||
pkgdata_PYTHON = \
|
||||
Date_ru.py\
|
||||
Date_fr.py\
|
||||
Date_es.py
|
||||
Date_es.py\
|
||||
Date_fi.py
|
||||
|
||||
pkgpyexecdir = @pkgpyexecdir@/dates
|
||||
pkgpythondir = @pkgpythondir@/dates
|
||||
|
@ -20314,25 +20314,6 @@ Very High</property>
|
||||
<property name="fill">True</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkCheckButton" id="filter">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label" translatable="yes"></property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="inconsistent">False</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
@ -24691,7 +24672,7 @@ Very High</property>
|
||||
<widget class="GtkTable" id="table49">
|
||||
<property name="border_width">12</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="n_rows">3</property>
|
||||
<property name="n_rows">2</property>
|
||||
<property name="n_columns">3</property>
|
||||
<property name="homogeneous">False</property>
|
||||
<property name="row_spacing">6</property>
|
||||
@ -24775,56 +24756,6 @@ Very High</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label423">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes">_Place:</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="use_markup">False</property>
|
||||
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
||||
<property name="wrap">False</property>
|
||||
<property name="selectable">False</property>
|
||||
<property name="xalign">0</property>
|
||||
<property name="yalign">0.5</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
<property name="mnemonic_widget">place</property>
|
||||
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
||||
<property name="width_chars">-1</property>
|
||||
<property name="single_line_mode">False</property>
|
||||
<property name="angle">0</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
<property name="right_attach">2</property>
|
||||
<property name="top_attach">2</property>
|
||||
<property name="bottom_attach">3</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkEntry" id="place">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="editable">True</property>
|
||||
<property name="visibility">True</property>
|
||||
<property name="max_length">0</property>
|
||||
<property name="text" translatable="yes"></property>
|
||||
<property name="has_frame">True</property>
|
||||
<property name="invisible_char">*</property>
|
||||
<property name="activates_default">False</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">2</property>
|
||||
<property name="right_attach">3</property>
|
||||
<property name="top_attach">2</property>
|
||||
<property name="bottom_attach">3</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkHBox" id="hbox99">
|
||||
<property name="visible">True</property>
|
||||
@ -30885,7 +30816,6 @@ Very High</property>
|
||||
<property name="type">GTK_WINDOW_TOPLEVEL</property>
|
||||
<property name="window_position">GTK_WIN_POS_NONE</property>
|
||||
<property name="modal">False</property>
|
||||
<property name="default_width">600</property>
|
||||
<property name="resizable">True</property>
|
||||
<property name="destroy_with_parent">False</property>
|
||||
<property name="icon">gramps.png</property>
|
||||
@ -31009,7 +30939,7 @@ Very High</property>
|
||||
<property name="border_width">12</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="n_rows">14</property>
|
||||
<property name="n_columns">4</property>
|
||||
<property name="n_columns">3</property>
|
||||
<property name="homogeneous">False</property>
|
||||
<property name="row_spacing">6</property>
|
||||
<property name="column_spacing">12</property>
|
||||
@ -31398,13 +31328,6 @@ Very High</property>
|
||||
<property name="xpad">0</property>
|
||||
<property name="ypad">0</property>
|
||||
<property name="mnemonic_widget">group_as</property>
|
||||
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
|
||||
<property name="width_chars">-1</property>
|
||||
<property name="single_line_mode">False</property>
|
||||
<property name="angle">0</property>
|
||||
<accessibility>
|
||||
<atkrelation target="group_as" type="label-for"/>
|
||||
</accessibility>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
@ -31447,28 +31370,6 @@ Very High</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkEntry" id="group_as">
|
||||
<property name="visible">True</property>
|
||||
<property name="sensitive">False</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="editable">False</property>
|
||||
<property name="visibility">True</property>
|
||||
<property name="max_length">0</property>
|
||||
<property name="text" translatable="yes"></property>
|
||||
<property name="has_frame">True</property>
|
||||
<property name="invisible_char">*</property>
|
||||
<property name="activates_default">False</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">2</property>
|
||||
<property name="right_attach">3</property>
|
||||
<property name="top_attach">9</property>
|
||||
<property name="bottom_attach">10</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label419">
|
||||
<property name="visible">True</property>
|
||||
@ -31556,29 +31457,6 @@ Very High</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkCheckButton" id="group_over">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label" translatable="yes">_Override</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="inconsistent">False</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
<signal name="toggled" handler="on_group_over_toggled" last_modification_time="Tue, 28 Sep 2004 20:16:42 GMT"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">3</property>
|
||||
<property name="right_attach">4</property>
|
||||
<property name="top_attach">9</property>
|
||||
<property name="bottom_attach">10</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options"></property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkComboBoxEntry" id="name_type">
|
||||
<property name="visible">True</property>
|
||||
@ -31722,6 +31600,62 @@ Family name Given name
|
||||
<property name="y_options">fill</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkHBox" id="hbox106">
|
||||
<property name="visible">True</property>
|
||||
<property name="homogeneous">False</property>
|
||||
<property name="spacing">6</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkEntry" id="group_as">
|
||||
<property name="visible">True</property>
|
||||
<property name="sensitive">False</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="editable">False</property>
|
||||
<property name="visibility">True</property>
|
||||
<property name="max_length">0</property>
|
||||
<property name="text" translatable="yes"></property>
|
||||
<property name="has_frame">True</property>
|
||||
<property name="invisible_char" translatable="yes">*</property>
|
||||
<property name="activates_default">False</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkCheckButton" id="group_over">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label" translatable="yes">_Override</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
<property name="active">False</property>
|
||||
<property name="inconsistent">False</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
<signal name="toggled" handler="on_group_over_toggled" last_modification_time="Tue, 28 Sep 2004 20:16:42 GMT"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">2</property>
|
||||
<property name="right_attach">3</property>
|
||||
<property name="top_attach">9</property>
|
||||
<property name="bottom_attach">10</property>
|
||||
<property name="x_options">fill</property>
|
||||
<property name="y_options">fill</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="tab_expand">False</property>
|
||||
@ -33819,4 +33753,93 @@ Family name Given name
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
<widget class="GtkDialog" id="scrollmsg">
|
||||
<property name="visible">True</property>
|
||||
<property name="title" translatable="yes">GRAMPS</property>
|
||||
<property name="type">GTK_WINDOW_TOPLEVEL</property>
|
||||
<property name="window_position">GTK_WIN_POS_CENTER_ALWAYS</property>
|
||||
<property name="modal">False</property>
|
||||
<property name="default_width">450</property>
|
||||
<property name="default_height">400</property>
|
||||
<property name="resizable">True</property>
|
||||
<property name="destroy_with_parent">False</property>
|
||||
<property name="icon">gramps.png</property>
|
||||
<property name="decorated">True</property>
|
||||
<property name="skip_taskbar_hint">False</property>
|
||||
<property name="skip_pager_hint">False</property>
|
||||
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
|
||||
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
|
||||
<property name="has_separator">True</property>
|
||||
|
||||
<child internal-child="vbox">
|
||||
<widget class="GtkVBox" id="dialog-vbox20">
|
||||
<property name="visible">True</property>
|
||||
<property name="homogeneous">False</property>
|
||||
<property name="spacing">0</property>
|
||||
|
||||
<child internal-child="action_area">
|
||||
<widget class="GtkHButtonBox" id="dialog-action_area20">
|
||||
<property name="visible">True</property>
|
||||
<property name="layout_style">GTK_BUTTONBOX_END</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkButton" id="closebutton1">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_default">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label">gtk-close</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
<property name="response_id">-7</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="pack_type">GTK_PACK_END</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkScrolledWindow" id="scrolledwindow85">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
|
||||
<property name="shadow_type">GTK_SHADOW_IN</property>
|
||||
<property name="window_placement">GTK_CORNER_TOP_LEFT</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkTextView" id="msg">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="editable">True</property>
|
||||
<property name="overwrite">False</property>
|
||||
<property name="accepts_tab">True</property>
|
||||
<property name="justification">GTK_JUSTIFY_LEFT</property>
|
||||
<property name="wrap_mode">GTK_WRAP_NONE</property>
|
||||
<property name="cursor_visible">True</property>
|
||||
<property name="pixels_above_lines">0</property>
|
||||
<property name="pixels_below_lines">0</property>
|
||||
<property name="pixels_inside_wrap">0</property>
|
||||
<property name="left_margin">0</property>
|
||||
<property name="right_margin">0</property>
|
||||
<property name="indent">0</property>
|
||||
<property name="text" translatable="yes"></property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
<property name="expand">True</property>
|
||||
<property name="fill">True</property>
|
||||
</packing>
|
||||
</child>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
|
||||
</glade-interface>
|
||||
|
@ -145,9 +145,7 @@ class Gramps(GrampsDBCallback.GrampsDBCallback):
|
||||
|
||||
try:
|
||||
GrampsCfg.loadConfig()
|
||||
|
||||
self.beta_warn()
|
||||
|
||||
self.welcome()
|
||||
self.RelClass = PluginMgr.relationship_class
|
||||
self.relationship = self.RelClass(self.db)
|
||||
self.gtop = gtk.glade.XML(const.gladeFile, "gramps", "gramps")
|
||||
@ -205,17 +203,48 @@ class Gramps(GrampsDBCallback.GrampsDBCallback):
|
||||
|
||||
self.db.set_researcher(GrampsCfg.get_researcher())
|
||||
|
||||
def beta_warn(self):
|
||||
if not GrampsKeys.get_betawarn():
|
||||
def welcome(self):
|
||||
if GrampsKeys.get_welcome() >= 200:
|
||||
return
|
||||
WarningDialog(
|
||||
"Use at your own risk",
|
||||
"This is an unstable development version of GRAMPS. "
|
||||
"It is intended as a technology preview. Do not trust "
|
||||
"your family database to this development version. "
|
||||
"This version may contain bugs which could corrupt "
|
||||
"your database.")
|
||||
GrampsKeys.save_betawarn(1)
|
||||
|
||||
glade = gtk.glade.XML(const.gladeFile,'scrollmsg')
|
||||
top = glade.get_widget('scrollmsg')
|
||||
msg = glade.get_widget('msg')
|
||||
msg.get_buffer().set_text(
|
||||
_("Welcome to the 2.0.x series of GRAMPS!\n"
|
||||
"\n"
|
||||
"This version drastically differs from the 1.0.x branch\n"
|
||||
"in a few ways. Please read carefully, as this may affect\n"
|
||||
"the way you are using the program.\n"
|
||||
"\n"
|
||||
"1. This version works with the Berkeley database backend.\n"
|
||||
" Because of this, changes are written to disk immediately.\n"
|
||||
" There is NO Save function anymore!\n"
|
||||
"2. The Media object files are not managed by GRAMPS.\n"
|
||||
" There is no concept of local objects, all objects\n"
|
||||
" are external. You are in charge of keeping track of\n"
|
||||
" your files. If you delete the image file from disk,\n"
|
||||
" it will be lost!\n"
|
||||
"3. The version control provided by previous GRAMPS\n"
|
||||
" versions has been removed. You may set up the versioning\n"
|
||||
" system on your own if you'd like, but it will have to be\n"
|
||||
" outside of GRAMPS.\n"
|
||||
"4. It is possible to directly open GRAMPS XML databases\n"
|
||||
" (used by previous versions) as well as GEDCOM files.\n"
|
||||
" However, any changes will be written to the disk when\n"
|
||||
" you quit GRAMPS. In case of GEDCOM files, this may lead\n"
|
||||
" to a data loss because some GEDCOM files contain data\n"
|
||||
" that does not comply with the GEDCOM standard and cannot\n"
|
||||
" be parsed by GRAMPS. If unsure, set up an empty grdb\n"
|
||||
" database (new GRAMPS format) and import GEDCOM into it.\n"
|
||||
" This will keep the original GEDCOM untouched.\n"
|
||||
"\n"
|
||||
"Enjoy!\n"
|
||||
"The GRAMPS project\n"))
|
||||
top.run()
|
||||
top.destroy()
|
||||
|
||||
GrampsKeys.save_welcome(200)
|
||||
GrampsKeys.sync()
|
||||
|
||||
def date_format_key_update(self,client,cnxn_id,entry,data):
|
||||
@ -295,6 +324,8 @@ class Gramps(GrampsDBCallback.GrampsDBCallback):
|
||||
self.filter_btn = self.gtop.get_widget("filter1")
|
||||
self.toolbar_btn = self.gtop.get_widget("toolbar2")
|
||||
self.statusbar = self.gtop.get_widget("statusbar")
|
||||
self.progress = self.statusbar.get_children()[0]
|
||||
self.progress.set_pulse_step(0.01)
|
||||
|
||||
self.filter_list = self.gtop.get_widget("filter_list")
|
||||
self.views = self.gtop.get_widget("views")
|
||||
@ -522,7 +553,10 @@ class Gramps(GrampsDBCallback.GrampsDBCallback):
|
||||
if self.undo_active:
|
||||
return
|
||||
self.undo_active = True
|
||||
self.db.disable_signals()
|
||||
self.db.undo()
|
||||
self.db.enable_signals()
|
||||
self.db.request_rebuild()
|
||||
if self.active_person:
|
||||
p = self.db.get_person_from_handle(self.active_person.get_handle())
|
||||
self.change_active_person(p)
|
||||
@ -997,15 +1031,15 @@ class Gramps(GrampsDBCallback.GrampsDBCallback):
|
||||
all.add_rule(GenericFilter.IsWitness([]))
|
||||
filter_list.append(all)
|
||||
|
||||
all = GenericFilter.ParamFilter()
|
||||
all.set_name(_("Any textual record contains..."))
|
||||
all.add_rule(GenericFilter.HasTextMatchingSubstringOf([]))
|
||||
filter_list.append(all)
|
||||
# all = GenericFilter.ParamFilter()
|
||||
# all.set_name(_("Any textual record contains..."))
|
||||
# all.add_rule(GenericFilter.HasTextMatchingSubstringOf([]))
|
||||
# filter_list.append(all)
|
||||
|
||||
all = GenericFilter.ParamFilter()
|
||||
all.set_name(_("Any textual record matches regular expression..."))
|
||||
all.add_rule(GenericFilter.HasTextMatchingRegexpOf([]))
|
||||
filter_list.append(all)
|
||||
# all = GenericFilter.ParamFilter()
|
||||
# all.set_name(_("Any textual record matches regular expression..."))
|
||||
# all.add_rule(GenericFilter.HasTextMatchingRegexpOf([]))
|
||||
# filter_list.append(all)
|
||||
|
||||
self.filter_model = GenericFilter.FilterStore(filter_list)
|
||||
self.filter_list.set_model(self.filter_model)
|
||||
@ -1196,7 +1230,7 @@ class Gramps(GrampsDBCallback.GrampsDBCallback):
|
||||
|
||||
try:
|
||||
import ReadXML
|
||||
ReadXML.importData(self.db,dbname,None)
|
||||
ReadXML.importData(self.db,dbname,self.update_bar)
|
||||
except:
|
||||
DisplayTrace.DisplayTrace()
|
||||
|
||||
@ -1207,6 +1241,12 @@ class Gramps(GrampsDBCallback.GrampsDBCallback):
|
||||
os.rmdir(tmpdir_path)
|
||||
self.import_tool_callback()
|
||||
|
||||
def update_bar(self,percent):
|
||||
if percent:
|
||||
self.progress.pulse()
|
||||
else:
|
||||
self.progress.set_fraction(0)
|
||||
|
||||
def read_file(self,filename,callback=None):
|
||||
self.topWindow.set_resizable(False)
|
||||
mode = "w"
|
||||
@ -1243,6 +1283,9 @@ class Gramps(GrampsDBCallback.GrampsDBCallback):
|
||||
ErrorDialog(_('Cannot open database'),
|
||||
_('The database file specified could not be opened.'))
|
||||
return 0
|
||||
except ( IOError, OSError ), msg:
|
||||
ErrorDialog(_('Cannot open database'),str(msg))
|
||||
return 0
|
||||
except db.DBAccessError, msg:
|
||||
ErrorDialog(_('Cannot open database'),
|
||||
_('%s could not be opened.' % filename) + '\n' + msg[1])
|
||||
@ -1258,6 +1301,7 @@ class Gramps(GrampsDBCallback.GrampsDBCallback):
|
||||
self.gtop.get_widget('add_item').set_sensitive(not self.db.readonly)
|
||||
self.gtop.get_widget('remove_item').set_sensitive(not self.db.readonly)
|
||||
self.gtop.get_widget('merge').set_sensitive(not self.db.readonly)
|
||||
self.gtop.get_widget('fast_merge1').set_sensitive(not self.db.readonly)
|
||||
self.gtop.get_widget('default_person1').set_sensitive(not self.db.readonly)
|
||||
self.gtop.get_widget('edit_bookmarks').set_sensitive(not self.db.readonly)
|
||||
self.gtop.get_widget('tools_menu').set_sensitive(not self.db.readonly)
|
||||
|
@ -58,6 +58,20 @@
|
||||
<signal name="clicked" handler="on_merge_places_clicked" object="merge_places"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkButton" id="help">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_default">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label">gtk-help</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
<property name="response_id">-11</property>
|
||||
<signal name="clicked" handler="on_help_places_clicked" last_modification_time="Tue, 03 May 2005 16:20:19 GMT"/>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
@ -100,12 +114,13 @@
|
||||
|
||||
<child>
|
||||
<widget class="GtkTable" id="table5">
|
||||
<property name="border_width">6</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="n_rows">3</property>
|
||||
<property name="n_columns">2</property>
|
||||
<property name="homogeneous">False</property>
|
||||
<property name="row_spacing">0</property>
|
||||
<property name="column_spacing">0</property>
|
||||
<property name="column_spacing">6</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkEntry" id="title3_text">
|
||||
@ -347,6 +362,20 @@
|
||||
<signal name="clicked" handler="on_merge_clicked" object="merge"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkButton" id="help">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_default">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label">gtk-help</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
<property name="response_id">-11</property>
|
||||
<signal name="clicked" handler="on_help_clicked" last_modification_time="Tue, 03 May 2005 15:36:08 GMT"/>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
@ -482,7 +511,6 @@
|
||||
<property name="active">False</property>
|
||||
<property name="inconsistent">False</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
<property name="group">select1</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">1</property>
|
||||
@ -505,6 +533,7 @@
|
||||
<property name="active">True</property>
|
||||
<property name="inconsistent">False</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
<property name="group">select2</property>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="left_attach">0</property>
|
||||
@ -539,9 +568,9 @@
|
||||
<property name="type">GTK_WINDOW_TOPLEVEL</property>
|
||||
<property name="window_position">GTK_WIN_POS_NONE</property>
|
||||
<property name="modal">False</property>
|
||||
<property name="default_width">620</property>
|
||||
<property name="resizable">True</property>
|
||||
<property name="destroy_with_parent">False</property>
|
||||
<property name="icon">gramps.png</property>
|
||||
<property name="decorated">True</property>
|
||||
<property name="skip_taskbar_hint">False</property>
|
||||
<property name="skip_pager_hint">False</property>
|
||||
@ -586,6 +615,19 @@
|
||||
<property name="response_id">-5</property>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkButton" id="help">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_default">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label">gtk-help</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
<property name="response_id">-11</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
@ -606,9 +648,9 @@
|
||||
<property name="column_spacing">6</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkLabel" id="label80">
|
||||
<widget class="GtkLabel" id="title">
|
||||
<property name="visible">True</property>
|
||||
<property name="label" translatable="yes"><span weight="bold" size="larger">Merge Sources</span></property>
|
||||
<property name="label" translatable="yes"></property>
|
||||
<property name="use_underline">False</property>
|
||||
<property name="use_markup">True</property>
|
||||
<property name="justify">GTK_JUSTIFY_LEFT</property>
|
||||
@ -1189,6 +1231,19 @@
|
||||
<signal name="clicked" handler="on_merge_places_clicked" object="merge_places"/>
|
||||
</widget>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkButton" id="help">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_default">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label">gtk-help</property>
|
||||
<property name="use_stock">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
<property name="response_id">-11</property>
|
||||
</widget>
|
||||
</child>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
|
@ -57,6 +57,11 @@ from QuestionDialog import OkDialog, MissingMediaDialog
|
||||
def runTool(database,active_person,callback,parent=None):
|
||||
|
||||
try:
|
||||
if database.readonly:
|
||||
# TODO: split plugin in a check and repair part to support
|
||||
# checking of a read only database
|
||||
return
|
||||
|
||||
trans = database.transaction_begin()
|
||||
trans.set_batch(True)
|
||||
database.disable_signals()
|
||||
@ -68,7 +73,7 @@ def runTool(database,active_person,callback,parent=None):
|
||||
|
||||
while prev_total != total:
|
||||
prev_total = total
|
||||
|
||||
|
||||
checker.check_for_broken_family_links()
|
||||
checker.check_parent_relationships()
|
||||
checker.cleanup_empty_families(0)
|
||||
@ -294,9 +299,27 @@ class CheckIntegrity:
|
||||
def cleanup_empty_families(self,automatic):
|
||||
for family_handle in self.db.get_family_handles():
|
||||
family = self.db.get_family_from_handle(family_handle)
|
||||
if not family.get_father_handle() and not family.get_mother_handle():
|
||||
father_handle = family.get_father_handle()
|
||||
mother_handle = family.get_mother_handle()
|
||||
|
||||
if not father_handle and not mother_handle:
|
||||
self.empty_family.append(family_handle)
|
||||
self.delete_empty_family(family_handle)
|
||||
continue
|
||||
elif not father_handle and len(family.get_child_handle_list()) == 0:
|
||||
person = self.db.get_person_from_handle(mother_handle)
|
||||
person.remove_family_handle(family_handle)
|
||||
self.db.commit_person(person,self.trans)
|
||||
self.db.remove_family(family_handle,self.trans)
|
||||
self.empty_family.append(family_handle)
|
||||
continue
|
||||
elif not mother_handle and len(family.get_child_handle_list()) == 0:
|
||||
person = self.db.get_person_from_handle(father_handle)
|
||||
person.remove_family_handle(family_handle)
|
||||
self.db.commit_person(person,self.trans)
|
||||
self.db.remove_family(family_handle,self.trans)
|
||||
self.empty_family.append(family_handle)
|
||||
continue
|
||||
|
||||
def delete_empty_family(self,family_handle):
|
||||
for key in self.db.get_person_handles(sort_handles=False):
|
||||
@ -464,7 +487,10 @@ class CheckIntegrity:
|
||||
else:
|
||||
cn = _("Non existing person")
|
||||
family = self.db.get_family_from_handle(family_handle)
|
||||
pn = Utils.family_name(family,self.db)
|
||||
if family:
|
||||
pn = Utils.family_name(family,self.db)
|
||||
else:
|
||||
pn = family_handle
|
||||
self.text.write('\t')
|
||||
self.text.write(_("%s was restored to the family of %s\n") % (cn,pn))
|
||||
|
||||
|
@ -337,7 +337,7 @@ class FilterEditor:
|
||||
|
||||
def on_help_clicked(self,obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
help_display('gramps-manual','tools-util')
|
||||
help_display('gramps-manual','tools-util-cfe')
|
||||
|
||||
def on_delete_event(self,obj,b):
|
||||
self.filterdb.save()
|
||||
@ -490,7 +490,7 @@ class EditFilter:
|
||||
|
||||
def on_help_clicked(self,obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
help_display('gramps-manual','tools-util')
|
||||
help_display('gramps-manual','tools-util-cfe')
|
||||
|
||||
def on_delete_event(self,obj,b):
|
||||
self.close_child_windows()
|
||||
|
@ -729,6 +729,7 @@ class GraphVizOptions(ReportOptions.ReportOptions):
|
||||
self.options_dict['pagesv'] = self.vpages_sb.get_value_as_int()
|
||||
self.options_dict['showfamily'] = int(self.show_families_cb.get_active())
|
||||
self.options_dict['incid'] = int(self.includeid_cb.get_active())
|
||||
self.options_dict['justyears'] = int(self.just_years_cb.get_active())
|
||||
self.options_dict['placecause'] = int(self.place_cause_cb.get_active())
|
||||
self.options_dict['rankdir'] = \
|
||||
_options.rankdir[self.rank_box.get_active()][0]
|
||||
|
@ -86,9 +86,8 @@ def importData(database, filename, cb=None):
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
#
|
||||
# For a description of the file format see
|
||||
# http://cristal.inria.fr/~ddr/GeneWeb/en/gwformat.htm
|
||||
#-------------------------------------------------------------------------
|
||||
class GeneWebParser:
|
||||
def __init__(self, dbase, file):
|
||||
@ -255,7 +254,8 @@ class GeneWebParser:
|
||||
birth_handle = child.get_birth_handle()
|
||||
birth = self.db.get_event_from_handle(birth_handle)
|
||||
if not birth:
|
||||
birth = RelLib.Event()
|
||||
birth = self.create_event("Birth")
|
||||
child.set_birth_handle(birth.get_handle())
|
||||
birth.set_place_handle(self.current_child_birthplace_handle)
|
||||
self.db.commit_event(birth,self.trans)
|
||||
if self.current_child_source_handle:
|
||||
@ -450,14 +450,14 @@ class GeneWebParser:
|
||||
while idx < len(fields) and personDataRe.match(fields[idx]):
|
||||
if fields[idx][0] == '(':
|
||||
#print "Public Name: %s" % fields[idx]
|
||||
public_name = self.decode(fields[idx])
|
||||
public_name = self.decode(fields[idx][1:-1])
|
||||
idx = idx + 1
|
||||
elif fields[idx][0] == '{':
|
||||
#print "Firstsname Alias: %s" % fields[idx]
|
||||
firstname_aliases.append(self.decode(fields[idx]))
|
||||
firstname_aliases.append(self.decode(fields[idx][1:-1]))
|
||||
idx = idx + 1
|
||||
elif fields[idx][0] == '[':
|
||||
#print "Titles: %s" % fields[idx]
|
||||
print "TODO: Titles: %s" % fields[idx]
|
||||
idx = idx + 1
|
||||
elif fields[idx] == '#nick':
|
||||
idx = idx + 1
|
||||
@ -672,7 +672,7 @@ class GeneWebParser:
|
||||
def get_or_create_place(self,place_name):
|
||||
place = None
|
||||
if place_name in self.pkeys:
|
||||
person = self.db.get_place_from_handle(self.pkeys[place_name])
|
||||
place = self.db.get_place_from_handle(self.pkeys[place_name])
|
||||
else:
|
||||
place = RelLib.Place()
|
||||
place.set_title(place_name)
|
||||
|
@ -106,13 +106,25 @@ class PatchNames:
|
||||
for key in self.db.get_person_handles(sort_handles=False):
|
||||
|
||||
person = self.db.get_person_from_handle(key)
|
||||
first = person.get_primary_name().get_first_name()
|
||||
sname = person.get_primary_name().get_surname()
|
||||
name = person.get_primary_name()
|
||||
first = name.get_first_name()
|
||||
sname = name.get_surname()
|
||||
|
||||
match = _title_re.match(first)
|
||||
if match:
|
||||
if name.get_title():
|
||||
current_title = [name.get_title()]
|
||||
else:
|
||||
current_title = []
|
||||
while match:
|
||||
groups = match.groups()
|
||||
self.title_list.append((key,groups[0],groups[1]))
|
||||
first = groups[1]
|
||||
current_title.append(groups[0])
|
||||
match = _title_re.match(first)
|
||||
|
||||
if current_title:
|
||||
self.title_list.append((key," ".join(current_title),first))
|
||||
continue
|
||||
|
||||
match = _nick_re.match(first)
|
||||
if match:
|
||||
groups = match.groups()
|
||||
|
@ -39,6 +39,7 @@ from gettext import gettext as _
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
import Utils
|
||||
import RelLib
|
||||
from QuestionDialog import WarningDialog
|
||||
|
||||
_findint = re.compile('^[^\d]*(\d+)[^\d]*')
|
||||
@ -46,14 +47,14 @@ _findint = re.compile('^[^\d]*(\d+)[^\d]*')
|
||||
def runTool(db,active_person,callback,parent):
|
||||
"""Changed person, family, object, source, and place ids"""
|
||||
#FIXME -- Remove when the tool is back from the dead
|
||||
WarningDialog(_('Tool currently unavailable'),
|
||||
_('This tool has not yet been brought up to date '
|
||||
'after transition to the database, sorry.'),parent.topWindow)
|
||||
return
|
||||
#WarningDialog(_('Tool currently unavailable'),
|
||||
# _('This tool has not yet been brought up to date '
|
||||
# 'after transition to the database, sorry.'),parent.topWindow)
|
||||
#return
|
||||
|
||||
#FIXME
|
||||
try:
|
||||
ReorderIds(db,callback)
|
||||
ReorderIds(db)
|
||||
except:
|
||||
import DisplayTrace
|
||||
DisplayTrace.DisplayTrace()
|
||||
@ -65,31 +66,43 @@ def runTool(db,active_person,callback,parent):
|
||||
#-------------------------------------------------------------------------
|
||||
class ReorderIds:
|
||||
|
||||
def __init__(self,db,callback):
|
||||
def __init__(self,db):
|
||||
|
||||
self.db = db
|
||||
|
||||
self.reorder_person()
|
||||
self.reorder(db.get_family_handle_map(),db.fprefix,None)
|
||||
self.reorder(db.get_object_map(),db.oprefix,None)
|
||||
self.reorder(db.get_source_map(),db.sprefix,db.build_source_display)
|
||||
self.reorder(db.get_place_handle_map(),db.pprefix,db.build_place_display)
|
||||
callback(1)
|
||||
self.trans = db.transaction_begin()
|
||||
self.reorder(RelLib.Person, db.get_person_from_gramps_id, db.get_person_from_handle,
|
||||
db.find_next_person_gramps_id, db.get_person_cursor, db.commit_person,
|
||||
db.iprefix)
|
||||
self.reorder(RelLib.Family,db.get_family_from_gramps_id, db.get_family_from_handle,
|
||||
db.find_next_family_gramps_id, db.get_family_cursor, db.commit_family,
|
||||
db.fprefix)
|
||||
self.reorder(RelLib.MediaObject, db.get_object_from_gramps_id, db.get_object_from_handle,
|
||||
db.find_next_object_gramps_id, db.get_media_cursor, db.commit_media_object,
|
||||
db.oprefix)
|
||||
self.reorder(RelLib.Source, db.get_source_from_gramps_id, db.get_source_from_handle,
|
||||
db.find_next_source_gramps_id, db.get_source_cursor, db.commit_source,
|
||||
db.sprefix)
|
||||
self.reorder(RelLib.Place, db.get_place_from_gramps_id, db.get_place_from_handle,
|
||||
db.find_next_place_gramps_id, db.get_place_cursor, db.commit_place,
|
||||
db.pprefix)
|
||||
db.transaction_commit(self.trans,_("Reorder gramps IDs"))
|
||||
|
||||
def reorder_person(self):
|
||||
def reorder(self, class_type, find_from_id, find_from_handle, find_next_id, get_cursor, commit, prefix):
|
||||
dups = []
|
||||
newids = {}
|
||||
key_list = []
|
||||
|
||||
# search all ids in the map
|
||||
|
||||
cursor = self.db.get_person_cursor()
|
||||
cursor = get_cursor()
|
||||
data = cursor.first()
|
||||
while data:
|
||||
(handle,sdata) = data
|
||||
|
||||
gramps_id = sdata[1]
|
||||
|
||||
obj = class_type()
|
||||
obj.unserialize(sdata)
|
||||
gramps_id = obj.get_gramps_id()
|
||||
# attempt to extract integer, if we can't, treat it as a
|
||||
# duplicate
|
||||
|
||||
@ -104,42 +117,27 @@ class ReorderIds:
|
||||
newgramps_id = prefix % int(index)
|
||||
if newgramps_id == gramps_id:
|
||||
newids[newgramps_id] = gramps_id
|
||||
continue
|
||||
elif data_map.has_key(newgramps_id):
|
||||
dups.append(handle)
|
||||
elif find_from_id(newgramps_id) != None:
|
||||
dups.append(obj.get_handle())
|
||||
else:
|
||||
data = data_map[gramps_id]
|
||||
data_map[newgramps_id] = data
|
||||
newids[newgramps_id] = gramps_id
|
||||
data.set_gramps_id(newgramps_id)
|
||||
del data_map[gramps_id]
|
||||
if update:
|
||||
update(newgramps_id,gramps_id)
|
||||
commit(obj,self.trans)
|
||||
newids[newgramps_id] = gramps_id
|
||||
except:
|
||||
dups.append(handle)
|
||||
else:
|
||||
dups.append(handle)
|
||||
|
||||
data = cursor.next()
|
||||
|
||||
cursor.close()
|
||||
|
||||
# go through the duplicates, looking for the first availble
|
||||
# handle that matches the new scheme.
|
||||
|
||||
index = 0
|
||||
for gramps_id in dups:
|
||||
while 1:
|
||||
newgramps_id = prefix % index
|
||||
if not newids.has_key(newgramps_id):
|
||||
break
|
||||
index = index + 1
|
||||
newids[newgramps_id] = newgramps_id
|
||||
data = data_map[gramps_id]
|
||||
data.set_gramps_id(newgramps_id)
|
||||
data_map[newgramps_id] = data
|
||||
if update:
|
||||
update(newgramps_id,gramps_id)
|
||||
del data_map[gramps_id]
|
||||
for handle in dups:
|
||||
obj = find_from_handle(handle)
|
||||
obj.set_gramps_id(find_next_id())
|
||||
commit(obj,self.trans)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
|
@ -845,7 +845,7 @@ class ScratchPadWindow:
|
||||
|
||||
def on_help_clicked(self,obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
help_display('gramps-manual','tools-util')
|
||||
help_display('gramps-manual','tools-util-scratch-pad')
|
||||
|
||||
def on_close_scratchpad(self,obj):
|
||||
self.remove_itself_from_menu()
|
||||
|
@ -117,7 +117,7 @@ class SoundGen:
|
||||
|
||||
def on_help_clicked(self,obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
help_display('gramps-manual','tools-util')
|
||||
help_display('gramps-manual','tools-util-other')
|
||||
|
||||
def on_delete_event(self,obj,b):
|
||||
self.remove_itself_from_menu()
|
||||
|
@ -524,9 +524,9 @@ class StatisticsChart(Report.Report):
|
||||
# document heading
|
||||
mapping['chart_title'] = table[0]
|
||||
if genders:
|
||||
heading = "%(genders)s born %(year_from)04d-%(year_to)04d: %(chart_title)s" % mapping
|
||||
heading = _("%(genders)s born %(year_from)04d-%(year_to)04d: %(chart_title)s") % mapping
|
||||
else:
|
||||
heading = "Persons born %(year_from)04d-%(year_to)04d: %(chart_title)s" % mapping
|
||||
heading = _("Persons born %(year_from)04d-%(year_to)04d: %(chart_title)s") % mapping
|
||||
self.data.append((heading, table[1], lookup))
|
||||
#DEBUG
|
||||
#print heading
|
||||
@ -899,7 +899,7 @@ class StatisticsChartOptions(ReportOptions.ReportOptions):
|
||||
tip = _("With fewer items pie chart and legend will be used instead of a bar chart.")
|
||||
self.bar_items = gtk.Entry(2)
|
||||
self.bar_items.set_text(str(self.options_dict['bar_items']))
|
||||
dialog.add_option("Min. bar char items", self.bar_items, tip)
|
||||
dialog.add_option(_("Min. bar char items"), self.bar_items, tip)
|
||||
|
||||
# -------------------------------------------------
|
||||
# List of available charts on a separate option tab
|
||||
@ -919,12 +919,12 @@ class StatisticsChartOptions(ReportOptions.ReportOptions):
|
||||
vbox = gtk.VBox()
|
||||
hbox.add(vbox)
|
||||
tip = _("Mark checkboxes to add charts with indicated data")
|
||||
dialog.add_frame_option("Chart Selection", "", hbox, tip)
|
||||
dialog.add_frame_option(_("Chart Selection"), "", hbox, tip)
|
||||
hbox.show_all()
|
||||
|
||||
# Note about children
|
||||
label = gtk.Label(_("Note that both biological and adopted children are taken into account."))
|
||||
dialog.add_frame_option("Chart Selection", "", label)
|
||||
dialog.add_frame_option(_("Chart Selection"), "", label)
|
||||
|
||||
|
||||
def parse_user_options(self, dialog):
|
||||
@ -958,5 +958,5 @@ register_report(
|
||||
status = (_("Alpha")),
|
||||
author_name="Eero Tamminen",
|
||||
author_email="",
|
||||
description= _("Generates statistical bar graphs.")
|
||||
description= _("Generates statistical bar and pie charts of the people in the database.")
|
||||
)
|
||||
|
@ -522,9 +522,9 @@ class TestcaseGenerator:
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
def TestcaseGeneratorPlugin(database,active_person,callback,parent=None):
|
||||
print "TestcaseGeneratorPlugin"
|
||||
fg = TestcaseGenerator(database,active_person,callback,parent)
|
||||
fg.run()
|
||||
if not database.readonly:
|
||||
fg = TestcaseGenerator(database,active_person,callback,parent)
|
||||
fg.run()
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
|
@ -109,7 +109,7 @@ class Verify:
|
||||
|
||||
def on_help_clicked(self,obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
help_display('gramps-manual','tools-util')
|
||||
help_display('gramps-manual','tools-util-other')
|
||||
|
||||
def get_year(self,event_handle):
|
||||
"""
|
||||
|
@ -66,26 +66,35 @@ _level_name_plural = [ "", "primeros", "segundos", "terceros", "cuartos",
|
||||
"decimoséptimos", "decimoctavos", "decimononos",
|
||||
"vigésimos", ]
|
||||
|
||||
# This plugin tries to be flexible and expect little from the following
|
||||
# tables. Ancestors are named from the list for the first generations.
|
||||
# When this list is not enough, ordinals are used based on the same idea,
|
||||
# i.e. bisabuelo is 'segundo abuelo' and so on, that has been the
|
||||
# traditional way in Spanish. When we run out of ordinals we resort to
|
||||
# N-ésimo notation, that is sort of understandable if in context.
|
||||
_parents_level = [ "", "padres", "abuelos", "bisabuelos", "tatarabuelos",
|
||||
"trastatarabuelos"]
|
||||
|
||||
_father_level = [ "", "padre", "abuelo", "bisabuelo", "tatarabuelo",
|
||||
"trastatarabuelo"]
|
||||
|
||||
_mother_level = [ "", "madre", "abuela", "bisabuela", "tatarabuela",
|
||||
"trastatarabuela"]
|
||||
|
||||
# Higher-order terms (after trastatarabuelo) on this list are not standard,
|
||||
# but then there is no standard naming scheme at all for this in Spanish.
|
||||
# Check http://www.genealogia-es.com/guia3.html that echoes a proposed
|
||||
# scheme that has got some reception in the Spanish-language genealogy
|
||||
# community. This plugin implements a scheme based on this list. When
|
||||
# this list is not enough, ordinals are used based on the same idea, i.e.
|
||||
# bisabuelo is 'segundo abuelo' and so on. When we run out of ordinals
|
||||
# we resort to N-ésimo notation, that is sort of understandable if in
|
||||
# context.
|
||||
_parents_level = [ "", "padres", "abuelos", "bisabuelos", "tatarabuelos",
|
||||
"trastatarabuelos", "pentabuelos", "hexabuelos",
|
||||
"heptabuelos", "octabuelos", "eneabuelos", "decabuelos"]
|
||||
|
||||
_father_level = [ "", "padre", "abuelo", "bisabuelo", "tatarabuelo",
|
||||
"trastatarabuelo", "pentabuelo", "hexabuelo",
|
||||
"heptabuelo", "octabuelo", "eneabuelo", "decabuelo"]
|
||||
|
||||
_mother_level = [ "", "madre", "abuela", "bisabuela", "tatarabuela",
|
||||
"trastatarabuela", "pentabuela", "hexabuela",
|
||||
"heptabuela", "octabuela", "eneabuela", "decabuela"]
|
||||
# community. Uncomment these names if you want to use them.
|
||||
#_parents_level = [ "", "padres", "abuelos", "bisabuelos", "tatarabuelos",
|
||||
# "trastatarabuelos", "pentabuelos", "hexabuelos",
|
||||
# "heptabuelos", "octabuelos", "eneabuelos", "decabuelos"]
|
||||
#_father_level = [ "", "padre", "abuelo", "bisabuelo", "tatarabuelo",
|
||||
# "trastatarabuelo", "pentabuelo", "hexabuelo",
|
||||
# "heptabuelo", "octabuelo", "eneabuelo", "decabuelo"]
|
||||
#_mother_level = [ "", "madre", "abuela", "bisabuela", "tatarabuela",
|
||||
# "trastatarabuela", "pentabuela", "hexabuela",
|
||||
# "heptabuela", "octabuela", "eneabuela", "decabuela"]
|
||||
|
||||
_son_level = [ "", "hijo", "nieto", "bisnieto",
|
||||
"tataranieto", "trastataranieto", ]
|
||||
|