Compare commits
87 Commits
v5.2.0-dev
...
v3.0.0
Author | SHA1 | Date | |
---|---|---|---|
|
ed0426ac34 | ||
|
f720cfe7fb | ||
|
b95994678e | ||
|
11406fffef | ||
|
90e56690fb | ||
|
50265cc296 | ||
|
0584a03899 | ||
|
fa1e30080c | ||
|
d8a8f12207 | ||
|
e18be38cc2 | ||
|
a996c60201 | ||
|
7592313d61 | ||
|
22b2c85358 | ||
|
6395ae2a81 | ||
|
ca6d6d4955 | ||
|
e512644352 | ||
|
f1461a9265 | ||
|
740aa0405b | ||
|
166eece884 | ||
|
6cbdb0e4c1 | ||
|
143aa70a6a | ||
|
f9da7bca88 | ||
|
c96f77ef51 | ||
|
0e37a365aa | ||
|
334fed79ae | ||
|
33e19a643c | ||
|
923e3d2f6a | ||
|
b59805d5d9 | ||
|
0afdcdc48f | ||
|
6cb7eb77be | ||
|
03e714752d | ||
|
7c982e344e | ||
|
2db5afa52b | ||
|
938d844f35 | ||
|
5a3bdec970 | ||
|
d753903dda | ||
|
0d2ed79e46 | ||
|
449203c668 | ||
|
1c38e95944 | ||
|
96bc205af0 | ||
|
4cf87cfa6c | ||
|
a6572c6f81 | ||
|
5fe0eea37a | ||
|
c691d7ea93 | ||
|
a95b3093e1 | ||
|
3e93a0b9c2 | ||
|
9a70f5e8ef | ||
|
c39ffa9ef7 | ||
|
120e4cce20 | ||
|
279b6225f9 | ||
|
1a9067e7de | ||
|
961b06d57b | ||
|
8fb50257d8 | ||
|
52923b9246 | ||
|
298a023ca8 | ||
|
23592e3aed | ||
|
c2358378da | ||
|
6c041d016e | ||
|
f7d311f184 | ||
|
4072288ea6 | ||
|
ddbc702c83 | ||
|
634be62d3b | ||
|
2d79f15cfe | ||
|
636b8204f6 | ||
|
fe0810f19f | ||
|
7cd056fc7b | ||
|
1c7d6829d6 | ||
|
b9db018370 | ||
|
d684fd400f | ||
|
9e0021fe9f | ||
|
95f43374b7 | ||
|
f397fa326a | ||
|
3ed0317099 | ||
|
f801dfceba | ||
|
7a7bd257d4 | ||
|
3b27bdaefb | ||
|
4a30aaeca3 | ||
|
81b255b596 | ||
|
0609c8a855 | ||
|
b2c6a1e969 | ||
|
f1a66988fd | ||
|
4702273d15 | ||
|
cfc621bed9 | ||
|
456f0dc99f | ||
|
02293637ff | ||
|
57e1a3d376 | ||
|
3264c7c843 |
ChangeLogChangeLog.oldINSTALLNEWSconfigure.in
data/man
po
src
Bookmarks.py
Config
DataViews
DbManager.pyFilters
Rules
SideBar
GrampsDbUtils
Merge
PageView.pyPluginUtils
ReportBase
data
docgen
gen
glade
gramps_main.pyimages
plugins
25135
ChangeLog.old
25135
ChangeLog.old
File diff suppressed because it is too large
Load Diff
287
INSTALL
287
INSTALL
@@ -1,89 +1,236 @@
|
||||
$Id$
|
||||
Installation Instructions
|
||||
*************************
|
||||
|
||||
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 already done by the packager.
|
||||
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
|
||||
Software Foundation, Inc.
|
||||
|
||||
This file is free documentation; the Free Software Foundation gives
|
||||
unlimited permission to copy, distribute and modify it.
|
||||
|
||||
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 SVN,
|
||||
the configure is not present. You should auto-generate it by
|
||||
running ./autogen.sh and then "make" and, finally, "make install".
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
Running ./autogen.sh on this branch of gramps requires the following
|
||||
packages to be installed:
|
||||
* automake-1.9
|
||||
* gnome-common
|
||||
* intltool
|
||||
* libglib2.0-dev (may be called differently on other distros) and
|
||||
maybe something else. If autogen.sh fails, it should inform you what's
|
||||
missing.
|
||||
These are generic installation instructions.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
those values to create a `Makefile' in each directory of the package.
|
||||
It may also create one or more `.h' files containing system-dependent
|
||||
definitions. Finally, it creates a shell script `config.status' that
|
||||
you can run in the future to recreate the current configuration, and a
|
||||
file `config.log' containing compiler output (useful mainly for
|
||||
debugging `configure').
|
||||
|
||||
Regular vs local installation
|
||||
-----------------------------
|
||||
This version of gramps requires, among others, the following to be done:
|
||||
It can also use an optional file (typically called `config.cache'
|
||||
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
||||
the results of its tests to speed up reconfiguring. (Caching is
|
||||
disabled by default to prevent problems with accidental use of stale
|
||||
cache files.)
|
||||
|
||||
mime types for gramps MUST be properly installed.
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how `configure' could check whether to do them, and mail
|
||||
diffs or instructions to the address given in the `README' so they can
|
||||
be considered for the next release. If you are using the cache, and at
|
||||
some point `config.cache' contains results you don't want to keep, you
|
||||
may remove or edit it.
|
||||
|
||||
The usual ./configure, make, and make install as a root should do the trick.
|
||||
The file `configure.ac' (or `configure.in') is used to create
|
||||
`configure' by a program called `autoconf'. You only need
|
||||
`configure.ac' if you want to change it or regenerate `configure' using
|
||||
a newer version of `autoconf'.
|
||||
|
||||
But be careful if you're using the non-default options or would like
|
||||
to install without being root.
|
||||
The simplest way to compile this package is:
|
||||
|
||||
The latter is possible, but you should supply additional arguments to
|
||||
autogen or configure:
|
||||
--with-mime-dir=$HOME/.local/share/mime
|
||||
--disable-scrollkeeper
|
||||
Most likely, such local install will also need some prefix with write
|
||||
permissions for you:
|
||||
--prefix=$HOME/my_gramps_path
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system. If you're
|
||||
using `csh' on an old version of System V, you might need to type
|
||||
`sh ./configure' instead to prevent `csh' from trying to execute
|
||||
`configure' itself.
|
||||
|
||||
Whether you're doing local install or regular install,
|
||||
YOU MUST INSTALL MIME TYPES.
|
||||
YOU HAVE BEEN WARNED!
|
||||
Running `configure' takes awhile. While running, it prints some
|
||||
messages telling which features it is checking for.
|
||||
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
Installing under non-default prefix
|
||||
-----------------------------------
|
||||
As hinted above, mime types for gramps MUST be properly installed.
|
||||
The "proper install" means installing
|
||||
them where the shared mime system will find them.
|
||||
3. Optionally, type `make check' to run any self-tests that come with
|
||||
the package.
|
||||
|
||||
By default, the shared mime systems will look in these places:
|
||||
1. /usr/share/mime
|
||||
2. /usr/local/share/mime : this may be broken on some systems
|
||||
3. $HOME/.local/share/mime : this is a per-user setup, not system-wide
|
||||
There's a number of ways to instruct the shared mime system
|
||||
to look in other places, but this is the whole other story.
|
||||
4. Type `make install' to install the programs and any data files and
|
||||
documentation.
|
||||
|
||||
So if you install some place other than /usr/share, you will most
|
||||
likely need to add this option to autogen.sh/configure scripts:
|
||||
--with-mime-dir=/usr/share/mime
|
||||
5. You can remove the program binaries and object files from the
|
||||
source code directory by typing `make clean'. To also remove the
|
||||
files that `configure' created (so you can compile the package for
|
||||
a different kind of computer), type `make distclean'. There is
|
||||
also a `make maintainer-clean' target, but that is intended mainly
|
||||
for the package's developers. If you use it, you may have to get
|
||||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
Using the --prefix=/usr/share and installing as a root will most
|
||||
likely do everything correctly, so no extra care needs to be
|
||||
taken. You should take extra care only if you are installing under
|
||||
something like --prefix=/usr/local/my_gramps, /var/gramps123/blah, etc.
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that the
|
||||
`configure' script does not know about. Run `./configure --help' for
|
||||
details on some of the pertinent environment variables.
|
||||
|
||||
Packager's issues
|
||||
------------------
|
||||
The above mime types must be installed.
|
||||
However, the update-mime-database 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.
|
||||
You can give `configure' initial values for configuration parameters
|
||||
by setting variables in the command line or in the environment. Here
|
||||
is an example:
|
||||
|
||||
./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
|
||||
|
||||
*Note Defining Variables::, for more details.
|
||||
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you must use a version of `make' that
|
||||
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
||||
directory where you want the object files and executables to go and run
|
||||
the `configure' script. `configure' automatically checks for the
|
||||
source code in the directory that `configure' is in and in `..'.
|
||||
|
||||
If you have to use a `make' that does not support the `VPATH'
|
||||
variable, you have to compile the package for one architecture at a
|
||||
time in the source code directory. After you have installed the
|
||||
package for one architecture, use `make distclean' before reconfiguring
|
||||
for another architecture.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' installs the package's commands under
|
||||
`/usr/local/bin', include files under `/usr/local/include', etc. You
|
||||
can specify an installation prefix other than `/usr/local' by giving
|
||||
`configure' the option `--prefix=PREFIX'.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
|
||||
PREFIX as the prefix for installing programs and libraries.
|
||||
Documentation and other data files still use the regular prefix.
|
||||
|
||||
In addition, if you use an unusual directory layout you can give
|
||||
options like `--bindir=DIR' to specify different values for particular
|
||||
kinds of files. Run `configure --help' for a list of the directories
|
||||
you can set and what kinds of files go in them.
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving `configure' the
|
||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
`README' should mention any `--enable-' and `--with-' options that the
|
||||
package recognizes.
|
||||
|
||||
For packages that use the X Window System, `configure' can usually
|
||||
find the X include and library files automatically, but if it doesn't,
|
||||
you can use the `configure' options `--x-includes=DIR' and
|
||||
`--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' cannot figure out automatically,
|
||||
but needs to determine by the type of machine the package will run on.
|
||||
Usually, assuming the package is built to be run on the _same_
|
||||
architectures, `configure' can figure that out, but if it prints a
|
||||
message saying it cannot guess the machine type, give it the
|
||||
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name which has the form:
|
||||
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
where SYSTEM can have one of these forms:
|
||||
|
||||
OS KERNEL-OS
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
need to know the machine type.
|
||||
|
||||
If you are _building_ compiler tools for cross-compiling, you should
|
||||
use the option `--target=TYPE' to select the type of system they will
|
||||
produce code for.
|
||||
|
||||
If you want to _use_ a cross compiler, that generates code for a
|
||||
platform different from the build platform, you should specify the
|
||||
"host" platform (i.e., that on which the generated programs will
|
||||
eventually be run) with `--host=TYPE'.
|
||||
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share, you
|
||||
can create a site shell script called `config.site' that gives default
|
||||
values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
A warning: not all `configure' scripts look for a site script.
|
||||
|
||||
Defining Variables
|
||||
==================
|
||||
|
||||
Variables not defined in a site shell script can be set in the
|
||||
environment passed to `configure'. However, some packages may run
|
||||
configure again during the build, and the customized values of these
|
||||
variables may be lost. In order to avoid this problem, you should set
|
||||
them in the `configure' command line, using `VAR=value'. For example:
|
||||
|
||||
./configure CC=/usr/local2/bin/gcc
|
||||
|
||||
causes the specified `gcc' to be used as the C compiler (unless it is
|
||||
overridden in the site shell script). Here is a another example:
|
||||
|
||||
/bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||
|
||||
Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
|
||||
configuration-related scripts to be executed by `/bin/bash'.
|
||||
|
||||
`configure' Invocation
|
||||
======================
|
||||
|
||||
`configure' recognizes the following options to control how it operates.
|
||||
|
||||
`--help'
|
||||
`-h'
|
||||
Print a summary of the options to `configure', and exit.
|
||||
|
||||
`--version'
|
||||
`-V'
|
||||
Print the version of Autoconf used to generate the `configure'
|
||||
script, and exit.
|
||||
|
||||
`--cache-file=FILE'
|
||||
Enable the cache: use and save the results of the tests in FILE,
|
||||
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
||||
disable caching.
|
||||
|
||||
`--config-cache'
|
||||
`-C'
|
||||
Alias for `--cache-file=config.cache'.
|
||||
|
||||
`--quiet'
|
||||
`--silent'
|
||||
`-q'
|
||||
Do not print messages saying which checks are being made. To
|
||||
suppress all normal output, redirect it to `/dev/null' (any error
|
||||
messages will still be shown).
|
||||
|
||||
`--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options. Run
|
||||
`configure --help' for more details.
|
||||
|
||||
To assist with that, there's an argument available in configure
|
||||
(or autogen, which will pass it to configure) which disables
|
||||
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 post-install (and post-uninstall)
|
||||
of the particular packaging system.
|
||||
|
10
NEWS
10
NEWS
@@ -1,4 +1,4 @@
|
||||
Version 3.0.0 -- the "" release
|
||||
Version 3.0.0 -- the "It was just getting interesting." release
|
||||
* Rewrite of the GEDCOM parser
|
||||
* Export views to a spreadsheet
|
||||
* Formatted notes
|
||||
@@ -8,6 +8,14 @@ Version 3.0.0 -- the "" release
|
||||
* New database manager, allowing create, deletion, renaming, repair and
|
||||
revison control
|
||||
|
||||
Version 2.2.10 -- the "Lemon Curry?" release
|
||||
|
||||
Version 2.2.9 -- the "Here's your ninepence" release
|
||||
|
||||
Version 2.2.8 -- the "You sons of a silly person" release
|
||||
|
||||
Version 2.2.7 -- the "Well, I didn't vote for you." release
|
||||
|
||||
Version 2.2.6 -- the "Summarize Proust Competition" release
|
||||
* Fix report option saving
|
||||
|
||||
|
10
configure.in
10
configure.in
@@ -4,17 +4,18 @@ 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, 2.90.0, [gramps-bugs@lists.sourceforge.net])
|
||||
dnl NOTE: 1st arg to macro below becomes the "VERSION"
|
||||
AC_INIT(gramps, 3.0.0, [gramps-bugs@lists.sourceforge.net])
|
||||
AC_CONFIG_SRCDIR(configure.in)
|
||||
AM_INIT_AUTOMAKE(1.6.3)
|
||||
AM_INIT_AUTOMAKE([1.6.3 foreign])
|
||||
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
GNOME_DOC_INIT
|
||||
|
||||
RELEASE=0.SVN$(svnversion -n .)
|
||||
dnl RELEASE=0.SVN$(svnversion -n .)
|
||||
dnl RELEASE=0beta
|
||||
dnl RELEASE=0rc1
|
||||
dnl RELEASE=1
|
||||
RELEASE=1
|
||||
|
||||
VERSIONSTRING=$VERSION
|
||||
if test x"$RELEASE" != "x"
|
||||
@@ -192,6 +193,7 @@ data/Makefile
|
||||
data/man/Makefile
|
||||
data/man/fr/Makefile
|
||||
data/man/nl/Makefile
|
||||
data/man/pl/Makefile
|
||||
data/man/sv/Makefile
|
||||
example/Makefile
|
||||
example/gramps/Makefile
|
||||
|
@@ -1,7 +1,7 @@
|
||||
# This is the data/man level Makefile for Gramps
|
||||
# $Id$
|
||||
|
||||
SUBDIRS = fr sv nl
|
||||
SUBDIRS = fr sv nl pl
|
||||
|
||||
man_IN_FILES = gramps.1.in
|
||||
man_MANS = $(man_IN_FILES:.1.in=.1)
|
||||
|
14
data/man/pl/Makefile.am
Normal file
14
data/man/pl/Makefile.am
Normal file
@@ -0,0 +1,14 @@
|
||||
# This is the data/man/pl level Makefile for Gramps
|
||||
# $Id: Makefile.am 6189 2006-03-21 19:05:46Z rshura $
|
||||
|
||||
man_IN_FILES = gramps.1.in
|
||||
man_MANS = $(man_IN_FILES:.1.in=.1)
|
||||
|
||||
mandir = @mandir@/pl
|
||||
|
||||
EXTRA_DIST = $(man_MANS) $(man_IN_FILES)
|
||||
|
||||
gramps.1: $(top_builddir)/config.status gramps.1.in
|
||||
cd $(top_builddir) && CONFIG_FILES=data/man/pl/$@ $(SHELL) ./config.status
|
||||
|
||||
CLEANFILES=$(man_MANS)
|
366
data/man/pl/gramps.1.in
Normal file
366
data/man/pl/gramps.1.in
Normal file
@@ -0,0 +1,366 @@
|
||||
.TH gramps 1 "@VERSION@" "January 2008" "@VERSION@"
|
||||
.SH NAME
|
||||
gramps \- Genealogical Research and Analysis Management Programming System.
|
||||
.br
|
||||
(w wolnym tłumaczeniu: System Wspomagania Badań Genealogicznych
|
||||
i Programowego Zarządzania Tą Informacją)
|
||||
|
||||
.SH SYNOPSIS
|
||||
.B gramps
|
||||
.RB [ \-?|\-\^\-help ]
|
||||
.RB [ \-\^\-usage ]
|
||||
.RB [ \-\^\-version ]
|
||||
.RB [ \-l ]
|
||||
.RB [ \-u|\-\^\-force-unlock ]
|
||||
.RB [ \-O|\-\^\-open=
|
||||
.IR BAZA_DANYCH
|
||||
.RB [ \-f|\-\^\-format=
|
||||
.IR FORMAT ]]
|
||||
.RB [ \-i|\-\^\-import=
|
||||
.IR PLIK
|
||||
.RB [ \-f|\-\^\-format=
|
||||
.IR FORMAT ]]
|
||||
.RB [ \-i|\-\^\-import=
|
||||
.IR ... ]
|
||||
.RB [ \-o|\-\^\-output=
|
||||
.IR PLIK
|
||||
.RB [ \-f|\-\^\-format=
|
||||
.IR FORMAT ]]
|
||||
.RB [ \-a|\-\^\-action=
|
||||
.IR AKCJA ]
|
||||
.RB [ \-p|\-\^\-options=
|
||||
.IR CIĄG_OPCJI ]]
|
||||
.RB [
|
||||
.IR PLIK
|
||||
.RB ]
|
||||
.if 0 .RB [ bonobo\ options ]
|
||||
.if 0 .RB [ sound\ options ]
|
||||
.RB [ \-\-version ]
|
||||
|
||||
.SH OPIS
|
||||
.PP
|
||||
\fIGramps\fP jest wolnym, darmowym programem genealogicznym OpenSource. Jest
|
||||
napisany w Python, przy użyciu interfejsu GTK+/GNOME.
|
||||
Dla każdego, kto wcześniej używał innego programu genealogicznego (np.
|
||||
\fIFamily Tree Maker (TM)\fR, \fIPersonal Ancestral Files (TM)\fR,
|
||||
lub GNU Geneweb), zapoznanie się z interfejsem Gramps'a będzie natychmiastowe.
|
||||
Program obsługuje także import i eksport w popularnym formacie GEDCOM, który
|
||||
jest używany przez większość programów genealogicznych na świecie.
|
||||
|
||||
.SH OPCJE
|
||||
.TP
|
||||
.BI gramps " PLIK"
|
||||
Kiedy \fIPLIK\fR jest podany (bez żadnych flag) jako nazwa drzewa rodzinnego
|
||||
albo nazwa katalogu z drzewem, to wybrane drzewo jest otwierane i rozpoczynana
|
||||
jest sesja interaktywna. Jeśli PLIK jest formatem rozpoznawanym przez GRAMPS,
|
||||
to tworzone jest puste drzewo, którego nazwa bazuje na nazwie \fIPLIKU\fP
|
||||
i dane są do niego importowane. Pozostałe opcje są wtedy ignorowane.
|
||||
Jest to sposób na używanie programu jako uchwytu obsługującego
|
||||
dane genealogiczne, np. w przeglądarce internetowej. Takie wywołanie akceptuje
|
||||
każdy format natywny dla grampsa, zobacz poniżej.
|
||||
.br
|
||||
|
||||
.TP
|
||||
.BI \-f,\-\^\-format= " FORMAT"
|
||||
Jawne określenie formatu \fIPLIKU\fR przez poprzedzenie opcji
|
||||
.ig
|
||||
\fB\-O\fR,
|
||||
..
|
||||
\fB\-i\fR, lub \fB\-o\fR.
|
||||
Jeśli opcja \fB\-f\fR nie jest podana dla żadnego \fIPLIKU\fR,
|
||||
to format pliku jest określany na podstawie rozszerzenia albo typu MIME.
|
||||
.br
|
||||
|
||||
Dostępne formaty wyjściowe to:
|
||||
.br
|
||||
\fBgramps\-xml\fR (używany jeśli \fIPLIK\fR kończy się na \fB.gramps\fR),
|
||||
.br
|
||||
\fBgedcom\fR (przyjmowany jeśli \fIPLIK\fR kończy się na \fB.ged\fR),
|
||||
.br
|
||||
lub dowolny plik eksportu obsługiwany przez system wtyczek GRAMPS.
|
||||
.br
|
||||
|
||||
Formaty
|
||||
dostępne dla importu to:
|
||||
\fBgrdb\fR, \fBgramps\-xml\fR, \fBgedcom\fR,
|
||||
.br
|
||||
\fBgramps\-pkg\fR (przyjmowany jeśli \fIPLIK\fR kończy się na \fB.gpkg\fR),
|
||||
.br
|
||||
oraz \fBgeneweb\fR (przyjmowany jeśli \fIPLIK\fR ma rozszerzenie \fB.gw\fR).
|
||||
.br
|
||||
|
||||
Formats dostępne dla eksportu to:
|
||||
.ig
|
||||
\fBgrdb\fR,
|
||||
..
|
||||
\fBgramps\-xml\fR, \fBgedcom\fR,
|
||||
\fBgramps\-pkg\fR, \fBwft\fR (jeśli rozszerzenie \fIPLIKU\fR to \fB.wft\fR),
|
||||
\fBgeneweb\fR, i \fBiso\fR (używany tylko, jeśli jawnie określony przez
|
||||
parametr \fB\-f\fR ).
|
||||
|
||||
.TP
|
||||
.BI \-l
|
||||
Wyświetla listę dosŧępnych drzew genealogicznych.
|
||||
|
||||
.TP
|
||||
.BI \-u,\-\^\-force-unlock
|
||||
Wymusza odblokowanie bazy danych.
|
||||
|
||||
.TP
|
||||
.BI \-O,\-\^\-open= " BAZA_DANYCH"
|
||||
Otwiera \fIBAZĘ_DANYCH\fR, która musi istnieć w katalogu baz lub być nazwą
|
||||
istniejącego drzewa rodzinnego. Jeśli nie podano akcji, to opcje eksportu
|
||||
albo importu są wykonywane, a następnie jest uruchamiana sesja interaktywna
|
||||
z otwarciem wybranej bazy.
|
||||
|
||||
.TP
|
||||
.BI \-i,\-\^\-import= " PLIK"
|
||||
Importuje dane z \fIPLIKU\fR. Jeśli nie określono bazy danych, to
|
||||
tworzona jest tymczasowa baza kasowana po zamknięciu programu.
|
||||
.br
|
||||
|
||||
Kiedy podany jest więcej niż jeden plik do importu, to każdy z nich musi być
|
||||
poprzedzony flagą \fB\-i\fR. Pliki są importowane w kolejności podanej w linii
|
||||
poleceń, np.: \fB\-i\fR \fIPLIK1\fR \fB\-i\fR \fIPLIK2\fR oraz
|
||||
\fB\-i\fR \fIPLIK2\fR \fB\-i\fR \fIPLIK1\fR mogą utworzyć inne identyfikatory
|
||||
(gramps ID) w bazie wynikowej.
|
||||
|
||||
.TP
|
||||
.BI \-o,\-\^\-output= " PLIK"
|
||||
Eksportuje dane do \fIPLIKU\fR. Dla formatu \fBiso\fR, \fIPLIK\fR natomiast
|
||||
nazwą katalogu, do którego baza danych gramps zostanie zapisana.
|
||||
Dla
|
||||
.ig
|
||||
\fBgrdb\fR,
|
||||
..
|
||||
\fBgramps\-xml\fR, \fBgedcom\fR, \fBwft\fR, \fBgramps\-pkg\fR,
|
||||
oraz \fBgeneweb\fR, \fIPLIK\fR jest nazwą pliku wynikowego.
|
||||
.br
|
||||
|
||||
Kiedy więcej niż jeden plik wyjściowy jest podany, każdy musi być poprzedzony
|
||||
flagą \fB\-o\fR. Pliki będą zapisywane kolejno, w podanej przez parametry
|
||||
kolejności.
|
||||
|
||||
.TP
|
||||
.BI \-a,\-\^\-action= " AKCJA"
|
||||
Wykonuje \fIAKCJĘ\fR na zaimportowanych danych. Działanie to jest wykonywane
|
||||
dopiero, gdy wszystkie określone importy zakończą się powodzeniem. Aktualnie
|
||||
dostępne akcje to:
|
||||
.br
|
||||
\fBsummary\fR (taka sama jak Raporty->Wyświetl->Podsumowanie bazy danych),
|
||||
.br
|
||||
\fBcheck\fR (tożsama z Narzędzia->Naprawa bazy danych->Sprawdź i napraw bazę),
|
||||
.br
|
||||
\fBreport\fR (generuje raport), oraz
|
||||
.br
|
||||
\fBtool\fR (uruchamia narzędzie/wtyczkę).
|
||||
Zarówno \fBreport\fR jak i \fBtool\fR wymagają podania \fICIĄGU_OPCJI\fR
|
||||
poprzedzonego flagą \fB\-p\fR ).
|
||||
.br
|
||||
|
||||
\fICIĄG_OPCJI\fR powinien spełniać następujące warunki:
|
||||
.br
|
||||
Nie może zawierać spacji.
|
||||
Jeśli niektóre argumenty wymagają spacji, ciąg powinien być enkapsulowany
|
||||
w znakach cudzysłowu, (zobacz składnię powłoki). Ciąg opcji jest listą
|
||||
parametrów z nazwą i wartością oddzielonymi znakiem równości. Kolejne
|
||||
parametry muszą być oddzielone od siebie znakiem przecinka.
|
||||
.br
|
||||
|
||||
Większość opcji dla raportów czy narzędzi jest specyficzna dla konkretnej opcji,
|
||||
jednak część z opcji jest wspólna, szczególnie dla raportów.
|
||||
|
||||
.BI "name=nazwa"
|
||||
.br
|
||||
Opcja wymagana, określający który raport czy narzędzie będzie uruchamiane.
|
||||
Jeśli podana wartość \fInazwy\fR nie pasuje do żadnego dostępnego raportu czy
|
||||
narzędzia, zostanie wyświetlony komunikat o błędzie oraz lista dostępnych
|
||||
raportów albo opcji (w zależności od wartości parametru \fIAKCJA\fR).
|
||||
|
||||
.BI "show=all"
|
||||
.br
|
||||
Wyświetla listę wszystkich nazw dostępnych opcji wraz z krótkim opisem dla
|
||||
danego raportu albo narzędzia.
|
||||
|
||||
.BI "show=nazwa_opcji"
|
||||
.br
|
||||
Wyświetla opis funkcji udostępnianej przez daną \fInazwę_opcji\fR, jak również
|
||||
listę parametrów, które akceptuje dana opcja.
|
||||
|
||||
.br
|
||||
Używając powyższych opcji jesteś w stanie dowiedzieć się o wszystkich
|
||||
możliwościach danego raportu.
|
||||
|
||||
.LP
|
||||
Kiedy więcej niż jeden akcja wyjściowa jest podana, każda musi być poprzedzona
|
||||
flagą \fB\-a\fR. Akcje są wykonywane jedna po drugiej, w kolejności w jakiej
|
||||
występują w linii poleceń.
|
||||
|
||||
.TP
|
||||
.BI \-d,\-\^\-debug= " NAZWA_LOGGERA"
|
||||
Włącza logi debuggowania dla celów programistycznych i testowych. Zobacz
|
||||
do kodu źródłowego po szczegóły.
|
||||
|
||||
.TP
|
||||
.BI \-\^\-version
|
||||
Wyświetla wersję programu i kończy działanie.
|
||||
\" change 0 to 1 to enable output of OAF options
|
||||
.if 1 \{
|
||||
.PP
|
||||
Następujące opcje są używane przy aktywacji Bonobo:
|
||||
.TP
|
||||
.BI \-\^\-oaf-ior-fd= "FD"
|
||||
Deskryptor pliku, do którego wpisać OAF IOR.
|
||||
.TP
|
||||
.BI \-\^\-oaf-activate-iid= " IID"
|
||||
OAF IID do aktywacji.
|
||||
.TP
|
||||
.BI \-\^\-oaf-private
|
||||
Wstgrzymuje rejestrację serwera przez OAF.
|
||||
\}
|
||||
\" change 0 to 1 to enable output of Gnome sound options
|
||||
.if 1 \{
|
||||
.PP
|
||||
Następujące opcje są używane do kontroli dźwięku generowanego za pomocą
|
||||
Gnome Library.
|
||||
.TP
|
||||
.BI \-\^\-disable-sound
|
||||
Wyłącza użycie serwera dźwięku.
|
||||
.TP
|
||||
.BI \-\^\-enable-sound
|
||||
Włącza użycie serwera dźwięku.
|
||||
.TP
|
||||
.BI \-\^\-espeaker= " HOSTNAME:PORT"
|
||||
Host:port na którym jest uruchomiony serwer dźwięku.
|
||||
\}
|
||||
|
||||
.SH "Działanie"
|
||||
.br
|
||||
Jeśli pierwszy argument nie rozpoczyna się znakiem myślnik, (nie jest flagą),
|
||||
to gramps będzie próbował otworzyć plik podany przez pierwszy argument, a
|
||||
następnie sesję interaktywną a pozostałą część parametrów w linii poleceń
|
||||
zignoruje.
|
||||
|
||||
.LP
|
||||
Jeśli podana jest flaga \fB\-O\fR, będzie próbował otworzyć podaną bazę
|
||||
i pracować na danych w niej zawartych realizując podane później polecenia
|
||||
z linii komend.
|
||||
|
||||
.LP
|
||||
Z flagą \fB\-O\fR czy bez, może występować wiele importów, eksportów oraz
|
||||
akcji określonych za pomocą flag \fB\-i\fR, \fB\-o\fR, oraz \fB\-a\fR .
|
||||
|
||||
.LP
|
||||
Kolejność podawania opcji \fB\-i\fR, \fB\-o\fR, czy \fB\-a\fR nie ma znaczenia.
|
||||
Wykonywane są one zawsze w kolejności: wszystkie importy (jeśli podane) ->
|
||||
wszystkie akcje (jeśli podane) -> wszystkie eksporty (jeśli podane)
|
||||
Ale otwarcie bazy zawsze musi być na pierwszym parametrem !
|
||||
|
||||
.LP
|
||||
Jeśli nie podano opcji \fB\-O\fR lub \fB\-i\fR, gramps uruchomi swoje główne
|
||||
okno i rozpocznie normalną sesję interaktywną z pustą bazą danych (ponieważ
|
||||
nie zdołał przetworzyć do niej żadnych danych).
|
||||
|
||||
.LP
|
||||
Jeśli nie podano opcji\fB\-o\fR albo \fB\-a\fR gramps uruchomi swoje głowne
|
||||
okno i rozpocznie normalną sesję interaktywną z bazą będącą wynikiem wszystkich importów. Ta baza będzie znajdować się w pliku \fBimport_db.grdb\fR
|
||||
w katalogu \fB~/.gramps/import\fR.
|
||||
|
||||
.LP
|
||||
Błąd podczas importu, eksportu albo dowolnej akcji będzie przekierowany na
|
||||
\fIstdout\fR (jeśli wyjątek zostanie obsłużony przez gramps) albo na
|
||||
\fIstderr\fR (jeśli nie jest obsłużony). Użyj standardowych przekierowań
|
||||
strumieni \fIstdout\fR oraz \fIstderr\fR jeśli chcesz zapisać wyświetlane
|
||||
informacje i błędy do pliku.
|
||||
|
||||
.SH PRZYKŁADY
|
||||
.TP
|
||||
Aby otworzyć istniejące drzewo rodzinne i zaimportować dane do niego, można wpisać:
|
||||
\fBgramps\fR \fB\-O\fR \fI'Moje drzewo'\fR \fB\-i\fR \fI~/db3.gramps\fR
|
||||
.TP
|
||||
Powyższa opcja otwiera istniejące drzewo, ale gdy chcesz zrobić wykonać taką
|
||||
samą akcję tworząc tymczasowe drzewo: wystarczy wpisać:
|
||||
\fBgramps\fR \fB\-i\fR \fI'Moje drzewo'\fR \fB\-i\fR \fI~/db3.gramps\fR
|
||||
.TP
|
||||
Aby zaimportować cztery bazy (których formaty zostaną określone na podstawie
|
||||
ich nazw) i następnie sprawdić powstałą bazę pod kątem błędów, należy wpisać:
|
||||
\fBgramps\fR \fB\-i\fR \fIplik1.ged\fR \fB\-i\fR \fIplik2.tgz\fR \fB\-i\fR \fI~/db3.gramps\fR \fB\-i\fR \fIplik4.wft\fR \fB\-a\fR \fIcheck\fR
|
||||
.TP
|
||||
Aby jawnie określić formaty w powyższym przykładzie, należy dodać nazwy plików
|
||||
z odpowiednimi opcjami \fB\-f\fR options:
|
||||
\fBgramps\fR \fB\-i\fR \fIplik1.ged\fR \fB\-f\fR \fIgedcom\fR \fB\-i\fR \fIplik2.tgz\fR \fB\-f\fR \fIgramps-pkg\fR \fB\-i\fR \fI~/db3.gramps\fR \fB\-f\fR \fIgramps-xml\fR \fB\-i\fR \fIplik4.wft\fR \fB\-f\fR \fIwft\fR \fB\-a\fR \fIcheck\fR
|
||||
.TP
|
||||
Aby zachować bazę z wynikami wszystkich importów, należy dodać flagę \fB\-o\fR (należy użyć \fB\-f\fR jeśli nazwa pliku nie pozwala gramps'owi na odgadnięcie formatu wyjściowego):
|
||||
\fBgramps\fR \fB\-i\fR \fIplik1.ged\fR \fB\-i\fR \fIplik2.tgz\fR \fB\-o\fR \fI~/nowy-pakiet\fR \fB\-f\fR \fIgramps-pkg\fR
|
||||
.TP
|
||||
W celu zaimportwania trzech baz i rozpoczęcia sesji interaktywnej z wynikiem
|
||||
importu należy użyć polecenia podobnego do poniższego:
|
||||
\fBgramps\fR \fB\-i\fR \fIplik1.ged\fR \fB\-i\fR \fIplik22.tgz\fR \fB\-i\fR \fI~/db3.gramps\fR
|
||||
.TP
|
||||
Aby uruchomić narzędzie weryfikacji z linii poleceń i wyświetlić wyniki na
|
||||
stdout:
|
||||
\fBgramps\fR \fB\-O\fR \fI'Moje drzewo'\fR \fB-a\fR \fItool\fR \fB-p\fR \fBname\fR=\fIverify\fR
|
||||
.TP
|
||||
Zawsze można też po prostu uruchomić sesję interaktywną wpisująć:
|
||||
\fBgramps\fR
|
||||
|
||||
.SH ZMIENNE ŚRODOWISKOWE
|
||||
Program sprawdza w systemie istnienie i wartości następujących zmiennych:
|
||||
|
||||
\fBLANG\fR - określa ustawienia, jaki język zostanie wybrany.
|
||||
Np.: polski to pl_PL.UTF-8.
|
||||
|
||||
\fBGRAMPSHOME\fR - określa folder, w którym będzie zapisywane ustawienia i bazy
|
||||
programu. Domyślnie jest on nieustawiony, a program przyjmuje, że katalog
|
||||
z danymi zostanie utworzony w profilu użytkownika (zmienna HOME pod Linuxem
|
||||
albo USERPROFILE pod Windows 2000/XP).
|
||||
|
||||
|
||||
.SH KONCEPCJA
|
||||
Obsługa systemu rozszerzeń bazującego na pythonie, pozwalającego na dodawanie
|
||||
formatów importu i eksportu zapisów, generatorów raportów, narzędzi i filtrów
|
||||
wyświetlania bez modyfikowania głównego programu
|
||||
.LP
|
||||
Dodatkowo oprócz generowania standardowego wyjścia na drukarkę, raporty mogą
|
||||
także być generowane dla innch systemów i do innych formatów, takich jak:
|
||||
\fIOpenOffice.org\fR, \fIAbiWord\fR, HTML, lub LaTeX aby umożliwić użytkownikm
|
||||
wybór formatu wyjściowego w zależności od ich potrzeb.
|
||||
|
||||
.SH ZNANE BŁĘDY I OGRANICZENIA
|
||||
Prawdopodobne. Lista błędów i propozycji znajduje się na:
|
||||
\fIhttp://developers.gramps-project.org\fR.
|
||||
|
||||
.SH PLIKI
|
||||
.LP
|
||||
\fI${PREFIX}/bin/gramps\fP
|
||||
.br
|
||||
\fI${PREFIX}/share/gramps\fP
|
||||
.br
|
||||
\fI${HOME}/.gramps\fP (jeśli nie użyta została zmienna środowiskowa GRAMPSHOME)
|
||||
|
||||
.SH AUTORZY
|
||||
Donald Allingham \fI<don@gramps-project.org>\fR
|
||||
.br
|
||||
\fIhttp://gramps.sourceforge.net\fR
|
||||
.LP
|
||||
Ta strona man jest tłumaczeniem strony man napisanej przez:
|
||||
.br
|
||||
Brandon L. Griffith \fI<brandon@debian.org>\fR
|
||||
.br
|
||||
dla systemu Debian GNU/Linux.
|
||||
.LP
|
||||
Ta strona aktualnie jest pod opeką:
|
||||
.br
|
||||
Projekt Gramps\fI<xxx@gramps-project.org>\fR
|
||||
.br
|
||||
Tłumaczenie na polski: Łukasz Rymarczyk <yenidai@poczta.onet.pl>
|
||||
.br
|
||||
|
||||
.SH DOCUMENTATION
|
||||
Dokumentacja użytkownika jest dostępna poprzez standardową przeglądarkę
|
||||
pomocy systemu GNOME. Dokumentacja dostępna jest także w formacie XML jako
|
||||
plik \fBgramps-manual.xml\fR w folderze \fIdoc/gramps-manual/$LANG\fR
|
||||
w głównym źródle dystrybucji.
|
||||
.LP
|
||||
Dokumentacja dla programistów jest dostępna na stronie projektu:
|
||||
\fIhttp://developers.gramps-project.org\fR.
|
716
po/ChangeLog
716
po/ChangeLog
@@ -1,716 +0,0 @@
|
||||
2008-03-08 Luigi Toscano <luigi.toscano@tiscali.it>
|
||||
* it.po: massive updates, still far from completion
|
||||
|
||||
2008-03-08 Jerome Rapinat <romjerome@yahoo.fr>
|
||||
* fr.po: Translation update
|
||||
|
||||
2008-03-06 Espen Berg <espenbe@gmail.com>
|
||||
* nb.po: Updated Norwegian translation (still some work to do)
|
||||
* no.po: Updated Norwegian translation (still some work to do)
|
||||
|
||||
2008-03-03 Mirko Leonhäuser <mirko@leonhaeuser.de>
|
||||
* de.po : Translation update
|
||||
|
||||
2008-03-03 Jerome Rapinat <romjerome@yahoo.fr>
|
||||
* fr.po : update
|
||||
|
||||
2008-03-01 Frederik De Richter <frederik.de.richter@pandora.be>
|
||||
* gramps.pot: update
|
||||
* nl.po: Translation update
|
||||
|
||||
2008-02-29 Jerome Rapinat <romjerome@yahoo.fr>
|
||||
* fr.po : update, will clean up old references soon (RC)
|
||||
|
||||
2008-02-25 Raphael Ackermann <raphael.ackermann@gmail.com>
|
||||
* POTFILES.in : add missing plugins/DateParserDisplayTest.py #0001819
|
||||
|
||||
2008-02-23 Bernard Banko <bernard.banko@siol.net>
|
||||
* sl.po: Translation update
|
||||
|
||||
2008-02-22 Frederik De Richter <frederik.de.richter@pandora.be>
|
||||
* gramps.pot: update to include manual strings
|
||||
* nl.po: Translation update
|
||||
|
||||
2008-02-22 Łukasz Rymarczyk <yenidai@poczta.onet.pl>
|
||||
* pl.po: Translation update
|
||||
|
||||
2008-02-21 Arturas Sleinius <asleinius@users.sourceforge.net>
|
||||
* lt.po: updated Lithuanian translation
|
||||
|
||||
2008-02-21 Stéphane Charette <stephanecharette@gmail.com>
|
||||
* gramps.pot
|
||||
* POTFILES.in: fixed typo (plubins versus plugins)
|
||||
|
||||
2008-02-20 Zdeněk Hataš <zdenek.hatas@gmail.com>
|
||||
* cs.po Corrections and update of cs translation.
|
||||
|
||||
2008-02-19 Jerome Rapinat <romjerome@yahoo.fr>
|
||||
* fr.po: Translation update
|
||||
|
||||
2008-02-19 Peter Landgren <peter.talken@telia.com>
|
||||
* sv.po: Translation update, mnemonic changes
|
||||
|
||||
2008-02-18 Jerome Rapinat <romjerome@yahoo.fr>
|
||||
* fr.po: Translation update
|
||||
|
||||
2008-02-14 Frederik De Richter <frederik.de.richter@pandora.be>
|
||||
* gramps.pot: update to include manual strings
|
||||
* nl.po: Translation update
|
||||
|
||||
2008-02-16 Espen Berg <espenbe@gmail.com>
|
||||
* nb.po: Updated Norwegian translation (still some work to do)
|
||||
* no.po: Updated Norwegian translation (still some work to do)
|
||||
|
||||
2008-02-15 Espen Berg <espenbe@gmail.com>
|
||||
* nb.po: some updates on Norwegian translation (still a lot to do)
|
||||
* no.po: some updates on Norwegian translation (still a lot to do)
|
||||
|
||||
2008-02-15 Jerome Rapinat <romjerome@yahoo.fr>
|
||||
* fr.po: Translation update
|
||||
|
||||
2008-02-14 Frederik De Richter <frederik.de.richter@pandora.be>
|
||||
* gramps.pot: update
|
||||
|
||||
2008-02-08 Arturas Sleinius <asleinius@users.sourceforge.net>
|
||||
* lt.po: updated Lithuanian translation
|
||||
|
||||
2008-02-05 Raphael Ackermann <raphael.ackermann@gmail.com>
|
||||
* POTFILES.in: remove checkpoint reference
|
||||
|
||||
2008-02-02 Arturas Sleinius <asleinius@users.sourceforge.net>
|
||||
* lt.po: updated Lithuanian translation
|
||||
|
||||
2008-02-02 Łukasz Rymarczyk <yenidai@poczta.onet.pl>
|
||||
* pl.po: Translation update
|
||||
|
||||
2008-01-31 Mirko Leonhaeuser <mirko@leonhaeuser.de>
|
||||
* de.po: Translation update
|
||||
|
||||
2008-01-29 Jerome Rapinat <romjerome@yahoo.fr>
|
||||
* gramps.pot: update template
|
||||
* fr.po: Translation update
|
||||
|
||||
2008-01-28 Łukasz Rymarczyk <yenidai@poczta.onet.pl>
|
||||
* pl.po: Translation update
|
||||
|
||||
2008-01-28 Jerome Rapinat <romjerome@yahoo.fr>
|
||||
* fr.po: use correct translation for beta
|
||||
|
||||
2008-01-24 Boril Gourinov <boril.gourinov@gmail.com>
|
||||
* bg.po: Translation update
|
||||
|
||||
2008-01-15 Jerome Rapinat <romjerome@yahoo.fr>
|
||||
* POTFILE.in : add missing plugins/References.py
|
||||
* fr.po: Translation update
|
||||
|
||||
2008-01-14 Mirko Leonhaeuser <mirko@leonhaeuser.de>
|
||||
* de.po: Translation update
|
||||
|
||||
2008-01-13 Josip <josip@pisoj.com>
|
||||
* hr.po: Translation update
|
||||
|
||||
2008-01-07 Jerome Rapinat <romjerome@yahoo.fr>
|
||||
* fr.po: Translation update
|
||||
|
||||
2008-01-05 Josip <josip@pisoj.com>
|
||||
* hr.po New language, Croatian
|
||||
|
||||
2008-01-02 Frederik De Richter <frederik.de.richter@pandora.be>
|
||||
* nl.po: Translation update Fuzzy:0 Untranslated: 0
|
||||
|
||||
2007-12-31 Boril Gourinov <boril.gourinov@gmail.com>
|
||||
* bg.po: New language, bulgarian
|
||||
|
||||
2007-12-30 Jerome Rapinat <romjerome@yahoo.fr>
|
||||
* POTFILES.in : update
|
||||
* gramps.pot : update template
|
||||
* fr.po: Translation update
|
||||
|
||||
2007-12-28 Arturas Sleinius <asleinius@users.sourceforge.net>
|
||||
* lt.po: updated Lithuanian translation
|
||||
|
||||
2007-12-24 Jerome Rapinat <romjerome@yahoo.fr>
|
||||
* fr.po: Translation update
|
||||
|
||||
2007-12-23 Arturas Sleinius <asleinius@users.sourceforge.net>
|
||||
* lt.po: updated Lithuanian translation
|
||||
|
||||
2007-12-23 Stéphane Charette <stephanecharette@gmail.com>
|
||||
* gramps.po: update to get ready for 3.0.0 beta
|
||||
|
||||
2007-12-22 Zdenek Hatas <zdenek.hatas@gmail.com>
|
||||
* cs.po: Translation update
|
||||
|
||||
2007-12-21 Frederik De Richter <frederik.de.richter@pandora.be>
|
||||
* nl.po: Translation update Fuzzy:98 Untranslated: 4
|
||||
|
||||
2007-12-20 Jerome Rapinat <romjerome@yahoo.fr>
|
||||
* POTFILES.in : add plugins/GVRelGraph.py reference
|
||||
* gramps.pot : update template
|
||||
* fr.po: Translation update
|
||||
|
||||
2007-12-19 Jerome Rapinat <romjerome@yahoo.fr>
|
||||
* fr.po: Translation improvements (media is plurial)
|
||||
|
||||
2007-12-17 Espen Berg <espenbe@gmail.com>
|
||||
* nb.po: Translation update (some untranslated phrases)
|
||||
* no.po: Translation update (some untranslated phrases)
|
||||
|
||||
2007-11-27 Espen Berg <espenbe@gmail.com>
|
||||
* nb.po: Translation update
|
||||
* no.po: Translation update
|
||||
|
||||
2007-11-16 Mirko Leonhäuser <mirko@leonhaeuser.de>
|
||||
* de.po: Translation update
|
||||
|
||||
2006-11-16 Martin Hawlisch <Martin.Hawlisch@gmx.de>
|
||||
* de.po: Small updates. Still a lot todo.
|
||||
|
||||
2007-10-30 Jerome Rapinat <romjerome@yahoo.fr>
|
||||
* fr.po: Translation update
|
||||
* gramps.pot: commit updated template
|
||||
|
||||
2007-10-25 Espen Berg <espenbe@gmail.com>
|
||||
* nb.po: Translation update (still some untranslated phrases)
|
||||
* no.po: Translation update (still some untranslated phrases)
|
||||
|
||||
2007-10-14 Frederik De Richter <frederik.de.richter@pandora.be>
|
||||
* nl.po: Translation update (125 fuzzies, 12 untranslated)
|
||||
|
||||
2007-10-10 Bernard Banko <bernard.banko@siol.net>
|
||||
* sl.po: New language, slovenian
|
||||
|
||||
2007-09-17 Luiz Gonzaga <lfilho@gmail.com>
|
||||
* pt_BR.po: Update.
|
||||
|
||||
2007-09-17 Espen Berg <espenbe@gmail.com>
|
||||
* nb.po: Translation update (still some untranslated phrases)
|
||||
* no.po: Translation update (still some untranslated phrases)
|
||||
|
||||
2007-09-02 Espen Berg <espenbe@gmail.com>
|
||||
* nb.po: Translation update (still some untranslated phrases)
|
||||
* no.po: Translation update (still some untranslated phrases)
|
||||
|
||||
2007-09-01 Peter Landgren <peter.talken@telia.com>
|
||||
* sv.po: Update.
|
||||
|
||||
2007-08-30 Espen Berg <espenbe@gmail.com>
|
||||
* nb.po: Translation update (still some untranslated phrases)
|
||||
* no.po: Translation update (still some untranslated phrases)
|
||||
|
||||
2007-08-22 Espen Berg <espenbe@gmail.com>
|
||||
* nb.po: Translation update
|
||||
* no.po: Translation update
|
||||
|
||||
2007-07-02 Peter Landgren <peter.talken@telia.com>
|
||||
* sv.po: Update.
|
||||
|
||||
2007-06-23 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Add new files.
|
||||
|
||||
2007-06-16 Peter Landgren <peter.talken@telia.com>
|
||||
* sv.po: Update.
|
||||
|
||||
2007-06-16 Matthias Alles <alles@rhrk.uni-kl.de>
|
||||
* de.po: Fixes.
|
||||
|
||||
2007-06-15 Matthias Alles <alles@rhrk.uni-kl.de>
|
||||
* de.po: Fix the "was the son of" problem.
|
||||
|
||||
2007-06-13 Morten Bo Johansen <mbj@spamcop.net>
|
||||
* da.po: Translation update.
|
||||
|
||||
2007-05-24 Lubo Vasko <pgval@inMail.sk>
|
||||
* sk.po: Translation update.
|
||||
|
||||
2007-05-21 Arturas Sleinius <asleinius@users.sourceforge.net>
|
||||
* lt.po: updated Lithuanian translation
|
||||
|
||||
2007-05-21 Stefan Björk <betula@users.sourceforge.net>
|
||||
* sv.po: Translation update; bug #0001058.
|
||||
|
||||
2007-05-17 Espen Berg <espenbe@gmail.com>
|
||||
* nb.po: Translation update
|
||||
* no.po: Translation update
|
||||
|
||||
2007-05-14 Espen Berg <espenbe@gmail.com>
|
||||
* nb.po: Translation update
|
||||
* no.po: Translation update
|
||||
|
||||
2007-04-17 Lubo Vasko <pgval@inMail.sk>
|
||||
* sk.po: Translation update.
|
||||
|
||||
2007-04-17 Piotr Czubaszek <pioterus@gmail.com>
|
||||
* pl.po: Translation update.
|
||||
|
||||
2007-04-17 Arturas Sleinius <asleinius@users.sourceforge.net>
|
||||
* lt.po: updated Lithuanian translation
|
||||
|
||||
2007-03-08 Stefan Björk <betula@users.sourceforge.net>
|
||||
* sv.po: Translation update.
|
||||
|
||||
2007-03-07 Stefan Björk <betula@users.sourceforge.net>
|
||||
* sv.po: Translation update.
|
||||
|
||||
2007-02-20 Espen Berg <espenbe@gmail.com>
|
||||
* nb.po: Translation update
|
||||
* no.po: Translation update
|
||||
|
||||
2007-02-15 Piotr Czubaszek <pioterus@gmail.com>
|
||||
* pl.po: Translation update.
|
||||
|
||||
2007-02-14 Espen Berg <espenbe@gmail.com>
|
||||
* nb.po: Translation update
|
||||
* no.po: Translation update
|
||||
|
||||
2007-02-12 Lubo Vasko <pgval@inMail.sk>
|
||||
* sk.po: Translation update.
|
||||
|
||||
2007-02-03 Zdenek Hatas <zdenek.hatas@gmail.com>
|
||||
* cs.po: Minor translation update.
|
||||
|
||||
2007-01-29 Piotr Czubaszek <pioterus@gmail.com>
|
||||
* pl.po: Translation update.
|
||||
|
||||
2007-01-28 Alex Roitman <shura@gramps-project.org>
|
||||
* ru.po: Translation update.
|
||||
|
||||
2007-01-27 Piotr Czubaszek <pioterus@gmail.com>
|
||||
* pl.po: Translation update.
|
||||
|
||||
2007-01-24 Arturas Sleinius <asleinius@users.sourceforge.net>
|
||||
* lt.po: updated Lithuanian translation.
|
||||
|
||||
2007-01-20 Zdenek Hatas <zdenek.hatas@gmail.com>
|
||||
* cs.po: updated according to template.
|
||||
translation updates.
|
||||
|
||||
2007-01-15 Arturas Sleinius <asleinius@users.sourceforge.net>
|
||||
* lt.po: updated Lithuanian translation.
|
||||
|
||||
2007-01-15 Piotr Czubaszek <pioterus@gmail.com>
|
||||
* pl.po: Translation update.
|
||||
|
||||
2007-01-14 Zdenek Hatas <zdenek.hatas@gmail.com>
|
||||
* cs.po: Update translation.
|
||||
|
||||
2007-01-13 Zdenek Hatas <zdenek.hatas@gmail.com>
|
||||
* cs.po: Update translation.
|
||||
|
||||
2007-01-04 Eero Tamminen <eerot@sf>
|
||||
* fi.po: fix some translations
|
||||
|
||||
2007-01-01 Eero Tamminen <eerot@sf>
|
||||
* fi.po: Translation "complete"
|
||||
|
||||
2006-12-27 Eero Tamminen <eerot@sf>
|
||||
* fi.po: merge with latest, fix everything reported by check_po,
|
||||
almost fully translated now
|
||||
|
||||
2006-12-25 Stefan Bj<42>k <betula@users.sourceforge.net>
|
||||
* sv.po: Update.
|
||||
|
||||
2006-12-24 Stefan Bjork <betula@users.sourceforge.net>
|
||||
* sv.po: Update.
|
||||
|
||||
2006-12-23 Alex Roitman <shura@gramps-project.org>
|
||||
* ru.po: Update.
|
||||
|
||||
2006-11-22 Morten Bo Johansen <mbj@spamcop.net>
|
||||
* da.po: Translation update.
|
||||
|
||||
2006-12-21 Lubo Vasko <pgval@inMail.sk>
|
||||
* sk.po: Translation update.
|
||||
|
||||
2006-12-19 Arturas Sleinius <asleinius@users.sourceforge.net>
|
||||
* lt.po: updated Lithuanian translation.
|
||||
|
||||
2006-12-19 Piotr Czubaszek <pioterus@gmail.com>
|
||||
* pl.po: Translation update.
|
||||
|
||||
2006-12-19 Lubo Vasko <pgval@inMail.sk>
|
||||
* sk.po: Translation update.
|
||||
|
||||
2006-12-17 Piotr Czubaszek <pioterus@gmail.com>
|
||||
* pl.po: Translation update.
|
||||
|
||||
2006-12-13 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: List new files.
|
||||
|
||||
2006-12-10 Eero Tamminen <eerot@sf>
|
||||
* fi.po: merge with latest, fix all % mismatches and repo translations
|
||||
|
||||
2006-12-08 Piotr Czubaszek <pioterus@gmail.com>
|
||||
* pl.po: Translation update.
|
||||
|
||||
2006-12-06 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: List new file.
|
||||
|
||||
2006-12-05 Arturas Sleinius <asleinius@users.sourceforge.net>
|
||||
* lt.po: updated Lithuanian translation.
|
||||
|
||||
2006-12-04 Piotr Czubaszek <pioterus@gmail.com>
|
||||
* pl.po: Translation update.
|
||||
|
||||
2006-12-03 Arturas Sleinius <asleinius@users.sourceforge.net>
|
||||
* lt.po: updated Lithuanian translation.
|
||||
|
||||
2006-12-01 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: List new file.
|
||||
|
||||
2006-11-30 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: List new files.
|
||||
|
||||
2006-11-29 Lubo Vasko <pgval@post.sk>
|
||||
* sk.po: Translation update.
|
||||
|
||||
2006-11-21 Espen Berg <espenbe@gmail.com>
|
||||
* nb.po: updated Norwegian translation
|
||||
* no.po: updated Norwegian translation
|
||||
|
||||
2006-11-18 Piotr Czubaszek <pioterus@gmail.com>
|
||||
* pl.po: Translation update.
|
||||
|
||||
2006-11-17 Morten Bo Johansen <mbj@spamcop.net>
|
||||
* da.po: Translation update.
|
||||
|
||||
2006-11-16 Lubo Vasko <pgval@post.sk>
|
||||
* sk.po: Translation update.
|
||||
|
||||
2006-11-16 Piotr Czubaszek <pioterus@gmail.com>
|
||||
* pl.po: Translation update.
|
||||
|
||||
2006-11-16 Espen Berg <espenbe@gmail.com>
|
||||
* nb.po: updated Norwegian translation, cleanup.
|
||||
* no.po: updated Norwegian translation, cleanup.
|
||||
|
||||
2006-11-14 Arturas Sleinius <asleinius@users.sourceforge.net>
|
||||
* lt.po: updated Lithuanian translation, cleanup.
|
||||
|
||||
2006-11-12 Stefan Bjork <betula@users.sourceforge.net>
|
||||
* sv.po: Cleanup.
|
||||
|
||||
2006-11-08 Alex Roitman <shura@gramps-project.org>
|
||||
* ru.po: Cleanup.
|
||||
|
||||
2006-11-08 Stefan Bjork <betula@users.sourceforge.net>
|
||||
* sv.po: Unescaped characters fix.
|
||||
|
||||
2006-11-08 Arpad Horvath <horvath.arpad@szgti.bmf.hu>
|
||||
* hu.po: Translation update.
|
||||
|
||||
2006-11-08 Morten Bo Johansen <mbj@spamcop.net>
|
||||
* da.po: Translation update.
|
||||
|
||||
2006-11-07 Lubo Vasko <pgval@post.sk>
|
||||
* sk.po: Translation update.
|
||||
|
||||
2006-11-07 Jerome Rapinat <romjerome@yahoo.fr>
|
||||
* fr.po: Translation update
|
||||
* POTFILES.in: Add src/plugins/RemoveUnused.py
|
||||
|
||||
2006-11-06 Martin Hawlisch <Martin.Hawlisch@gmx.de>
|
||||
* tr.po: Fixed some syntax error that made make fail.
|
||||
|
||||
2006-11-05 Mehmet Ugur Kecik <mukecik@yahoo.com>
|
||||
* tr.po: Add Turkish translation.
|
||||
|
||||
2006-11-03 Alex Roitman <shura@gramps-project.org>
|
||||
* gramps.pot: Update.
|
||||
|
||||
2006-11-03 Jerome Rapinat <romjerome@yahoo.fr>
|
||||
* fr.po: Translation update
|
||||
* POTFILES.in: Add src/Reorder.py
|
||||
|
||||
2006-11-02 Alex Roitman <shura@gramps-project.org>
|
||||
* gramps.pot: Add to SVN.
|
||||
|
||||
2006-10-29 Arturas Sleinius <asleinius@users.sourceforge.net>
|
||||
* lt.po: updated Lithuanian translation.
|
||||
|
||||
2006-10-29 Alexandre Prokoudine <alexandre.prokoudine@gmail.com>
|
||||
* ru.po: Update.
|
||||
|
||||
2006-10-29 Espen Berg <espenbe@gmail.com>
|
||||
* nb.po: Bug-fix in Norwegian translation.
|
||||
* nn.po: Bug-fix in Norwegian translation.
|
||||
|
||||
2006-10-29 Stefan Bjork <betula@users.sourceforge.net>
|
||||
* sv.po: Update swedish translation.
|
||||
|
||||
2006-10-29 Arturas Sleinius <asleinius@users.sourceforge.net>
|
||||
* lt.po: updated Lithuanian translation.
|
||||
|
||||
2006-10-27 Morten Bo Johansen <mbj@spamcop.net>
|
||||
* da.po: Translation update.
|
||||
|
||||
2006-10-26 Alex Roitman <shura@gramps-project.org>
|
||||
* *.po: merge new string.
|
||||
|
||||
2006-10-27 Arturas Sleinius <asleinius@users.sourceforge.net>
|
||||
* lt.po: updated Lithuanian translation.
|
||||
|
||||
2006-10-27 Stefan Bjork <betula@users.sourceforge.net>
|
||||
* sv.po: Update translation.
|
||||
|
||||
2006-10-26 Alex Roitman <shura@gramps-project.org>
|
||||
* *.po: merge new string.
|
||||
|
||||
2006-10-26 Lubo Vasko <pgval@post.sk>
|
||||
* sk.po: Update translation.
|
||||
|
||||
2006-10-24 Piotr Czubaszek <pioterus@gmail.com>
|
||||
* pl.po: Translation update.
|
||||
|
||||
2006-10-24 Alex Roitman <shura@gramps-project.org>
|
||||
* ru.po: Update translation.
|
||||
|
||||
2006-10-24 Espen Berg <espenbe@gmail.com>
|
||||
* nb.po: Updated Norwegian translation.
|
||||
* no.po: Updated Norwegian translation.
|
||||
|
||||
2006-10-24 Stefan Bjork <betula@users.sourceforge.net>
|
||||
* sv.po: Update translation.
|
||||
|
||||
2006-10-24 Arturas Sleinius <asleinius@users.sourceforge.net>
|
||||
* lt.po: updated Lithuanian translation.
|
||||
|
||||
2006-10-23 Jerome Rapinat <romjerome@yahoo.fr>
|
||||
* fr.po: Translation update.
|
||||
* POTFILES.in: Typo.
|
||||
|
||||
2006-10-19 Piotr Czubaszek <pioterus@gmail.com>
|
||||
* pl.po: Translation update.
|
||||
* POTFILES.in: Add new file.
|
||||
|
||||
2006-10-19 Lubo Vasko <pgval@post.sk>
|
||||
* sk.po: Update translation.
|
||||
|
||||
2006-10-17 Arturas Sleinius <asleinius@users.sourceforge.net>
|
||||
* lt.po: updated Lithuanian translation.
|
||||
|
||||
2006-10-15 Piotr Czubaszek <pioterus@gmail.com>
|
||||
* pl.po: Translation update.
|
||||
|
||||
2006-10-15 Espen Berg <espenbe@gmail.com>
|
||||
* nb.po, no.po: Translation update.
|
||||
|
||||
2006-10-13 Alex Roitman <shura@gramps-project.org>
|
||||
* *.po: Merge all translations with new strings.
|
||||
* sk.po: Update translation.
|
||||
|
||||
2006-10-11 Lubo Vasko <pgval@post.sk>
|
||||
* sk.po: Update translation.
|
||||
|
||||
2006-10-10 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Include all of Selectors package.
|
||||
|
||||
2006-10-09 Morten Bo Johansen <mbj@spamcop.net>
|
||||
* da.po: Translation update.
|
||||
|
||||
2006-10-04 Lubo Vasko <pgval@post.sk>
|
||||
* sk.po: Update translation.
|
||||
|
||||
2006-10-03 Stefan Bjork <betula@users.sourceforge.net>
|
||||
* sv.po: Updated Swedish translation.
|
||||
|
||||
2006-09-30 Arturas Sleinius <asleinius@users.sourceforge.net>
|
||||
* lt.po: updated Lithuanian translation.
|
||||
|
||||
2006-09-27 Stefan Bjork <betula@users.sourceforge.net>
|
||||
* sv.po: Updated Swedish translation (work in progess).
|
||||
|
||||
2006-09-11 Jerome Rapinat <romjerome@yahoo.fr>
|
||||
* fr.po: updated French translation.
|
||||
* POTFILES.in: Enable title for selectors.
|
||||
|
||||
2006-09-09 Arturas Sleinius <asleinius@users.sourceforge.net>
|
||||
* lt.po: updated Lithuanian translation.
|
||||
|
||||
2006-09-05 Arpad Horvath <horvath.arpad@szgti.bmf.hu>
|
||||
* hu.po: Translation update.
|
||||
|
||||
2006-09-01 Arpad Horvath <horvath.arpad@szgti.bmf.hu>
|
||||
* hu.po: Translation update.
|
||||
|
||||
2006-08-31 Zdenek Hatas <zdenek.hatas@gmail.com>
|
||||
* cs.po: Update translation.
|
||||
|
||||
2006-08-30 Zdenek Hatas <zdenek.hatas@gmail.com>
|
||||
* cs.po: Update translation.
|
||||
|
||||
2006-08-29 Arpad Horvath <horvath.arpad@szgti.bmf.hu>
|
||||
* hu.po: Translation update from 2.0.x branch.
|
||||
|
||||
2006-08-29 Zdenek Hatas <zdenek.hatas@gmail.com>
|
||||
* cs.po: Update translation.
|
||||
|
||||
2006-08-27 Alex Roitman <shura@gramps-project.org>
|
||||
* *.po: Merge all translations with the new template for 2.1.95.
|
||||
|
||||
2006-08-25 Arpad Horvath <horvath.arpad@szgti.bmf.hu>
|
||||
* hu.po: Translation update from 2.0.x branch.
|
||||
|
||||
2006-08-23 Zdenek Hatas <zdenek.hatas@gmail.com>
|
||||
* cs.po: Update translation.
|
||||
|
||||
2006-08-22 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Reflect directory change.
|
||||
|
||||
2006-08-21 Arturas Sleinius <asleinius@users.sourceforge.net>
|
||||
* lt.po: updated Lithuanian translation.
|
||||
|
||||
2006-08-19 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Add new file.
|
||||
|
||||
2006-08-18 Kees Bakker <kees.bakker@xs4all.nl>
|
||||
* nl.po: Translation update.
|
||||
|
||||
2006-08-17 Arturas Sleinius <asleinius@users.sourceforge.net>
|
||||
* lt.po: updated Lithuanian translation.
|
||||
|
||||
2006-08-13 Alex Roitman <shura@gramps-project.org>
|
||||
* *.po: update all po files.
|
||||
|
||||
2006-08-09 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Add new files.
|
||||
|
||||
2006-08-07 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Add new files.
|
||||
|
||||
2006-08-06 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Add new files.
|
||||
|
||||
2006-08-05 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Add new files.
|
||||
|
||||
2006-08-04 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Unlist plugins that are not shipped.
|
||||
Add new files.
|
||||
|
||||
2006-08-03 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Add new files.
|
||||
|
||||
2006-08-02 Alex Roitman <shura@gramps-project.org>
|
||||
* ru.po: Translation update.
|
||||
|
||||
2006-07-31 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Remove obsolete file;
|
||||
reflect the name change of Merge -> FindDupes.
|
||||
* ru.po: Start on Russian translation.
|
||||
|
||||
2006-07-30 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Add missing file.
|
||||
|
||||
2006-07-25 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Add missing files.
|
||||
|
||||
2006-07-23 Arturas Sleinius <asleinius@users.sourceforge.net>
|
||||
* lt.po: updated Lithuanian translation.
|
||||
|
||||
2006-07-16 Morten Bo Johansen <mbj@spamcop.net>
|
||||
* da.po: Translation update.
|
||||
|
||||
2006-07-15 Alex Roitman <shura@gramps-project.org>
|
||||
* check_po: Open correct file.
|
||||
|
||||
2006-06-22 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Add new file.
|
||||
|
||||
2006-06-15 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Add new file.
|
||||
|
||||
2006-06-11 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Remove plugin that is not shipped.
|
||||
* gramps.pot: Update.
|
||||
|
||||
2006-06-04 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Add missing files.
|
||||
|
||||
2006-05-30 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Change files due to module split.
|
||||
|
||||
2006-05-28 Alex Roitman <shura@gramps-project.org>
|
||||
* gramps.pot: Update.
|
||||
|
||||
2006-05-28 Arturas Sleinius <asleinius@users.sourceforge.net>
|
||||
* lt.po: updated Lithuanian translation.
|
||||
|
||||
2006-05-25 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Add new files.
|
||||
|
||||
2006-05-23 Arturas Sleinius <asleinius@users.sourceforge.net>
|
||||
* lt.po: updated Lithuanian translation.
|
||||
|
||||
2006-05-22 Alex Roitman <shura@gramps-project.org>
|
||||
* gramps.pot: Update.
|
||||
|
||||
2006-05-18 Espen Berg <espenbe@gmail.com>
|
||||
* nb.po, no.po: Translation update.
|
||||
|
||||
2006-05-17 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Add new file.
|
||||
|
||||
2006-05-16 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Add new files; remove old files.
|
||||
|
||||
2006-05-15 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Add new files.
|
||||
|
||||
2006-05-14 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Add new file.
|
||||
* gramps.pot: update.
|
||||
|
||||
2006-05-12 Alex Roitman <shura@gramps-project.org>
|
||||
* gramps.pot: Update.
|
||||
* POTFILES.in: Add missing files.
|
||||
|
||||
2006-05-10 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Add new file.
|
||||
|
||||
2006-05-07 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Add missing file.
|
||||
|
||||
2006-05-06 Alex Roitman <shura@gramps-project.org>
|
||||
* gramps.pot: Update template.
|
||||
* POTFILES.in: Add missing files from RelLib.
|
||||
|
||||
2006-05-05 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Add new file.
|
||||
|
||||
2006-05-04 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Add new files.
|
||||
Update.
|
||||
* gramps.pot: Update.
|
||||
|
||||
2006-05-02 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Add new files.
|
||||
|
||||
2006-05-01 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Add new file.
|
||||
|
||||
2006-04-27 Alex Roitman <shura@gramps-project.org>
|
||||
* pt_BR.po: Convert to utf8 encoding.
|
||||
* zh_CN.po: Convert to utf8 encoding.
|
||||
* pl.po: Convert to utf8 encoding.
|
||||
* no.po: Convert to utf8 encoding.
|
||||
* it.po: Convert to utf8 encoding.
|
||||
* sk.po: Convert to utf8 encoding.
|
||||
* da.po: Convert to utf8 encoding.
|
||||
* nb.po: Convert to utf8 encoding.
|
||||
|
||||
2006-04-21 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Remove obsolete file.
|
||||
|
||||
2006-04-19 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Add new files.
|
||||
|
||||
2006-04-06 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Add new files to the list.
|
||||
* gramps.pot: regenerate the template.
|
||||
|
||||
2006-03-18 Alex Roitman <shura@gramps-project.org>
|
||||
* POTFILES.in: Remove RelImage.py from the list.
|
||||
|
||||
2006-03-15 Alex Roitman <shura@gramps-project.org>
|
||||
* *.po: Moved po files from old po directory.
|
@@ -633,8 +633,8 @@ src/Filters/Rules/Repository/__init__.py
|
||||
src/Filters/Rules/Note/_AllNotes.py
|
||||
src/Filters/Rules/Note/_HasIdOf.py
|
||||
src/Filters/Rules/Note/_HasMarkerOf.py
|
||||
src/Filters/Rules/Note/_HasNoteMatchingSubstringOf.py
|
||||
src/Filters/Rules/Note/_HasNoteRegexp.py
|
||||
src/Filters/Rules/Note/_MatchesSubstringOf.py
|
||||
src/Filters/Rules/Note/_MatchesRegexpOf.py
|
||||
src/Filters/Rules/Note/_HasNote.py
|
||||
src/Filters/Rules/Note/_HasReferenceCountOf.py
|
||||
src/Filters/Rules/Note/_MatchesFilter.py
|
||||
|
2971
po/gramps.pot
2971
po/gramps.pot
File diff suppressed because it is too large
Load Diff
@@ -27,7 +27,7 @@
|
||||
# Standard python modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from gettext import gettext as _
|
||||
|
||||
from cStringIO import StringIO
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@@ -54,6 +54,15 @@ import GrampsDisplay
|
||||
from BasicUtils import name_displayer
|
||||
import ListModel
|
||||
import Utils
|
||||
from TransUtils import sgettext as _
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Constants
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
WIKI_HELP_PAGE = 'Gramps_3.0_Wiki_Manual_-_Navigation'
|
||||
WIKI_HELP_SEC = _('manual|Bookmarks')
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -192,6 +201,7 @@ class Bookmarks :
|
||||
self.top = gtk.Dialog(title)
|
||||
self.top.set_default_size(400, 350)
|
||||
self.top.set_modal(True)
|
||||
self.top.set_transient_for(self.uistate.window)
|
||||
self.top.set_has_separator(False)
|
||||
self.top.vbox.set_spacing(5)
|
||||
label = gtk.Label('<span size="larger" weight="bold">%s</span>'
|
||||
@@ -245,12 +255,15 @@ class Bookmarks :
|
||||
self.namemodel.connect_model()
|
||||
|
||||
self.modified = False
|
||||
self.response = self.top.run()
|
||||
if self.response == gtk.RESPONSE_HELP:
|
||||
self.help_clicked()
|
||||
if self.modified:
|
||||
self.redraw_and_report_change()
|
||||
self.top.destroy()
|
||||
while True:
|
||||
self.response = self.top.run()
|
||||
if self.response == gtk.RESPONSE_HELP:
|
||||
self.help_clicked()
|
||||
elif self.response == gtk.RESPONSE_CLOSE:
|
||||
if self.modified:
|
||||
self.redraw_and_report_change()
|
||||
self.top.destroy()
|
||||
break
|
||||
|
||||
def delete_clicked(self, obj):
|
||||
"""Remove the current selection from the list."""
|
||||
@@ -293,8 +306,8 @@ class Bookmarks :
|
||||
|
||||
def help_clicked(self):
|
||||
"""Display the relevant portion of GRAMPS manual."""
|
||||
GrampsDisplay.help('gramps-nav')
|
||||
self.response = self.top.run()
|
||||
GrampsDisplay.help('gramps-nav', webpage=WIKI_HELP_PAGE,
|
||||
section=WIKI_HELP_SEC)
|
||||
|
||||
class ListBookmarks(Bookmarks):
|
||||
|
||||
|
@@ -67,8 +67,6 @@ USE_LAST_VIEW = ('preferences', 'use-last-view', 0)
|
||||
FAMILY_SIBLINGS = ('preferences', 'family-siblings', 0)
|
||||
AUTOLOAD = ('behavior', 'autoload', 0)
|
||||
SPELLCHECK = ('behavior', 'spellcheck', 0)
|
||||
BETAWARN = ('behavior', 'betawarn', 0)
|
||||
WELCOME = ('behavior', 'welcome', 1)
|
||||
DATE_FORMAT = ('preferences', 'date-format', 1)
|
||||
DONT_ASK = ('interface', 'dont-ask', 0)
|
||||
RELEDITBTN = ('interface', 'releditbtn', 0)
|
||||
@@ -188,8 +186,6 @@ default_value = {
|
||||
FAMILY_SIBLINGS : True,
|
||||
AUTOLOAD : False,
|
||||
SPELLCHECK : False,
|
||||
BETAWARN : False,
|
||||
WELCOME : 100,
|
||||
DATE_FORMAT : 0,
|
||||
DONT_ASK : False,
|
||||
RELEDITBTN : False,
|
||||
|
@@ -159,9 +159,9 @@ class GrampletWindow(ManagedWindow.ManagedWindow):
|
||||
self.window.show()
|
||||
|
||||
def handle_response(self, object, response):
|
||||
if response == gtk.RESPONSE_CLOSE:
|
||||
if response in [gtk.RESPONSE_CLOSE, gtk.STOCK_CLOSE]:
|
||||
self.close()
|
||||
else:
|
||||
elif response == gtk.RESPONSE_HELP:
|
||||
# translated name:
|
||||
GrampsDisplay.help('gramplet', WIKI_HELP_PAGE,
|
||||
self.gramplet.tname.replace(" ", "_"))
|
||||
|
@@ -419,7 +419,6 @@ class PersonView(PageView.PersonNavView):
|
||||
is no need to store the database, since we will get the value
|
||||
from self.state.db
|
||||
"""
|
||||
self.build_columns()
|
||||
self.setup_filter()
|
||||
self.db = db
|
||||
db.connect('person-add', self.person_added)
|
||||
|
@@ -274,7 +274,7 @@ class DbManager(CLIDbManager):
|
||||
if parent:
|
||||
self.top.set_transient_for(parent)
|
||||
|
||||
self.connect = self.glade.get_widget('ok')
|
||||
self.connect = self.glade.get_widget('connect')
|
||||
self.cancel = self.glade.get_widget('cancel')
|
||||
self.new = self.glade.get_widget('new')
|
||||
self.remove = self.glade.get_widget('remove')
|
||||
@@ -303,6 +303,7 @@ class DbManager(CLIDbManager):
|
||||
self.top.drag_dest_set(gtk.DEST_DEFAULT_ALL, ddtargets, ACTION_COPY)
|
||||
|
||||
self.remove.connect('clicked', self.__remove_db)
|
||||
self.connect.connect('clicked', self.__load_selected)
|
||||
self.new.connect('clicked', self.__new_db)
|
||||
self.rename.connect('clicked', self.__rename_db)
|
||||
self.repair.connect('clicked', self.__repair_db)
|
||||
@@ -327,7 +328,7 @@ class DbManager(CLIDbManager):
|
||||
return self.__load_selected()
|
||||
return False
|
||||
|
||||
def __load_selected(self):
|
||||
def __load_selected(self, obj=None):
|
||||
"""
|
||||
Load the selected family tree if possible, return True
|
||||
if ok, and set RESPONSE_OK
|
||||
|
@@ -6,8 +6,8 @@ pkgdata_PYTHON = \
|
||||
_AllNotes.py\
|
||||
_HasIdOf.py\
|
||||
_HasMarkerOf.py\
|
||||
_HasNoteMatchingSubstringOf.py\
|
||||
_HasNoteRegexp.py\
|
||||
_MatchesSubstringOf.py\
|
||||
_MatchesRegexpOf.py\
|
||||
_HasNote.py\
|
||||
_HasReferenceCountOf.py\
|
||||
_MatchesFilter.py\
|
||||
|
@@ -1,45 +1,63 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2002-2006 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$
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Standard Python modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from gettext import gettext as _
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from Filters.Rules._HasNoteRegexBase import HasNoteRegexBase
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# "Repos having notes that contain a substring"
|
||||
#-------------------------------------------------------------------------
|
||||
class HasNoteRegexp(HasNoteRegexBase):
|
||||
|
||||
name = _('Notes having notes '
|
||||
'containing <regular expression>')
|
||||
description = _("Matches notes whose notes contain text "
|
||||
"matching a regular expression")
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2002-2006 Donald N. Allingham
|
||||
# Copyright (C) 2008 Brian G. Matherly
|
||||
#
|
||||
# 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: _HasNoteRegexp.py 9912 2008-01-22 09:17:46Z acraphae $
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Standard Python modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import re
|
||||
from gettext import gettext as _
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from Filters.Rules import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# "Repos having notes that contain a substring"
|
||||
#-------------------------------------------------------------------------
|
||||
class MatchesRegexpOf(Rule):
|
||||
|
||||
labels = [ _('Regular expression:')]
|
||||
name = _('Notes containing <regular expression>')
|
||||
description = _("Matches notes who contain text "
|
||||
"matching a regular expression")
|
||||
category = _('General filters')
|
||||
|
||||
def __init__(self, list):
|
||||
Rule.__init__(self, list)
|
||||
|
||||
try:
|
||||
self.match = re.compile(list[0], re.I|re.U|re.L)
|
||||
except:
|
||||
self.match = re.compile('')
|
||||
|
||||
def apply(self, db, note):
|
||||
""" Apply the filter """
|
||||
text = unicode(note.get())
|
||||
if self.match.match(text) != None:
|
||||
return True
|
||||
return False
|
@@ -2,6 +2,7 @@
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2002-2006 Donald N. Allingham
|
||||
# Copyright (C) 2008 Brian G. Matherly
|
||||
#
|
||||
# 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
|
||||
@@ -32,14 +33,23 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from Filters.Rules._HasNoteSubstrBase import HasNoteSubstrBase
|
||||
from Filters.Rules import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# "Events having notes that contain a substring"
|
||||
#-------------------------------------------------------------------------
|
||||
class HasNoteMatchingSubstringOf(HasNoteSubstrBase):
|
||||
class MatchesSubstringOf(Rule):
|
||||
"""Notes having notes containing <subtring>"""
|
||||
|
||||
name = _('Notes having notes containing <substring>')
|
||||
description = _("Matches notes whose notes contain text "
|
||||
labels = [ _('Substring:')]
|
||||
name = _('Notes containing <substring>')
|
||||
description = _("Matches notes who contain text "
|
||||
"matching a substring")
|
||||
category = _('General filters')
|
||||
|
||||
def apply(self, db, note):
|
||||
""" Apply the filter """
|
||||
text = unicode(note.get())
|
||||
if text.upper().find(self.list[0].upper()) != -1:
|
||||
return True
|
||||
return False
|
@@ -29,8 +29,8 @@ from _AllNotes import AllNotes
|
||||
from _HasIdOf import HasIdOf
|
||||
from _HasMarkerOf import HasMarkerOf
|
||||
from _RegExpIdOf import RegExpIdOf
|
||||
from _HasNoteRegexp import HasNoteRegexp
|
||||
from _HasNoteMatchingSubstringOf import HasNoteMatchingSubstringOf
|
||||
from _MatchesRegexpOf import MatchesRegexpOf
|
||||
from _MatchesSubstringOf import MatchesSubstringOf
|
||||
from _HasReferenceCountOf import HasReferenceCountOf
|
||||
from _NotePrivate import NotePrivate
|
||||
from _MatchesFilter import MatchesFilter
|
||||
@@ -42,8 +42,8 @@ editor_rule_list = [
|
||||
HasMarkerOf,
|
||||
RegExpIdOf,
|
||||
HasNote,
|
||||
HasNoteRegexp,
|
||||
HasNoteMatchingSubstringOf,
|
||||
MatchesRegexpOf,
|
||||
MatchesSubstringOf,
|
||||
HasReferenceCountOf,
|
||||
NotePrivate,
|
||||
MatchesFilter,
|
||||
|
@@ -81,6 +81,8 @@ class EventSidebarFilter(SidebarFilter):
|
||||
|
||||
def create_widget(self):
|
||||
cell = gtk.CellRendererText()
|
||||
cell.set_property('width', self._FILTER_WIDTH)
|
||||
cell.set_property('ellipsize', self._FILTER_ELLIPSIZE)
|
||||
self.generic.pack_start(cell, True)
|
||||
self.generic.add_attribute(cell, 'text', 0)
|
||||
self.on_filters_changed('Event')
|
||||
|
@@ -102,6 +102,8 @@ class FamilySidebarFilter(SidebarFilter):
|
||||
|
||||
def create_widget(self):
|
||||
cell = gtk.CellRendererText()
|
||||
cell.set_property('width', self._FILTER_WIDTH)
|
||||
cell.set_property('ellipsize', self._FILTER_ELLIPSIZE)
|
||||
self.generic.pack_start(cell, True)
|
||||
self.generic.add_attribute(cell, 'text', 0)
|
||||
self.on_filters_changed('Family')
|
||||
|
@@ -71,6 +71,8 @@ class MediaSidebarFilter(SidebarFilter):
|
||||
|
||||
def create_widget(self):
|
||||
cell = gtk.CellRendererText()
|
||||
cell.set_property('width', self._FILTER_WIDTH)
|
||||
cell.set_property('ellipsize', self._FILTER_ELLIPSIZE)
|
||||
self.generic.pack_start(cell, True)
|
||||
self.generic.add_attribute(cell, 'text', 0)
|
||||
self.on_filters_changed('MediaObject')
|
||||
|
@@ -75,6 +75,8 @@ class NoteSidebarFilter(SidebarFilter):
|
||||
|
||||
def create_widget(self):
|
||||
cell = gtk.CellRendererText()
|
||||
cell.set_property('width', self._FILTER_WIDTH)
|
||||
cell.set_property('ellipsize', self._FILTER_ELLIPSIZE)
|
||||
self.generic.pack_start(cell, True)
|
||||
self.generic.add_attribute(cell, 'text', 0)
|
||||
self.on_filters_changed('Note')
|
||||
|
@@ -106,6 +106,8 @@ class PersonSidebarFilter(SidebarFilter):
|
||||
|
||||
def create_widget(self):
|
||||
cell = gtk.CellRendererText()
|
||||
cell.set_property('width', self._FILTER_WIDTH)
|
||||
cell.set_property('ellipsize', self._FILTER_ELLIPSIZE)
|
||||
self.generic.pack_start(cell, True)
|
||||
self.generic.add_attribute(cell, 'text', 0)
|
||||
self.on_filters_changed('Person')
|
||||
|
@@ -72,6 +72,8 @@ class PlaceSidebarFilter(SidebarFilter):
|
||||
|
||||
def create_widget(self):
|
||||
cell = gtk.CellRendererText()
|
||||
cell.set_property('width', self._FILTER_WIDTH)
|
||||
cell.set_property('ellipsize', self._FILTER_ELLIPSIZE)
|
||||
self.generic.pack_start(cell, True)
|
||||
self.generic.add_attribute(cell, 'text', 0)
|
||||
self.on_filters_changed('Place')
|
||||
|
@@ -81,6 +81,8 @@ class RepoSidebarFilter(SidebarFilter):
|
||||
|
||||
def create_widget(self):
|
||||
cell = gtk.CellRendererText()
|
||||
cell.set_property('width', self._FILTER_WIDTH)
|
||||
cell.set_property('ellipsize', self._FILTER_ELLIPSIZE)
|
||||
self.generic.pack_start(cell, True)
|
||||
self.generic.add_attribute(cell, 'text', 0)
|
||||
self.on_filters_changed('Repository')
|
||||
|
@@ -22,6 +22,8 @@
|
||||
|
||||
from gettext import gettext as _
|
||||
import gtk
|
||||
import pango
|
||||
|
||||
import GrampsWidgets
|
||||
import Config
|
||||
|
||||
@@ -29,6 +31,8 @@ _RETURN = gtk.gdk.keyval_from_name("Return")
|
||||
_KP_ENTER = gtk.gdk.keyval_from_name("KP_Enter")
|
||||
|
||||
class SidebarFilter:
|
||||
_FILTER_WIDTH = 200
|
||||
_FILTER_ELLIPSIZE = pango.ELLIPSIZE_END
|
||||
|
||||
def __init__(self, dbstate, uistate):
|
||||
self.position = 1
|
||||
|
@@ -69,6 +69,8 @@ class SourceSidebarFilter(SidebarFilter):
|
||||
|
||||
def create_widget(self):
|
||||
cell = gtk.CellRendererText()
|
||||
cell.set_property('width', self._FILTER_WIDTH)
|
||||
cell.set_property('ellipsize', self._FILTER_ELLIPSIZE)
|
||||
self.generic.pack_start(cell, True)
|
||||
self.generic.add_attribute(cell, 'text', 0)
|
||||
self.on_filters_changed('Source')
|
||||
|
@@ -165,10 +165,6 @@ MIME_MAP = {
|
||||
'text' : 'text/plain', 'w8bn' : 'application/msword',
|
||||
'wav' : 'audio/x-wav', 'mov' : 'video/quicktime',
|
||||
}
|
||||
|
||||
|
||||
EVENT_FAMILY_STR = _("%(event_name)s of %(family)s")
|
||||
EVENT_PERSON_STR = _("%(event_name)s of %(person)s")
|
||||
|
||||
FTW_BAD_PLACE = [
|
||||
gen.lib.EventType.OCCUPATION,
|
||||
@@ -1497,7 +1493,6 @@ class GedcomParser(UpdateCallback):
|
||||
|
||||
self.__parse_level(sub_state, self.event_parse_tbl, self.__undefined)
|
||||
|
||||
person_event_name(event, state.person)
|
||||
self.dbase.commit_event(event, self.trans)
|
||||
event_ref.ref = event.handle
|
||||
state.person.add_event_ref(event_ref)
|
||||
@@ -1667,7 +1662,6 @@ class GedcomParser(UpdateCallback):
|
||||
|
||||
self.__parse_level(sub_state, self.event_parse_tbl, self.__undefined)
|
||||
|
||||
person_event_name(event, state.person)
|
||||
self.dbase.add_event(event, self.trans)
|
||||
event_ref.ref = event.handle
|
||||
state.person.add_event_ref(event_ref)
|
||||
@@ -2488,7 +2482,6 @@ class GedcomParser(UpdateCallback):
|
||||
else:
|
||||
state.family.type.set(gen.lib.FamilyRelType.MARRIED)
|
||||
|
||||
family_event_name(event, state.family, self.dbase)
|
||||
self.dbase.commit_event(event, self.trans)
|
||||
event_ref.ref = event.handle
|
||||
state.family.add_event_ref(event_ref)
|
||||
@@ -2520,8 +2513,6 @@ class GedcomParser(UpdateCallback):
|
||||
|
||||
self.__parse_level(sub_state, self.event_parse_tbl, self.__undefined)
|
||||
|
||||
family_event_name(event, state.family, self.dbase)
|
||||
|
||||
self.dbase.commit_event(event, self.trans)
|
||||
event_ref.ref = event.handle
|
||||
state.family.add_event_ref(event_ref)
|
||||
@@ -4365,8 +4356,6 @@ class GedcomParser(UpdateCallback):
|
||||
|
||||
if description and description != 'Y':
|
||||
event.set_description(description)
|
||||
else:
|
||||
person_event_name(event, state.person)
|
||||
self.dbase.add_event(event, self.trans)
|
||||
|
||||
sub_state = GedcomUtils.CurrentState()
|
||||
@@ -4389,8 +4378,6 @@ class GedcomParser(UpdateCallback):
|
||||
event.set_type(event_type)
|
||||
if description and description != 'Y':
|
||||
event.set_description(description)
|
||||
else:
|
||||
family_event_name(event, state.family, self.dbase)
|
||||
|
||||
self.dbase.add_event(event, self.trans)
|
||||
|
||||
@@ -4402,9 +4389,7 @@ class GedcomParser(UpdateCallback):
|
||||
|
||||
self.__parse_level(sub_state, event_map, self.__undefined)
|
||||
|
||||
family_event_name(event, state.family, self.dbase)
|
||||
self.dbase.commit_event(event, self.trans)
|
||||
|
||||
event_ref.set_reference_handle(event.handle)
|
||||
return event_ref
|
||||
|
||||
@@ -4438,25 +4423,4 @@ class GedcomParser(UpdateCallback):
|
||||
sref.set_reference_handle(self.def_src.handle)
|
||||
obj.add_source_reference(sref)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Support functions
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
def person_event_name(event, person):
|
||||
ename = str(event.get_type())
|
||||
|
||||
if not event.get_description() and ename:
|
||||
text = EVENT_PERSON_STR % {
|
||||
'event_name' : ename,
|
||||
'person' : name_displayer.display(person),
|
||||
}
|
||||
event.set_description(text)
|
||||
|
||||
def family_event_name(event, family, dbase):
|
||||
if not event.get_description() or event.get_description() == "Y":
|
||||
text = EVENT_FAMILY_STR % {
|
||||
'event_name' : str(event.get_type()),
|
||||
'family' : Utils.family_name(family, dbase),
|
||||
}
|
||||
event.set_description(text)
|
||||
#===eof===
|
||||
|
@@ -1416,6 +1416,24 @@ class GedcomWriter(BasicUtils.UpdateCallback):
|
||||
self.__writeln(level+2, 'LATI', latitude)
|
||||
self.__writeln(level+2, 'LONG', longitude)
|
||||
|
||||
# The Gedcom standard shows that an optional address structure can
|
||||
# be written out in the event detail.
|
||||
# http://homepages.rootsweb.com/~pmcbride/gedcom/55gcch2.htm#EVENT_DETAIL
|
||||
location = place.get_main_location()
|
||||
if location:
|
||||
if location.get_street():
|
||||
self.__writeln(level, "ADDR", location.get_street())
|
||||
if location.get_city():
|
||||
self.__writeln(level + 1, 'CITY', location.get_city())
|
||||
if location.get_state():
|
||||
self.__writeln(level + 1, 'STAE', location.get_state())
|
||||
if location.get_postal_code():
|
||||
self.__writeln(level + 1, 'POST', location.get_postal_code())
|
||||
if location.get_country():
|
||||
self.__writeln(level + 1, 'CTRY', location.get_country())
|
||||
if location.get_phone():
|
||||
self.__writeln(level, 'PHON', location.get_phone())
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
#
|
||||
|
@@ -286,20 +286,20 @@ class MergePeopleUI(ManagedWindow.ManagedWindow):
|
||||
|
||||
ManagedWindow.ManagedWindow.__init__(self, uistate, [], self.__class__)
|
||||
|
||||
glade = glade.XML(const.MERGE_GLADE, 'merge_people')
|
||||
window = glade.get_widget('merge_people')
|
||||
glade_xml = glade.XML(const.MERGE_GLADE, 'merge_people')
|
||||
window = glade_xml.get_widget('merge_people')
|
||||
|
||||
self.set_window(window, glade.get_widget('title'), _("Merge People"))
|
||||
self.set_window(window, glade_xml.get_widget('title'), _("Merge People"))
|
||||
|
||||
p1 = glade.get_widget('person1')
|
||||
p2 = glade.get_widget('person2')
|
||||
p1 = glade_xml.get_widget('person1')
|
||||
p2 = glade_xml.get_widget('person2')
|
||||
n1 = name_of(person1)
|
||||
n2 = name_of(person2)
|
||||
|
||||
p1.set_label(n1)
|
||||
p2.set_label(n2)
|
||||
|
||||
glade.get_widget('help').connect('clicked', self.help)
|
||||
glade_xml.get_widget('help').connect('clicked', self.help)
|
||||
|
||||
ret = gtk.RESPONSE_HELP
|
||||
while ret == gtk.RESPONSE_HELP:
|
||||
|
@@ -801,7 +801,7 @@ class ListView(BookMarkView):
|
||||
# set the search column to be the sorted column
|
||||
search_col = self.column_order()[data][1]
|
||||
self.list.set_search_column(search_col)
|
||||
|
||||
|
||||
def build_columns(self):
|
||||
for column in self.columns:
|
||||
self.list.remove_column(column)
|
||||
@@ -830,7 +830,6 @@ class ListView(BookMarkView):
|
||||
|
||||
def build_tree(self):
|
||||
if self.active:
|
||||
|
||||
if Config.get(Config.FILTER):
|
||||
filter_info = (True, self.generic_filter)
|
||||
else:
|
||||
@@ -839,6 +838,7 @@ class ListView(BookMarkView):
|
||||
self.model = self.make_model(self.dbstate.db, self.sort_col,
|
||||
search=filter_info)
|
||||
self.list.set_model(self.model)
|
||||
self.build_columns()
|
||||
|
||||
if const.USE_TIPS and self.model.tooltip_column != None:
|
||||
self.tooltips = TreeTips.TreeTips(
|
||||
@@ -881,8 +881,6 @@ class ListView(BookMarkView):
|
||||
def change_db(self, db):
|
||||
for sig in self.signal_map:
|
||||
db.connect(sig, self.signal_map[sig])
|
||||
|
||||
self.build_columns()
|
||||
self.bookmarks.update_bookmarks(self.get_bookmarks())
|
||||
if self.active:
|
||||
self.build_tree()
|
||||
|
@@ -161,6 +161,7 @@ class CommandLineTool:
|
||||
self.database = database
|
||||
self.category = category
|
||||
self.option_class = option_class(name)
|
||||
self.option_class.load_previous_values()
|
||||
self.show = options_str_dict.pop('show',None)
|
||||
self.options_str_dict = options_str_dict
|
||||
self.init_options(noopt)
|
||||
|
@@ -135,12 +135,12 @@ class CommandLineReport:
|
||||
}
|
||||
|
||||
self.options_help = {
|
||||
'of' : ["=filename","Output file name. MANDATORY"],
|
||||
'off' : ["=format","Output file format."],
|
||||
'style' : ["=name","Style name."],
|
||||
'papers' : ["=name","Paper size name."],
|
||||
'papero' : ["=num","Paper orientation number."],
|
||||
'template' : ["=name","Template name (HTML only)."],
|
||||
'of' : ["=filename", "Output file name. MANDATORY", "", ""],
|
||||
'off' : ["=format", "Output file format.", "", ""],
|
||||
'style' : ["=name", "Style name.", "", ""],
|
||||
'papers' : ["=name", "Paper size name.", "", ""],
|
||||
'papero' : ["=num", "Paper orientation number.", "", ""],
|
||||
'template' : ["=name", "Template name (HTML only).", "", ""],
|
||||
}
|
||||
|
||||
if noopt:
|
||||
@@ -157,10 +157,9 @@ class CommandLineReport:
|
||||
if self.format is None:
|
||||
# Pick the first one as the default.
|
||||
self.format = PluginUtils.textdoc_list[0][1]
|
||||
self.options_help['off'].append(
|
||||
self.options_help['off'][2] = \
|
||||
[ item[7] for item in PluginUtils.textdoc_list ]
|
||||
)
|
||||
self.options_help['off'].append(False)
|
||||
self.options_help['off'][3] = False
|
||||
elif self.category == CATEGORY_DRAW:
|
||||
for item in PluginUtils.drawdoc_list:
|
||||
if item[6] == self.options_dict['off']:
|
||||
@@ -168,10 +167,9 @@ class CommandLineReport:
|
||||
if self.format is None:
|
||||
# Pick the first one as the default.
|
||||
self.format = PluginUtils.drawdoc_list[0][1]
|
||||
self.options_help['off'].append(
|
||||
self.options_help['off'][2] = \
|
||||
[ item[6] for item in PluginUtils.drawdoc_list ]
|
||||
)
|
||||
self.options_help['off'].append(False)
|
||||
self.options_help['off'][3] = False
|
||||
elif self.category == CATEGORY_BOOK:
|
||||
for item in PluginUtils.bookdoc_list:
|
||||
if item[6] == self.options_dict['off']:
|
||||
@@ -179,10 +177,9 @@ class CommandLineReport:
|
||||
if self.format is None:
|
||||
# Pick the first one as the default.
|
||||
self.format = PluginUtils.bookdoc_list[0][1]
|
||||
self.options_help['off'].append(
|
||||
self.options_help['off'][2] = \
|
||||
[ item[6] for item in PluginUtils.bookdoc_list ]
|
||||
)
|
||||
self.options_help['off'].append(False)
|
||||
self.options_help['off'][3] = False
|
||||
else:
|
||||
self.format = None
|
||||
|
||||
@@ -190,20 +187,20 @@ class CommandLineReport:
|
||||
if paper.get_name() == self.options_dict['papers']:
|
||||
self.paper = paper
|
||||
self.option_class.handler.set_paper(self.paper)
|
||||
self.options_help['papers'].append(
|
||||
self.options_help['papers'][2] = \
|
||||
[ paper.get_name() for paper in paper_sizes
|
||||
if paper.get_name() != _("Custom Size") ] )
|
||||
self.options_help['papers'].append(False)
|
||||
if paper.get_name() != _("Custom Size") ]
|
||||
self.options_help['papers'][3] = False
|
||||
|
||||
self.orien = self.options_dict['papero']
|
||||
self.options_help['papero'].append([
|
||||
self.options_help['papero'][2] = [
|
||||
"%d\tPortrait" % BaseDoc.PAPER_PORTRAIT,
|
||||
"%d\tLandscape" % BaseDoc.PAPER_LANDSCAPE ] )
|
||||
self.options_help['papero'].append(False)
|
||||
"%d\tLandscape" % BaseDoc.PAPER_LANDSCAPE ]
|
||||
self.options_help['papero'][3] = False
|
||||
|
||||
self.template_name = self.options_dict['template']
|
||||
self.options_help['template'].append(os.path.join(const.USER_HOME,
|
||||
"whatever_name"))
|
||||
self.options_help['template'][2] = os.path.join(const.USER_HOME,
|
||||
"whatever_name")
|
||||
|
||||
if self.category in (CATEGORY_TEXT, CATEGORY_DRAW):
|
||||
default_style = BaseDoc.StyleSheet()
|
||||
@@ -217,8 +214,8 @@ class CommandLineReport:
|
||||
style_name = self.option_class.handler.get_default_stylesheet_name()
|
||||
self.selected_style = self.style_list.get_style_sheet(style_name)
|
||||
|
||||
self.options_help['style'].append(self.style_list.get_style_names())
|
||||
self.options_help['style'].append(False)
|
||||
self.options_help['style'][2] = self.style_list.get_style_names()
|
||||
self.options_help['style'][3] = False
|
||||
|
||||
def init_report_options(self):
|
||||
"""
|
||||
@@ -291,12 +288,17 @@ class CommandLineReport:
|
||||
elif isinstance(option, PluginUtils.StringOption):
|
||||
self.options_help[name].append("Any text")
|
||||
self.options_help[name].append(False)
|
||||
elif isinstance(option, PluginUtils.TextOption):
|
||||
self.options_help[name].append("Any text")
|
||||
self.options_help[name].append(False)
|
||||
elif isinstance(option, PluginUtils.EnumeratedListOption):
|
||||
ilist = []
|
||||
for (value, description) in option.get_items():
|
||||
ilist.append("%s\t%s" % (value, description))
|
||||
self.options_help[name].append(ilist)
|
||||
self.options_help[name].append(False)
|
||||
else:
|
||||
print "Unknown option: ", option
|
||||
|
||||
def parse_options(self):
|
||||
"""
|
||||
|
@@ -51,6 +51,7 @@ from _Constants import CATEGORY_GRAPHVIZ
|
||||
from _ReportDialog import ReportDialog
|
||||
from _PaperMenu import PaperFrame
|
||||
from PluginUtils import NumberOption, EnumeratedListOption, TextOption
|
||||
from QuestionDialog import WarningDialog
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
#
|
||||
@@ -109,8 +110,8 @@ class GVDocBase(BaseDoc.BaseDoc,BaseDoc.GVDoc):
|
||||
inherit from this class will only need to implement the close function.
|
||||
The close function will generate the actual file of the appropriate type.
|
||||
"""
|
||||
def __init__(self, options,paper_style):
|
||||
BaseDoc.BaseDoc.__init__(self,None,paper_style,None)
|
||||
def __init__(self, options, paper_style):
|
||||
BaseDoc.BaseDoc.__init__(self, None, paper_style, None)
|
||||
|
||||
self.options = options.handler.options_dict
|
||||
self.dot = StringIO()
|
||||
@@ -131,31 +132,23 @@ class GVDocBase(BaseDoc.BaseDoc,BaseDoc.GVDoc):
|
||||
self.vpages = self.options['v_pages' ]
|
||||
|
||||
paper_size = paper_style.get_size()
|
||||
pheight = paper_size.get_height_inches()
|
||||
pwidth = paper_size.get_width_inches()
|
||||
|
||||
# graph size
|
||||
if self.paper.get_orientation() == BaseDoc.PAPER_LANDSCAPE:
|
||||
rotate = 90
|
||||
sizew = ( paper_size.get_height() -
|
||||
self.paper.get_top_margin() -
|
||||
self.paper.get_bottom_margin() ) / 2.54
|
||||
sizeh = ( paper_size.get_width() -
|
||||
self.paper.get_left_margin() -
|
||||
self.paper.get_right_margin() ) / 2.54
|
||||
|
||||
else:
|
||||
rotate = 0
|
||||
sizew = ( paper_size.get_width() -
|
||||
self.paper.get_left_margin() -
|
||||
self.paper.get_right_margin() ) / 2.54
|
||||
sizeh = ( paper_size.get_height() -
|
||||
self.paper.get_top_margin() -
|
||||
self.paper.get_bottom_margin() ) / 2.54
|
||||
sizew = ( paper_size.get_width() -
|
||||
self.paper.get_left_margin() -
|
||||
self.paper.get_right_margin() ) / 2.54
|
||||
sizeh = ( paper_size.get_height() -
|
||||
self.paper.get_top_margin() -
|
||||
self.paper.get_bottom_margin() ) / 2.54
|
||||
|
||||
pheight = paper_size.get_height_inches()
|
||||
pwidth = paper_size.get_width_inches()
|
||||
|
||||
xmargin = self.paper.get_left_margin() / 2.54
|
||||
ymargin = self.paper.get_top_margin() / 2.54
|
||||
|
||||
sizew = sizew * self.hpages
|
||||
sizeh = sizeh * self.vpages
|
||||
|
||||
|
||||
self.write( 'digraph GRAMPS_graph\n' )
|
||||
self.write( '{\n' )
|
||||
self.write( ' bgcolor=white;\n' )
|
||||
@@ -172,9 +165,9 @@ class GVDocBase(BaseDoc.BaseDoc,BaseDoc.GVDoc):
|
||||
self.write( ' rankdir="%s";\n' % self.rankdir )
|
||||
self.write( ' ranksep="%.2f";\n' % self.ranksep )
|
||||
self.write( ' ratio="%s";\n' % self.ratio )
|
||||
self.write( ' rotate="%d";\n' % rotate )
|
||||
self.write( ' searchsize="100";\n' )
|
||||
self.write( ' size="%3.2f,%3.2f"; \n' % (sizew, sizeh) )
|
||||
self.write( ' margin="%3.2f,%3.2f"; \n' % (xmargin, ymargin))
|
||||
self.write( ' splines="true";\n' )
|
||||
self.write( '\n' )
|
||||
self.write( ' edge [len=0.5 style=solid arrowhead=none '
|
||||
@@ -321,6 +314,13 @@ class GVDotDoc(GVDocBase):
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
class GVPsDoc(GVDocBase):
|
||||
|
||||
def __init__(self, options, paper_style):
|
||||
# DPI must always be 72 for PDF.
|
||||
# GV documentation says dpi is only for image formats.
|
||||
options.handler.options_dict['dpi'] = 72
|
||||
GVDocBase.__init__(self, options, paper_style)
|
||||
|
||||
def close(self):
|
||||
GVDocBase.close(self)
|
||||
|
||||
@@ -495,6 +495,13 @@ class GVGifDoc(GVDocBase):
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
class GVPdfGvDoc(GVDocBase):
|
||||
|
||||
def __init__(self, options, paper_style):
|
||||
# DPI must always be 72 for PDF.
|
||||
# GV documentation says dpi is only for image formats.
|
||||
options.handler.options_dict['dpi'] = 72
|
||||
GVDocBase.__init__(self, options, paper_style)
|
||||
|
||||
def close(self):
|
||||
GVDocBase.close(self)
|
||||
|
||||
@@ -518,13 +525,19 @@ class GVPdfGvDoc(GVDocBase):
|
||||
app = Mime.get_application("application/pdf")
|
||||
Utils.launch(app[0], self.filename)
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
#
|
||||
# GVPdfGsDoc
|
||||
#
|
||||
#-------------------------------------------------------------------------------
|
||||
class GVPdfGsDoc(GVDocBase):
|
||||
|
||||
def __init__(self, options, paper_style):
|
||||
# DPI must always be 72 for PDF.
|
||||
# GV documentation says dpi is only for image formats.
|
||||
options.handler.options_dict['dpi'] = 72
|
||||
GVDocBase.__init__(self, options, paper_style)
|
||||
|
||||
def close(self):
|
||||
GVDocBase.close(self)
|
||||
|
||||
@@ -563,7 +576,7 @@ class GVPdfGsDoc(GVDocBase):
|
||||
if self.print_req:
|
||||
app = Mime.get_application("application/pdf")
|
||||
Utils.launch(app[0], self.filename)
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
#
|
||||
# Various Graphviz formats.
|
||||
@@ -790,10 +803,12 @@ class GraphvizReportDialog(ReportDialog):
|
||||
self.options.add_menu_option(category, "ratio", aspect_ratio)
|
||||
|
||||
dpi = NumberOption(_("DPI"), 75, 20, 1200)
|
||||
# Remember dpi until later margins check
|
||||
self.dpi = dpi
|
||||
dpi.set_help(_( "Dots per inch. When creating images such as "
|
||||
".gif or .png files for the web, try numbers "
|
||||
"such as 75 or 100 DPI. When printing, try"
|
||||
"300 or 600 DPI."))
|
||||
"such as 100 or 300 DPI. When creating postscript or "
|
||||
"pdf files, use 72 DPI."))
|
||||
self.options.add_menu_option(category, "dpi", dpi)
|
||||
|
||||
nodesep = NumberOption(_("Node spacing"), 0.20, 0.01, 5.00, 0.01)
|
||||
@@ -939,10 +954,6 @@ class GraphvizReportDialog(ReportDialog):
|
||||
the output file name before doing anything else. If there is
|
||||
a file name, gather the options and create the report."""
|
||||
|
||||
# Is there a filename? This should also test file permissions, etc.
|
||||
if not self.parse_target_frame():
|
||||
self.window.run()
|
||||
|
||||
# Preparation
|
||||
self.parse_format_frame()
|
||||
self.parse_user_options()
|
||||
@@ -952,6 +963,52 @@ class GraphvizReportDialog(ReportDialog):
|
||||
self.options.handler.set_orientation(self.paper_frame.get_orientation())
|
||||
self.options.handler.set_margins(self.paper_frame.get_paper_margins())
|
||||
self.options.handler.set_custom_paper_size(self.paper_frame.get_custom_paper_size())
|
||||
#=====================================================================
|
||||
# First check for small margins
|
||||
# Warn if margins less than 0.5", which can generate wrong ouput:
|
||||
# pdf via Graphviz generates pdf errors
|
||||
# pdf via Ghostscrip generetes 4 pages is stead of one,
|
||||
# which are without errors, but only one was wanted.
|
||||
# If all margins are >1.0" then graphs are OK, but some graphs are
|
||||
# offset a lot
|
||||
# Note margins are always in cm.
|
||||
if self.paper_frame.get_paper_metric():
|
||||
warn_marg = _("1.3 cm.")
|
||||
else:
|
||||
warn_marg = _("0.5 in.")
|
||||
|
||||
pm_l = self.paper_frame.get_paper_margins()[0] / 2.54
|
||||
pm_r = self.paper_frame.get_paper_margins()[1] / 2.54
|
||||
pm_t = self.paper_frame.get_paper_margins()[2] / 2.54
|
||||
pm_b = self.paper_frame.get_paper_margins()[3] / 2.54
|
||||
|
||||
if ((pm_l < 0.5 and pm_r < 0.5) or (pm_t < 0.5 and pm_b < 0.5)) and \
|
||||
(self.format_menu.get_clname() == 'gvpdf'):
|
||||
warn_text1 = _("Two or more opposite paper margins are less than ")
|
||||
warn_text2 = _("This can cause incorrect and/or partial graphs.")
|
||||
WarningDialog(warn_text1 + warn_marg, warn_text2)
|
||||
|
||||
if ((pm_l < 0.5 and pm_r < 0.5) or (pm_t < 0.5 and pm_b < 0.5)) and \
|
||||
((self.format_menu.get_clname() == 'gspdf') or \
|
||||
(self.format_menu.get_clname() == 'ps') or \
|
||||
(self.format_menu.get_clname() == 'dot')):
|
||||
warn_text1 = _("Two or more opposite paper margins are less than ")
|
||||
warn_text2 = _("More than expected number of pages can be generated.")
|
||||
WarningDialog(warn_text1 + warn_marg, warn_text2)
|
||||
|
||||
if ((self.h_pages.get_value() > 1) or (self.h_pages.get_value() > 1)) and \
|
||||
not ((self.format_menu.get_clname() == 'gspdf') or \
|
||||
(self.format_menu.get_clname() == 'ps') or \
|
||||
(self.format_menu.get_clname() == 'dot')):
|
||||
warn_text1 = _("You have used more than one page as output.")
|
||||
warn_text2 = _("This can cause incorrect and/or partial graphs.")
|
||||
WarningDialog(warn_text1, warn_text2)
|
||||
|
||||
#======================================================================
|
||||
|
||||
# Is there a filename? This should also test file permissions, etc.
|
||||
if not self.parse_target_frame():
|
||||
self.window.run()
|
||||
|
||||
# Create the output document.
|
||||
self.make_document()
|
||||
|
@@ -220,16 +220,18 @@ class PaperFrame(gtk.HBox):
|
||||
if checkbox.get_active():
|
||||
self.paper_unit = 'cm'
|
||||
self.paper_unit_multiplier = 1.0
|
||||
paper_unit_text = _("cm")
|
||||
else:
|
||||
self.paper_unit = 'in.'
|
||||
self.paper_unit_multiplier = 2.54
|
||||
paper_unit_text = _("in.")
|
||||
|
||||
self.lunits1.set_text(self.paper_unit)
|
||||
self.lunits2.set_text(self.paper_unit)
|
||||
self.lunits3.set_text(self.paper_unit)
|
||||
self.lunits4.set_text(self.paper_unit)
|
||||
self.lunits5.set_text(self.paper_unit)
|
||||
self.lunits6.set_text(self.paper_unit)
|
||||
self.lunits1.set_text(paper_unit_text)
|
||||
self.lunits2.set_text(paper_unit_text)
|
||||
self.lunits3.set_text(paper_unit_text)
|
||||
self.lunits4.set_text(paper_unit_text)
|
||||
self.lunits5.set_text(paper_unit_text)
|
||||
self.lunits6.set_text(paper_unit_text)
|
||||
|
||||
if self.paper_unit == 'cm':
|
||||
self.pwidth.set_text("%.2f" % paper_size.get_width())
|
||||
@@ -259,8 +261,8 @@ class PaperFrame(gtk.HBox):
|
||||
# How can we distinguish custom size though?
|
||||
if papername == _('Custom Size'):
|
||||
try:
|
||||
h = float(unicode(self.pheight.get_text()))
|
||||
w = float(unicode(self.pwidth.get_text()))
|
||||
h = float(unicode(self.pheight.get_text().replace(",",".")))
|
||||
w = float(unicode(self.pwidth.get_text().replace(",",".")))
|
||||
|
||||
if h <= 1.0 or w <= 1.0:
|
||||
papersize.set_height(29.7)
|
||||
@@ -271,7 +273,7 @@ class PaperFrame(gtk.HBox):
|
||||
except:
|
||||
papersize.set_height(29.7)
|
||||
papersize.set_width(21.0)
|
||||
|
||||
1.30
|
||||
return papersize, papername
|
||||
|
||||
def get_paper_margins(self):
|
||||
@@ -285,10 +287,9 @@ class PaperFrame(gtk.HBox):
|
||||
paper_margins.append(unicode(self.rmargin.get_text()))
|
||||
paper_margins.append(unicode(self.tmargin.get_text()))
|
||||
paper_margins.append(unicode(self.bmargin.get_text()))
|
||||
|
||||
for i, margin in enumerate(paper_margins):
|
||||
try:
|
||||
paper_margins[i] = float(margin)
|
||||
paper_margins[i] = float(margin.replace(",","."))
|
||||
paper_margins[i] = paper_margins[i] * self.paper_unit_multiplier
|
||||
paper_margins[i] = max(paper_margins[i], 0)
|
||||
except:
|
||||
@@ -297,8 +298,8 @@ class PaperFrame(gtk.HBox):
|
||||
return paper_margins
|
||||
|
||||
def get_custom_paper_size(self):
|
||||
width = float(self.pwidth.get_text() ) * self.paper_unit_multiplier
|
||||
height = float(self.pheight.get_text()) * self.paper_unit_multiplier
|
||||
width = float(self.pwidth.get_text().replace(",",".")) * self.paper_unit_multiplier
|
||||
height = float(self.pheight.get_text().replace(",",".")) * self.paper_unit_multiplier
|
||||
|
||||
paper_size = []
|
||||
paper_size.append(max(width, 1.0))
|
||||
|
@@ -527,7 +527,7 @@ died_no_date_no_place = [
|
||||
],
|
||||
},
|
||||
[
|
||||
_(""),
|
||||
"",
|
||||
_("Died (age %(age)d years)."),
|
||||
_("Died (age %(age)d months)."),
|
||||
_("Died (age %(age)d days)."),
|
||||
|
@@ -2,7 +2,8 @@
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2000-2005 Donald N. Allingham
|
||||
# Copyright (C) 2007 Brian G. Matherly
|
||||
# Copyright (C) 2007-2008 Brian G. Matherly
|
||||
# Copyright (C) 2008 Peter Landgren
|
||||
#
|
||||
# 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
|
||||
@@ -202,8 +203,6 @@ class StyleEditor:
|
||||
ManagedWindow.set_titles( self.window,
|
||||
self.top.get_widget('title'),
|
||||
_('Style editor'))
|
||||
|
||||
self.first = 1
|
||||
|
||||
titles = [(_('Paragraph'), 0, 130)]
|
||||
self.plist = ListModel.ListModel(self.top.get_widget("ptree"), titles,
|
||||
@@ -270,24 +269,32 @@ class StyleEditor:
|
||||
self.top.get_widget("bborder").set_active(p.get_bottom_border())
|
||||
|
||||
self.fg_color = font.get_color()
|
||||
c = Color(self.fg_color[0], self.fg_color[1], self.fg_color[2])
|
||||
c = Color(self.fg_color[0] << 8,
|
||||
self.fg_color[1] << 8,
|
||||
self.fg_color[2] << 8)
|
||||
self.top.get_widget("color").set_color(c)
|
||||
self.top.get_widget('color_code').set_text("#%02X%02X%02X" % self.fg_color)
|
||||
self.top.get_widget('color_code').set_text(
|
||||
"#%02X%02X%02X" % self.fg_color)
|
||||
|
||||
self.bg_color = p.get_background_color()
|
||||
c = Color(self.bg_color[0], self.bg_color[1], self.bg_color[2])
|
||||
c = Color(self.bg_color[0] << 8,
|
||||
self.bg_color[1] << 8,
|
||||
self.bg_color[2] << 8)
|
||||
self.top.get_widget("bgcolor").set_color(c)
|
||||
self.top.get_widget('bgcolor_code').set_text("#%02X%02X%02X" % self.bg_color)
|
||||
self.top.get_widget('bgcolor_code').set_text(
|
||||
"#%02X%02X%02X" % self.bg_color)
|
||||
|
||||
def bg_color_set(self, x):
|
||||
c = x.get_color()
|
||||
self.bg_color = (c.red >> 8, c.green >> 8, c.blue >> 8)
|
||||
self.top.get_widget('bgcolor_code').set_text("#%02X%02X%02X" % self.bg_color)
|
||||
self.top.get_widget('bgcolor_code').set_text(
|
||||
"#%02X%02X%02X" % self.bg_color)
|
||||
|
||||
def fg_color_set(self, x):
|
||||
c = x.get_color()
|
||||
self.fg_color = (c.red >> 8, c.green >> 8, c.blue >> 8)
|
||||
self.top.get_widget('color_code').set_text("#%02X%02X%02X" % self.fg_color)
|
||||
self.top.get_widget('color_code').set_text(
|
||||
"#%02X%02X%02X" % self.fg_color)
|
||||
|
||||
def save_paragraph(self):
|
||||
"""Saves the current paragraph displayed on the dialog"""
|
||||
@@ -344,13 +351,13 @@ class StyleEditor:
|
||||
def change_display(self, obj):
|
||||
"""Called when the paragraph selection has been changed. Saves the
|
||||
old paragraph, then draws the newly selected paragraph"""
|
||||
|
||||
# Don't save until current_name is defined
|
||||
# If it's defined, save under the current paragraph name
|
||||
if self.current_name:
|
||||
self.save_paragraph()
|
||||
# Then change to new paragraph
|
||||
objs = self.plist.get_selected_objects()
|
||||
store, node = self.plist.get_selected()
|
||||
self.current_name = store.get_value(node, 0)
|
||||
if self.first == 0:
|
||||
self.save_paragraph()
|
||||
else:
|
||||
self.first = 0
|
||||
self.current_p = objs[0]
|
||||
self.draw()
|
||||
|
@@ -36,7 +36,7 @@ body {
|
||||
color:#7D5925;
|
||||
margin:0;
|
||||
padding:0;
|
||||
background:url(images/NWeb_Certificate_Bkgd.png) #000 repeat;
|
||||
background:url(images/NWeb_Mainz_Bkgd.png) #000 repeat;
|
||||
}
|
||||
div {
|
||||
margin:0;
|
||||
@@ -53,7 +53,7 @@ img {
|
||||
width:900px;
|
||||
margin:0 auto;
|
||||
padding-bottom:.5em;
|
||||
background:url(images/NWeb_Certificate_Mid.png) #FFF2C6 repeat;
|
||||
background:url(images/NWeb_Mainz_Mid.png) #FFF2C6 repeat;
|
||||
}
|
||||
.content div.snapshot {
|
||||
margin:0;
|
||||
@@ -152,7 +152,7 @@ a:visited {
|
||||
width:900px;
|
||||
margin:0 auto;
|
||||
padding:5em 0 2px 0;
|
||||
background:url(images/NWeb_Certificate_Header.png) no-repeat top;
|
||||
background:url(images/NWeb_Mainz_Header.png) no-repeat top;
|
||||
}
|
||||
#SiteTitle {
|
||||
color:#7D5925;
|
||||
@@ -181,7 +181,7 @@ a:visited {
|
||||
width:900px;
|
||||
margin:0 auto;
|
||||
padding:0;
|
||||
background:url(images/NWeb_Certificate_MidLight.png) #FFF2C6;
|
||||
background:url(images/NWeb_Mainz_MidLight.png) #FFF2C6;
|
||||
}
|
||||
#Navigation ol {
|
||||
list-style:none;
|
||||
@@ -230,7 +230,7 @@ a:visited {
|
||||
margin:0 auto;
|
||||
padding:0;
|
||||
clear:both;
|
||||
background:url(images/NWeb_Certificate_MidLight.png) #FFF2C6;
|
||||
background:url(images/NWeb_Mainz_MidLight.png) #FFF2C6;
|
||||
border-top:dashed 1px #7D5925;
|
||||
}
|
||||
#user_footer {
|
||||
@@ -346,7 +346,7 @@ table#SortByName thead tr th.ColumnSurname a:after, table#SortByCount thead tr t
|
||||
}
|
||||
table.infolist tbody tr td.ColumnSurname {
|
||||
padding:0;
|
||||
background:url(images/NWeb_Certificate_MidLight.png) #FFF2C6 repeat;
|
||||
background:url(images/NWeb_Mainz_MidLight.png) #FFF2C6 repeat;
|
||||
}
|
||||
table.infolist tbody tr td.ColumnSurname a {
|
||||
padding:.1em 10px;
|
||||
@@ -363,7 +363,7 @@ table.surname tbody tr:last-child td {
|
||||
table.surname tbody tr td.ColumnName {
|
||||
width:20%;
|
||||
padding:0;
|
||||
background:url(images/NWeb_Certificate_MidLight.png) #FFF2C6 repeat;
|
||||
background:url(images/NWeb_Mainz_MidLight.png) #FFF2C6 repeat;
|
||||
}
|
||||
table.surname tbody tr td.ColumnName a {
|
||||
display:block;
|
||||
@@ -399,7 +399,7 @@ table.individuallist tbody tr td.ColumnSurname a:hover, table.individuallist tbo
|
||||
}
|
||||
table.individuallist tbody tr td.ColumnName {
|
||||
padding:0;
|
||||
background:url(images/NWeb_Certificate_MidLight.png) #FFF2C6 repeat;
|
||||
background:url(images/NWeb_Mainz_MidLight.png) #FFF2C6 repeat;
|
||||
}
|
||||
table.individuallist tbody tr td.ColumnName a {
|
||||
display:block;
|
||||
@@ -473,7 +473,7 @@ table.individuallist tbody tr td.ColumnName a {
|
||||
font-style:italic;
|
||||
color:#FFF2C6;
|
||||
text-decoration:none;
|
||||
background:url(images/NWeb_Certificate_Bkgd.png) #7D5925 repeat;
|
||||
background:url(images/NWeb_Mainz_Bkgd.png) #7D5925 repeat;
|
||||
border:outset 3px #000;
|
||||
}
|
||||
#GalleryNav a:hover {
|
||||
@@ -873,4 +873,4 @@ div#narrative {
|
||||
margin:0 0 0 14px;
|
||||
padding:0;
|
||||
background:none;
|
||||
}
|
||||
}
|
||||
|
@@ -1,7 +1,8 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2007 Zsolt Foldvari
|
||||
# Copyright (C) 2007 Zsolt Foldvari
|
||||
# Copyright (C) 2008 Brian G. Matherly
|
||||
#
|
||||
# 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
|
||||
@@ -91,6 +92,7 @@ class PdfDoc(CairoDoc):
|
||||
cr = pangocairo.CairoContext(cairo.Context(surface))
|
||||
|
||||
fontmap = pangocairo.cairo_font_map_get_default()
|
||||
saved_resolution = fontmap.get_resolution()
|
||||
fontmap.set_resolution(DPI)
|
||||
|
||||
pango_context = fontmap.create_context()
|
||||
@@ -117,6 +119,10 @@ class PdfDoc(CairoDoc):
|
||||
|
||||
# close the surface (file)
|
||||
surface.finish()
|
||||
|
||||
# Restore the resolution. On windows, Gramps UI fonts will be smaller
|
||||
# if we don't restore the resolution.
|
||||
fontmap.set_resolution(saved_resolution)
|
||||
|
||||
# load the result into an external viewer
|
||||
if self.print_req:
|
||||
|
@@ -814,6 +814,15 @@ class GrampsDbBase(Callback):
|
||||
|
||||
def find_from_handle(self, handle, transaction, class_type, dmap,
|
||||
add_func):
|
||||
"""
|
||||
Find a object of class_type in the database from the passed handle.
|
||||
|
||||
If no object exists, a new object is added to the database.
|
||||
|
||||
@return: Returns a tuple, first the object, second a bool which is True
|
||||
if the object is new
|
||||
@rtype: tuple
|
||||
"""
|
||||
obj = class_type()
|
||||
handle = str(handle)
|
||||
new = True
|
||||
@@ -840,6 +849,10 @@ class GrampsDbBase(Callback):
|
||||
Find a Person in the database from the passed handle.
|
||||
|
||||
If no such Person exists, a new Person is added to the database.
|
||||
|
||||
@return: Returns a tuple, first the object, second a bool which is True
|
||||
if the object is new
|
||||
@rtype: tuple
|
||||
"""
|
||||
return self.find_from_handle(handle, transaction, Person,
|
||||
self.person_map, self.add_person)
|
||||
@@ -849,6 +862,10 @@ class GrampsDbBase(Callback):
|
||||
Find a Source in the database from the passed handle.
|
||||
|
||||
If no such Source exists, a new Source is added to the database.
|
||||
|
||||
@return: Returns a tuple, first the object, second a bool which is True
|
||||
if the object is new
|
||||
@rtype: tuple
|
||||
"""
|
||||
return self.find_from_handle(handle, transaction, Source,
|
||||
self.source_map, self.add_source)
|
||||
@@ -858,6 +875,10 @@ class GrampsDbBase(Callback):
|
||||
Find a Event in the database from the passed handle.
|
||||
|
||||
If no such Event exists, a new Event is added to the database.
|
||||
|
||||
@return: Returns a tuple, first the object, second a bool which is True
|
||||
if the object is new
|
||||
@rtype: tuple
|
||||
"""
|
||||
return self.find_from_handle(handle, transaction, Event,
|
||||
self.event_map, self.add_event)
|
||||
@@ -867,6 +888,10 @@ class GrampsDbBase(Callback):
|
||||
Find a MediaObject in the database from the passed handle.
|
||||
|
||||
If no such MediaObject exists, a new Object is added to the database.
|
||||
|
||||
@return: Returns a tuple, first the object, second a bool which is True
|
||||
if the object is new
|
||||
@rtype: tuple
|
||||
"""
|
||||
return self.find_from_handle(handle, transaction, MediaObject,
|
||||
self.media_map, self.add_object)
|
||||
@@ -876,6 +901,10 @@ class GrampsDbBase(Callback):
|
||||
Find a Place in the database from the passed handle.
|
||||
|
||||
If no such Place exists, a new Place is added to the database.
|
||||
|
||||
@return: Returns a tuple, first the object, second a bool which is True
|
||||
if the object is new
|
||||
@rtype: tuple
|
||||
"""
|
||||
return self.find_from_handle(handle, transaction, Place,
|
||||
self.place_map, self.add_place)
|
||||
@@ -885,6 +914,10 @@ class GrampsDbBase(Callback):
|
||||
Find a Family in the database from the passed handle.
|
||||
|
||||
If no such Family exists, a new Family is added to the database.
|
||||
|
||||
@return: Returns a tuple, first the object, second a bool which is True
|
||||
if the object is new
|
||||
@rtype: tuple
|
||||
"""
|
||||
return self.find_from_handle(handle, transaction, Family,
|
||||
self.family_map, self.add_family)
|
||||
@@ -894,6 +927,10 @@ class GrampsDbBase(Callback):
|
||||
Find a Repository in the database from the passed handle.
|
||||
|
||||
If no such Repository exists, a new Repository is added to the database.
|
||||
|
||||
@return: Returns a tuple, first the object, second a bool which is True
|
||||
if the object is new
|
||||
@rtype: tuple
|
||||
"""
|
||||
return self.find_from_handle(handle, transaction, Repository,
|
||||
self.repository_map, self.add_repository)
|
||||
@@ -903,6 +940,10 @@ class GrampsDbBase(Callback):
|
||||
Find a Note in the database from the passed handle.
|
||||
|
||||
If no such Note exists, a new Note is added to the database.
|
||||
|
||||
@return: Returns a tuple, first the object, second a bool which is True
|
||||
if the object is new
|
||||
@rtype: tuple
|
||||
"""
|
||||
return self.find_from_handle(handle, transaction, Note,
|
||||
self.note_map, self.add_note)
|
||||
|
@@ -1493,6 +1493,15 @@ class GrampsDBDir(GrampsDbBase, UpdateCallback):
|
||||
return None
|
||||
|
||||
def find_from_handle(self, handle, transaction, class_type, dmap, add_func):
|
||||
"""
|
||||
Find a object of class_type in the database from the passed handle.
|
||||
|
||||
If no object exists, a new object is added to the database.
|
||||
|
||||
@return: Returns a tuple, first the object, second a bool which is True
|
||||
if the object is new
|
||||
@rtype: tuple
|
||||
"""
|
||||
obj = class_type()
|
||||
handle = str(handle)
|
||||
new = True
|
||||
|
@@ -67,7 +67,6 @@ class AttributeType(GrampsType):
|
||||
(NATIONAL , _("National Origin"), "National Origin"),
|
||||
(NUM_CHILD , _("Number of Children"), "Number of Children"),
|
||||
(SSN , _("Social Security Number"), "Social Security Number"),
|
||||
(NUM_CHILD , _("Number of Children"), "Number of Children"),
|
||||
(NICKNAME , _("Nickname"), "Nickname"),
|
||||
(CAUSE , _("Cause"), "Cause"),
|
||||
(AGENCY , _("Agency"), "Agency"),
|
||||
|
@@ -15883,13 +15883,13 @@ Very High</property>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<widget class="GtkButton" id="ok">
|
||||
<widget class="GtkButton" id="connect">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_default">True</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
<property name="focus_on_click">True</property>
|
||||
<property name="response_id">-5</property>
|
||||
<property name="response_id">0</property>
|
||||
|
||||
<child>
|
||||
<widget class="GtkAlignment" id="alignment8">
|
||||
|
@@ -183,37 +183,11 @@ def register_stock_icons ():
|
||||
|
||||
factory.add (data[0], icon_set)
|
||||
|
||||
|
||||
def build_user_paths():
|
||||
""" check/make user-dirs on each Gramps session"""
|
||||
for path in const.USER_DIRLIST:
|
||||
if not os.path.isdir(path):
|
||||
os.mkdir(path)
|
||||
|
||||
def _display_welcome_message():
|
||||
"""
|
||||
Display a welcome message to the user.
|
||||
"""
|
||||
if not Config.get(Config.BETAWARN):
|
||||
from QuestionDialog import WarningDialog
|
||||
WarningDialog(
|
||||
_('Danger: This is unstable code!'),
|
||||
_("This GRAMPS 3.0 Beta release is an early, experimental "
|
||||
"peek at the future 3.0 release. This version is "
|
||||
"not meant for normal usage. Use at your own risk.\n\n"
|
||||
"This version may:\n"
|
||||
"1) Work differently than you expect.\n"
|
||||
"2) Fail to run at all.\n"
|
||||
"3) Crash often.\n"
|
||||
"4) Corrupt your data.\n"
|
||||
"5) Save data in a format that is incompatible with the "
|
||||
"official release.\n"
|
||||
"\n<b>BACKUP</b> your existing databases "
|
||||
"before opening them with this version, and make "
|
||||
"sure to export your data to XML every now and then."))
|
||||
Config.set(Config.AUTOLOAD, False)
|
||||
# Config.set(Config.BETAWARN, True)
|
||||
Config.set(Config.BETAWARN, Config.get(Config.BETAWARN))
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -231,8 +205,7 @@ class Gramps:
|
||||
def __init__(self, args):
|
||||
stopload = False
|
||||
try:
|
||||
build_user_paths()
|
||||
_display_welcome_message()
|
||||
build_user_paths()
|
||||
except OSError, msg:
|
||||
ErrorDialog(_("Configuration error"), str(msg))
|
||||
except Errors.GConfSchemaError, val:
|
||||
@@ -286,5 +259,3 @@ class Gramps:
|
||||
|
||||
if Config.get(Config.USE_TIPS):
|
||||
TipOfDay.TipOfDay(self.vm.uistate)
|
||||
|
||||
|
||||
|
@@ -82,5 +82,5 @@ CLEANFILES = $(map_tile_images)\
|
||||
world.topo.200407.3x3200x1600.jpg\
|
||||
world.topo.200407.3x5400x2700.jpg
|
||||
|
||||
world.topo.200407%: mk_blue_marble.py
|
||||
world.topo.200407: mk_blue_marble.py
|
||||
python mk_blue_marble.py
|
||||
|
@@ -643,7 +643,7 @@ class BookListDisplay:
|
||||
if not the_iter:
|
||||
return
|
||||
data = self.blist.get_data(the_iter, [0])
|
||||
self.booklist.delete_book(data[0])
|
||||
self.booklist.delete_book(unicode(data[0]))
|
||||
self.blist.remove(the_iter)
|
||||
self.top.run()
|
||||
|
||||
@@ -896,7 +896,6 @@ class BookReportSelector(ManagedWindow.ManagedWindow):
|
||||
self.track)
|
||||
response = item_dialog.window.run()
|
||||
if response == RESPONSE_OK:
|
||||
_initialize_options(option_class, self.dbstate)
|
||||
subject = _get_subject(option_class, self.db)
|
||||
self.bk_model.model.set_value(the_iter, 2, subject)
|
||||
self.book.set_item(row, item)
|
||||
@@ -1182,6 +1181,10 @@ def cl_report(database, name, category, options_str_dict):
|
||||
# Exit here if show option was given
|
||||
if clr.show:
|
||||
return
|
||||
|
||||
if not clr.options_dict.has_key('bookname'):
|
||||
print "Please Specify a book name"
|
||||
return
|
||||
|
||||
book_list = BookList('books.xml', database)
|
||||
book_name = clr.options_dict['bookname']
|
||||
|
@@ -28,7 +28,6 @@
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import os
|
||||
from gettext import gettext as _
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -50,7 +49,7 @@ import ManagedWindow
|
||||
|
||||
from QuestionDialog import OkDialog
|
||||
from PluginUtils import Tool, register_tool
|
||||
|
||||
from TransUtils import sgettext as _
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# constants
|
||||
@@ -64,7 +63,8 @@ prefix_list = [
|
||||
"um", "una", "uno",
|
||||
]
|
||||
|
||||
|
||||
WIKI_HELP_PAGE = 'Gramps_3.0_Wiki_Manual_-_Tools'
|
||||
WIKI_HELP_SEC = _('manual|Fix_Capitalization_of_Family_Names...')
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -231,7 +231,7 @@ class ChangeNames(Tool.BatchTool, ManagedWindow.ManagedWindow):
|
||||
|
||||
def on_help_clicked(self, obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
GrampsDisplay.help('tools-db')
|
||||
GrampsDisplay.help('tools-db', WIKI_HELP_PAGE , WIKI_HELP_SEC)
|
||||
|
||||
def on_ok_clicked(self, obj):
|
||||
self.trans = self.db.transaction_begin("",batch=True)
|
||||
|
@@ -220,8 +220,8 @@ class TopSurnamesGramplet(Gramplet):
|
||||
person = self.dbstate.db.get_person_from_handle(person_handle)
|
||||
if person:
|
||||
allnames = [person.get_primary_name()] + person.get_alternate_names()
|
||||
for name in allnames:
|
||||
surname = name.get_group_name().strip()
|
||||
allnames = set([name.get_group_name().strip() for name in allnames])
|
||||
for surname in allnames:
|
||||
surnames[surname] = surnames.get(surname, 0) + 1
|
||||
representative_handle[surname] = person_handle
|
||||
if cnt % 350 == 0:
|
||||
@@ -297,8 +297,8 @@ class SurnameCloudGramplet(Gramplet):
|
||||
person = self.dbstate.db.get_person_from_handle(person_handle)
|
||||
if person:
|
||||
allnames = [person.get_primary_name()] + person.get_alternate_names()
|
||||
for name in allnames:
|
||||
surname = name.get_group_name().strip()
|
||||
allnames = set([name.get_group_name().strip() for name in allnames])
|
||||
for surname in allnames:
|
||||
surnames[surname] = surnames.get(surname, 0) + 1
|
||||
representative_handle[surname] = person_handle
|
||||
if cnt % 350 == 0:
|
||||
@@ -455,15 +455,9 @@ class PedigreeGramplet(Gramplet):
|
||||
_("Right-click name to edit person")
|
||||
self.max_generations = 100
|
||||
self.set_use_markup(True)
|
||||
#self.set_options( {"max_generations":
|
||||
# NumberOption(_("Maximum generations"),
|
||||
# 100, -1, 500),
|
||||
# "expand":
|
||||
# BooleanOption(_("Expandable"), False),
|
||||
# "height":
|
||||
# NumberOption(_("Height"),
|
||||
# 300, 1, 1024),
|
||||
# } )
|
||||
#self.set_option("max_generations",
|
||||
# NumberOption(_("Maximum generations"),
|
||||
# 100, -1, 500))
|
||||
|
||||
def db_changed(self):
|
||||
"""
|
||||
|
@@ -246,7 +246,7 @@ class RelGraphReport(Report):
|
||||
label = "%s (%s)" % (label, fam_id)
|
||||
color = ""
|
||||
fill = ""
|
||||
style = ""
|
||||
style = "solid"
|
||||
if self.colorize == 'colored':
|
||||
color = self.colors['family']
|
||||
elif self.colorize == 'filled':
|
||||
@@ -266,6 +266,7 @@ class RelGraphReport(Report):
|
||||
fill = ""
|
||||
if gender == person.MALE:
|
||||
shape="box"
|
||||
style="solid"
|
||||
elif gender == person.FEMALE:
|
||||
shape="box"
|
||||
style="rounded"
|
||||
|
@@ -2953,7 +2953,7 @@ class NavWebOptions(MenuReportOptions):
|
||||
|
||||
self.__filter = FilterOption(_("Filter"), 0)
|
||||
self.__filter.set_help(
|
||||
_("Select filter to restrict people that appear on calendar"))
|
||||
_("Select filter to restrict people that appear on web files"))
|
||||
menu.add_option(category_name, "filter", self.__filter)
|
||||
self.__filter.connect('value-changed', self.__filter_changed)
|
||||
|
||||
@@ -2991,7 +2991,7 @@ class NavWebOptions(MenuReportOptions):
|
||||
css = EnumeratedListOption(_('Stylesheet'), _CSS_FILES[0][1])
|
||||
for style in _CSS_FILES:
|
||||
css.add_item(style[1], style[0])
|
||||
css.set_help( _("The style sheet to be used for the web page"))
|
||||
css.set_help( _("The style sheet to be used for the web pages"))
|
||||
menu.add_option(category_name, "css", css)
|
||||
|
||||
self.__graph = BooleanOption(_("Include ancestor graph"), True)
|
||||
|
@@ -54,7 +54,8 @@ import gtk
|
||||
#-------------------------------------------------------------------------
|
||||
import const
|
||||
from GrampsDbUtils import gramps_db_reader_factory
|
||||
from QuestionDialog import ErrorDialog
|
||||
from QuestionDialog import ErrorDialog, WarningDialog
|
||||
import Utils
|
||||
from PluginUtils import register_import
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@@ -65,30 +66,28 @@ from PluginUtils import register_import
|
||||
def impData(database, name, cb=None, cl=0):
|
||||
# Create tempdir, if it does not exist, then check for writability
|
||||
# THE TEMP DIR is named as the filname.gpkg.media and is created
|
||||
# in the same dir as the database that we are importing into.
|
||||
db_path = os.path.dirname(database.get_save_path())
|
||||
# in the mediapath dir of the family tree we import too
|
||||
oldmediapath = database.get_mediapath()
|
||||
#use home dir if no media path
|
||||
media_path = Utils.media_path(database)
|
||||
media_dir = "%s.media" % os.path.basename(name)
|
||||
tmpdir_path = os.path.join(db_path, media_dir)
|
||||
tmpdir_path = os.path.join(media_path, media_dir)
|
||||
if not os.path.isdir(tmpdir_path):
|
||||
try:
|
||||
os.mkdir(tmpdir_path, 0700)
|
||||
except:
|
||||
ErrorDialog( _("Could not create temporary directory %s") %
|
||||
ErrorDialog( _("Could not create media directory %s") %
|
||||
tmpdir_path )
|
||||
return
|
||||
elif not os.access(tmpdir_path, os.W_OK):
|
||||
ErrorDialog(_("Temporary directory %s is not writable") % tmpdir_path)
|
||||
ErrorDialog(_("Media directory %s is not writable") % tmpdir_path)
|
||||
return
|
||||
else:
|
||||
# mediadir exists and writable -- User could have valuable stuff in
|
||||
# it, have him remove it!
|
||||
ErrorDialog(_("Media directory %s exists. Delete it first, then"
|
||||
" restart the import process") % tmpdir_path)
|
||||
return
|
||||
else: # tempdir exists and writable -- clean it up if not empty
|
||||
files = os.listdir(tmpdir_path) ;
|
||||
for filename in files:
|
||||
try:
|
||||
os.remove(os.path.join(tmpdir_path, filename))
|
||||
except OSError:
|
||||
try:
|
||||
os.removedirs(os.path.join(tmpdir_path, filename))
|
||||
except:
|
||||
print "could not remove: '%s'" % os.path.join(tmpdir_path, filename)
|
||||
try:
|
||||
archive = tarfile.open(name)
|
||||
for tarinfo in archive:
|
||||
@@ -101,12 +100,43 @@ def impData(database, name, cb=None, cl=0):
|
||||
imp_db_name = os.path.join(tmpdir_path, const.XMLFILE)
|
||||
|
||||
importer = gramps_db_reader_factory(const.APP_GRAMPS_XML)
|
||||
importer(database, imp_db_name, cb)
|
||||
info = importer(database, imp_db_name, cb)
|
||||
newmediapath = database.get_mediapath()
|
||||
#import of gpkg should not change media path as all media has new paths!
|
||||
if not oldmediapath == newmediapath :
|
||||
database.set_mediapath(oldmediapath)
|
||||
|
||||
# Clean up tempdir after ourselves
|
||||
# THIS HAS BEEN CHANGED, because now we want to keep images
|
||||
# stay after the import is over. Just delete the XML file.
|
||||
# Set correct media dir if possible, complain if problems
|
||||
if oldmediapath is None:
|
||||
database.set_mediapath(tmpdir_path)
|
||||
WarningDialog(
|
||||
_("Base path for relative media set"),
|
||||
_("The base media path of this family tree has been set to "
|
||||
"%s. Consider taking a simpler path. You can change this "
|
||||
"in the Preferences, while moving your media files to the "
|
||||
"new position, and using the media manager tool, option "
|
||||
"'Replace substring in the path' to set"
|
||||
" correct paths in your media objects."
|
||||
) % tmpdir_path)
|
||||
else:
|
||||
WarningDialog(
|
||||
_("Cannot set base media path"),
|
||||
_("The family tree you imported into already has a base media "
|
||||
"path: %(orig_path)s. The imported media objects however "
|
||||
"are relative from the path %(path)s. You can change the "
|
||||
"media path in the Preferences or you can convert the "
|
||||
"imported files to the existing base media path. You can "
|
||||
"do that by moving your media files to the "
|
||||
"new position, and using the media manager tool, option "
|
||||
"'Replace substring in the path' to set"
|
||||
" correct paths in your media objects."
|
||||
) % {'orig_path': oldmediapath, 'path': tmpdir_path}
|
||||
)
|
||||
|
||||
# Remove xml file extracted to media dir we imported from
|
||||
os.remove(imp_db_name)
|
||||
|
||||
return info
|
||||
|
||||
## files = os.listdir(tmpdir_path)
|
||||
## for filename in files:
|
||||
|
@@ -67,28 +67,27 @@ class Rebuild(Tool.Tool,UpdateCallback):
|
||||
return
|
||||
|
||||
self.db.disable_signals()
|
||||
|
||||
if uistate:
|
||||
self.callback = uistate.pulse_progressbar
|
||||
uistate.set_busy_cursor(1)
|
||||
uistate.progress.show()
|
||||
uistate.push_message(dbstate, _("Rebuilding secondary indices..."))
|
||||
else:
|
||||
print "Rebuilding Secondary Indices..."
|
||||
self.db.rebuild_secondary(self.empty)
|
||||
print "All secondary indices have been rebuilt."
|
||||
|
||||
UpdateCallback.__init__(self,self.callback)
|
||||
self.set_total(11)
|
||||
self.db.rebuild_secondary(self.update)
|
||||
self.reset()
|
||||
|
||||
if uistate:
|
||||
|
||||
UpdateCallback.__init__(self,self.callback)
|
||||
self.set_total(11)
|
||||
self.db.rebuild_secondary(self.update)
|
||||
self.reset()
|
||||
|
||||
uistate.set_busy_cursor(0)
|
||||
uistate.progress.hide()
|
||||
OkDialog(_("Secondary indices rebuilt"),
|
||||
_('All secondary indices have been rebuilt.'))
|
||||
else:
|
||||
print "Rebuilding Secondary Indices..."
|
||||
self.db.rebuild_secondary(self.update_empty)
|
||||
print "All secondary indices have been rebuilt."
|
||||
|
||||
self.db.enable_signals()
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
|
@@ -263,7 +263,7 @@ class Extract:
|
||||
|
||||
def get_handle_count(self, data):
|
||||
"return number of handles in given (person, handle_list) used for child count, family count"
|
||||
return [str(len(data[1]))]
|
||||
return ["%3d" % len(data[1])]
|
||||
|
||||
# ------------------- utility methods -------------------------
|
||||
|
||||
|
@@ -174,8 +174,9 @@ class PackageWriter:
|
||||
for m_id in self.db.get_media_object_handles():
|
||||
mobject = self.db.get_object_from_handle(m_id)
|
||||
filename = str(Utils.media_path_full(self.db, mobject.get_path()))
|
||||
archname = str(mobject.get_path())
|
||||
if os.path.isfile(filename):
|
||||
archive.add(filename)
|
||||
archive.add(filename, archname)
|
||||
# else:
|
||||
# # File is lost => ask what to do
|
||||
# if missmedia_action == 0:
|
||||
|
Reference in New Issue
Block a user