Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
20bac63011 | ||
|
|
2bf08ece8f | ||
|
|
9209f7eca9 | ||
|
|
d01c7bcfe5 | ||
|
|
80bc471b59 | ||
|
|
766bcc6060 | ||
|
|
267905f17d | ||
|
|
dd917aa4c5 | ||
|
|
8bae700b80 | ||
|
|
e697e7de4c | ||
|
|
638fcd1b09 | ||
|
|
bf25a9582b | ||
|
|
94056f3602 | ||
|
|
0043572c35 | ||
|
|
877faeb4c4 | ||
|
|
264d06b2a9 | ||
|
|
622c870879 | ||
|
|
754cd97f3c | ||
|
|
ed287a85d3 | ||
|
|
29a5a1397d | ||
|
|
a19bd16975 | ||
|
|
082b2a7b88 | ||
|
|
ea72d0db93 | ||
|
|
221a880136 | ||
|
|
cc7027ca56 | ||
|
|
d6dce0ecff | ||
|
|
8dc650bd01 | ||
|
|
4e5c3b529f | ||
|
|
429cb7b4ee | ||
|
|
9fded8b80c | ||
|
|
e8d471d4ee | ||
|
|
acc52f6816 | ||
|
|
5e7041cae4 | ||
|
|
e7b45e9937 | ||
|
|
219fa3312e | ||
|
|
0daf58b604 | ||
|
|
95298549d8 | ||
|
|
1a7c66fa8d | ||
|
|
10deeaf7ac | ||
|
|
59c9e4802b | ||
|
|
96c3789009 | ||
|
|
ed4b649f39 | ||
|
|
b829978252 | ||
|
|
26baf4cbf6 | ||
|
|
f25bdabcb7 | ||
|
|
bc75ced306 | ||
|
|
a7b12c2ec0 | ||
|
|
7309f0234a | ||
|
|
cb0ca84064 | ||
|
|
d445b84dac | ||
|
|
810a80da51 | ||
|
|
c1b12a893f | ||
|
|
8c50ca9c9c | ||
|
|
4eedcb1b35 | ||
|
|
df630cee0d | ||
|
|
2d39167929 | ||
|
|
98aab9b503 | ||
|
|
16563fcf32 | ||
|
|
c41fbcaf18 | ||
|
|
69d2994491 | ||
|
|
312044b831 | ||
|
|
f5f6442504 | ||
|
|
524becc3cd | ||
|
|
fa8dde68bc | ||
|
|
34e7c8c67d | ||
|
|
bc47111822 | ||
|
|
64d8eb7417 | ||
|
|
c01f2f714e | ||
|
|
8a700ceabc | ||
|
|
cca81f693f | ||
|
|
fde077914c | ||
|
|
d643aa3936 | ||
|
|
cb52b7d9c6 | ||
|
|
de81e15969 | ||
|
|
bdf496ebb2 | ||
|
|
18e8cb6478 | ||
|
|
556b5cd371 | ||
|
|
c284652cc3 | ||
|
|
f37c2d5ccb | ||
|
|
92906e88cd | ||
|
|
e0aab07c3e | ||
|
|
d3753628c9 | ||
|
|
8eddbe7462 | ||
|
|
523af4b182 | ||
|
|
b3bab9607d | ||
|
|
8ba376dd86 | ||
|
|
882d9c0b17 | ||
|
|
28b56af746 | ||
|
|
481a797b28 | ||
|
|
0574fd2489 | ||
|
|
dcfe9af6cb | ||
|
|
f79520e845 | ||
|
|
654e2af90d | ||
|
|
df4d3c3309 | ||
|
|
9a357b844b | ||
|
|
efb66d212f | ||
|
|
2700788f54 | ||
|
|
8c2563ad05 | ||
|
|
6963b95eec | ||
|
|
9e8462bffa | ||
|
|
840569cea7 | ||
|
|
608960a3e2 | ||
|
|
c43f8c61a5 | ||
|
|
e96641fa81 | ||
|
|
be83003e5c | ||
|
|
86835434c6 | ||
|
|
4482378716 | ||
|
|
1c5ad3f57f | ||
|
|
d6c4ffe649 | ||
|
|
a5e9312678 | ||
|
|
f3e2c25f21 | ||
|
|
f1de6cc347 | ||
|
|
751a7911fb | ||
|
|
37bfa319a7 | ||
|
|
8c0ad73c2e | ||
|
|
10b86050d1 | ||
|
|
4f5fc60743 | ||
|
|
1a5b6ed229 | ||
|
|
839be34b3a | ||
|
|
b3007e988b | ||
|
|
1def83d540 | ||
|
|
bc89ce92c4 | ||
|
|
4419567584 | ||
|
|
da2fe09894 | ||
|
|
4ba38406b1 | ||
|
|
c1a3e73966 | ||
|
|
d6d122d418 | ||
|
|
858d19579a | ||
|
|
9542571af9 | ||
|
|
ca992a7cd8 | ||
|
|
67f36e7cba | ||
|
|
34d9a734eb | ||
|
|
fc37e66a7d | ||
|
|
81d998c3ec | ||
|
|
585a6c4a9d | ||
|
|
b9c1d2a458 | ||
|
|
c0855147df | ||
|
|
7704cd4f54 | ||
|
|
d5547e337c | ||
|
|
65050b3a40 | ||
|
|
c4d894920b | ||
|
|
f3ae05e28a | ||
|
|
29eecb3aa9 | ||
|
|
b3ffa736ec | ||
|
|
876885b3b1 | ||
|
|
f23b111374 | ||
|
|
a5b57b2dc1 | ||
|
|
aad34c7fbf | ||
|
|
54dbda9d9b | ||
|
|
bc1bb4bede | ||
|
|
681ac86b81 | ||
|
|
33bed034c8 | ||
|
|
e1ff631002 | ||
|
|
7ee331268e | ||
|
|
04a6ea1d21 | ||
|
|
f357f5e607 | ||
|
|
ee63ee0204 | ||
|
|
a09e1818c7 | ||
|
|
b43a0fcf46 | ||
|
|
8504664356 | ||
|
|
a5eac31a89 | ||
|
|
74133275e9 | ||
|
|
b258b2ca85 | ||
|
|
2996eed36a | ||
|
|
873dbbb7d2 | ||
|
|
159be6cb06 | ||
|
|
8dc6583ecd | ||
|
|
e8d2d62ef8 | ||
|
|
ab2238d192 | ||
|
|
0f3e2d8933 | ||
|
|
79e637295f | ||
|
|
0ead40054e | ||
|
|
0f5e8db002 | ||
|
|
578e659578 | ||
|
|
ef290c3fdc | ||
|
|
48283abac1 | ||
|
|
83353aa26f | ||
|
|
7a8f2a17a2 | ||
|
|
bc09713dbd | ||
|
|
dbf29113ec | ||
|
|
34b7b5cf28 | ||
|
|
60c52bb9cf | ||
|
|
11d24648f9 | ||
|
|
8f84e924bb | ||
|
|
070ce1bde1 | ||
|
|
e28b703de9 | ||
|
|
36807fe825 | ||
|
|
cb2e27a673 | ||
|
|
6d5fa2aca7 | ||
|
|
c6bec2bc14 | ||
|
|
8d69ef84ae | ||
|
|
96fc843582 | ||
|
|
a0faa8fc7c | ||
|
|
725eeabbfb | ||
|
|
0d11732134 | ||
|
|
f6aead38f0 | ||
|
|
d239c38730 | ||
|
|
df1ba0e69c | ||
|
|
499aed0bd3 | ||
|
|
41c69d9557 | ||
|
|
516f12b46e | ||
|
|
ea9e35399a | ||
|
|
2073b8ea41 | ||
|
|
9629c6610f | ||
|
|
f221703095 | ||
|
|
63c4ca9553 | ||
|
|
f141edf70d | ||
|
|
14e674d5af | ||
|
|
61865fed62 | ||
|
|
22d8f9bed1 | ||
|
|
7e0ecb9806 | ||
|
|
c175a467ab | ||
|
|
499da39245 | ||
|
|
bf7c2849ae | ||
|
|
3c426c0ffc | ||
|
|
a9b53b1a9f | ||
|
|
ccef7e48c0 | ||
|
|
dc14e4de37 | ||
|
|
31e94e89bd | ||
|
|
1fdfa0fd1a | ||
|
|
0aedc53918 | ||
|
|
3a7d7bd85c | ||
|
|
85e23601bc | ||
|
|
15932243e8 | ||
|
|
9642815c34 | ||
|
|
ee731ba0f1 | ||
|
|
c75ab29845 | ||
|
|
cf726952ba | ||
|
|
ed60e469f4 | ||
|
|
1db9fea574 | ||
|
|
6da9e9b584 | ||
|
|
aed42dbb83 | ||
|
|
9c524ad869 | ||
|
|
e0ccdacfbd | ||
|
|
421cda654c | ||
|
|
fd10da84a2 | ||
|
|
86fa385a9b | ||
|
|
94d8d28cb0 | ||
|
|
56f780b876 | ||
|
|
9f92d0ddbd | ||
|
|
686912e885 | ||
|
|
c57bc8375f | ||
|
|
656c742eed | ||
|
|
ee076d94bd | ||
|
|
052833510f | ||
|
|
1daad9d817 | ||
|
|
de8229a6d9 | ||
|
|
5826783eb8 | ||
|
|
51e7041c5d | ||
|
|
47e7ce1481 | ||
|
|
8abcd6e233 | ||
|
|
2f5ea9d3b5 | ||
|
|
cebc3a3b37 | ||
|
|
5884a15623 | ||
|
|
ca1e39c4a9 | ||
|
|
0adb92f1d7 | ||
|
|
ebe0d065e6 | ||
|
|
3a107558ee | ||
|
|
aaaed40342 | ||
|
|
229ff2f01c | ||
|
|
666cc08475 | ||
|
|
246aa995a6 | ||
|
|
8af6f927f4 | ||
|
|
8f5f54dabe | ||
|
|
9e1a4c4d15 | ||
|
|
5b70ab3eb3 | ||
|
|
0b94abb585 | ||
|
|
841ecdb4c6 | ||
|
|
d96e356850 | ||
|
|
e43db997f9 | ||
|
|
aee6aa6ccb | ||
|
|
5a6ae0e05c | ||
|
|
287f109699 | ||
|
|
cb7d08a529 | ||
|
|
02d38aa799 | ||
|
|
fa066f35b6 | ||
|
|
d8b729f326 | ||
|
|
c58c75b482 | ||
|
|
9042a74479 | ||
|
|
3d48664133 | ||
|
|
8e67461d3b | ||
|
|
b79beef27b | ||
|
|
9d9ad5d4fe | ||
|
|
b541a4eb06 | ||
|
|
7e4e08340f | ||
|
|
8398c3df85 | ||
|
|
9cb96aba40 | ||
|
|
6b9ae3aa7e | ||
|
|
4b9fcf97d2 | ||
|
|
9be3d88c8e | ||
|
|
bbd14d34cd | ||
|
|
10a9b1bb35 | ||
|
|
b4237ed8df | ||
|
|
8d466a146c | ||
|
|
df27ab97d1 | ||
|
|
1e404f7146 | ||
|
|
3aab27ab99 | ||
|
|
1a4cc4810f | ||
|
|
b3dae93c12 | ||
|
|
e6159b281e | ||
|
|
ac6ab25ef6 | ||
|
|
98361ec0b0 | ||
|
|
e2ad8af4bd | ||
|
|
eb1a28d870 | ||
|
|
c40b2d3d75 | ||
|
|
86cdf6e0a8 | ||
|
|
8a52407a00 | ||
|
|
cf616ebcfb | ||
|
|
d7e373e05a | ||
|
|
dc33238d74 | ||
|
|
01fc24277b | ||
|
|
91645849db | ||
|
|
677886956a | ||
|
|
c44700e541 | ||
|
|
ae96816ae5 | ||
|
|
501c8094b6 | ||
|
|
c148569596 | ||
|
|
10b98b82e8 | ||
|
|
b37fb2d07d | ||
|
|
7441034117 | ||
|
|
23828c68ce | ||
|
|
916e94bdc3 | ||
|
|
b74de932ee | ||
|
|
d1a7272342 | ||
|
|
29022a6f1e | ||
|
|
1edd0bf53d | ||
|
|
9307f2221a | ||
|
|
e9b39cf952 | ||
|
|
fb6cc6e535 | ||
|
|
7e32722ae4 | ||
|
|
28ce296be0 | ||
|
|
c81b8ca0b3 | ||
|
|
8c069a57ca | ||
|
|
838406caa6 | ||
|
|
054497f793 | ||
|
|
8c2e2f357e | ||
|
|
ffed1c6ff2 | ||
|
|
07e3140ff0 | ||
|
|
c6de44d0de | ||
|
|
ad49a9e202 | ||
|
|
69bc0f70b7 | ||
|
|
91ed326d7a | ||
|
|
88f4a669de | ||
|
|
5993b7590f | ||
|
|
9756ac2f7c | ||
|
|
f616218be0 | ||
|
|
82442c587a | ||
|
|
aca6355453 | ||
|
|
11a576fc22 | ||
|
|
8fa8bb103b | ||
|
|
d44d8c8277 | ||
|
|
c3b626c960 | ||
|
|
4d49d66df5 | ||
|
|
c21cf57674 | ||
|
|
4f86f7d28b | ||
|
|
038cbfa9bb | ||
|
|
bf8abfdf56 | ||
|
|
19db60b609 | ||
|
|
d4dec7ff60 | ||
|
|
2d81701115 | ||
|
|
95c876e51d | ||
|
|
8cfdeab55c | ||
|
|
cd28f97e1e | ||
|
|
b4426eb514 | ||
|
|
65af1d8399 | ||
|
|
484a656897 | ||
|
|
3daa4c40bc | ||
|
|
028fc7266b | ||
|
|
a0a164621b | ||
|
|
561716a398 | ||
|
|
278b7751ba | ||
|
|
2b60db6940 | ||
|
|
fbae0315da | ||
|
|
054a803b86 | ||
|
|
569af0f288 | ||
|
|
fa5fb849d9 | ||
|
|
dd697dcb69 | ||
|
|
2eef51be37 | ||
|
|
66922b94cc | ||
|
|
cf92aa1fe4 | ||
|
|
ece8b3cc0c | ||
|
|
b202b65f1c | ||
|
|
a391498dc0 | ||
|
|
efc4e76449 | ||
|
|
8d3d21436c | ||
|
|
ebd9b9f7d9 | ||
|
|
91bc3c9bcb | ||
|
|
8e82ce6149 | ||
|
|
b8034741df | ||
|
|
411cae1644 | ||
|
|
b68d819ffd | ||
|
|
b18503a0c3 | ||
|
|
013b9a7e14 | ||
|
|
1e67047f6c | ||
|
|
3ba7eed3e9 | ||
|
|
4d3a6ffae7 | ||
|
|
f517351802 | ||
|
|
56038d9b63 | ||
|
|
1897c62962 | ||
|
|
3c3aaaa807 | ||
|
|
e2011abfd4 | ||
|
|
cfb69f9e5a | ||
|
|
e346ae7a4f | ||
|
|
c3af4c65a0 | ||
|
|
e93db84c8a | ||
|
|
26db425e33 | ||
|
|
dc010c8a95 | ||
|
|
e03996c6de | ||
|
|
1c60276c14 | ||
|
|
522d79a1f9 | ||
|
|
b9adcb8f0e | ||
|
|
50f2226da6 | ||
|
|
0fc8d53798 | ||
|
|
374e117c17 | ||
|
|
4f003d46b4 | ||
|
|
f819efd5c2 | ||
|
|
20fb8825cd | ||
|
|
0903bc88d2 | ||
|
|
3c8a820cf4 | ||
|
|
11e9730fb9 | ||
|
|
693879e004 | ||
|
|
e1ae9c619e | ||
|
|
8e49c55017 | ||
|
|
ce8abaf772 | ||
|
|
4c1680941d | ||
|
|
fd28cfeac7 | ||
|
|
089a8c4d06 | ||
|
|
6e5c529ba1 | ||
|
|
d2acaa22e0 | ||
|
|
8a76c381cc | ||
|
|
8ddf81d04b | ||
|
|
7a72837537 | ||
|
|
d0be789223 | ||
|
|
012d4a68fd | ||
|
|
f99f517f04 | ||
|
|
b62eaef5fe | ||
|
|
b779bc44a2 | ||
|
|
83b7e669dc | ||
|
|
1b7a21225f | ||
|
|
02d2c7cd73 | ||
|
|
d117110b4c | ||
|
|
757c3cae1f | ||
|
|
8759066b4e | ||
|
|
1ca8867a78 | ||
|
|
dc465ec4bf | ||
|
|
d4181a3e1e | ||
|
|
7c11d689e0 | ||
|
|
1bf7432260 | ||
|
|
cb81a1a9f9 | ||
|
|
021141b84f | ||
|
|
e12a0862aa | ||
|
|
ecc2ab1c39 | ||
|
|
590136f866 | ||
|
|
ca7a190a80 | ||
|
|
973f550d94 | ||
|
|
d3fe9044df | ||
|
|
622bb4dcec | ||
|
|
0b8c2d6d0a | ||
|
|
d526d508ce | ||
|
|
78e78d1ecf | ||
|
|
a1d64c63a7 | ||
|
|
59172268eb | ||
|
|
36f08112f8 | ||
|
|
5a3fcbd65b | ||
|
|
603deacb68 | ||
|
|
0ff17e104b | ||
|
|
cbf80d0547 | ||
|
|
8554ae2004 | ||
|
|
8ceaac3136 | ||
|
|
36f75e5bdf | ||
|
|
941418dffe | ||
|
|
ea8948dbfa | ||
|
|
f8f6f500ef | ||
|
|
8c2906ef6e | ||
|
|
5160ce313d | ||
|
|
4be6520c1c | ||
|
|
ce31ffcb84 | ||
|
|
c6d2319c09 | ||
|
|
5a2cb0273e | ||
|
|
15dd5945cf | ||
|
|
1e0db5610d | ||
|
|
12e95f2bf8 | ||
|
|
2feb950950 | ||
|
|
61f74adc33 | ||
|
|
c994f1dbf1 | ||
|
|
10e4f7338f | ||
|
|
a67f26ff8d | ||
|
|
6e71f9a3a3 | ||
|
|
e6f434a686 | ||
|
|
59306cdf74 | ||
|
|
ac1f811723 | ||
|
|
2cd3db64aa | ||
|
|
933a86ea78 | ||
|
|
fc500580e2 | ||
|
|
88d8e09768 | ||
|
|
275c60a7c6 | ||
|
|
4f2461aca5 | ||
|
|
293f89e73b | ||
|
|
15a3999422 | ||
|
|
755c75a2c5 | ||
|
|
59162682c0 | ||
|
|
acedbb4417 | ||
|
|
40042df8f6 | ||
|
|
ee6ad290d1 | ||
|
|
ba71b271c1 | ||
|
|
cc88a37d0b | ||
|
|
c2374c1ac5 | ||
|
|
37394a76ae | ||
|
|
987a3cef7c | ||
|
|
f8710bae70 | ||
|
|
a51b4cdb9b | ||
|
|
4f6f7eb94f | ||
|
|
6a4b19417d | ||
|
|
b35767c630 | ||
|
|
62d32ed08a | ||
|
|
5df0a7c8a9 | ||
|
|
0693bfd63b | ||
|
|
c1ebc886ab | ||
|
|
b42c617c3f | ||
|
|
04afb37165 | ||
|
|
9d1cb02e41 | ||
|
|
b2e194b8ec | ||
|
|
63a66789a8 | ||
|
|
d51cd767e0 | ||
|
|
e72ca98e22 | ||
|
|
ee20b5d115 | ||
|
|
7c0c620ccf | ||
|
|
d6a9ffb2ef | ||
|
|
e7f27f4645 | ||
|
|
e9ba16655d | ||
|
|
22efc8316d | ||
|
|
7bebe8d394 | ||
|
|
cb2c215cf7 | ||
|
|
7c1ce4296b | ||
|
|
f29dea4a9f | ||
|
|
675c9b777b | ||
|
|
af2fe576d2 | ||
|
|
1cffbd5998 | ||
|
|
ed41f66ebf | ||
|
|
a672292d5d | ||
|
|
c453822cc5 | ||
|
|
324930e165 | ||
|
|
234baa9682 | ||
|
|
0fa5fd601f | ||
|
|
9f9edb8fe3 | ||
|
|
45fd06cbb3 | ||
|
|
f4f38ca040 | ||
|
|
e7d9c8d676 | ||
|
|
e646023576 | ||
|
|
61ffdfb8c6 | ||
|
|
c0cce73361 | ||
|
|
96a9fa1bc8 | ||
|
|
94b1928fc0 | ||
|
|
6d24f0d2f5 | ||
|
|
16c656f266 | ||
|
|
0940a97f43 | ||
|
|
d96c499d02 | ||
|
|
d7463372c0 | ||
|
|
63543e41ef | ||
|
|
2f2c6bf1e6 | ||
|
|
38fcd5aaa1 | ||
|
|
55be600dc2 | ||
|
|
035b13c4f8 | ||
|
|
abaa2f7a10 | ||
|
|
d2cf4f8668 | ||
|
|
d575d56cba | ||
|
|
55447ac858 | ||
|
|
ef444d3843 | ||
|
|
02f7142364 | ||
|
|
b6e123ed06 | ||
|
|
ac235ff7be | ||
|
|
db62a824fb | ||
|
|
d6fac942df | ||
|
|
4ac3779a96 | ||
|
|
5374ed4b64 | ||
|
|
335580cc90 | ||
|
|
ad2ef89450 | ||
|
|
5eb6e7c97e | ||
|
|
1cc16595a9 | ||
|
|
ca4856adee | ||
|
|
3816790b4f | ||
|
|
28edd32a1f | ||
|
|
544e27232f | ||
|
|
66523b5c7c | ||
|
|
32b884fc5d | ||
|
|
886696e718 | ||
|
|
a53db06f26 | ||
|
|
10960055c5 | ||
|
|
e7b9924482 | ||
|
|
865da3bbbd | ||
|
|
53fb61125b | ||
|
|
f5b549154d | ||
|
|
870bc0bcfb | ||
|
|
2070dcba43 | ||
|
|
d768deae74 | ||
|
|
f447c086aa | ||
|
|
d45b36537e | ||
|
|
b26b982274 | ||
|
|
f031f80287 | ||
|
|
c56f94a52f | ||
|
|
3f8c9298a4 | ||
|
|
478f90b8e8 | ||
|
|
88874cd212 | ||
|
|
f5a5a3a55c | ||
|
|
131bcb4bc2 | ||
|
|
ff5a31634c | ||
|
|
52d06de491 | ||
|
|
2335612283 | ||
|
|
e968be0d0b | ||
|
|
0f4a044aee | ||
|
|
b715342889 | ||
|
|
0ec3ec1df9 | ||
|
|
28de227342 | ||
|
|
460967116f | ||
|
|
61d9aaf017 | ||
|
|
a9fd2073f2 | ||
|
|
8c409f079b | ||
|
|
d15b245376 | ||
|
|
0967eb0ff2 | ||
|
|
5d3fd22ee2 | ||
|
|
dc3bbdd7eb | ||
|
|
54112cebc1 | ||
|
|
ae513c5b60 | ||
|
|
bb3efd78a4 | ||
|
|
40afabedec | ||
|
|
5ec331017e | ||
|
|
2b2fea544a | ||
|
|
01eebf5e77 | ||
|
|
c262f04a37 | ||
|
|
2600b51ab1 | ||
|
|
4b1b6d755f | ||
|
|
2eb5224470 | ||
|
|
2b69463196 | ||
|
|
4a5d7553c5 | ||
|
|
f0807f87d4 | ||
|
|
dfcc7e0efb | ||
|
|
16858c1f4a | ||
|
|
e36ae4d665 | ||
|
|
d25f491654 | ||
|
|
add5f946d9 | ||
|
|
c31363c02b | ||
|
|
0116f4040d | ||
|
|
899599abdc | ||
|
|
04765281a4 | ||
|
|
6af4fc542d | ||
|
|
17ed93108d | ||
|
|
bb956d781a | ||
|
|
fc8a94c7aa | ||
|
|
41b9c54f0a | ||
|
|
b36133c056 | ||
|
|
b4950dab80 | ||
|
|
cc38e20f1d | ||
|
|
3e68afe934 | ||
|
|
45c96bbce5 | ||
|
|
996bc358ae | ||
|
|
1b18e85c18 | ||
|
|
4dbb41f834 | ||
|
|
5fa3fb004e | ||
|
|
916a73ad0c | ||
|
|
051eaecfc3 | ||
|
|
58097e1a5c | ||
|
|
de14b57b81 | ||
|
|
830356f1fd | ||
|
|
7ee891943f | ||
|
|
0da65704b9 | ||
|
|
dc3bfa1a15 | ||
|
|
8c2ce165d2 | ||
|
|
b068587c78 | ||
|
|
07bc49c44b | ||
|
|
c21c0a2328 | ||
|
|
d45d5a0afe | ||
|
|
47922e7be9 | ||
|
|
139ae5c305 | ||
|
|
5de8d6b2ec | ||
|
|
2bdf0bb220 | ||
|
|
3469687010 | ||
|
|
8f392ded30 | ||
|
|
9bf1fb62b5 | ||
|
|
5c9df14f97 | ||
|
|
6469396669 | ||
|
|
3bf07bf96f | ||
|
|
8179e66d0b | ||
|
|
b34f6acb50 | ||
|
|
f740ba4cf0 | ||
|
|
f1b13b49c5 | ||
|
|
5191d6bd11 | ||
|
|
2464adf714 | ||
|
|
89f33a6be4 | ||
|
|
7312561e7c | ||
|
|
edf6e80023 | ||
|
|
2eedacefd2 | ||
|
|
dea68cb38d | ||
|
|
de379adca1 | ||
|
|
a0daefea9a | ||
|
|
53cc3c990d | ||
|
|
ccfd1e57b4 | ||
|
|
daf98ee2c7 | ||
|
|
871c8c4255 | ||
|
|
ca2571daa7 | ||
|
|
63a12463be | ||
|
|
6cc7bd3aac | ||
|
|
dfd0aea13c | ||
|
|
629390c077 | ||
|
|
5df8d1f8c8 | ||
|
|
44d7865a5e | ||
|
|
8187ddc350 | ||
|
|
5553c74092 | ||
|
|
e7fbc6c85e | ||
|
|
ee876d287a | ||
|
|
2800377011 | ||
|
|
e87f58a584 | ||
|
|
4f9a905a15 | ||
|
|
f15be4cc33 | ||
|
|
0df9e11ac2 | ||
|
|
cdd196ac43 | ||
|
|
5676035276 | ||
|
|
6730d35232 | ||
|
|
b33fcb04a9 | ||
|
|
8c8fa8ab8d | ||
|
|
f768299812 | ||
|
|
eb3331c178 | ||
|
|
7969779fde | ||
|
|
765e5cec77 | ||
|
|
3177cfce76 | ||
|
|
b6cfa20860 | ||
|
|
aded196d64 | ||
|
|
7a3945eaa5 | ||
|
|
295b7d1a2b | ||
|
|
74f29ec489 | ||
|
|
1d78512f16 | ||
|
|
7772b6f201 | ||
|
|
fdc3979278 | ||
|
|
880c3e7751 | ||
|
|
3b925c2653 | ||
|
|
369fcf562e | ||
|
|
197a013f2e | ||
|
|
6354b8fb15 | ||
|
|
3ac758f702 | ||
|
|
dfc376c640 | ||
|
|
d35d33b8f2 | ||
|
|
6ecb9eeab9 | ||
|
|
5536819783 | ||
|
|
d8d03e335c | ||
|
|
dee75c1f08 | ||
|
|
012cad6eb5 | ||
|
|
8b10dc0c42 | ||
|
|
daa4475bc8 | ||
|
|
4f15cfc10f | ||
|
|
e47701ab02 | ||
|
|
cf7ed2c8f9 | ||
|
|
fd9e95aab0 | ||
|
|
b7658288b6 | ||
|
|
13a51cf2c7 | ||
|
|
de4a0766e7 | ||
|
|
078cafc0c8 | ||
|
|
c5b68976e1 | ||
|
|
d9edb0bd9c | ||
|
|
c99cd60e81 | ||
|
|
e4a677f57d | ||
|
|
7d8f3c7dfb | ||
|
|
bda1ace41f | ||
|
|
493be971c2 | ||
|
|
aa1fb05e26 | ||
|
|
7115f24e54 | ||
|
|
97900a087d | ||
|
|
cd8579654a | ||
|
|
b614f650d0 | ||
|
|
6eb7599b68 | ||
|
|
2110e52171 | ||
|
|
5dd1e197d1 | ||
|
|
e97199cba3 | ||
|
|
bb2e2fd1cc | ||
|
|
aceb486b79 | ||
|
|
85fa8c09ea | ||
|
|
f283347987 | ||
|
|
2e7ad59d01 | ||
|
|
31650baf2c | ||
|
|
bfa94869bc | ||
|
|
447191f427 | ||
|
|
fdda045607 | ||
|
|
5ce490e3fa | ||
|
|
d77174143d | ||
|
|
ebfbdce49b | ||
|
|
1fc782a60e | ||
|
|
01e6dedae9 | ||
|
|
0cb7d90257 | ||
|
|
1ab9c7c6d8 | ||
|
|
d120265624 | ||
|
|
811014e1c2 | ||
|
|
d15f8ffe07 | ||
|
|
e177fe4030 | ||
|
|
175ee0f498 | ||
|
|
63dbb12bfa | ||
|
|
2fa9ffc7fe | ||
|
|
745585d93c | ||
|
|
27e22a5b21 | ||
|
|
b444385631 | ||
|
|
6dd80f4955 | ||
|
|
0b8985216c | ||
|
|
e3431e1d98 | ||
|
|
59fb9bbb64 | ||
|
|
e09a5741b7 | ||
|
|
db9b15a18c | ||
|
|
9273ca6886 | ||
|
|
1e81e32965 | ||
|
|
32b8401167 | ||
|
|
59d4cfa35e | ||
|
|
3ed52a7ed6 | ||
|
|
a109d25c0b | ||
|
|
f5131a3b82 | ||
|
|
2d4024eb0e | ||
|
|
2281e7246f | ||
|
|
a169d828bc | ||
|
|
fa2db8a154 | ||
|
|
03a75c899b | ||
|
|
38fead2e4f | ||
|
|
ace6a1ec0b | ||
|
|
ec654be45e | ||
|
|
779a231259 | ||
|
|
bc32903268 | ||
|
|
5d7c0ec371 | ||
|
|
38751bb5a8 | ||
|
|
35bd104ca1 | ||
|
|
56ba9fc788 | ||
|
|
09d5280dcd | ||
|
|
af4dbc6af0 | ||
|
|
7a38f64b76 | ||
|
|
5cc41d894c | ||
|
|
f0757e8cab | ||
|
|
0ea6138c33 | ||
|
|
9ddf7edbd7 | ||
|
|
332d2b0145 | ||
|
|
6a64c9e83f | ||
|
|
6d00c95e8c | ||
|
|
2f6c93d5d9 | ||
|
|
684b7725c6 | ||
|
|
2e78c8d6f8 | ||
|
|
091777cdf1 | ||
|
|
dc5a513d45 | ||
|
|
0927aac3b8 | ||
|
|
998ebb2ae7 | ||
|
|
72cc250b02 | ||
|
|
ed5e957c2c | ||
|
|
0eb18408e6 | ||
|
|
1cc234069e | ||
|
|
0cdf38f43f | ||
|
|
686458138a | ||
|
|
1f25c6fd38 | ||
|
|
a4688d10ad | ||
|
|
054c446aed | ||
|
|
9979fd1126 | ||
|
|
64aac6f002 | ||
|
|
76fe79a9c0 | ||
|
|
3182ef4191 | ||
|
|
f14c71c726 | ||
|
|
8c2ef473f4 | ||
|
|
f8e15f5269 | ||
|
|
adbbe850e9 | ||
|
|
a662f3717b | ||
|
|
41fef8d7d6 | ||
|
|
6a5c66aa31 | ||
|
|
026da172b7 | ||
|
|
e4e817de57 | ||
|
|
8165bf3974 | ||
|
|
733d5d4e00 | ||
|
|
1d1fab4eb9 | ||
|
|
9c37651ddf | ||
|
|
a4f66df140 | ||
|
|
791f96417f | ||
|
|
fbefcf1eca | ||
|
|
8e7e8155f7 | ||
|
|
9a1dece0db | ||
|
|
5934f15111 | ||
|
|
51ff1e909e | ||
|
|
653ec79d77 | ||
|
|
db2c05cd13 | ||
|
|
052bb7f063 | ||
|
|
bb00d70d21 | ||
|
|
586ab531a1 | ||
|
|
358208d34f | ||
|
|
e1b74235c1 | ||
|
|
28023ba12e | ||
|
|
dffb9781b3 | ||
|
|
46f65e9d33 | ||
|
|
6cd8796007 | ||
|
|
f06dbb3b25 | ||
|
|
f6029285c7 | ||
|
|
e57e34f6a2 | ||
|
|
3cd2b2098a | ||
|
|
8e4ecafda0 | ||
|
|
d64b5bdc47 | ||
|
|
86634e3481 | ||
|
|
864e8bb7d4 | ||
|
|
9b606381f9 | ||
|
|
1a311e0918 | ||
|
|
7d303cff5a | ||
|
|
f77805ec1a | ||
|
|
2a48a6c4e6 | ||
|
|
04a5125212 | ||
|
|
17e3d2b23c | ||
|
|
3966f768f7 | ||
|
|
39addc1b9b | ||
|
|
2f9ebbab0d | ||
|
|
627e920e48 | ||
|
|
dd2e6e38a2 | ||
|
|
ca9d62b902 | ||
|
|
baf80601af | ||
|
|
eba70ed463 | ||
|
|
210a6df39c | ||
|
|
1c8ab2cf56 |
No files matched your search
@@ -22,14 +22,17 @@ But be careful if you're using the non-default options or would like
|
||||
to install without being root.
|
||||
|
||||
The latter is possible, but you should supply additional arguments to
|
||||
autogen or configrue:
|
||||
--with-gconf-source=xml::$HOME/.gconf --with-mime-dir=$HOME/.local/share
|
||||
autogen or configure:
|
||||
--with-gconf-source=xml::$HOME/.gconf
|
||||
--with-gconf-schema-file-dir=$HOME
|
||||
--with-mime-dir=$HOME/.local/share/mime
|
||||
Most likely, such local install will also need some prefix with write
|
||||
permissions for you:
|
||||
--prefix=$HOME/my_gramps_path
|
||||
|
||||
Whether you're doing local install or regular install, YOU MUST INSTALL
|
||||
GCONF SCHEMAS AND MIME TYPES. YOU HAVE BEEN WARNED!
|
||||
Whether you're doing local install or regular install,
|
||||
YOU MUST INSTALL GCONF SCHEMAS AND MIME TYPES.
|
||||
YOU HAVE BEEN WARNED!
|
||||
|
||||
|
||||
Packager's issues
|
||||
|
||||
@@ -1,3 +1,92 @@
|
||||
Version 2.0.10 -- the "Holy Hand Grenade of Antioch" release
|
||||
* Date handler for Lithuanian language (Arturas Sleinius).
|
||||
* New Calendar graphical report (Doug Blank).
|
||||
* Multiple tool fixes.
|
||||
* GEDCOM import and export improvements.
|
||||
* Proper rebuilding of secondary indices.
|
||||
* Open Document Format support in reports (Serge Noiraud, Brian Matherly).
|
||||
* Multiple report fixes.
|
||||
* Fix for low-level duplicate records.
|
||||
* User Manual updates.
|
||||
* An insane number of bug fixes.
|
||||
|
||||
Version 2.0.9 -- the "Nobody expects the Spanish inquisition!" release
|
||||
* Incremental interface improvements.
|
||||
* Automated testing added, based on the CLI functionality.
|
||||
* Smaller number of supported reports.
|
||||
* Report rendering improvements in OOo, PDF, gnome-print, PS, HTML,
|
||||
abw, and kwd formats.
|
||||
* New filter rules: Ancestor of bookmarked/default person
|
||||
less than N generations away (Wayne Bergeron).
|
||||
* Numerous web generator improvements.
|
||||
* GEDCOM import supports forward-referencing named notes.
|
||||
* User manual updates.
|
||||
* New Checkpoint tool plugin.
|
||||
* Support for running tools from command line.
|
||||
* Persistent options for tools, as applicable.
|
||||
* Export patronymic names into GEDCOM.
|
||||
* Updates for Swedish translation and date localization (Stefan Bjork).
|
||||
* Fully formalized XML format (DTD and RelaxNG schema).
|
||||
* New plugin documenting command line reference.
|
||||
* Memory leak in libbglade worked around.
|
||||
* Limitation of 31 generations in reports removed.
|
||||
* Improved responsiveness when working with large databases.
|
||||
* Select from recent files on startup.
|
||||
* Better support for unicode filenames
|
||||
* Better support for media objects in GEDCOM output
|
||||
* Numerous bug fixes.
|
||||
|
||||
Version 2.0.8 -- the "Romani ite domum" release
|
||||
|
||||
Version 2.0.7 -- the "Romanes eunt domus" release
|
||||
* Addition of a spelling checker if python-gnome-extras is installed
|
||||
* Thumbnails are generated for objects other than images if an appropriate
|
||||
thumbnailer is found the the GCONF database.
|
||||
* Enhances Descendant Chart report that allows better control over the
|
||||
formatting of the report
|
||||
* Added support for new %n format in addition to $n, which will cause the
|
||||
line to be removed if a text match is not made.
|
||||
* Bug fixes, bug fixes, bug fixes, and bug fixes.
|
||||
|
||||
Version 2.0.6 -- the "Just like my dear Papa!" release
|
||||
* New Narrative Web Page added to create a more complete web site.
|
||||
* French manual available again (Jérôme).
|
||||
* Progress meters in plugins.
|
||||
* Numerous bug fixes.
|
||||
|
||||
Version 2.0.5 -- the "It's certainly uncontaminated by cheese" release
|
||||
* New filters based on personal notes.
|
||||
* New routine for checking and removing corrupted source references in
|
||||
the Check and Repair tool.
|
||||
* Bug fixes.
|
||||
|
||||
Version 2.0.4 -- the "That's enough music for now, lads." release
|
||||
* Speedups for "select" dialogs in Family View.
|
||||
* Filters are working in reports again.
|
||||
* vCal and vCard plugins are back.
|
||||
* Gender guessing is back for new people.
|
||||
* GEDCOM export fixes.
|
||||
* Other bug fixes.
|
||||
|
||||
Version 2.0.3 -- the "Mynd you, møøse bites Kan be pretty nasti..." release
|
||||
* Fixed Date handler bug that would not allow dates to be updated.
|
||||
|
||||
Version 2.0.2 -- the "Little fermented curd will do the trick" release
|
||||
* Updated German translation (Anton Huber).
|
||||
* Usability improvements for large databases.
|
||||
* Bug fixes
|
||||
|
||||
Version 2.0.1 -- the "None shall pass" release
|
||||
* Example database function is back.
|
||||
* Entering incestuous relations is possible (with the warning).
|
||||
* Sorting in list views is back.
|
||||
* Better support for non-standard GEDCOM tags produced by Legacy.
|
||||
* ScratchPad works with pygtk2.4.
|
||||
* Full text search filters are back.
|
||||
* Date formats for non-localized dates.
|
||||
* Date localization for German.
|
||||
* TONS of bug fixes.
|
||||
|
||||
Version 2.0.0 -- the "The Bright Side of Life" release
|
||||
* Bug fixes
|
||||
* Translation updates.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
dnl AM_GCONF2_REPLACEMENT
|
||||
dnl Defines GCONF_SCHEMA_CONFIG_SOURCE which is where you should install schemas
|
||||
dnl (i.e. pass to gconftool-2
|
||||
dnl (i.e. pass to $GCONFTOOL
|
||||
dnl Defines GCONF_SCHEMA_FILE_DIR which is a filesystem directory where
|
||||
dnl you should install foo.schemas files
|
||||
dnl
|
||||
@@ -10,7 +10,7 @@ dnl By copying it here we remove the requirement for having it on the system.
|
||||
AC_DEFUN([AM_GCONF2_REPLACEMENT],
|
||||
[
|
||||
if test "x$GCONF_SCHEMA_INSTALL_SOURCE" = "x"; then
|
||||
GCONF_SCHEMA_CONFIG_SOURCE=`gconftool-2 --get-default-source`
|
||||
GCONF_SCHEMA_CONFIG_SOURCE=`$GCONFTOOL --get-default-source`
|
||||
else
|
||||
GCONF_SCHEMA_CONFIG_SOURCE=$GCONF_SCHEMA_INSTALL_SOURCE
|
||||
fi
|
||||
|
||||
@@ -4,11 +4,12 @@ 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.0.0, gramps-bugs@lists.sourceforge.net)
|
||||
AC_INIT(gramps, 2.0.11, gramps-bugs@lists.sourceforge.net)
|
||||
AC_CONFIG_SRCDIR(src/gramps.py)
|
||||
AM_INIT_AUTOMAKE(1.6.3)
|
||||
dnl RELEASE=0.CVS$(head -c 10 ${srcdir}/ChangeLog | tr -d '-')
|
||||
RELEASE=1
|
||||
RELEASE=0.CVS$(head -c 10 ${srcdir}/ChangeLog | tr -d '-')
|
||||
dnl RELEASE=1
|
||||
dnl RELEASE=0.RC1
|
||||
|
||||
VERSIONSTRING=$VERSION
|
||||
if test x"$RELEASE" != "x"
|
||||
@@ -16,6 +17,12 @@ then
|
||||
VERSIONSTRING="$VERSION-$RELEASE"
|
||||
fi
|
||||
|
||||
dnl Checking for gconftool-2
|
||||
AC_PATH_PROG(GCONFTOOL, gconftool-2, no)
|
||||
if test "x$GCONFTOOL" = xno; then
|
||||
AC_MSG_ERROR([gconftool-2 executable not found in your path - should be installed with GConf])
|
||||
fi
|
||||
|
||||
AM_GCONF2_REPLACEMENT
|
||||
AM_SHARED_MIME
|
||||
AM_PACKAGER
|
||||
@@ -35,7 +42,7 @@ if test x$ICONV = xno; then
|
||||
AC_MSG_ERROR(Couldn't find iconv program.)
|
||||
fi
|
||||
|
||||
LANGUAGES="hu zh_CN cs da de es fr it nb nl no pl pt_BR ro ru sv eo fi"
|
||||
LANGUAGES="hu zh_CN cs da de es fr it nb nl no pl pt_BR ro ru sv eo fi lt"
|
||||
AC_SUBST(LANGUAGES)
|
||||
|
||||
DISTLANGS=
|
||||
@@ -252,8 +259,11 @@ src/data/Makefile
|
||||
src/data/templates/Makefile
|
||||
src/po/Makefile
|
||||
doc/Makefile
|
||||
doc/man/Makefile
|
||||
doc/man/fr/Makefile
|
||||
doc/gramps-manual/Makefile
|
||||
doc/gramps-manual/C/Makefile
|
||||
doc/gramps-manual/fr/Makefile
|
||||
example/Makefile
|
||||
example/gramps/Makefile
|
||||
gramps.spec
|
||||
|
||||
@@ -1,13 +1,4 @@
|
||||
# Process this file with automake to produce Makefile.in
|
||||
|
||||
SUBDIRS = gramps-manual
|
||||
|
||||
man_IN_FILES = gramps.1.in
|
||||
man_MANS = $(man_IN_FILES:.1.in=.1)
|
||||
|
||||
EXTRA_DIST = $(man_MANS) $(man_IN_FILES) xmldocs.make omf.make
|
||||
|
||||
gramps.1: $(top_builddir)/config.status gramps.1.in
|
||||
cd $(top_builddir) && CONFIG_FILES=doc/$@ $(SHELL) ./config.status
|
||||
|
||||
CLEANFILES=$(man_MANS)
|
||||
SUBDIRS = gramps-manual man
|
||||
EXTRA_DIST = xmldocs.make omf.make
|
||||
@@ -12,6 +12,7 @@ entities = legal.xml\
|
||||
keybind.xml\
|
||||
filtref.xml\
|
||||
cmdline.xml\
|
||||
cmdplug.xml\
|
||||
bugs.xml\
|
||||
authors.xml
|
||||
include $(top_srcdir)/doc/xmldocs.make
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
<title>About GRAMPS</title>
|
||||
<para> &app; was written by Donald N. Allingham
|
||||
(<email>dallingham@users.sourceforge.net</email>).</para>
|
||||
(<email>don@gramps-project.org</email>).</para>
|
||||
|
||||
<para>
|
||||
The somewhat incomplete list of contributors includes (in alphabetical order):
|
||||
@@ -50,6 +50,7 @@
|
||||
<listitem><para>Steve Hall</para></listitem>
|
||||
<listitem><para>David R. Hampton</para></listitem>
|
||||
<listitem><para>Martin Hawlisch</para></listitem>
|
||||
<listitem><para>Anton Huber</para></listitem>
|
||||
<listitem><para>Frode Jemtland</para></listitem>
|
||||
<listitem><para>Greg Kuperberg</para></listitem>
|
||||
<listitem><para>Arkadiusz Lipiec</para></listitem>
|
||||
@@ -63,6 +64,7 @@
|
||||
<listitem><para>Guillaume Pratte</para></listitem>
|
||||
<listitem><para>Laurent Protois</para></listitem>
|
||||
<listitem><para>Matthieu Pupat</para></listitem>
|
||||
<listitem><para>Trevor Rhodes</para></listitem>
|
||||
<listitem><para>Alexander Roitman</para></listitem>
|
||||
<listitem><para>Jason Salaz</para></listitem>
|
||||
<listitem><para>Julio Sanchez</para></listitem>
|
||||
|
||||
@@ -24,11 +24,6 @@
|
||||
|
||||
<title>Known Bugs and Limitations</title>
|
||||
|
||||
<para>The bugs are tracked through the
|
||||
<ulink url="http://sourceforge.net/tracker/?group_id=25770&atid=385137" type="http">
|
||||
sourceforge.net tracking system</ulink>.
|
||||
</para>
|
||||
|
||||
<para>The known limitations include the BSDDB performance issues related
|
||||
to caching and the memory size. As long as the BSDDB cache fits completely
|
||||
into the available memory on the system, the performance should be
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<appendix id="append-cmdline">
|
||||
|
||||
<!--
|
||||
User Manual for Gramps - a GTK+/GNOME based genealogy program
|
||||
User Manual for GRAMPS - a GTK+/GNOME based genealogy program
|
||||
|
||||
Copyright (C) 2003-2005 Alexander Roitman
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
<varlistentry><term>gramps-xml</term>
|
||||
<listitem><para> &app; XML database. This format is available
|
||||
for opening, import, and export. When not specified, it can be
|
||||
guessed if the filename represents a directory.
|
||||
guessed if the filename ends with .gramps
|
||||
</para></listitem></varlistentry>
|
||||
|
||||
<varlistentry><term>gedcom</term>
|
||||
@@ -82,13 +82,13 @@
|
||||
<varlistentry><term>gramps-pkg</term>
|
||||
<listitem><para> &app; package. This format is available
|
||||
for import and export. When not specified, it can be
|
||||
guessed if the filename ends with .tgz
|
||||
guessed if the filename ends with .gpkg
|
||||
</para></listitem></varlistentry>
|
||||
|
||||
<varlistentry><term>geneweb</term>
|
||||
<listitem><para> GeneWen file This format is available
|
||||
for import and export. When not specified, it can be
|
||||
guessed if the filename ends with gw
|
||||
guessed if the filename ends with .gw
|
||||
</para></listitem></varlistentry>
|
||||
|
||||
<varlistentry><term>wft</term>
|
||||
@@ -134,12 +134,7 @@
|
||||
<command>--format=<replaceable>format</replaceable></command>
|
||||
option, immediately following the <filename>filename</filename>.
|
||||
If not specified, the guess will be attempted based on
|
||||
the <filename>filename</filename>. For gramps-xml
|
||||
format, the <filename>filename</filename> is actually the
|
||||
name of directory under which the gramps database resides. For
|
||||
grdb and gedcom,
|
||||
the <filename>filename</filename> is the name of the
|
||||
corresponding file.
|
||||
the <filename>filename</filename>.
|
||||
</para>
|
||||
|
||||
<tip><para>Only grdb, gramps-xml,
|
||||
@@ -163,12 +158,7 @@
|
||||
<command>--format=<replaceable>format</replaceable></command>
|
||||
option, immediately following the <filename>filename</filename>.
|
||||
If not specified, the guess will be attempted based on
|
||||
the <filename>filename</filename>. For gramps-xml
|
||||
format, the <filename>filename</filename> is actually the
|
||||
name of directory under which the gramps database resides. For
|
||||
grdb, gedcom, gramps-pkg, and geneweb,
|
||||
the <filename>filename</filename> is the name of the
|
||||
corresponding file.
|
||||
the <filename>filename</filename>.
|
||||
</para>
|
||||
|
||||
<tip><para>More than one file can be imported in one command.
|
||||
@@ -185,7 +175,7 @@
|
||||
-i <filename>file2</filename>
|
||||
-i <filename>file1</filename>
|
||||
</command>
|
||||
might produce different gramps IDs in the resulting database.
|
||||
might produce different GRAMPS IDs in the resulting database.
|
||||
</para></sect2>
|
||||
|
||||
<sect2 id="cmdline-opt-export"><title>Export options</title>
|
||||
@@ -195,10 +185,10 @@
|
||||
option. The format can be specified with the <command>-f</command>
|
||||
option immediately following the <filename>filename</filename>.
|
||||
If not specified, the guess will be attempted based on
|
||||
the <filename>filename</filename>. For gramps-xml
|
||||
and iso formats, the <filename>filename</filename>
|
||||
is actually the name of directory the gramps database will be written
|
||||
into. For grdb, gedcom, wft, geneweb,
|
||||
the <filename>filename</filename>. For iso format,
|
||||
the <filename>filename</filename>
|
||||
is actually the name of directory the &app; database will be written
|
||||
into. For grdb, gramps-xml, gedcom, wft, geneweb,
|
||||
and gramps-pkg, the <filename>filename</filename>
|
||||
is the name of the resulting file.
|
||||
</para>
|
||||
@@ -264,7 +254,7 @@
|
||||
and values.
|
||||
</para></listitem>
|
||||
|
||||
<listitem><para>Withing a pair, option name and value must be
|
||||
<listitem><para>Within a pair, option name and value must be
|
||||
separated by the equal sign.
|
||||
</para></listitem>
|
||||
|
||||
@@ -329,6 +319,7 @@
|
||||
|
||||
</sect1>
|
||||
|
||||
&cmdplug;
|
||||
|
||||
<sect1 id="cmdline-operation">
|
||||
<title>Operation</title>
|
||||
@@ -349,7 +340,7 @@
|
||||
the further command line parameters.
|
||||
</para>
|
||||
|
||||
<note><para>Only one file can be opened in a single invokation
|
||||
<note><para>Only one file can be opened in a single invocation
|
||||
of &app;. If you need to get data from multiple sources, use
|
||||
the importing options by using <command>-i</command> flag.
|
||||
</para></note>
|
||||
@@ -373,14 +364,14 @@
|
||||
|
||||
<listitem>
|
||||
<para>If no <command>-O</command> or <command>-i</command>
|
||||
option is given, gramps will launch
|
||||
option is given, &app; will launch
|
||||
its main window and start the usual interactive session with the empty
|
||||
database, since there is no data to process, anyway.
|
||||
</para></listitem>
|
||||
|
||||
<listitem>
|
||||
<para>If no <command>-o</command> or <command>-a</command> options
|
||||
are given, gramps will launch its main window and start the usual
|
||||
are given, &app; will launch its main window and start the usual
|
||||
interactive session with the database resulted from opening
|
||||
and all imports (if any). This database resides in the
|
||||
<filename>import_db.grdb</filename> file under the
|
||||
@@ -389,7 +380,7 @@
|
||||
|
||||
<listitem>
|
||||
<para>Any errors encountered during import, export, or action, will
|
||||
be either dumped to stdout (if these are exceptions handled by gramps)
|
||||
be either dumped to stdout (if these are exceptions handled by &app;)
|
||||
or or to stderr (if these are not handled). Use usual shell redirections
|
||||
of stdout and stderr to save messages and errors in files.
|
||||
</para></listitem>
|
||||
@@ -411,8 +402,8 @@
|
||||
<listitem>
|
||||
<para><command>gramps
|
||||
-i<filename>file1.ged</filename>
|
||||
-i <filename>file2.tgz</filename>
|
||||
-i <filename>~/db3</filename>
|
||||
-i <filename>file2.gpkg</filename>
|
||||
-i <filename>~/db3.gramps</filename>
|
||||
-i <filename>file4.wft</filename>
|
||||
-a <filename>check</filename></command>
|
||||
</para> </listitem></varlistentry>
|
||||
@@ -424,10 +415,10 @@
|
||||
<para><command>gramps
|
||||
-i <filename>file1.ged</filename>
|
||||
-f <replaceable>gedcom</replaceable>
|
||||
-i <filename>file2.tgz</filename>
|
||||
-i <filename>file2.gpkg</filename>
|
||||
-f <replaceable>gramps-pkg</replaceable>
|
||||
-i <filename>~/db3</filename>
|
||||
-f <replaceable>gramps</replaceable>
|
||||
-i <filename>~/db3.gramps</filename>
|
||||
-f <replaceable>gramps-xml</replaceable>
|
||||
-i <filename>file4.wft</filename>
|
||||
-f <replaceable>wft</replaceable>
|
||||
-a <replaceable>check</replaceable></command>
|
||||
@@ -437,11 +428,11 @@
|
||||
<varlistentry>
|
||||
<term>To record the database resulting from all imports, supply
|
||||
<command>-o</command> flag (use <command>-f</command>
|
||||
if the filename does not allow gramps to guess the format):</term>
|
||||
if the filename does not allow &app; to guess the format):</term>
|
||||
<listitem>
|
||||
<para><command>gramps
|
||||
-i <filename>file1.ged</filename>
|
||||
-i <filename>file2.tgz</filename>
|
||||
-i <filename>file2.gpkg</filename>
|
||||
-o <filename>~/new-package</filename>
|
||||
-f <replaceable>gramps-pkg</replaceable></command>
|
||||
</para></listitem>
|
||||
@@ -454,7 +445,7 @@
|
||||
<listitem>
|
||||
<para><command>gramps
|
||||
-i <filename>file1.ged</filename>
|
||||
-i <filename>file2.tgz</filename>
|
||||
-i <filename>file2.dpkg</filename>
|
||||
-o <filename>~/new-package</filename>
|
||||
-f <replaceable>gramps-pkg</replaceable>
|
||||
><filename>outfile</filename>
|
||||
@@ -463,13 +454,13 @@
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>To import three databases and start interactive gramps
|
||||
<term>To import three databases and start interactive &app;
|
||||
session with the result:</term>
|
||||
<listitem>
|
||||
<para><command>gramps
|
||||
-i <filename>file1.ged</filename>
|
||||
-i <filename>file2.tgz</filename>
|
||||
-i <filename>~/db3</filename>
|
||||
-i <filename>file2.gpkg</filename>
|
||||
-i <filename>~/db3.gramps</filename>
|
||||
</command>
|
||||
</para> </listitem>
|
||||
</varlistentry>
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
<tip><para>The ID prefixes use formatting conventions common for
|
||||
C, Python, and other programming languages. For example, the %04d
|
||||
expands to an integer, prepended with zeros to have the total
|
||||
width of founr digits. If you would like IDs to be 1, 2, 3, etc,
|
||||
width of four digits. If you would like IDs to be 1, 2, 3, etc,
|
||||
simply set the formatting parameter to %d.
|
||||
</para></tip>
|
||||
</listitem>
|
||||
@@ -255,10 +255,10 @@
|
||||
|
||||
|
||||
<varlistentry><term>Adjusting viewing controls</term>
|
||||
<listitem>Whether the toolbar, the sidebar, or the filter (People View
|
||||
<listitem><para>Whether the toolbar, the sidebar, or the filter (People View
|
||||
only) are displayed in the main window is adjusted through
|
||||
the <guimenu>View</guimenu> menu.
|
||||
</listitem>
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
<appendix id="faq">
|
||||
|
||||
<!--
|
||||
User Manual for Gramps - a GTK+/GNOME based genealogy program
|
||||
|
||||
@@ -22,356 +20,447 @@
|
||||
|
||||
<!-- $Id$ -->
|
||||
|
||||
<title>Frequently Asked Questions</title>
|
||||
<para>This appendix contains the list of questions that frequently come
|
||||
up in mailing list discussions and forums. This list is by no means
|
||||
complete. If you would like to add questions/answers to this list,
|
||||
please email your suggestions to <ulink url="mailto:gramps-devel@lists.sf.net"
|
||||
type="mailto">gramps-devel@lists.sf.net</ulink>
|
||||
</para>
|
||||
|
||||
<variablelist>
|
||||
|
||||
|
||||
<varlistentry><term>What is &app;?</term>
|
||||
<listitem><para> &app; is the Genealogical Research and Analysis
|
||||
Management Program System. In other words, it is a personal genealogy
|
||||
program letting you store, edit, and research genealogical data using
|
||||
the powers of your computer.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Where do I get it and how much does it cost?</term>
|
||||
<listitem><para>
|
||||
&app; can be downloaded from <ulink url="http://sf.net/projects/gramps"
|
||||
type="http">http://sf.net/projects/gramps</ulink> at no charge.
|
||||
&app; is an Open Source project covered by the GNU General Public License.
|
||||
You have full access to the source code and are allowed to distribute the
|
||||
program and source code freely.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Does it work with Windows (tm)?</term>
|
||||
<listitem><para>
|
||||
No. &app; uses the GTK and GNOME libraries. While the GTK libraries
|
||||
have been ported to Windows, the GNOME libraries have not.
|
||||
This, however, may change in the future.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Does it work with the Mac?</term>
|
||||
<listitem><para>
|
||||
<ulink url="http://fink.sourceforge.net"
|
||||
type="http">The Fink project</ulink> has ported
|
||||
<ulink url="http://fink.sourceforge.net/pdb/package.php/gramps"
|
||||
type="http">some older versions</ulink> of
|
||||
&app; to OSX (tm). The Mac OSX port is not directly supported by
|
||||
the &app; project, primarily because none of the &app; developers
|
||||
have access to Mac OSX and because OSX is not Free Software.</para>
|
||||
|
||||
<para>This version of &app; (&appversion;) does not appear to have been
|
||||
ported by the Fink project. Please contact the Fink project for more
|
||||
information.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Does it work with KDE?</term>
|
||||
<listitem><para>
|
||||
Yes, as long as the required GNOME libraries are installed.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Do I really have to have GNOME installed?</term>
|
||||
<listitem><para> Yes, but you do not have to be running the GNOME desktop.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>What version of GNOME do I need?</term>
|
||||
<listitem><para>
|
||||
This version of gramps requires GNOME 2.8.0 or higher.
|
||||
Previous versions in 1.0.x series required GNOME 2.0.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Is &app; compatible with
|
||||
other genealogical software (GenApps)?</term>
|
||||
<listitem><para>
|
||||
&app; makes every effort to maintain compatibility with GEDCOM, the general
|
||||
standard of recording genealogical information. We have import and export
|
||||
filters that enable &app; to read and write GEDCOM files. </para>
|
||||
|
||||
<para>
|
||||
It is important to understand that the GEDCOM standard is poorly implemented --
|
||||
virtually every genealogical software has its own "flavor" of GEDCOM. As we
|
||||
learn about new flavor, the import/export filters can be created very quickly.
|
||||
However, finding out about the unknown flavors requires user feedback.
|
||||
Please feel free to inform us about any GEDCOM flavor not supported by &app;,
|
||||
and we will do our best to support it!
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Can &app; read files created by GenApp X?</term>
|
||||
<listitem><para> See above.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Can &app; write files readable by GenApp X?</term>
|
||||
<listitem><para> See above.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Can &app; print a genealogical tree for my family?</term>
|
||||
<listitem><para>
|
||||
Yes. Different people have different ideas of what a genealogical tree is.
|
||||
Some think of it as a chart going from the distant ancestor and listing
|
||||
all his/her descendants and their families. Others think it should be a
|
||||
chart going from the person back in time, listing the ancestors and their
|
||||
families. Yet other people think of a table, text report, etc. </para>
|
||||
|
||||
<para>
|
||||
&app; can produce any of the above, and many more different charts and
|
||||
reports. Moreover, the plugin architechture enables users (you) to create
|
||||
their own plugins which could be new reports, charts, or research tools.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>In what formats can &app; output its reports?</term>
|
||||
<listitem><para>
|
||||
Text reports are available in HTML, PDF, AbiWord, KWord, LaTeX, RTF, and
|
||||
OpenOffice formats. Graphical reports (charts and diagrams) are available in
|
||||
PostScript, PDF, SVG, OpenOffice, and GraphViz formats.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Is &app; compatible with the Internet?</term>
|
||||
<listitem><para>
|
||||
&app; can store web addresses and direct your browser to them. It can import
|
||||
data that you download from the Internet. It can export data that you could
|
||||
send over the Internet. &app; is familiar with the standard file formats
|
||||
widely used on the Internet (e.g. JPEG, PNG, and GIF images, MP3, OGG, and
|
||||
WAV sound files, QuickTime, MPEG, and AVI movie files, etc). Other than that,
|
||||
there is little that a genealogical program can do with the Internet.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Can I create custom reports/filters/whatever?</term>
|
||||
<listitem><para>
|
||||
Yes. There are many levels of customization. One is creating or modifying
|
||||
the templates used for the reports. This gives you some control over
|
||||
the fonts, colors, and some layout of the reports. You can also use &app;
|
||||
controls in the report dialogs to tell what contents should be used for a
|
||||
particular report. In addition to this, you have an ability to create your
|
||||
own filters -- this is useful in selecting people based on criteria set
|
||||
by you. You can combine these filters to create new, more complex filters.
|
||||
Finally, you have an option to create your own plugins. These may be new
|
||||
reports, research tools, import/export filters, etc. This assumes some
|
||||
knowledge of programming in Python.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>What standards does &app; support?</term>
|
||||
<listitem><para>
|
||||
The nice thing about the standards is that there never is a shortage of
|
||||
them. &app; is tested to support the following flavors of GEDCOM:
|
||||
GEDCOM5.5, Brother's Keeper, Family Origins, Familty Tree Maker, Ftree,
|
||||
GeneWeb, Legacy, Personal Ancestral File, Pro-Gen, Reunion, and
|
||||
Visual Genealogie.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>What is the maximum database
|
||||
size (bytes) &app; can handle?</term>
|
||||
<listitem><para>
|
||||
&app; has no hard limits on the size of a database that it can handle.
|
||||
Starting with this release, &app; no longer loads all data into memory,
|
||||
which allows it to work with much larger database than before.
|
||||
In reality, however, there are practical limits. The main limiting factors
|
||||
are the available memory on the system and the cache size used for BSDDB
|
||||
database access. With common memory sizes these days, &app; should have
|
||||
no problem using databases with tens of thousands of people.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>How many people can &app; database handle?</term>
|
||||
<listitem><para>
|
||||
We have found that on a typical system, &app; tends to bog down after the
|
||||
database has around 150,000 people. Again, this is dependent on how much
|
||||
memory you have.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Why is &app; running so slowly?</term>
|
||||
<listitem><para> It does not anymore! Just try out the current
|
||||
version, &appversion;.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>My database is really big.
|
||||
Is there a way around loading all the data into memory?</term>
|
||||
<listitem><para>
|
||||
Starting with this release, &app; no longer loads all data into memory,
|
||||
which allows it to work with much larger database than before.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>I want to rerun the Startup dialog (druid).
|
||||
How do I do this?</term>
|
||||
<listitem><para>
|
||||
&app; keeps a flag in the GNOME configuration database to indicate
|
||||
that the startup dialog has been run. To cause &app; to rerun this,
|
||||
the flag needs to be reset. This can be done with the following
|
||||
command: </para>
|
||||
|
||||
<para><command>gconftool-2 -u /apps/gramps/behavior/startup</command>
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Why are non-latin characters displayed
|
||||
as garbage in PDF/PS reports?</term>
|
||||
<listitem><para> This is a limitation of the builtin fonts of PS
|
||||
and PDF formats. To print non-latin text, use the Print...
|
||||
in the format selection menu of the report dialog. This will use
|
||||
the gnome-print backend, which supports PS and PDF creation,
|
||||
as well as direct printing.</para>
|
||||
|
||||
<para>If you only have latin text, the PDF option will produce
|
||||
a smalled PDF compared to that created by gnome-print, simply because
|
||||
no font information will be embedded.
|
||||
</para>
|
||||
<appendix id="faq">
|
||||
<title>Frequently Asked Questions</title>
|
||||
<para>
|
||||
|
||||
This appendix contains the list of questions that frequently come
|
||||
up in mailing list discussions and forums. This list is by no
|
||||
means complete. If you would like to add questions/answers to this
|
||||
list, please email your suggestions to <ulink
|
||||
url="mailto:gramps-devel@lists.sf.net"
|
||||
type="mailto">gramps-devel@lists.sf.net</ulink>
|
||||
|
||||
</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>What is &app;?</term>
|
||||
<listitem>
|
||||
<para>
|
||||
&app; is the Genealogical Research and Analysis Management
|
||||
Program System. In other words, it is a personal genealogy
|
||||
program letting you store, edit, and research genealogical
|
||||
data using the powers of your computer.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Why can I not add/remove/edit columns to the lists
|
||||
in People View and Family View?</term>
|
||||
<listitem><para> Now you can! Just try out the current
|
||||
version, &appversion;.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Where do I get it and how much does it cost?</term>
|
||||
<listitem>
|
||||
<para>
|
||||
&app; can be downloaded from <ulink
|
||||
url="http://sf.net/projects/gramps"
|
||||
type="http">http://sf.net/projects/gramps</ulink> at no
|
||||
charge. &app; is an Open Source project covered by the GNU
|
||||
General Public License. You have full access to the source
|
||||
code and are allowed to distribute the program and source
|
||||
code freely.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>I would like to contribute to &app; by writing
|
||||
my favorite report. How do I do that?</term>
|
||||
<listitem><para>
|
||||
The easiest way to contribute to reports, filters, tools, etc. is to copy
|
||||
an existing &app; report, filter, or tool. If you can create what you want
|
||||
by modifying existing code -- great! If your idea does not fit into the logic
|
||||
of any existing &app; tool, the <ulink
|
||||
url="http://gramps.sourceforge.net/phpwiki/index.php/GrampsDevelopersPage"
|
||||
type="http">following page</ulink> may provide some help in writing your
|
||||
own plugin from scratch.
|
||||
<varlistentry>
|
||||
<term>Does it work with Windows (tm)?</term>
|
||||
<listitem>
|
||||
<para>
|
||||
No. &app; uses the GTK and GNOME libraries. While the GTK
|
||||
libraries have been ported to Windows, the GNOME libraries
|
||||
have not. This, however, may change in the future.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
If you need more help or would like to discuss your idea with us,
|
||||
please do not hesitate to contact us at <ulink
|
||||
url="mailto:gramps-devel@lists.sf.net"
|
||||
type="mailto">gramps-devel@lists.sf.net</ulink>
|
||||
</para>
|
||||
<varlistentry>
|
||||
<term>Does it work with the Mac?</term>
|
||||
<listitem>
|
||||
<para>
|
||||
<ulink url="http://fink.sourceforge.net" type="http">
|
||||
The Fink project</ulink> has ported
|
||||
<ulink url="http://fink.sourceforge.net/pdb/package.php/gramps"
|
||||
type="http"> some older versions</ulink> of
|
||||
&app; to OSX (tm). The Mac OSX port is not directly supported by
|
||||
the &app; project, primarily because none of the &app; developers
|
||||
have access to Mac OSX and because OSX is not Free Software.
|
||||
</para><para>
|
||||
This version of &app; (&appversion;) does not appear to have been
|
||||
ported by the Fink project. Please contact the Fink project for
|
||||
more information.
|
||||
</para><para>
|
||||
Some people have had success using the DarwinPorts instead of the
|
||||
Fink project.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<para>
|
||||
To test your work in progress, you may save your plugin under
|
||||
<replaceable>$HOME/.gramps/plugins</replaceable> directory and it should
|
||||
be found and imported on startup.
|
||||
The correctly written plugin will register itself with &app;, create menu
|
||||
item, and so on.</para>
|
||||
<varlistentry>
|
||||
<term>Does it work with KDE?</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Yes, as long as the required GNOME libraries are installed.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<para>
|
||||
If you are happy with your plugin and would like to contribute your code
|
||||
back to the &app; project, you are very welcome to do so by contacting us
|
||||
at <ulink url="mailto:gramps-devel@lists.sf.net"
|
||||
type="mailto">gramps-devel@lists.sf.net</ulink>
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Do I really have to have GNOME installed?</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Yes, but you do not have to be running the GNOME desktop.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>What version of GNOME do I need?</term>
|
||||
<listitem>
|
||||
<para>
|
||||
This version of gramps requires GNOME 2.8.0 or higher.
|
||||
Previous versions in 1.0.x series required GNOME 2.0.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>I found a bug and I want it fixed right now!
|
||||
What do I do?</term>
|
||||
<listitem><para>
|
||||
The best thing you can do is to fix the bug and send the patch to
|
||||
<ulink url="mailto:gramps-devel@lists.sf.net"
|
||||
type="mailto">gramps-devel@lists.sf.net</ulink> :-)</para>
|
||||
<varlistentry>
|
||||
<term>Is &app; compatible with other genealogical software?</term>
|
||||
<listitem>
|
||||
<para>
|
||||
&app; makes every effort to maintain compatibility with
|
||||
GEDCOM, the general standard of recording genealogical
|
||||
information. We have import and export filters that enable
|
||||
&app; to read and write GEDCOM files.
|
||||
</para><para>
|
||||
It is important to understand that the GEDCOM standard is
|
||||
poorly implemented -- virtually every genealogical software
|
||||
has its own "flavor" of GEDCOM. As we learn about new
|
||||
flavor, the import/export filters can be created very
|
||||
quickly. However, finding out about the unknown flavors
|
||||
requires user feedback. Please feel free to inform us about
|
||||
any GEDCOM flavor not supported by &app;, and we will do our
|
||||
best to support it!
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<para>
|
||||
The next best thing would be to submit a good bug report. This can be done in
|
||||
one of the two ways: (1) send your report to
|
||||
<ulink url="mailto:gramps-bugs@lists.sf.net"
|
||||
type="mailto">gramps-bugs@lists.sf.net</ulink>
|
||||
or (2) file your report with the bug tracker system at
|
||||
<ulink url="http://sf.net/tracker/?group_id=25770" type="http">
|
||||
http://sf.net/tracker/?group_id=25770&atid=385137</ulink>
|
||||
(this function is also available by selecting
|
||||
<menuchoice><guisubmenu>Help</guisubmenu><guimenuitem>Report a
|
||||
bug</guimenuitem></menuchoice> from gramps main menu). </para>
|
||||
<varlistentry>
|
||||
<term>Can &app; read files created by other genealogy programs?</term>
|
||||
<listitem>
|
||||
<para>See above.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<para>A good bug report would include: </para>
|
||||
<varlistentry>
|
||||
<term>Can &app; write files readable by other genealogy programs?</term>
|
||||
<listitem>
|
||||
<para>See above.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<itemizedlist>
|
||||
<varlistentry>
|
||||
<term>Can &app; print a genealogical tree for my family?</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Yes. Different people have different ideas of what a
|
||||
genealogical tree is. Some think of it as a chart going
|
||||
from the distant ancestor and listing all his/her
|
||||
descendants and their families. Others think it should be a
|
||||
chart going from the person back in time, listing the
|
||||
ancestors and their families. Yet other people think of a
|
||||
table, text report, etc.
|
||||
</para><para>
|
||||
&app; can produce any of the above, and many more different
|
||||
charts and reports. Moreover, the plugin architecture
|
||||
enables users (you) to create their own plugins which could
|
||||
be new reports, charts, or research tools.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<listitem><para>
|
||||
Version of gramps you were using when you encountered the bug
|
||||
(available through <menuchoice><guisubmenu>Help</guisubmenu>
|
||||
<guimenuitem>About</guimenuitem></menuchoice> menu item).
|
||||
</para></listitem>
|
||||
<varlistentry>
|
||||
<term>In what formats can &app; output its reports?</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Text reports are available in HTML, PDF, AbiWord, KWord,
|
||||
LaTeX, RTF, and OpenOffice formats. Graphical reports
|
||||
(charts and diagrams) are available in PostScript, PDF, SVG,
|
||||
OpenOffice, and GraphViz formats.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<listitem><para>
|
||||
Language under which gramps was run
|
||||
(available by executing </para>
|
||||
<para><command>echo $LANG</command></para>
|
||||
<para>in your terminal).
|
||||
</para></listitem>
|
||||
<varlistentry>
|
||||
<term>Is &app; compatible with the Internet?</term>
|
||||
<listitem>
|
||||
<para>
|
||||
&app; can store web addresses and direct your browser to
|
||||
them. It can import data that you download from the
|
||||
Internet. It can export data that you could send over the
|
||||
Internet. &app; is familiar with the standard file formats
|
||||
widely used on the Internet (e.g. JPEG, PNG, and GIF images,
|
||||
MP3, OGG, and WAV sound files, QuickTime, MPEG, and AVI
|
||||
movie files, etc). Other than that, there is little that a
|
||||
genealogical program can do with the Internet.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<listitem><para>
|
||||
Symptoms indicating that this is indeed a bug.
|
||||
</para></listitem>
|
||||
<varlistentry>
|
||||
<term>Can I create custom reports/filters/whatever?</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Yes. There are many levels of customization. One is creating
|
||||
or modifying the templates used for the reports. This gives
|
||||
you some control over the fonts, colors, and some layout of
|
||||
the reports. You can also use &app; controls in the report
|
||||
dialogs to tell what contents should be used for a
|
||||
particular report. In addition to this, you have an ability
|
||||
to create your own filters -- this is useful in selecting
|
||||
people based on criteria set by you. You can combine these
|
||||
filters to create new, more complex filters. Finally, you
|
||||
have an option to create your own plugins. These may be new
|
||||
reports, research tools, import/export filters, etc. This
|
||||
assumes some knowledge of programming in Python.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<listitem><para>
|
||||
Any Traceback messages, error messages, warnings, etc,
|
||||
that showed up in your terminal or a in separate traceback window.
|
||||
</para></listitem>
|
||||
<varlistentry>
|
||||
<term>What standards does &app; support?</term>
|
||||
<listitem>
|
||||
<para>
|
||||
The nice thing about standards is that there never is a
|
||||
shortage of them. &app; is tested to support the following
|
||||
flavors of GEDCOM: GEDCOM5.5, Brother's Keeper, Family
|
||||
Origins, Family Tree Maker, Ftree, GeneWeb, Legacy, Personal
|
||||
Ancestral File, Pro-Gen, Reunion, and Visual Genealogie.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</itemizedlist>
|
||||
<varlistentry>
|
||||
<term>What is the maximum database size (bytes) &app; can handle?</term>
|
||||
<listitem>
|
||||
<para>
|
||||
&app; has no hard limits on the size of a database that it
|
||||
can handle. Starting with this release, &app; no longer
|
||||
loads all data into memory, which allows it to work with a
|
||||
much larger database than before. In reality, however,
|
||||
there are practical limits. The main limiting factors are
|
||||
the available memory on the system and the cache size used
|
||||
for BSDDB database access. With common memory sizes these
|
||||
days, &app; should have no problem using databases with tens
|
||||
of thousands of people.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<para>Most problems can be fixed quickly provided there is enough information.
|
||||
To ensure this, please follow up on your bug reports. In particular, if you
|
||||
file a bug report with sf.net bug tracker, PLEASE log in to sf.net before
|
||||
filing
|
||||
(register your free account if you don't have one). Then we will have a way
|
||||
of contacting you should we need more information. If you choose to file your
|
||||
report anonymously, at least check every so often whether your report page
|
||||
has something new posted, as it probably would.</para>
|
||||
<varlistentry>
|
||||
<term>How many people can &app; database handle?</term>
|
||||
<listitem>
|
||||
<para>
|
||||
We have found that on a typical system, &app; tends to bog
|
||||
down after the database has around 150,000 people. Again,
|
||||
this is dependent on how much memory you have.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<para>If the above explanations seem vague, please follow
|
||||
<ulink url="http://www.chiark.greenend.org.uk/~sgtatham/bugs.html"
|
||||
type="http">this link.</ulink>
|
||||
<varlistentry>
|
||||
<term>Why is &app; running so slowly?</term>
|
||||
<listitem>
|
||||
<para>
|
||||
It does not anymore! Just try out the current
|
||||
version, &appversion;.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
My database is really big. Is there a way around loading
|
||||
all the data into memory?
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Starting with this release, &app; no longer loads all data
|
||||
into memory, which allows it to work with a much larger
|
||||
database than before.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>It is obvious that &app; absolutely needs to
|
||||
become a (client-server/web-based/PHP/weblog/Javascript/C++/distributed/KDE/Motif/Tcl/Win32/C#/You-name-it)
|
||||
application. When is this going to happen?</term>
|
||||
<listitem><para>
|
||||
The surest way to see it happen is to get it done by yourself. Since
|
||||
&app; is free/open source, nobody prevents you from taking all of the
|
||||
code and continuing its development in whatever direction you see fit.
|
||||
In doing so, you may consider giving your new project another name to
|
||||
avoid confusion with the continuing &app; development. If you would
|
||||
like the &app; project to provide advice, expertise, filters, etc.,
|
||||
we will gladly cooperate with your new project, to ensure compatibility
|
||||
or import/export options to your new format of a project.</para>
|
||||
<varlistentry>
|
||||
<term>I want to rerun the Startup dialog. How do I do this?</term>
|
||||
<listitem>
|
||||
<para>
|
||||
&app; keeps a flag in the GNOME configuration database to
|
||||
indicate that the startup dialog has been run. To cause
|
||||
&app; to rerun this, the flag needs to be reset. This can be
|
||||
done with the following command:
|
||||
</para>
|
||||
<para>
|
||||
<command>gconftool-2 -u /apps/gramps/behavior/startup</command>
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<para>
|
||||
If, however, you would like the &app; project to to adopt your strategy,
|
||||
you would need to convince &app; developers that your strategy is good
|
||||
for &app; and superior to the present development strategy.</para>
|
||||
<varlistentry>
|
||||
<term>
|
||||
Why are non-latin characters displayed as garbage in PDF/PS
|
||||
reports?
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
This is a limitation of the builtin fonts of PS and PDF
|
||||
formats. To print non-latin text, use the Print... in the
|
||||
format selection menu of the report dialog. This will use
|
||||
the gnome-print backend, which supports PS and PDF creation,
|
||||
as well as direct printing.
|
||||
</para>
|
||||
<para>
|
||||
If you only have latin text, the PDF option will produce a
|
||||
smalled PDF compared to that created by gnome-print, simply
|
||||
because no font information will be embedded.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<tip><para>
|
||||
If &app; developers are still not convinced after about three
|
||||
messages sent to gramps-devel, maybe you are better off on your own
|
||||
rather than with a company of retards who can't fully realize the
|
||||
potential of your great idea :-)
|
||||
<varlistentry>
|
||||
<term>
|
||||
Why can I not add/remove/edit columns to the lists in People
|
||||
View and Family View?
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Now you can! Just try out the current version, &appversion;.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</para></tip></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>
|
||||
I would like to contribute to &app; by writing my favorite
|
||||
report. How do I do that?
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
The easiest way to contribute to reports, filters, tools,
|
||||
etc. is to copy an existing &app; report, filter, or
|
||||
tool. If you can create what you want by modifying existing
|
||||
code -- great! If your idea does not fit into the logic of
|
||||
any existing &app; tool, the <ulink
|
||||
url="http://gramps.sourceforge.net/phpwiki/index.php/GrampsDevelopersPage"
|
||||
type="http">following page</ulink> may provide some help in
|
||||
writing your own plugin from scratch.
|
||||
</para>
|
||||
<para>
|
||||
If you need more help or would like to discuss your idea
|
||||
with us, please do not hesitate to contact us at <ulink
|
||||
url="mailto:gramps-devel@lists.sf.net"
|
||||
type="mailto">gramps-devel@lists.sf.net</ulink>
|
||||
</para>
|
||||
<para>
|
||||
To test your work in progress, you may save your plugin
|
||||
under <replaceable>$HOME/.gramps/plugins</replaceable>
|
||||
directory and it should be found and imported on startup.
|
||||
The correctly written plugin will register itself with
|
||||
&app;, create menu item, and so on.
|
||||
</para>
|
||||
<para>
|
||||
If you are happy with your plugin and would like to
|
||||
contribute your code back to the &app; project, you are very
|
||||
welcome to do so by contacting us at <ulink
|
||||
url="mailto:gramps-devel@lists.sf.net"
|
||||
type="mailto">gramps-devel@lists.sf.net</ulink>
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
<varlistentry>
|
||||
<term>
|
||||
I found a bug and I want it fixed right now! What do I do?
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
The best thing you can do is to fix the bug and send the
|
||||
patch to <ulink url="mailto:gramps-devel@lists.sf.net"
|
||||
type="mailto">gramps-devel@lists.sf.net</ulink> :-)
|
||||
</para>
|
||||
<para>A good bug report would include:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
Version of gramps you were using when you encountered
|
||||
the bug (available through
|
||||
<menuchoice><guisubmenu>Help</guisubmenu>
|
||||
<guimenuitem>About</guimenuitem></menuchoice> menu
|
||||
item).
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Language under which gramps was run (available by executing
|
||||
</para>
|
||||
<para><command>echo $LANG</command></para>
|
||||
<para>in your terminal).</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Symptoms indicating that this is indeed a bug.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Any Traceback messages, error messages, warnings, etc,
|
||||
that showed up in your terminal or a in separate
|
||||
traceback window.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>
|
||||
Most problems can be fixed quickly provided there is enough
|
||||
information. To ensure this, please follow up on your bug
|
||||
reports. In particular, if you file a bug report with sf.net
|
||||
bug tracker, PLEASE log in to sf.net before filing (register
|
||||
your free account if you don't have one). Then we will have
|
||||
a way of contacting you should we need more information. If
|
||||
you choose to file your report anonymously, at least check
|
||||
every so often whether your report page has something new
|
||||
posted, as it probably would.
|
||||
</para>
|
||||
<para>
|
||||
If the above explanations seem vague, please follow <ulink
|
||||
url="http://www.chiark.greenend.org.uk/~sgtatham/bugs.html"
|
||||
type="http">this link.</ulink>
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>
|
||||
It is obvious that &app; absolutely needs to become a
|
||||
(client-server/web-based/PHP/weblog/Javascript/C++/distributed/KDE/Motif/Tcl/Win32/C#/You-name-it)
|
||||
application. When is this going to happen?
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
The surest way to see it happen is to get it done by
|
||||
yourself. Since &app; is free/open source, nobody prevents
|
||||
you from taking all of the code and continuing its
|
||||
development in whatever direction you see fit. In doing so,
|
||||
you may consider giving your new project another name to
|
||||
avoid confusion with the continuing &app; development. If
|
||||
you would like the &app; project to provide advice,
|
||||
expertise, filters, etc., we will gladly cooperate with your
|
||||
new project, to ensure compatibility or import/export
|
||||
options to your new format of a project.
|
||||
</para>
|
||||
<para>
|
||||
If, however, you would like the &app; project to to adopt
|
||||
your strategy, you would need to convince &app; developers
|
||||
that your strategy is good for &app; and superior to the
|
||||
present development strategy.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</appendix>
|
||||
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 17 KiB |
@@ -22,163 +22,245 @@
|
||||
|
||||
<!-- $Id$ -->
|
||||
|
||||
|
||||
<title>Getting Started</title>
|
||||
<title>Getting Started</title>
|
||||
|
||||
<para>This chapter provides the most basic information on starting &app;
|
||||
and obtaining help. Please procede to the following chapters for more
|
||||
information.</para>
|
||||
<para>
|
||||
In this chapter, we'll begin with the basics. We'll show you how
|
||||
to start &app; and how to get help when you need it.
|
||||
</para>
|
||||
|
||||
<!-- ================ Getting Started Subsection ====== -->
|
||||
<sect1 id="gramps-start">
|
||||
<!-- ================ Getting Started Subsection ====== -->
|
||||
|
||||
<sect1 id="gramps-start">
|
||||
<title>To Start GRAMPS</title>
|
||||
<para>You can start &app; in the following ways:</para>
|
||||
<para>
|
||||
You can start &app; in the following ways:
|
||||
</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><guimenu>Applications</guimenu> menu</term>
|
||||
<listitem><para>The method of starting &app; from the menus may vary from
|
||||
distribution to distribution. On default GNOME desktop,
|
||||
choose <menuchoice><guisubmenu>Other</guisubmenu>
|
||||
<guimenuitem>Gramps</guimenuitem></menuchoice>. </para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Command line</term>
|
||||
<listitem><para>To start &app; from a command line, type
|
||||
<command>gramps</command>, then press <keycap>Enter</keycap>.</para>
|
||||
|
||||
<para>If you would like &app; to open a specific database or to
|
||||
import a specific file on startup, you can supply the filename
|
||||
as a command line argument:</para>
|
||||
<varlistentry>
|
||||
<term>From the <guimenu>Applications</guimenu> menu</term>
|
||||
<listitem>
|
||||
|
||||
<para>
|
||||
<command>gramps</command> <filename>filename.grdb</filename>
|
||||
</para>
|
||||
<para>Select &app; from the list of programs displayed in
|
||||
your computer's Applications menu. (The location and
|
||||
appearance of this menu vary slightly from one distribution
|
||||
of Linux to another. On the default GNOME desktop, you'll
|
||||
find &app; in the
|
||||
<menuchoice><guimenu>Applications</guimenu><guisubmenu>Other</guisubmenu></menuchoice>
|
||||
menu.</para>
|
||||
|
||||
<para>where <filename>filename.grdb</filename> is the name
|
||||
of the file you want to open. The command line provides many more ways
|
||||
to start &app; and perform different tasks. The detailed reference to the
|
||||
command line options is found in the <xref linkend="append-cmdline"/>.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>From the command line</term>
|
||||
<listitem>
|
||||
<para>
|
||||
If you're adept with Linux and like to work from the command
|
||||
line, you can start &app; by calling up a terminal window,
|
||||
typing <command>gramps</command>, and then pressing
|
||||
<keycap>Enter</keycap>.
|
||||
</para>
|
||||
<para>
|
||||
If you would like GRAMPS to open a specific database or to
|
||||
import a specific file on startup, you can supply the filename
|
||||
as a command line argument:
|
||||
</para>
|
||||
<para>
|
||||
<filename>gramps filename.grdb</filename>
|
||||
</para>
|
||||
<para>
|
||||
where <filename>filename.grdb</filename> is the name of
|
||||
the file you want to open. The command line provides many
|
||||
more ways to start &app; and perform different tasks. The
|
||||
detailed reference to the command line options is found
|
||||
in <xref linkend="append-cmdline"/>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</sect1>
|
||||
</sect1>
|
||||
|
||||
<!-- ================ Getting Started Subsection ==== -->
|
||||
<sect1 id="run-1st-time">
|
||||
<title>Running GRAMPS for the first time</title>
|
||||
<!-- ================ Getting Started Subsection ==== -->
|
||||
|
||||
<sect1 id="run-1st-time">
|
||||
<title>Running GRAMPS for the first time</title>
|
||||
<para>
|
||||
The first time you run the program, GRAMPS will display its
|
||||
Getting Started dialogs. Follow the directions guiding you through
|
||||
<guilabel>Researcher information</guilabel>, <guilabel>Numerical date
|
||||
formats</guilabel>, <guilabel>Alternate calendar support</guilabel>,
|
||||
and <guilabel>LDS extensions</guilabel> sections. Most of the dialogs
|
||||
are self-explanatory and will not be covered here.
|
||||
The first time you run the program, GRAMPS will display the
|
||||
"Getting Started" dialogs. Follow the directions that
|
||||
guide you through <guilabel>Researcher information</guilabel>,
|
||||
<guilabel>Numerical date formats</guilabel>, <guilabel>Alternate
|
||||
calendar support</guilabel>, and <guilabel>the LDS
|
||||
extensions</guilabel> sections. You should find them to be
|
||||
self-explanatory.
|
||||
</para>
|
||||
|
||||
<!-- ==== Figure: Getting Started Druid Window ==== -->
|
||||
<figure id="druid-fig">
|
||||
<title>GRAMPS Getting Started Window: Researcher Information</title>
|
||||
<screenshot><mediaobject><imageobject><imagedata
|
||||
fileref="figures/researcher.png" format="PNG"/></imageobject>
|
||||
<textobject>
|
||||
<phrase>Shows Researcher Information Window. </phrase>
|
||||
</textobject></mediaobject></screenshot></figure>
|
||||
<!-- ==== End of Figure ==== -->
|
||||
<note id="note-dialog">
|
||||
<title>Dialog boxes</title>
|
||||
<para>We'll make frequent reference in this manual to
|
||||
dialogs. A dialog is simply a pop-up window into which you can
|
||||
enter information.</para>
|
||||
</note>
|
||||
|
||||
<para>Enter your personal information in the corresponding
|
||||
text entry fields. Although &app; requests information about you,
|
||||
this information is used only so that &app; can create valid GEDCOM
|
||||
output files. A valid GEDCOM file requires information about the file's
|
||||
creator. If you choose, you may leave the information empty, however
|
||||
all the GEDCOM files you export will not be valid.
|
||||
</para>
|
||||
<para>We recommend you enter your personal information when GRAMPS
|
||||
prompts you for it. GRAMPS uses this information strictly so it
|
||||
can create valid GEDCOM output files (which require information
|
||||
about the files' creator). If you wish, you can choose not to
|
||||
supply this information, but be aware that unless and until you
|
||||
do, any GEDCOM files you export will not be valid.</para>
|
||||
|
||||
<!-- ==== Figure: Getting Started Druid Window ==== -->
|
||||
|
||||
<figure id="druid-fig">
|
||||
<title>GRAMPS Getting Started Window: Researcher Information</title>
|
||||
<screenshot>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="figures/researcher.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Shows Researcher Information Window. </phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
</figure>
|
||||
|
||||
<!-- ==== End of Figure ==== -->
|
||||
|
||||
<tip id="preferences-tip">
|
||||
<title>Entering personal information</title>
|
||||
<para>This information can be entered at any time in the
|
||||
Preferences dialog, under the Database/Researcher Information
|
||||
category.</para>
|
||||
</tip>
|
||||
</sect1>
|
||||
|
||||
<!-- ================ Getting Started Subsection -->
|
||||
|
||||
<sect1 id="choose-db-start">
|
||||
<title>Choosing a database on startup</title>
|
||||
<para>
|
||||
If &app; is started without a database selected, the following
|
||||
window will appear prompting you to choose one to open.
|
||||
</para>
|
||||
|
||||
<!-- ==== Figure: Open existing/new database window ==== -->
|
||||
|
||||
<para>This information can be entered at any time in the
|
||||
<guilabel>Preferences</guilabel> dialog, under the
|
||||
<guilabel>Database/Researcher Information</guilabel> category.
|
||||
</para>
|
||||
|
||||
</sect1>
|
||||
|
||||
<!-- ================ Getting Started Subsection -->
|
||||
<sect1 id="choose-db-start">
|
||||
<title>Choosing a database on startup</title>
|
||||
<para>If &app; is started without any
|
||||
database to open, the following window will appear prompting you to
|
||||
choose what database to open. </para>
|
||||
|
||||
<!-- ==== Figure: Open existing/new database window ==== -->
|
||||
<figure id="first-open">
|
||||
<title>Open Database Window</title>
|
||||
<screenshot><mediaobject><imageobject><imagedata
|
||||
fileref="figures/first-open.png" format="PNG"/></imageobject>
|
||||
<textobject>
|
||||
<phrase>Shows Open Database Window. </phrase>
|
||||
</textobject></mediaobject></screenshot></figure>
|
||||
<!-- ==== End of Figure ==== -->
|
||||
|
||||
<para>If you would like to open an existing database, check the top radio
|
||||
button and click the <guibutton>OK</guibutton> button. You will then be asked to
|
||||
specify the name of your existing database. If you would like to start
|
||||
creating your brand new database from scratch right away, choose new
|
||||
database. </para>
|
||||
|
||||
<note id="file-notdir-note">
|
||||
<title>Selecting file</title>
|
||||
<para>
|
||||
Unlike the version 1.0.X of &app;, this version does not require selecting directory
|
||||
for the database. Please select filename, as you would in any other application.
|
||||
</para>
|
||||
</note>
|
||||
|
||||
</sect1>
|
||||
<figure id="first-open">
|
||||
<title>Open Database Window</title>
|
||||
<screenshot>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="figures/first-open.png" format="PNG" />
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Shows Open Database Window.</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
</figure>
|
||||
|
||||
<!-- ==== End of Figure ==== -->
|
||||
|
||||
|
||||
<!-- ================ Getting Started Subsection ==== -->
|
||||
<sect1 id="get-help">
|
||||
<title>Obtaining Help</title>
|
||||
<para> At any time, the following items are available for immediate aid
|
||||
from the <menuchoice><guimenu>Help</guimenu></menuchoice> menu: </para>
|
||||
|
||||
<variablelist>
|
||||
<para>To open a database that you have recently opened, choose the
|
||||
top selection, select your database from the menu and
|
||||
click <guibutton>OK</guibutton>.</para>
|
||||
|
||||
<varlistentry><term>User manual</term>
|
||||
<listitem><para> Choose this item to read the text of this manual
|
||||
in the help browser. </para></listitem>
|
||||
</varlistentry>
|
||||
<para>To open an existing database you have not recently opened,
|
||||
choose the middle selection and click
|
||||
<guibutton>OK</guibutton>. &app; will then ask you to specify the
|
||||
name of the database you wish to open. </para>
|
||||
|
||||
<varlistentry><term>FAQ</term>
|
||||
<listitem><para> Use this item to read Frequently Asked Questions
|
||||
about &app; in the browser. </para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>GRAMPS home page</term>
|
||||
<listitem><para> Select this item to open home page of &app; in your
|
||||
default web browser. </para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>GRAMPS mailing lists</term>
|
||||
<listitem><para> Choose this item to direct your web browser
|
||||
to the &app; mailing list archives. </para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Report a bug</term>
|
||||
<listitem><para> Use this item to file a bug report against &app;
|
||||
with the bug tracking system. </para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Show plugin status</term>
|
||||
<listitem><para> Use this item to display the status of loaded
|
||||
plugins. </para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Open example database</term>
|
||||
<listitem><para> Select this item to load the example database shipped
|
||||
with &app;. This database is composed of fictitious people and serves as
|
||||
a useful example for learning how to work with &app;. </para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect1>
|
||||
<para>As you might guess, to create a new database, choose
|
||||
"Create a new database"</para>
|
||||
|
||||
</chapter>
|
||||
<note id="file-notdir-note">
|
||||
<title>Selecting file</title>
|
||||
<para>
|
||||
If you're familiar with version 1.0.X of GRAMPS, you'll note
|
||||
that version 2.0 does not require you to select a directory in
|
||||
which to store the database.
|
||||
</para>
|
||||
</note>
|
||||
|
||||
</sect1>
|
||||
|
||||
<!-- ================ Getting Started Subsection ==== -->
|
||||
|
||||
<sect1 id="get-help">
|
||||
<title>Obtaining Help</title>
|
||||
<para>
|
||||
GRAMPS has a <menuchoice><guimenu>Help</guimenu></menuchoice> menu
|
||||
that you can consult at any time. It includes the following items:
|
||||
</para>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term>User manual</term>
|
||||
<listitem>
|
||||
<para>
|
||||
An electronic version of the manual that you can access while you work in GRAMPS.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>FAQ</term>
|
||||
<listitem>
|
||||
<para>A list of Frequently Asked Questions about &app;.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>GRAMPS home page</term>
|
||||
<listitem>
|
||||
<para>A link to the GRAMPS' project web site.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>GRAMPS mailing lists</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Gives you direct access to GRAMPS' mailing list archives.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Report a bug</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Choose this item to file a bug report in our bug tracking
|
||||
system. (Remember, &app; is a living project. We want to
|
||||
know about any problems you encounter so we can work to
|
||||
solve them for everyone's benefit.)
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Show plugin status</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Use this item to display the status of any plugins you may have added.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Open example database</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Select this item to load the example database that is
|
||||
included in your GRAMPS package. This database is composed
|
||||
of fictitious people and serves as a useful example for
|
||||
learning how to work with GRAMPS.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</sect1>
|
||||
</chapter>
|
||||
@@ -3,16 +3,15 @@
|
||||
<resource>
|
||||
<creator>Alex Roitman shura@alex.neuro.umn.edu</creator>
|
||||
<title>GRAMPS Manual</title>
|
||||
<date>2003-12-01</date>
|
||||
<version identifier="2.4" date="2003-12-01" description="GNOME2 Compliant GRAMPS Manual"/>
|
||||
<subject category="GNOME|Applications"/>
|
||||
<date>2005-10-16</date>
|
||||
<version identifier="2.6" date="2004-10-16" description="GNOME2 Compliant GRAMPS Manual"/>
|
||||
<subject category="Applications"/>
|
||||
<description>User Manual for GRAMPS.</description>
|
||||
<type>User Manual</type>
|
||||
<format mime="text/xml" dtd="-//OASIS//DTD DocBook XML V4.1.2//EN"/>
|
||||
<identifier url=""/>
|
||||
<language code="C"/>
|
||||
<relation seriesid="aa15a444-5ed9-11d7-8329-d7319c90009c"/>
|
||||
<rights type="GNU FDL" license.version="1.1" license="http://www.gnu.org/licenses/fdl.html" holder="Alex Roitman"/>
|
||||
<rights type="GNU GPL" license.version="2" license="http://www.gnu.org/licenses/gpl.html" holder="Alex Roitman"/>
|
||||
</resource>
|
||||
</omf>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0"?>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?yelp:chunk-depth 3?>
|
||||
<!--
|
||||
User Manual for Gramps - a GTK+/GNOME based genealogy program
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
<!ENTITY appversion "2.0.0">
|
||||
<!ENTITY manrevision "2.6">
|
||||
<!ENTITY date "May 2005">
|
||||
<!ENTITY date "Aug 2005">
|
||||
<!ENTITY app "GRAMPS">
|
||||
|
||||
<!-- The rest of the entities is simply the chapters of the manual.. -->
|
||||
@@ -50,6 +50,7 @@
|
||||
<!ENTITY keybind SYSTEM "keybind.xml">
|
||||
<!ENTITY filtref SYSTEM "filtref.xml">
|
||||
<!ENTITY cmdline SYSTEM "cmdline.xml">
|
||||
<!ENTITY cmdplug SYSTEM "cmdplug.xml">
|
||||
<!ENTITY bugs SYSTEM "bugs.xml">
|
||||
<!ENTITY authors SYSTEM "authors.xml">
|
||||
]>
|
||||
@@ -66,9 +67,14 @@
|
||||
<!-- appropriate code -->
|
||||
<bookinfo>
|
||||
<title>GRAMPS Manual V&manrevision;</title>
|
||||
|
||||
<copyright> <year>2001</year> <holder>Donald N. Allingham</holder> </copyright>
|
||||
<copyright> <year>2003-2005</year> <holder>Alex Roitman</holder> </copyright>
|
||||
<copyright>
|
||||
<year>2001</year>
|
||||
<holder>Donald N. Allingham</holder>
|
||||
</copyright>
|
||||
<copyright>
|
||||
<year>2003-2005</year>
|
||||
<holder>Alex Roitman</holder>
|
||||
</copyright>
|
||||
|
||||
<!-- translators: uncomment this:
|
||||
|
||||
@@ -77,45 +83,54 @@
|
||||
<holder>ME-THE-TRANSLATOR (Latin translation)</holder>
|
||||
</copyright>
|
||||
|
||||
-->
|
||||
<!-- An address can be added to the publisher information. If a role is
|
||||
not specified, the publisher/author is the same for all versions of the
|
||||
document. -->
|
||||
<publisher> <publishername> GRAMPS Project </publishername> </publisher>
|
||||
-->
|
||||
|
||||
<!--
|
||||
An address can be added to the publisher information. If a role is
|
||||
not specified, the publisher/author is the same for all versions of the
|
||||
document.
|
||||
-->
|
||||
|
||||
<publisher>
|
||||
<publishername>GRAMPS Project</publishername>
|
||||
</publisher>
|
||||
|
||||
&legal;
|
||||
<!-- This file contains link to license for the documentation (GNU GPL), and
|
||||
other legal stuff such as "NO WARRANTY" statement. -->
|
||||
|
||||
<!--
|
||||
This file contains link to license for the documentation (GNU GPL), and
|
||||
other legal stuff such as "NO WARRANTY" statement.
|
||||
-->
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Alex</firstname>
|
||||
<surname>Roitman</surname>
|
||||
<affiliation>
|
||||
<orgname>GRAMPS Project</orgname>
|
||||
<address> <email>shura@gramps-project.org</email> </address>
|
||||
</affiliation>
|
||||
<firstname>Alex</firstname>
|
||||
<surname>Roitman</surname>
|
||||
<affiliation>
|
||||
<orgname>GRAMPS Project</orgname>
|
||||
<address><email>shura@gramps-project.org</email></address>
|
||||
</affiliation>
|
||||
</author>
|
||||
<author>
|
||||
<firstname>Donald N.</firstname>
|
||||
<surname>Allingham</surname>
|
||||
<affiliation>
|
||||
<orgname>GRAMPS Project</orgname>
|
||||
<address> <email>don@gramps-project.org</email> </address>
|
||||
</affiliation>
|
||||
<firstname>Donald N.</firstname>
|
||||
<surname>Allingham</surname>
|
||||
<affiliation>
|
||||
<orgname>GRAMPS Project</orgname>
|
||||
<address><email>don@gramps-project.org</email></address>
|
||||
</affiliation>
|
||||
</author>
|
||||
|
||||
<!-- This is appropriate place for other contributors: translators,
|
||||
maintainers, etc. Commented out by default.
|
||||
|
||||
<othercredit role="translator">
|
||||
<firstname>Latin</firstname>
|
||||
<surname>Translator 1</surname>
|
||||
<affiliation>
|
||||
<orgname>Latin Translation Team</orgname>
|
||||
<address> <email>translator@gnome.org</email> </address>
|
||||
</affiliation>
|
||||
<contrib>Latin translation</contrib>
|
||||
<firstname>Latin</firstname>
|
||||
<surname>Translator 1</surname>
|
||||
<affiliation>
|
||||
<orgname>Latin Translation Team</orgname>
|
||||
<address> <email>translator@gnome.org</email> </address>
|
||||
</affiliation>
|
||||
<contrib>Latin translation</contrib>
|
||||
</othercredit>
|
||||
-->
|
||||
</authorgroup>
|
||||
@@ -135,108 +150,104 @@
|
||||
<!-- to V3.0, and so on. -->
|
||||
<revhistory>
|
||||
<revision>
|
||||
<revnumber>GRAMPS Manual V&manrevision;</revnumber>
|
||||
<date>&date;</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@gramps-project.org</email></para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
<revnumber>GRAMPS Manual V&manrevision;</revnumber>
|
||||
<date>&date;</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@gramps-project.org</email>
|
||||
</para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>GRAMPS Manual V2.5</revnumber>
|
||||
<date>February 2004</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@gramps-project.org</email></para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
<revnumber>GRAMPS Manual V2.5</revnumber>
|
||||
<date>February 2004</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@gramps-project.org</email>
|
||||
</para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>GRAMPS Manual V2.4</revnumber>
|
||||
<date>December 2003</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@gramps-project.org</email></para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
<revnumber>GRAMPS Manual V2.4</revnumber>
|
||||
<date>December 2003</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@gramps-project.org</email>
|
||||
</para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>GRAMPS Manual V2.3</revnumber>
|
||||
<date>September 2003</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@gramps-project.org</email></para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
<revnumber>GRAMPS Manual V2.3</revnumber>
|
||||
<date>September 2003</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@gramps-project.org</email>
|
||||
</para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>GRAMPS Manual V2.2</revnumber>
|
||||
<date>July 2003</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@gramps-project.org</email></para>
|
||||
<para role="author">Donald A. Peterson
|
||||
<email>dpeterson@sigmaxi.org</email></para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
<revnumber>GRAMPS Manual V2.2</revnumber>
|
||||
<date>July 2003</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@gramps-project.org</email>
|
||||
</para>
|
||||
<para role="author">Donald A. Peterson
|
||||
<email>dpeterson@sigmaxi.org</email>
|
||||
</para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>GRAMPS Manual V2.1</revnumber>
|
||||
<date>May 2003</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@gramps-project.org</email>
|
||||
</para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
<revnumber>GRAMPS Manual V2.1</revnumber>
|
||||
<date>May 2003</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@gramps-project.org</email>
|
||||
</para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>GRAMPS Manual V2.0</revnumber>
|
||||
<date>April 2003</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@gramps-project.org</email>
|
||||
</para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
<revnumber>GRAMPS Manual V2.0</revnumber>
|
||||
<date>April 2003</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@gramps-project.org</email>
|
||||
</para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>GRAMPS User Manual V1.1</revnumber>
|
||||
<date>2001</date>
|
||||
<revdescription>
|
||||
<para role="author">Donald N. Allingham
|
||||
<email>don@gramps-project.org</email>
|
||||
</para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
<revnumber>GRAMPS User Manual V1.1</revnumber>
|
||||
<date>2001</date>
|
||||
<revdescription>
|
||||
<para role="author">Donald N. Allingham
|
||||
<email>don@gramps-project.org</email>
|
||||
</para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>gramps User Manual V1.0</revnumber>
|
||||
<date>2001</date>
|
||||
<revdescription>
|
||||
<para role="author">Donald N. Allingham
|
||||
<email>don@gramps-project.org</email>
|
||||
</para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
<revnumber>gramps User Manual V1.0</revnumber>
|
||||
<date>2001</date>
|
||||
<revdescription>
|
||||
<para role="author">Donald N. Allingham
|
||||
<email>don@gramps-project.org</email>
|
||||
</para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
</revision>
|
||||
</revhistory>
|
||||
|
||||
<releaseinfo>This manual describes version &appversion; of GRAMPS.
|
||||
<releaseinfo>
|
||||
This manual describes version &appversion; of GRAMPS.
|
||||
</releaseinfo>
|
||||
|
||||
<legalnotice>
|
||||
<title>Feedback</title>
|
||||
<para>
|
||||
To report a bug or make a suggestion regarding this application or
|
||||
this manual, use the help menu in &app;, or follow the directions
|
||||
found on <ulink url="http://gramps-project.org/index.php?module=pagemaster&PAGE_user_op=view_page&PAGE_id=3"
|
||||
type="http">this site</ulink>.
|
||||
</para>
|
||||
|
||||
<!-- Translators may also add here feedback address for translations -->
|
||||
</legalnotice>
|
||||
</bookinfo>
|
||||
|
||||
<!-- ============= Document Body ============================= -->
|
||||
|
||||
@@ -23,202 +23,304 @@
|
||||
<!-- $Id$ -->
|
||||
|
||||
<title>Preface</title>
|
||||
<para> &app; is a genealogical
|
||||
application. &app; is an acronym for the
|
||||
Genealogical Research and Analysis Management Programming System. To put
|
||||
it shortly, it allows you to store, edit, and research genealogical data
|
||||
using your computer. Its functionality is somewhat common to other
|
||||
genealogical programs. However, &app; offers some unique features. </para>
|
||||
|
||||
<para>GRAMPS is a software package designed for genealogical
|
||||
research. Although similar to other genealogical programs, GRAMPS
|
||||
offers some unique and powerful features, which we'll discuss
|
||||
below. </para>
|
||||
|
||||
<para>GRAMPS is a Open Source Software package, which means you
|
||||
are free to make copies and distribute it to anyone you like.
|
||||
It's developed and maintained by a worldwide team of volunteers
|
||||
whose goal is to make GRAMPS powerful, yet easy to use.</para>
|
||||
|
||||
<sect1 id="why-gramps">
|
||||
<title>Why GRAMPS?</title>
|
||||
<para> &app; was conceived under the concept
|
||||
that most genealogy programs were designed to provide the researcher the
|
||||
capability to input information related to a particular family tree.
|
||||
Most of these programs have allowed for the arranging and storing of
|
||||
information consistent with the GEDCOM standards. They usually provide
|
||||
means for displaying descendant or ancestral relationships by means of
|
||||
graphical displays, charts, or reports. These may be augmented with
|
||||
pictures or other media to enhance the data. Most provide for inputting
|
||||
data on unconnected individuals/families that may or may not have a
|
||||
relationship to the primary surname being researched. Various other
|
||||
enhancements may also be provided in the genealogical program that
|
||||
allows for different degrees of importing and exporting data from other
|
||||
programs and printing the data contained in the various reports. </para>
|
||||
|
||||
<para> &app;, on the other hand, attempts to
|
||||
provide all of the common capabilities of these programs, but, more
|
||||
importantly, to provide an additional capability of integration not common
|
||||
to these programs. This is the ability to input any bits and pieces of
|
||||
information directly into &app; and
|
||||
rearrange/manipulate any/all data events in the entire data base (in any
|
||||
order or sequence) to assist the user in doing research, analysis and
|
||||
correlation with the potential of filling relationship gaps. In short, it
|
||||
is a tool that provides a way to input all your research into one place and
|
||||
do your analysis and correlation using the speed, power, and accuracy of
|
||||
your computer instead of pencils and unmanageable reams of paper. </para>
|
||||
<title>Why use GRAMPS?</title>
|
||||
|
||||
<para>Most genealogy programs allow you to enter information
|
||||
about your ancestors and descendants. Typically, they can
|
||||
display family relationships through charts, graphs, or
|
||||
reports. Some allow you to include pictures or other media. Most
|
||||
let you include information about people even if those people
|
||||
are not related to the primary family you happen to be
|
||||
researching. And they may include features that let you exchange
|
||||
data with other programs and print different types of
|
||||
reports. </para>
|
||||
|
||||
<para>GRAMPS has all these capabilities and more. Notably, it
|
||||
allows you to integrate bits and pieces of data as they arise
|
||||
from your research and to put them in one place — your
|
||||
computer. You can then use your computer to manipulate,
|
||||
correlate, and analyze your data, rather than messing with reams
|
||||
of paper. </para>
|
||||
|
||||
</sect1>
|
||||
|
||||
|
||||
<sect1 id="whats-new">
|
||||
<title>What's new since 1.0.X</title>
|
||||
<para>This section lists most notable changes from the previous stable branch of
|
||||
&app;, the 1.0.X.</para>
|
||||
<title>What's new since 1.0.X</title>
|
||||
|
||||
<para>If you are new to GRAMPS, it may not be important for you
|
||||
to know how GRAMPS version 2.0.0 (the object of this manual)
|
||||
differs from previous versions of the software. You may
|
||||
therefore elect to skip this section.</para>
|
||||
|
||||
<para>However, if you are already familiar with GRAMPS and are
|
||||
interested in the new aspects and features of version 2.0.0,
|
||||
please read on.</para>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term>Berkeley database backend</term>
|
||||
<listitem><para>The default format for &app; is now the BSDDB database.
|
||||
This change allowed us to overcome performance issues and memory
|
||||
requirements of the 1.0.X branch. With the database backend, the database
|
||||
sizes of up to a hundred thousand people do not
|
||||
present a major obstacle any longer.</para>
|
||||
|
||||
<para>
|
||||
The default extension for &app; BSDDB database files is grdb. The new format is open and
|
||||
fully documented in the developer's API reference distributed with the source of &app;.
|
||||
</para>
|
||||
<listitem>
|
||||
|
||||
<para>A consequence of the new database backend is that the changes, once approved
|
||||
by the user, are applied immediately. In short, once you click <guibutton>OK</guibutton>
|
||||
in the Person, Family, Source, Place, Media object, or Event editor, all the changes made to
|
||||
this object are recorded in the database. No saving is necessary (or even possible). The analog
|
||||
of quitting without saving would be abandoning all changes and quitting. Also, it is possible
|
||||
to undo recent actions.
|
||||
|
||||
</para>
|
||||
<para>We've adopted the Berkeley database format (BSDDB) as
|
||||
the default for GRAMPS. Berkeley is the most widely used
|
||||
open source developer database in the world.</para>
|
||||
|
||||
<para>This change allowed us to overcome issues of
|
||||
performance and memory requirements that beset version
|
||||
1.0.X. With the new back-end, database sizes of up to a
|
||||
hundred thousand people no longer present a major
|
||||
obstacle.</para>
|
||||
|
||||
<para>The default extension for GRAMPS' BSDDB database files
|
||||
is grdb. The new format is open and fully documented in the
|
||||
developer's API reference distributed with the source code
|
||||
of GRAMPS. </para>
|
||||
|
||||
<note id="default-format">
|
||||
<title>Preferred format</title>
|
||||
|
||||
<para>The preferred and default format for &app; is the
|
||||
new BSDDB format.</para>
|
||||
</note>
|
||||
|
||||
<para>A consequence of the new database back-end is that the
|
||||
"saving" function is no longer necessary (or even
|
||||
possible). Now, once you approve changes, they are
|
||||
immediately applied; this means that clicking
|
||||
<guibutton>OK</guibutton> in the Person, Family, Source,
|
||||
Place, Media object, or Event editor immediately records
|
||||
changes to the database. </para>
|
||||
|
||||
<para>In previous versions, you could "quit without
|
||||
saving." This option no longer exists per se; however,
|
||||
in version 2.0.0, you can achieve the same effect if you
|
||||
abandon or "cancel" all changes and then
|
||||
quit.</para>
|
||||
|
||||
<para>Also, it is now possible to undo recent
|
||||
actions.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Interface improvements</term>
|
||||
<listitem><para>
|
||||
There were numerous changes in the interface. Most of them are subtle and incremental
|
||||
improvements, and all of them cannot be listed here. The most noticeable changes are:
|
||||
<varlistentry><term>Other database back-ends</term>
|
||||
<listitem>
|
||||
|
||||
<para>Along with the BSDDB backend, we've incorporated
|
||||
"in-memory" database handling for the GRAMPS XML
|
||||
and GEDCOM formats. This means you can now open files in
|
||||
those two formats and work with their data without having to
|
||||
first create a new database and import data into it. Since
|
||||
this approach requires GRAMPS to hold all the data in
|
||||
memory, it is only useful for small databases (depending on
|
||||
available memory size).</para>
|
||||
|
||||
<warning id="gedcom-editing">
|
||||
<title>GEDCOM Editing</title>
|
||||
|
||||
<para>Please keep in mind that some information in a
|
||||
GEDCOM file may be lost during import into GRAMPS. Simply
|
||||
opening and viewing the file will not change it. However,
|
||||
if any changes were made and they were not abandoned upon
|
||||
exit, exiting GRAMPS will save the data, with the possible
|
||||
data loss.</para>
|
||||
</warning>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Desktop integration</term>
|
||||
<listitem>
|
||||
|
||||
<para>We've improved the way GRAMPS integrates with the GNOME
|
||||
desktop interface common to many Linux distributions. All file
|
||||
formats recognized by GRAMPS are now registered as mime types;
|
||||
each has its own icon and has GRAMPS as its default
|
||||
handler. Thus, if you double-click on any file having one of
|
||||
these formats, GRAMPS will launch and open the file.</para>
|
||||
|
||||
<para>We've also added support for GNOME's "recent
|
||||
documents" function and have incorporated this function
|
||||
within GRAMPS itself.</para>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Interface improvements</term>
|
||||
<listitem>
|
||||
|
||||
<para>We've made numerous changes in the interface. Most of
|
||||
them are subtle and incremental improvements, and all of them
|
||||
cannot be listed here. The most notable are:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem><para>Removal of alphabetical tabs</para></listitem>
|
||||
<listitem><para>Ability to add/remove/rearrange columns in list views</para></listitem>
|
||||
<listitem><para>Removal of Save function and addition of Undo</para></listitem>
|
||||
<listitem><para>Proper window management and removal of most modal windows</para></listitem>
|
||||
<listitem><para>Support for Tip of the Day</para></listitem>
|
||||
<listitem><para>Person-dependent context menus (right-click) in Pedigree View
|
||||
listing parents, children, spouses, and siblings</para></listitem>
|
||||
<listitem><para>Export wizard</para></listitem>
|
||||
<listitem><para>Built-in Find function in list views</para></listitem>
|
||||
<listitem><para>Date selector dialog</para></listitem>
|
||||
<listitem><para>Name editor enhancements: patronymic names and non-default grouping</para></listitem>
|
||||
<listitem><para>Recent file support (both gramps-specific and gnome-wide)</para></listitem>
|
||||
</itemizedlist>
|
||||
|
||||
</para></listitem>
|
||||
<listitem>
|
||||
<para>Removal of alphabetical tabs.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Ability to add/remove/rearrange columns in list views.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Removal of the Save function and addition of Undo.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Proper window management.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Support for Tip of the Day.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Person-dependent context menus (right-click) in
|
||||
Pedigree View, listing parents, children, spouses, and
|
||||
siblings.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Addition of an Export wizard.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Built-in Find function in list views.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Addition of a Date selector dialog.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Name editor enhancements: patronymic names and
|
||||
non-default grouping.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>"Recent document" support (both within GRAMPS and
|
||||
GNOME-wide)</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Other database backends</term>
|
||||
<listitem><para>
|
||||
Along with the BSDDB backend, the in-memory database handling for &app; XML and
|
||||
GEDCOM formats has been added. Simply put, it is now possible to natively open data
|
||||
in those two formats (although the preferred and default format is grdb) and work with
|
||||
that data, without necessarily setting up an empty database and then importing into it.
|
||||
This approach requires holding all data in memory, so it is only useful for small databases
|
||||
(depending on the available memory size). In such mode, the data is automatically
|
||||
saved upon exit, to mimic the functionality of the real database.
|
||||
|
||||
<warning id="gedcom-inmem1-warn">
|
||||
<title>GEDCOM Editing</title>
|
||||
<para>
|
||||
Please keep in mind that some information in GEDCOM file may be lost
|
||||
during import into &app;. Simply opening and viewing the file will not change it.
|
||||
However, if any changes were made and they were not abandoned upon exit,
|
||||
exiting &app; will save the data, with the possible data loss.
|
||||
</para>
|
||||
</warning>
|
||||
|
||||
</para></listitem>
|
||||
<varlistentry>
|
||||
<term>Import and Export</term>
|
||||
<listitem>
|
||||
<para>We've added import and export filters for the GeneWeb format.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Import and Export</term>
|
||||
<listitem><para>
|
||||
New import and export filters available for the GeneWeb format.
|
||||
</para></listitem>
|
||||
<varlistentry>
|
||||
<term>Reports</term>
|
||||
<listitem>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>We've added a new report: Statistics Chart. </para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>We've changed the overall report framework. All
|
||||
reports now remember the options you configure for
|
||||
them.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>It is possible to generate reports from the command
|
||||
line, without launching an interactive GRAMPS
|
||||
session.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>The report API is much simpler now, making it easy to
|
||||
write custom reports.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>A single code instance may be used for a standalone
|
||||
report, a book item, and a command-line report. </para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Reports</term>
|
||||
<listitem><para>
|
||||
A new report -- Statistics Chart -- has been added to &app;.
|
||||
</para>
|
||||
|
||||
<para>An overall change of the whole report framework has been acomplished.
|
||||
All reports now remember their options. It is possible to generate reports from the command
|
||||
line, without launching the interactive &app; session. The report API is much simpler now,
|
||||
making it easy to write custom report. A single code instance may be used for a standalone
|
||||
report, a book item, and a command-line report. </para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Command line</term>
|
||||
<listitem><para>The new command line functionality includes opening the filename
|
||||
argument given without any flags, as well as new flags and options for report generation.
|
||||
Also, the addition of new formats leads to addition of available format options.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Internationalization</term>
|
||||
<listitem><para>
|
||||
The approach for entering and displaying dates has been completely
|
||||
re-worked. In particular, the new framework allows for a deeper
|
||||
localization of displayed dates than was ever possible using the
|
||||
translatable strings.</para>
|
||||
|
||||
<para>The internationalization of names have also been improved.
|
||||
Names can be grouped under a non-default string. Patronymic names are
|
||||
supported, and it is easy to program new ways on displaying names, as
|
||||
may be required by various cultures and languages.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Desktop integration</term>
|
||||
<listitem><para>All formats known to &app; are now registered as mime types, each
|
||||
with its icon and &app; as a default handler. Double-clicking on a file with any of these
|
||||
formats will launch &app; and open that file. &app; also added support for the recent
|
||||
documents functinonailty. This is on both for the GNOME-wide level and within the &app;.
|
||||
</para>
|
||||
<para>The preferences are now properly store using GConf, with schemas, partitioning
|
||||
of keys into smaller directories, error checking, and notification. </para>
|
||||
<varlistentry>
|
||||
<term>Internationalization</term>
|
||||
<listitem>
|
||||
<para>The approach for entering and displaying dates has
|
||||
been completely reworked. The new framework allows for a
|
||||
deeper localization of displayed dates than was ever
|
||||
possible using the translatable strings.</para>
|
||||
<para>The internationalization of names has also been
|
||||
improved. Names can be grouped under a non-default
|
||||
string. Patronymic names are supported, and it is easy to
|
||||
program new ways to display names in the manner customary to
|
||||
a given culture or language.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</sect1>
|
||||
|
||||
|
||||
<sect1 id="typography">
|
||||
<title>Typographical conventions</title>
|
||||
<title>Typographical conventions</title>
|
||||
<para>
|
||||
In this book, we some words are marked with special typography:
|
||||
<itemizedlist>
|
||||
<listitem><application>Applications</application></listitem>
|
||||
<listitem><command>Commands</command> you type at the command
|
||||
line</listitem>
|
||||
<listitem><filename>Filenames</filename></listitem>
|
||||
<listitem><replaceable>Replaceable text</replaceable></listitem>
|
||||
<listitem><guilabel>Labels</guilabel> for buttons and other
|
||||
portions of the graphical interface</listitem>
|
||||
|
||||
<listitem> Menu selections look like this:
|
||||
<menuchoice>
|
||||
<guimenu>Menu</guimenu>
|
||||
<guisubmenu>Submenu</guisubmenu>
|
||||
<guimenuitem>Menu Item</guimenuitem>
|
||||
</menuchoice>
|
||||
In this book, some words are marked with special typography:
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<application>Applications</application>
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<command>Commands</command> you type at the command line
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<filename>Filenames</filename>
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<replaceable>Replaceable text</replaceable>
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<guilabel>Labels</guilabel> for buttons and other
|
||||
portions of the graphical interface
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
Menu selections look like this:
|
||||
<menuchoice>
|
||||
<guimenu>Menu</guimenu>
|
||||
<guisubmenu>Submenu</guisubmenu>
|
||||
<guimenuitem>Menu Item</guimenuitem>
|
||||
</menuchoice>
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<guibutton>Buttons</guibutton> you can click
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<userinput>Anything you type in</userinput>
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem><guibutton>Buttons</guibutton> you can
|
||||
click</listitem>
|
||||
<listitem><userinput>Anything you type
|
||||
in</userinput></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
We also provide assorted bits of additional information in tips
|
||||
and notes, as follows.
|
||||
|
||||
The manual also provides assorted bits of additional information in
|
||||
tips and notes, as follows.
|
||||
|
||||
<tip id="example-tip">
|
||||
<title>Tip</title>
|
||||
@@ -237,13 +339,13 @@
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Finally, we have warnings, in cases where you should be careful:
|
||||
Finally, there are warnings, notifying you where you should be careful:
|
||||
|
||||
<warning id="example-warning">
|
||||
<title>Example Warning</title>
|
||||
<para>
|
||||
This is what a warning looks like. If there's a chance
|
||||
you'll run into trouble, we'll warn you beforehand.
|
||||
you'll run into trouble, you will be warned beforehand.
|
||||
</para>
|
||||
</warning>
|
||||
</para>
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
# Process this file with automake to produce Makefile.in
|
||||
|
||||
SUBDIRS = C
|
||||
SUBDIRS = C fr
|
||||
|
||||
topdocdir=$(datadir)/@PACKAGE@/gnome/help/@PACKAGE@
|
||||
|
||||
install-data-local:
|
||||
cd $(DESTDIR)$(topdocdir); rm -rf gramps; ln -s . gramps
|
||||
|
||||
uninstall-local:
|
||||
-rm $(DESTDIR)$(topdocdir)/gramps
|
||||
@@ -10,6 +10,11 @@ entities = legal.xml\
|
||||
faq.xml\
|
||||
keybind.xml\
|
||||
filtref.xml\
|
||||
cmdline.xml
|
||||
cmdline.xml \
|
||||
cmdplug.xml \
|
||||
authors.xml \
|
||||
bugs.xml \
|
||||
preface.xml
|
||||
|
||||
include $(top_srcdir)/doc/xmldocs.make
|
||||
dist-hook: app-dist-hook
|
||||
@@ -0,0 +1,96 @@
|
||||
<appendix id="gramps-about">
|
||||
|
||||
<!--
|
||||
User Manual for Gramps - a GTK+/GNOME based genealogy program
|
||||
|
||||
Copyright (C) 2003-2005 Alexander Roitman
|
||||
|
||||
This document 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 document 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$ -->
|
||||
|
||||
<title>Au sujet de GRAMPS</title>
|
||||
<para> &app; a été écrit par Donald N. Allingham</para>
|
||||
|
||||
<para>
|
||||
La liste quelque peu inachevée de contribuants inclut (dans l'ordre alphabétique)
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para>Larry Allingham</para></listitem>
|
||||
<listitem><para>Jens Arvidsson</para></listitem>
|
||||
<listitem><para>Marcos Bedinelli</para></listitem>
|
||||
<listitem><para>Douglas S. Blank</para></listitem>
|
||||
<listitem><para>Radu Bogdan Mare</para></listitem>
|
||||
<listitem><para>Alexander Bogdashevsky</para></listitem>
|
||||
<listitem><para>Richard Bos</para></listitem>
|
||||
<listitem><para>Nathan Bullock</para></listitem>
|
||||
<listitem><para>Lorenzo Cappelletti</para></listitem>
|
||||
<listitem><para>Pier Luigi Cinquantini</para></listitem>
|
||||
<listitem><para>Bruce J. DeGrasse</para></listitem>
|
||||
<listitem><para>Alexandre Duret-Lutz</para></listitem>
|
||||
<listitem><para>Billy C. Earney</para></listitem>
|
||||
<listitem><para>Baruch Even</para></listitem>
|
||||
<listitem><para>Bernd Felsche</para></listitem>
|
||||
<listitem><para>Egyeki Gergely</para></listitem>
|
||||
<listitem><para>Michel Guitel</para></listitem>
|
||||
<listitem><para>Steve Hall</para></listitem>
|
||||
<listitem><para>David R. Hampton</para></listitem>
|
||||
<listitem><para>Martin Hawlisch</para></listitem>
|
||||
<listitem><para>Frode Jemtland</para></listitem>
|
||||
<listitem><para>Greg Kuperberg</para></listitem>
|
||||
<listitem><para>Arkadiusz Lipiec</para></listitem>
|
||||
<listitem><para>Lars Kr. Lundin</para></listitem>
|
||||
<listitem><para>Radek Malcic</para></listitem>
|
||||
<listitem><para>Leonid Mamtchenkov</para></listitem>
|
||||
<listitem><para>Tino Meinen</para></listitem>
|
||||
<listitem><para>Frederick Noronha</para></listitem>
|
||||
<listitem><para>Jeffrey C. Ollie</para></listitem>
|
||||
<listitem><para>Donald A. Peterson</para></listitem>
|
||||
<listitem><para>Guillaume Pratte</para></listitem>
|
||||
<listitem><para>Laurent Protois</para></listitem>
|
||||
<listitem><para>Matthieu Pupat</para></listitem>
|
||||
<listitem><para>Alexander Roitman</para></listitem>
|
||||
<listitem><para>Jason Salaz</para></listitem>
|
||||
<listitem><para>Julio Sanchez</para></listitem>
|
||||
<listitem><para>Bernd Schandl</para></listitem>
|
||||
<listitem><para>Martin Senftleben</para></listitem>
|
||||
<listitem><para>Gary Shao</para></listitem>
|
||||
<listitem><para>Jim Smart</para></listitem>
|
||||
<listitem><para>Steve Swales</para></listitem>
|
||||
<listitem><para>Eero Tamminen</para></listitem>
|
||||
<listitem><para>Samuel Tardieu</para></listitem>
|
||||
<listitem><para>Richard Taylor</para></listitem>
|
||||
<listitem><para>James Treacy</para></listitem>
|
||||
<listitem><para>Sebastian Voecking</para></listitem>
|
||||
<listitem><para>Xing Wang</para></listitem>
|
||||
<listitem><para>Tim Waugh</para></listitem>
|
||||
<listitem><para>Jesper Zedlitz</para></listitem>
|
||||
</itemizedlist>
|
||||
Si quelqu'un d'autre devrait être énuméré ici, svp faites-nous le savoir.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Pour trouver plus d'informations sur GRAMPS, visitez
|
||||
<ulink url="http://gramps.sourceforge.net" type="http">la page web du projet GRAMPS</ulink>.</para>
|
||||
<para>
|
||||
Pour rapporter un bug ou faire une suggestion concernant cette application ou ce manuel, employez le menu d'aide dans GRAMPS, ou suivez les directions sur
|
||||
<ulink url="http://gramps.sourceforce.net/contact.html" type="http">cet emplacement.</ulink>
|
||||
</para>
|
||||
|
||||
<para> Ce programme est distribué en vertu de la licence de Grand Public de GNU, comme publiée par la Free Software Foundation; version 2 de la licence, ou (à votre option) toute version postérieure. Une copie de cette licence peut être trouvée à ce
|
||||
<ulink url="ghelp:gpl" type="help">lien</ulink>,ou dans le fichier COPIER inclus avec le code source de ce programme. </para>
|
||||
|
||||
</appendix>
|
||||
@@ -0,0 +1,35 @@
|
||||
<appendix id="mayapp-bugs">
|
||||
|
||||
<!--
|
||||
User Manual for Gramps - a GTK+/GNOME based genealogy program
|
||||
|
||||
Copyright (C) 2003-2005 Alexander Roitman
|
||||
|
||||
This document 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 document 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$ -->
|
||||
|
||||
<title>Bugs et limitations connus</title>
|
||||
|
||||
<para>Les bugs sont dépistés par
|
||||
<ulink url="http://sourceforge.net/tracker/?group_id=25770&atid=385137" type="http">
|
||||
le suivi système de sourceforge.net </ulink>.
|
||||
</para>
|
||||
|
||||
<para>Les limitations connues incluent les issues d'exécution de BSDDB, liées à la capacité de la mémoire. Aussi longtemps que le cache de BSDDB s'adapte complètement dans la mémoire disponible du système, l'exécution devrait être proportionnée. Quand la taille du cache excède celle de la mémoire libre, des parties du cache de la base de données commencent à être permutées sur le disque, l'exécution se dégrade sensiblement. Ceci peut être résolu en ajustant la taille du cache de BSDDB aux grandes bases de données.
|
||||
</para>
|
||||
|
||||
</appendix >
|
||||
@@ -1,229 +1,406 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<appendix id="append-cmdline">
|
||||
|
||||
<!--
|
||||
User Manual for Gramps - a GTK+/GNOME based genealogy program
|
||||
User Manual for Gramps - a GTK+/GNOME based genealogy program
|
||||
|
||||
Copyright (C) 2003 Alexander Roitman
|
||||
Copyright (C) 2003-2005 Alexander Roitman
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this
|
||||
document under the terms of the GNU Free Documentation
|
||||
License (GFDL), Version 1.1 or any later version published
|
||||
by the Free Software Foundation with no Invariant Sections,
|
||||
no Front-Cover Texts, and no Back-Cover Texts.
|
||||
A copy of the license is included in the file COPYING-DOCS
|
||||
distributed with this manual.
|
||||
This document 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 document 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$ -->
|
||||
|
||||
<!-- =============== Appendices Subsection ================ -->
|
||||
<sect2 id="append-cmdline">
|
||||
<title>Manuel de référence pour l'utilisation en ligne de commande</title>
|
||||
<para>Cette annexe décrit les possibilités offertes par &app; en
|
||||
ligne de commande, depuis un terminal. </para>
|
||||
<title>Références en ligne de commande</title>
|
||||
<para>Cette annexe décrit les possibilités offertes par GRAMPS en ligne de commande, depuis un terminal.</para>
|
||||
|
||||
<para>Notons ici que &app; est écrit pour être piloté à travers
|
||||
son interface graphique. Il ne peut pas être utilisé dans un mode
|
||||
strictement limité au texte. Les modifications pour le faire seraient
|
||||
très importantes. C'est pourquoi les options de la ligne de commande
|
||||
ne visent pas l'indépendance par rapport au mode graphique.
|
||||
En fait, elles rendent seulement certaines tâches fréquentes plus
|
||||
commodes et exécutables depuis des scripts. L'affichage
|
||||
graphique doit cependant toujours être accessible.
|
||||
</para>
|
||||
<note><para>&app; est écrit pour être piloté à travers son interface graphique. Il ne peut pas être utilisé dans un mode strictement limité au texte. Les modifications pour le faire seraient très importantes. C'est pourquoi les options de la ligne de commande ne visent pas l'indépendance par rapport au mode graphique. En fait, elles rendent seulement certaines tâches fréquentes plus commodes et exécutables depuis des scripts. L'affichage graphique doit cependant toujours être accessible.
|
||||
</para></note>
|
||||
|
||||
<para>En résumé, les options de la ligne de commande fournissent
|
||||
un mode non-interactif mais n'affranchissent pas d'un
|
||||
affichage graphique. C'est comme çà !
|
||||
</para>
|
||||
<tip><para> En résumé, les options de la ligne de commande fournissent un mode non-interactif mais n'affranchissent pas d'un affichage graphique. C'est comme çà !
|
||||
</para></tip>
|
||||
|
||||
|
||||
<sect3 id="cmdline-options">
|
||||
<sect1 id="cmdline-options">
|
||||
<title>Options disponibles</title>
|
||||
|
||||
<para>Voici la liste des options de lancement de &app; : </para>
|
||||
<variablelist>
|
||||
<varlistentry><term>Options de format</term>
|
||||
<listitem><para> Le format des fichiers de lecture ou d'écriture est donné par l'option
|
||||
<command>-f</command> <replaceable>format</replaceable>.
|
||||
Le <replaceable>format</replaceable> est à choisir parmi un des choix suivants :
|
||||
<para>Voici la liste des options de lancement de GRAMPS. Si vous voulez connaître plus d'options, voir <xref linkend="cmdline-operation"/>
|
||||
et <xref linkend="cmdline-examples"/>.
|
||||
</para>
|
||||
|
||||
<sect2 id="cmdline-opt-format"><title>Options de format</title>
|
||||
<para> Le format des fichiers de lecture ou d'écriture est donné par l'option
|
||||
<command>-f <replaceable>format</replaceable></command>
|
||||
Les valeurs acceptables <replaceable>format</replaceable> sont énumérées ci-dessous.</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry><term>gramps</term>
|
||||
<listitem><para> &app; chemin. Ce format est disponible
|
||||
en lecture comme en écriture. Il est deviné d'après la nature
|
||||
la nature (fichier ou répertoire) du chemin.
|
||||
|
||||
<varlistentry><term>grdb</term>
|
||||
<listitem><para>Base de données de &app;.Ce format est prêt à l'ouverture, à l'importation, et à l'exportation. Une fois indiqué, il peut deviner si le fichier porte l'extension grdb
|
||||
</para></listitem></varlistentry>
|
||||
|
||||
<varlistentry><term>gramps-xml</term>
|
||||
<listitem><para>Base de données de &app;. Ce format est prêt à l'ouverture, à l'importation, et à l'exportation. Une fois indiqué, il peut deviner si le fichier représente un dossier-gramps.
|
||||
</para></listitem></varlistentry>
|
||||
|
||||
<varlistentry><term>gedcom</term>
|
||||
<listitem><para> fichier GEDCOM. Ce format est disponible
|
||||
en lecture comme en écriture. Il est deviné
|
||||
si le nom de fichier a comme suffixe .ged.
|
||||
<listitem><para>Fichier GEDCOM.Ce format est prêt à l'ouverture, à l'importation, et à l'exportation. Une fois indiqué, il peut deviner si le fichier porte l'extension ged
|
||||
</para></listitem></varlistentry>
|
||||
|
||||
<varlistentry><term>gramps-pkg</term>
|
||||
<listitem><para> &app; package. Ce format est disponible
|
||||
en lecture comme en écriture. Il est deviné
|
||||
si le nom de fichier a comme suffixe .tgz .
|
||||
<listitem><para>Paquet de &app;.Ce format est prêt à l'importation et à l'exportation. Une fois indiqué, il peut deviner si le fichier porte l'extension tgz
|
||||
</para></listitem></varlistentry>
|
||||
|
||||
<varlistentry><term>geneweb</term>
|
||||
<listitem><para>Le fichier de GeneWen.Ce format est prêt à l'importation et à l'exportation. Une fois indiqué, il peut deviner si le fichier porte l'extension gw
|
||||
</para></listitem></varlistentry>
|
||||
|
||||
<varlistentry><term>wft</term>
|
||||
<listitem><para>Web Family Tree. Ce format est disponible
|
||||
en écriture seulement. Il est deviné
|
||||
si le nom de fichier a comme suffixe .wft.
|
||||
<listitem><para> Web Family Tree. Ce format est prêt à l'exportation seulement. Une fois indiqué, il peut deviner si le fichier porte l'extension wft
|
||||
</para></listitem></varlistentry>
|
||||
|
||||
<varlistentry><term>iso</term>
|
||||
<listitem><para>image de CD. Ce format est disponible
|
||||
en écriture seulement. Il doit toujours être
|
||||
précisé explicitement.
|
||||
<listitem><para> Image de CD. Ce format est prêt à l'exportation seulement. Il doit toujours être indiquer explicitement.
|
||||
</para></listitem></varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2 id="cmdline-opt-open"><title>Options d'ouverture</title>
|
||||
<para>Il y a deux manières de donner à &app; le nom du fichier à ouvrir:</para>
|
||||
<itemizedlist>
|
||||
<listitem><para>chemin du fichier </para></listitem>
|
||||
|
||||
<listitem><para>use the
|
||||
<command>-O <filename>nom du fichier</filename></command> ou
|
||||
<command>-open=<filename>nom du fichier</filename></command>
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Options de lecture</term>
|
||||
<listitem><para> Les fichiers à lire sont spécifiés avec l'option
|
||||
<command>-i</command> <replaceable>chemin</replaceable>.
|
||||
Le format peut être précisé avec l'option <command>-f</command>
|
||||
immédiatement après le <replaceable>chemin</replaceable>.
|
||||
Si le format n'est pas précisé, il sera deviné d'après le
|
||||
<replaceable>chemin</replaceable> donné. Pour le format <term>gramps</term>,
|
||||
le <replaceable>chemin</replaceable> est en fait le
|
||||
nom du répertoire dans lequel les données gramps sont placées. Pour les formats
|
||||
<term>gedcom</term> et <term>gramps-pkg</term>, le
|
||||
<replaceable>chemin</replaceable> est le nom du fichier de données. </para>
|
||||
</itemizedlist>
|
||||
|
||||
<para>Quand plusieurs fichiers sont à lire, chaque nom de fichier doit être
|
||||
précédé par une commande <command>-i</command>.
|
||||
Les fichiers sont lus dans l'ordre des arguments, c'est à dire que
|
||||
<command>-i</command> <replaceable>chemin1</replaceable>
|
||||
<command>-i</command> <replaceable>chemin2</replaceable>
|
||||
et
|
||||
<command>-i</command> <replaceable>chemin2</replaceable>
|
||||
<command>-i</command> <replaceable>chemin1</replaceable>
|
||||
peuvent ne pas donner les mêmes identifications gramps dans les données après chargement.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
<para>Si le nom du fichier est donné sans options, &app; ouvrira sa fenêtre principale et commencera une session.
|
||||
</para>
|
||||
|
||||
<tip><para>Si aucune option n'est donnée, juste le nom de fichier, &app; ignorera le reste des arguments de ligne de commande. Employer -o pour ouvrir le fichier et pour faire quelque chose avec les données.
|
||||
</para></tip>
|
||||
|
||||
<varlistentry><term>Options d'écriture</term>
|
||||
<listitem><para> Les fichiers à écrire sont précisés par l'option
|
||||
<command>-o</command> <replaceable>chemin</replaceable>.
|
||||
Le format peut être spécifié par l'option <command>-f</command>
|
||||
placée immédiatement après le <replaceable>chemin</replaceable>.
|
||||
Si ce n'est pas le cas, il sera deviné d'après le
|
||||
<replaceable>chemin</replaceable>. Pour les formats <term>gramps</term>
|
||||
et <term>iso</term>, le <replaceable>chemin</replaceable>
|
||||
est en fait le nom du répertoire où seront écrites les données gramps.
|
||||
Pour les formats <term>gedcom</term>, <term>wft</term>,
|
||||
et <term>gramps-pkg</term>, le <replaceable>chemin</replaceable>
|
||||
est le nom du fichier écrit.
|
||||
<para>Le format peut être indiqué avec l'option
|
||||
<command>-f <replaceable>format</replaceable></command> ou
|
||||
<command>--format=<replaceable>format</replaceable></command>
|
||||
juste après <filename>le nom du fichier</filename>.
|
||||
Pour le format gramps-xml,<filename>nom de fichier</filename> est réellement le nom du répertoire sous lequel la base de données de gramps réside. Pour le grdb et le gedcom, <filename>le nom de fichier</filename> est le nom du fichier correspondant.
|
||||
</para>
|
||||
|
||||
<para>Quand plusieurs fichiers de sortie sont précisés, chacun doit être
|
||||
précédé par une option <command>-o</command> . Les fichiers sont écrits
|
||||
un par un dans l'ordre des arguments. </para></listitem>
|
||||
</varlistentry>
|
||||
<tip><para>Seulement grdb, gramps-xml, et les formats gedcom peuvent être ouverts directement. Pour d'autres formats, vous devrez employer l'option d'importation qui installera la base de données vide puis importera des données.
|
||||
</para></tip>
|
||||
|
||||
<tip><para>Seulement un fichier simple peut être ouvert. Si vous devez combiner des données depuis plusieurs sources, vous devrez employer l'option d'importation.</para></tip>
|
||||
|
||||
</sect2>
|
||||
|
||||
<varlistentry><term>Options d'action</term>
|
||||
<listitem><para>L'action à exécuter sur les données lues peut être précisée
|
||||
avec l'option <command>-a</command> <replaceable>action</replaceable>.
|
||||
Ceci est fait après que toutes les lectures ont été faites avec succès.
|
||||
Les actions actuellement disponibles sont <term>summary</term> (comme
|
||||
<menuchoice><guimenu>Reports</guimenu> <guisubmenu>View</guisubmenu>
|
||||
<guimenuitem>Summary</guimenuitem></menuchoice>)
|
||||
et <term>check</term> (comme <menuchoice><guimenu>Tools</guimenu>
|
||||
<guisubmenu>Database Processing</guisubmenu>
|
||||
<guimenuitem>Check and Repair</guimenuitem></menuchoice>).
|
||||
<sect2 id="cmdline-opt-import"><title>Options d'importation</title>
|
||||
<para> Les dossiers destinés à l'importation peuvent être indiqués avec
|
||||
<command>-i <filename>nom du fichier</filename></command>
|
||||
ou <command>--import=<filename>nom du fichier</filename></command>
|
||||
Le format peut être indiqué avec l'option
|
||||
<command>-f <replaceable>format</replaceable></command> ou
|
||||
<command>--format=<replaceable>format</replaceable></command>
|
||||
juste après<filename>nom de fichier</filename>.
|
||||
Pour le format gramps-xml,<filename>le nom du fichier</filename> est réellement le nom du répertoire sous lequel la base de données de gramps réside. Pour grdb, gedcom, gramps-pkg, et geneweb, <filename>le nom du fichier</filename> est le nom du fichier correspondant.
|
||||
</para>
|
||||
|
||||
<para>Si plusieurs actions de sorties sont données, chacune doit être précédée par une option
|
||||
<command>-a</command>. Les actions sont exécutées une par une dans l'ordre des arguments.
|
||||
<tip><para>Plus d'un fichier peut être importé dans une commande. Si c'est le cas,
|
||||
&app; incorporera les données à partir du prochain fichier à la base de données disponible à l'heure actuelle.
|
||||
</para></tip>
|
||||
<para>Quand plus d'un dossier d'entrée est donné, chacun doit être par précédé de<command>-i</command>Les dossiers sont importés dans l'ordre indiqué, c.-à-d..
|
||||
<command>
|
||||
-i <filename>fichier1</filename>
|
||||
-i <filename>fichier2</filename>
|
||||
</command> and <command>
|
||||
-i <filename>fichier2</filename>
|
||||
-i <filename>fichier1</filename>
|
||||
</command>
|
||||
pourraient produire différentes versions dans la base de données résultant.
|
||||
</para></sect2>
|
||||
|
||||
<sect2 id="cmdline-opt-export"><title>Options d'exportation</title>
|
||||
<para> Les dossiers destinés à l'exportation peuvent être indiqués avec
|
||||
<command>-o <filename>nom du fichier</filename></command> ou
|
||||
<command>--output=<filename>nom du fichier</filename></command>
|
||||
Le format peut être indiqué avec l'option <command>-f</command>
|
||||
juste après <filename>le nom du fichier</filename>.
|
||||
Pour gramps-xml et les formats iso, <filename>nom du fichier</filename>
|
||||
est réellement le nom du répertoire la base de données de gramps. Pour grdb, gedcom, wft, geneweb, et gramps-pkg,<filename>le nom du fichier</filename>
|
||||
est le nom du dossier résultant.
|
||||
</para>
|
||||
|
||||
<tip><para>Plus d'un fichier peut être exporté dans une commande. Si c'est le cas, &app; essayera d'écrire plusieurs fichiers en utilisant les données de la base de données disponible à l'heure actuelle.
|
||||
</para></tip>
|
||||
|
||||
<para> Quand plus d'un fichier est donné, chacun doit être par précédé par <command>-o</command> Les dossiers sont écrits dans l'ordre indiqué.
|
||||
</para></sect2>
|
||||
|
||||
<sect2 id="cmdline-opt-action"><title>Options d'action</title>
|
||||
<para> L'action à exécuter sur les données importées peut être indiquée avec
|
||||
<command>-a <replaceable>action</replaceable></command> ou
|
||||
<command>--action=<replaceable>action</replaceable></command>
|
||||
Ceci est fait après que toutes les importations soient accomplies avec succès.
|
||||
</para>
|
||||
|
||||
<para>Les actions actuellement disponibles sont:</para>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term>summary</term>
|
||||
<listitem><para>Cette action est identique à
|
||||
<menuchoice><guimenu>Rapports</guimenu><guisubmenu>Vue</guisubmenu>
|
||||
<guimenuitem>Sommaire</guimenuitem></menuchoice>
|
||||
</para></listitem></varlistentry>
|
||||
|
||||
|
||||
<varlistentry><term>check</term>
|
||||
<listitem><para>Cette action est identique à
|
||||
<menuchoice><guimenu>Outils</guimenu>
|
||||
<guisubmenu>Traitement de la Base de données</guisubmenu>
|
||||
<guimenuitem>contrôle et réparation</guimenuitem></menuchoice>.
|
||||
</para> </listitem> </varlistentry>
|
||||
|
||||
<varlistentry><term>report</term>
|
||||
<listitem><para>Cette action laisse produire des rapports à partir de la ligne de commande. Car les rapports ont généralement beaucoup d'options propres, cette action devrait être suivie de la chaîne d'option du rapport. La chaîne est donnée en utilisant
|
||||
<command>-p <replaceable>option_string</replaceable></command> ou
|
||||
<command>--options=<replaceable>option_string</replaceable></command>
|
||||
</para>
|
||||
|
||||
<tip><para>
|
||||
La chaîne d'option de rapport devrait satisfaire les conditions suivantes:
|
||||
</para>
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para>Elle ne doit contenir aucun espaces. Si quelques arguments doivent inclure les espaces, la chaîne devrait être enfermée avec des guillemets.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<listitem><para>Option string must list pairs of option names
|
||||
and values.
|
||||
</para></listitem>
|
||||
|
||||
<listitem><para>La chaîne d'option doit énumérer des paires de noms et de valeurs séparées par le signe égal.
|
||||
</para></listitem>
|
||||
|
||||
<listitem><para>Différentes paires doivent être séparées par des virgules.
|
||||
</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
</tip>
|
||||
|
||||
|
||||
<para>La plupart des options de rapport sont spécifiques pour chaque rapport. Cependant, il y a quelques options communes.
|
||||
</para>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term>name=report_name</term>
|
||||
<listitem> <para>
|
||||
Cette option obligatoire détermine quel rapport sera produit. Si le report_name ne correspond à aucun rapport disponible, le message d'erreur sera affiché à la suite de la liste de rapports disponibles.
|
||||
</para>
|
||||
</listitem> </varlistentry>
|
||||
|
||||
<varlistentry><term>show=all</term>
|
||||
<listitem> <para>
|
||||
Ceci affichera la liste de noms pour toutes les options disponibles pour un rapport présenté.
|
||||
</para>
|
||||
</listitem> </varlistentry>
|
||||
|
||||
<varlistentry><term>show=option_name</term>
|
||||
<listitem> <para>
|
||||
Ceci affichera la description de la fonctionnalité assurée par l'option_name, pour les types et les valeurs acceptables pour cette option.
|
||||
</para>
|
||||
</listitem> </varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
<para>
|
||||
Employez les options ci-dessus pour découvrir tout au sujet d'un rapport présenté.
|
||||
</para>
|
||||
|
||||
<tip><para>
|
||||
Si une option n'est pas assurée, la dernière valeur utilisée sera employée. Si ce rapport n'a jamais été produit avant, alors la valeur du dernier rapport produit sera employée comme applicable. Autrement, la valeur par défaut sera employée.
|
||||
</para></tip>
|
||||
|
||||
</listitem> </varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</sect3>
|
||||
<para>Quand plus d'une action à produire est donnée, chacunes doivent être par précédé<command>-a</command> . Les actions sont effectuées dans l'ordre indiqué.
|
||||
</para></sect2>
|
||||
|
||||
<sect3 id="cmdline-operation">
|
||||
<title>Operation</title>
|
||||
</sect1>
|
||||
|
||||
&cmdplug;
|
||||
|
||||
<sect1 id="cmdline-operation">
|
||||
<title>Opération</title>
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem>
|
||||
<para>Si le premier argument sur la ligne de commande ne commence pas par le tiret, &app; essayera d'ouvrir le dossier avec le nom donné par le premier argument et de commencer la session interactive, ignorant le reste des arguments de ligne de commande.
|
||||
</para></listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Si <command>-O</command> est donné, alors &app; essayera d'ouvrir le nom de fichier fourni et fonctionnera alors avec ces données.
|
||||
</para>
|
||||
|
||||
<note><para>Seulement, un fichier peut être ouvert par
|
||||
&app;. Si vous avez besoin d'ouvrir depuis plusieurs sources, utilisez l'option d'importation
|
||||
<command>-i</command>.
|
||||
</para></note>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>L'ordre des options <command>-i</command>, <command>-o</command>,
|
||||
ou <command>-a</command> entre elles n'a pas de signification.
|
||||
L'ordre réel d'exécution est toujours : les lectures (s'il y en a) puis les
|
||||
écritures (s'il y en a) et enfin les actions (s'il y en a).</para>
|
||||
|
||||
<para>Si aucune option<command>-i</command> n'est donnée, gramps ouvrira
|
||||
sa fenêtre principale et commencera une session interactive avec un ensemble vide de données
|
||||
puisqu'il n'y a pas de données à traiter.</para>
|
||||
ou <command>-a</command> entre elles n'a pas de signification. L'ordre réel d'exécution est toujours : les lectures (s'il y en a) puis les écritures (s'il y en a) et
|
||||
enfin les actions (s'il y en a).</para>
|
||||
|
||||
<note><para>Mais l'ouverture doit toujours être première!</para></note>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Si aucune option <command>-O</command> ou <command>-i</command>
|
||||
n'est donnée, gramps ouvrira sa fenêtre principale et commencera une session interactive avec un ensemble vide de données puisqu'il n'y a pas de données à traiter.
|
||||
</para></listitem>
|
||||
|
||||
<para>Si aucune option<command>-o</command> ou <command>-a</command> n'est donnée,
|
||||
gramps ouvrira sa fenêtre principale et commencera une session interactive
|
||||
avec les données lues. Cet ensemble de données se situe dans le répertoire
|
||||
<replaceable>~/.gramps/import</replaceable> .</para>
|
||||
|
||||
<para>Les erreurs trouvées pendant les phases de lecture, d'écriture et d'action sont
|
||||
rapportées soit sur la sortie standard quand elles sont gérées par gramps,
|
||||
soit sur la sortie d'erreur dans le cas contraire. Utilisez les redirections
|
||||
du shell pour les conserver dans des fichiers. </para>
|
||||
<listitem>
|
||||
<para>Si aucune option <command>-o</command> ou <command>-a</command>n'est donnée, gramps ouvrira sa fenêtre principale et commencera une session interactive avec les données lues.
|
||||
<filename>import_db.grdb</filename> se situera dans le répertoire
|
||||
<filename>~/.gramps/import/</filename>.
|
||||
</para></listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Les erreurs trouvées pendant les phases de lecture, d'écriture et d'action sont rapportées soit sur la sortie standard quand elles sont gérées par gramps, soit sur la sortie d'erreur dans le cas contraire. Utilisez les redirections du shell pour les conserver dans des fichiers.
|
||||
</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
</sect3>
|
||||
</sect1>
|
||||
|
||||
<sect3 id="cmdline-examples">
|
||||
<sect1 id="cmdline-examples">
|
||||
<title>Exemples</title>
|
||||
<para>Lecture de quatre bases de données dont les formats peuvent être devinés d'après les noms,
|
||||
puis vérification des données : </para>
|
||||
<para><command>gramps -i</command> <replaceable>chemin1.ged</replaceable>
|
||||
<command>-i</command> <replaceable>chemin2.tgz</replaceable>
|
||||
<command>-i</command> <replaceable>~/db3</replaceable>
|
||||
<command>-i</command> <replaceable>chemin4.wft</replaceable>
|
||||
<command>-a</command> <replaceable>check</replaceable>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term>Lecture de quatre bases de données dont les formats peuvent être devinés d'après les noms, puis vérification des données :</term>
|
||||
|
||||
<listitem>
|
||||
<para><command>gramps
|
||||
-i<filename>file1.ged</filename>
|
||||
-i <filename>file2.tgz</filename>
|
||||
-i <filename>~/db3</filename>
|
||||
-i <filename>file4.wft</filename>
|
||||
-a <filename>check</filename></command>
|
||||
</para> </listitem></varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Si vous voulez préciser les formats de fichiers dans l'exemple ci-dessus, complétez les noms de fichiers par les options <command>-f</command> appropriées :</term>
|
||||
<listitem>
|
||||
<para><command>gramps
|
||||
-i <filename>file1.ged</filename>
|
||||
-f <replaceable>gedcom</replaceable>
|
||||
-i <filename>file2.tgz</filename>
|
||||
-f <replaceable>gramps-pkg</replaceable>
|
||||
-i <filename>~/db3</filename>
|
||||
-f <replaceable>gramps</replaceable>
|
||||
-i <filename>file4.wft</filename>
|
||||
-f <replaceable>wft</replaceable>
|
||||
-a <replaceable>check</replaceable></command>
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Pour enregistrer le résultat des lectures, donnez l'option
|
||||
<command>-o</command>(utiliser <command>-f</command>
|
||||
si le nom de fichier ne permet pas à gramps de deviner le format) :</term>
|
||||
<listitem>
|
||||
<para><command>gramps
|
||||
-i <filename>file1.ged</filename>
|
||||
-i <filename>file2.tgz</filename>
|
||||
-o <filename>~/new-package</filename>
|
||||
-f <replaceable>gramps-pkg</replaceable></command>
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Pour sauver les erreurs de l'exemple précédent dans les fichiers
|
||||
<filename>outfile</filename> et
|
||||
<filename>errfile</filename>, lancez :</term>
|
||||
<listitem>
|
||||
<para><command>gramps
|
||||
-i <filename>file1.ged</filename>
|
||||
-i <filename>file2.tgz</filename>
|
||||
-o <filename>~/new-package</filename>
|
||||
-f <replaceable>gramps-pkg</replaceable>
|
||||
><filename>outfile</filename>
|
||||
2><filename>errfile</filename> </command>
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Pour lire trois ensembles de données puis lancer une session interactive de gramps sur le tout :</term>
|
||||
<listitem>
|
||||
<para><command>gramps
|
||||
-i <filename>file1.ged</filename>
|
||||
-i <filename>file2.tgz</filename>
|
||||
-i <filename>~/db3</filename>
|
||||
</command>
|
||||
</para> </listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>Pour ouvrir une base de données, produisant un rapport temporel dans le format pdf et l'enregistrant sous le fichier
|
||||
<filename>my_timeline.pdf</filename> :</term>
|
||||
<listitem>
|
||||
<para><command>gramps
|
||||
-O <filename>file.grdb</filename>
|
||||
-a <replaceable>report</replaceable>
|
||||
-p <replaceable>name=timeline,off=pdf,of=my_timeline.pdf</replaceable>
|
||||
</command>
|
||||
</para>
|
||||
|
||||
<para>Si vous voulez préciser les formats de fichiers dans l'exemple ci-dessus,
|
||||
complétez les noms de fichiers par les options
|
||||
<command>-f</command> appropriées : </para>
|
||||
<para><command>gramps -i</command> <replaceable>chemin1.ged</replaceable>
|
||||
<command>-f</command> <replaceable>gedcom</replaceable>
|
||||
<command>-i</command> <replaceable>chemin2.tgz</replaceable>
|
||||
<command>-f</command> <replaceable>gramps-pkg</replaceable>
|
||||
<command>-i</command> <replaceable>~/db3</replaceable>
|
||||
<command>-f</command> <replaceable>gramps</replaceable>
|
||||
<command>-i</command> <replaceable>chemin4.wft</replaceable>
|
||||
<command>-f</command> <replaceable>wft</replaceable>
|
||||
<command>-a</command> <replaceable>check</replaceable>
|
||||
<tip><para>Employez <replaceable>name=timeline,show=all</replaceable>
|
||||
pour découvrir toutes les options disponibles au sujet du rapport de timeline. Pour découvrir des détails d'une option particulière, employez
|
||||
<replaceable>show=option_name</replaceable>,
|
||||
par exemple :<replaceable>name=timeline,show=off</replaceable>
|
||||
</para>
|
||||
|
||||
<para>Pour enregistrer le résultat des lectures, donnez l'option
|
||||
<command>-o</command> (utilisez l'option <command>-f</command>
|
||||
si le nom de fichier ne permet pas à gramps de deviner le format) : </para>
|
||||
<para><command>gramps -i</command> <replaceable>chemin1.ged</replaceable>
|
||||
<command>-i</command> <replaceable>chemin2.tgz</replaceable>
|
||||
<command>-o</command> <replaceable>~/nouvel-ensemble-gramps</replaceable>
|
||||
<command>-f</command> <replaceable>gramps-pkg</replaceable>
|
||||
</para>
|
||||
|
||||
<para>Pour sauver les erreurs de l'exemple précédent dans les fichiers
|
||||
<replaceable>sortie</replaceable> et
|
||||
<replaceable>erreur</replaceable>, lancez : </para>
|
||||
<para><command>gramps -i</command> <replaceable>chemin1.ged</replaceable>
|
||||
<command>-i</command> <replaceable>chemin2.tgz</replaceable>
|
||||
<command>-o</command> <replaceable>~/nouvel-ensemble-gramps</replaceable>
|
||||
<command>-f</command> <replaceable>gramps-pkg</replaceable>
|
||||
><replaceable>sortie</replaceable>
|
||||
2><replaceable>erreur</replaceable>
|
||||
|
||||
<para>Pour se renseigner sur les noms disponibles de rapport, employez
|
||||
<replaceable>name=show</replaceable>.
|
||||
</para>
|
||||
</tip>
|
||||
|
||||
<para>Pour lire trois ensembles de données puis lancer une session interactive de gramps
|
||||
sur le tout : </para>
|
||||
<para><command>gramps -i</command> <replaceable>chemin1.ged</replaceable>
|
||||
<command>-i</command> <replaceable>chemin2.tgz</replaceable>
|
||||
<command>-i</command> <replaceable>~/db3</replaceable>
|
||||
</para>
|
||||
|
||||
<para>Enfin, pour lancer une session interactive normale, entrez : </para>
|
||||
<para> <command>gramps</command></para>
|
||||
|
||||
</sect3>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</sect2>
|
||||
<varlistentry>
|
||||
<term>Enfin, pour lancer une session interactive normale, entrez :</term>
|
||||
<listitem><para> <command>gramps </command></para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</sect1>
|
||||
|
||||
</appendix>
|
||||
@@ -1,408 +1,234 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<chapter id="gramps-settings">
|
||||
|
||||
<!--
|
||||
User Manual for Gramps - a GTK+/GNOME based genealogy program
|
||||
|
||||
Copyright (C) 2003 Alexander Roitman
|
||||
Copyright (C) 2003-2005 Alexander Roitman
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this
|
||||
document under the terms of the GNU Free Documentation
|
||||
License (GFDL), Version 1.1 or any later version published
|
||||
by the Free Software Foundation with no Invariant Sections,
|
||||
no Front-Cover Texts, and no Back-Cover Texts.
|
||||
A copy of the license is included in the file COPYING-DOCS
|
||||
distributed with this manual.
|
||||
This document 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 document 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$ -->
|
||||
|
||||
<!-- ================ Customization ================================ -->
|
||||
<title>Configuration</title>
|
||||
|
||||
<sect1 id="gramps-prefs">
|
||||
<title>Préférences</title>
|
||||
|
||||
<sect1 id="gramps-prefs">
|
||||
<title>Personnalisation</title>
|
||||
<para>Choisissez
|
||||
<menuchoice><guimenu>Edition</guimenu>
|
||||
<guimenuitem>Préférences...</guimenuitem></menuchoice> pour configurer &app;.
|
||||
Le dialogue <guilabel>Préférences</guilabel> propose les
|
||||
catégories suivantes : </para>
|
||||
<para>La plupart des configuration &app;, sont affichables dans la boîte de dialogue
|
||||
<guilabel>Préférences</guilabel> Choisissez,
|
||||
<menuchoice><guimenu>Edition</guimenu>
|
||||
<guimenuitem>Préférences...</guimenuitem></menuchoice>. </para>
|
||||
|
||||
<!-- ==== Figure: Type-ahead find ==== -->
|
||||
<figure id="prefs-fig">
|
||||
<title>Dialogue de préférences</title>
|
||||
<screenshot><mediaobject><imageobject><imagedata
|
||||
fileref="figures/prefs.png" format="PNG"/></imageobject>
|
||||
<textobject>
|
||||
<phrase>Shows Preferences dialog. </phrase>
|
||||
</textobject></mediaobject></screenshot></figure>
|
||||
<!-- ==== End of Figure ==== -->
|
||||
|
||||
<para>La fenêtre du côté gauche montre l'arbre des options disponibles. Le choix d'un noeud montrera les options correspondantes du côté droit. </para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem><para><xref linkend="gramps-prefs-usage"/></para></listitem>
|
||||
<listitem><para><xref linkend="gramps-prefs-display"/></para></listitem>
|
||||
<listitem><para><xref linkend="gramps-prefs-db"/></para></listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<!-- =============== Customization Subsection ================ -->
|
||||
<sect2 id="gramps-prefs-usage">
|
||||
<title>Utilisation</title>
|
||||
<para> Cette catégorie regroupe les préférences à propos de l'utilisation
|
||||
générale de &app;. Les sous-catégories suivantes sont disponibles : </para>
|
||||
|
||||
<!-- =============== Customization Sub-subsection ================ -->
|
||||
<sect3 id="prefs-usage-find">
|
||||
<title>Recherche</title>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><guilabel>Active la terminaison automatique</guilabel></term>
|
||||
<listitem><para>Si cette option est validée, &app; essaiera de terminer seul
|
||||
le texte entré dans les zones de saisie comme le nom de famille,
|
||||
les lieux... La terminaison est tentée en s'appuyant sur la correspondance
|
||||
entre le début de texte saisi et les données du même type déjà dans la base de données.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</sect3>
|
||||
|
||||
<!-- =============== Customization Sub-subsection ================ -->
|
||||
<sect3 id="prefs-usage-report">
|
||||
<title>Préférences d'impression</title>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><guilabel>Format de texte</guilabel></term>
|
||||
<listitem><para> Sélectionne le format pour les impressions textuelles
|
||||
parmi les formats disponibles.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Format graphique</guilabel></term>
|
||||
<listitem><para> Sélectionne le format pour les impressions graphiques
|
||||
parmi les formats disponibles.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Taille de page</guilabel></term>
|
||||
<listitem><para> Sélectionne la taille de feuille utilisée pour les impressions
|
||||
parmi les formats disponibles.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Répertoire par défaut des impressions</guilabel></term>
|
||||
<listitem><para> Choisissez le répertoire par défaut pour les fichiers d'impression
|
||||
en utilisant le bouton
|
||||
<guibutton>Parcourir...</guibutton> ou entrez-le dans la zone de saisie de
|
||||
texte. </para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Répertoire par défaut pour la création de site web</guilabel></term>
|
||||
<listitem><para> Choisissez le répertoire par défaut pour la création de site web
|
||||
en utilisant le bouton
|
||||
<guibutton>Parcourir...</guibutton> ou entrez-le dans la zone de saisie de
|
||||
texte. </para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</sect3>
|
||||
|
||||
<!-- =============== Customization Sub-subsection ================ -->
|
||||
<sect3 id="prefs-usage-res">
|
||||
<title>Informations sur le chercheur</title>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><guilabel>Informations sur le chercheur</guilabel></term>
|
||||
<listitem><para> Entrez vos informations personnelles dans les champs
|
||||
de saisie. Bien que &app; vous interroge,
|
||||
cette information ne sert quà créer des fichiers GEDCOM valides.
|
||||
Le format GEDCOM a besoin de données sur l'auteur du fichier.
|
||||
Vous pouvez laissez les données vides mais les fichiers GEDCOM
|
||||
exportés ne seront pas valides.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</sect3>
|
||||
|
||||
<!-- =============== Customization Sub-subsection ================ -->
|
||||
<sect3 id="prefs-usage-guess">
|
||||
<title>Hypothèse</title>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><guilabel>Hypothèse de nom de famille</guilabel></term>
|
||||
<listitem><para> Cette option affecte le nom de famille initial
|
||||
d'un enfant lors de sa création dans la base de données. NOTE : cela
|
||||
ne change que le nom de famille initial proposé par &app; quand la fenêtre
|
||||
<guilabel>Affiche Personne</guilabel> est ouverte. Vous pouvez modifier
|
||||
ce nom comme vous voulez ensuite. Positionnez cette option selon ce que vous
|
||||
faites le plus souvent, et elle vous économisera beaucoup
|
||||
de frappe. </para>
|
||||
|
||||
<para>Si <guilabel>Aucun</guilabel> est sélectionné, aucune hypothèse
|
||||
ne sera faite. Choisir <guilabel>Nom du père</guilabel> prendra
|
||||
le nom du père et le proposera comme nom de l'enfant.
|
||||
Choisir <guilabel>Combinaison du nom du père et de la mère</guilabel>
|
||||
proposera le nom du père suivi du nom de la mère.
|
||||
Enfin, choisir <guilabel>Style Islandais</guilabel> prendra le nom
|
||||
du père suivi du suffixe "sson" (c'est à dire que le fils d'Erik
|
||||
aura comme nom de famille Eriksson).
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</sect3>
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- =============== Customization Subsection ================ -->
|
||||
<sect2 id="gramps-prefs-display">
|
||||
<title>Affichage</title>
|
||||
<para> Cette catégorie regroupe les préférences pour
|
||||
afficher le contenu de la base de données et les contrôles.
|
||||
Les sous-catégories suivantes existent : </para>
|
||||
|
||||
<!-- =============== Customization Sub-subsection ================ -->
|
||||
<sect3 id="prefs-display-gen">
|
||||
<title>Général</title>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><guilabel>Vue par défault</guilabel></term>
|
||||
<listitem><para> Ceci définit quelle vue sera affichée au lancement
|
||||
de &app;. Vous avez le choix entre la vue des Individus et
|
||||
la vue par Famille.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Style de Vue par Famille</guilabel></term>
|
||||
<listitem><para> Ceci sélectionne une des deux dispositions possibles
|
||||
pour la vue par Famille. Le style
|
||||
<guilabel>de Gauche à Droite</guilabel> ressemble à
|
||||
Family Tree Maker (tm), alors que le style <guilabel>de Haut en Bas</guilabel>
|
||||
ressemble à Réunion.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Toujours afficher l'onglet LDS</guilabel></term>
|
||||
<listitem><para> Validez ce choix si vous souhaiter toujours afficher
|
||||
l'onglet des données LDS (Later Days Saints, Mormons en français).
|
||||
Si vous ne savez pas ce que c'est, ne le validez pas.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Montrer l'index dans les listes d'enfants</guilabel></term>
|
||||
<listitem><para>
|
||||
Cette option n'est actuellement pas programmée.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect3>
|
||||
|
||||
<!-- =============== Customization Sub-subsection ================ -->
|
||||
<sect3 id="prefs-display-date">
|
||||
<title>Dates et Calendriers</title>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><guilabel>Affichage : Format de Date</guilabel></term>
|
||||
<listitem><para> Sélectionne le format d'affichage des dates
|
||||
parmi les choix du menu.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Format des Noms</guilabel></term>
|
||||
<listitem><para> Sélectionne le format d'affichage des noms
|
||||
parmi les choix du menu.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Saisie : Format de Date</guilabel></term>
|
||||
<listitem><para> Sélectionne le format de saisie des dates
|
||||
parmi les choix du menu.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Sélection des formats de calendriers proposés</guilabel></term>
|
||||
<listitem><para> Cochez ce choix si vous voulez avoir plusieurs calendriers disponibles
|
||||
lors des saisies de dates dans le dialogue
|
||||
<guilabel>Modification d'évènement</guilabel>. Ceci vous permettra alors de choisir
|
||||
parmi plusieurs calendriers pour modifier les dates.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect3>
|
||||
|
||||
<!-- =============== Customization Sub-subsection ================ -->
|
||||
<sect3 id="prefs-display-bars">
|
||||
<title>Barres d'outils et de status</title>
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><guilabel>Barre d'outils</guilabel></term>
|
||||
<listitem><para> Sélectionne l'affichage des icônes de la barre d'outils.
|
||||
Les <guilabel>paramètres GNOME</guilabel> seront utilisés
|
||||
par &app;. Il est possible d'afficher seulement les icônes, seulement le texte
|
||||
ou encore d'afficher les deux.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Barre de Status</guilabel></term>
|
||||
<listitem><para> Sélectionne ce qui est affiché dans la barre de status.
|
||||
Il est possible d'afficher le nom de l'individu seul, accompagné de l'identifiant Gramps
|
||||
ou aussi le lien entre la personne sélectionnée et le probant (individu origine
|
||||
de la recherche généalogique ascendante). Cette dernière option n'est correctement
|
||||
rédigée qu'en langue Anglaise pour le moment.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect3>
|
||||
|
||||
</sect2>
|
||||
|
||||
<!-- =============== Customization Subsection ================ -->
|
||||
<sect2 id="gramps-prefs-db">
|
||||
<title>Base de données</title>
|
||||
<para> Cette catégorie regroupe les préférences liées à la
|
||||
base de données elle-même. Vous y trouvez les sous-catégories suivantes : </para>
|
||||
|
||||
<!-- =============== Customization Sub-subsection ================ -->
|
||||
<sect3 id="prefs-db-gen">
|
||||
<title>Général</title>
|
||||
<para> Cette catégorie regroupe les préférences liées à la base de données elle-même. Vous y trouvez les sous-catégories suivantes : </para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry><term><guilabel>Général</guilabel></term>
|
||||
<listitem>
|
||||
<variablelist>
|
||||
<varlistentry><term><guilabel>Chargement automatique de la dernière base</guilabel></term>
|
||||
<listitem><para>Cochez ce choix pour charger automatiquement la dernière base ouverte, lors du lancement de &app;.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Estimation du nom de famille </guilabel></term>
|
||||
<listitem><para> Cette option affecte le nom de famille initial d'un enfant quand il/elle est ajouté à la base de données. </para>
|
||||
|
||||
<tip><para>Cette option affecte seulement le nom de famille initial deviné par &app; quand le
|
||||
<guilabel>dialogue d'édition</guilabel> de la personne est lancé. Placez cette option à la valeur que vous emploierez le plus fréquemment, car elle vous évitera beaucoup de dactylographie.
|
||||
</para></tip>
|
||||
|
||||
<varlistentry><term><guilabel>Chargement automatique de la dernière base</guilabel></term>
|
||||
<listitem><para> Cochez ce choix pour charger automatiquement la dernière
|
||||
base ouverte, lors du lancement de &app;. </para></listitem>
|
||||
<para>Si <guilabel>Aucun</guilabel> est choisi, aucune estimation sera essayé. Choix <guilabel>du nom de famille du père</guilabel>
|
||||
emploiera le nom. de famille du père. Choix
|
||||
<guilabel>de la combinaison
|
||||
du nom de famille de la mère et du père</guilabel>
|
||||
emploiera le nom du père suivi du nom de la mère. En conclusion,
|
||||
<guilabel>le modèle islandais</guilabel> emploiera le nom donné du père suivi du suffixe de "sson" (par exemple le fils d'Edwin sera deviné comme Edwinsson).
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Ne pas compresser les fichiers XML</guilabel></term>
|
||||
<listitem><para> Cochez ce choix pour désactiver la compression des
|
||||
fichiers XML. La compression réduit considérablement la taille du fichier.
|
||||
Cela coûte un tout petit peu plus en terme de puissance CPU. Les erreurs
|
||||
de compression ont été corrigées depuis bien longtemps et il n'y a
|
||||
plus aucune raison de désactiver la compression.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel> Intervalle de sauvegarde automatique</guilabel></term>
|
||||
<listitem><para> Ceci fixe le délai (en minutes) entre deux sauvegardes
|
||||
automatiques de la base de données. La valeur zéro (0) désactive
|
||||
la sauvegarde automatique. </para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Répertoire par defaut de la base de données</guilabel></term>
|
||||
<listitem><para> Ceci précise le répertoire utilisé par défaut avant une sauvegarde.
|
||||
Ceci sert quand on valide le bouton <guibutton>Parcourir...</guibutton> après
|
||||
la commande de sauvegarde, ou quand on saisit un chemin d'accès directement
|
||||
dans la zone de saisie de texte. </para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect3>
|
||||
|
||||
<!-- =============== Customization Sub-subsection ================ -->
|
||||
<sect3 id="prefs-db-media">
|
||||
<title>Medias</title>
|
||||
|
||||
<para>Avant de décrire les préférences pour les objets Médias,
|
||||
il faut revoir les notions d'objet local et non local.
|
||||
Un objet local a ses données conservées dans le répertoire de
|
||||
la base de données.
|
||||
Au contraire, un objet non local est conservé ailleurs et la base
|
||||
de données ne conserve qu'une référence du chemin d'accès
|
||||
au fichier ainsi que quelques informations sur l'objet. </para>
|
||||
|
||||
<para>Vous pouvez décider de conserver vos objets médias localement
|
||||
ou pas. Les objets locaux augmentent l'espace-disque consommé par la base
|
||||
de données. si le fichier externe est détruit ou déplacé, &app;
|
||||
en aura toujours une copie.
|
||||
Au contraire, les objets non locaux réduisent l'espace-disque consommé,
|
||||
mais il ne faut pas perdre les fichiers sous peine de
|
||||
perdre aussi le contenu des objets non locaux.
|
||||
<varlistentry><term><guilabel>Identifications de &app;</guilabel></term>
|
||||
<listitem><para> Écrivez les préfixes d'identification pour différents genres d'entrées de base de données dans les champs correspondants d'enregistrement de texte.
|
||||
</para>
|
||||
|
||||
<para>Remarque : l'exportation de la base de données en n'importe
|
||||
quel format intègre tous les objets, qu'ils soient locaux
|
||||
ou pas. En particulier, exporter en un paquetage gramps
|
||||
inclut tous les objets médias dans le fichier produit, et change
|
||||
les références en conséquence. Exporter vers un CD-Rom copie tous les objets
|
||||
médias dans le répertoire de <guilabel>gravure:///</guilabel> dans Nautilus
|
||||
et ajuste leur référence. Enfin, l'export en Gedcom met les fichiers de médias
|
||||
à côté du fichier de données Gedcom en mettant à jour les chemins
|
||||
d'accès conservés dans le fichier Gedcom.
|
||||
<tip><para>Les préfixes d'identification emploient des conventions de formatage communes pour C, Python, et d'autres langages de programmation. Par exemple, le %04d augmente à un nombre entier ajouté au début de zéros, pour avoir toute la largeur des chiffres. Si vous voudriez que les identifications soient 1, 2, 3, etc.., placé simplement le paramètre de formatage à %d.
|
||||
</para></tip>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Informations sur le chercheur</guilabel></term>
|
||||
<listitem><para> Entrez vos informations personnelles dans les champs de saisie. Bien que &app; vous interroge, cette information ne sert qu' à créer des fichiers GEDCOM valides. Le format GEDCOM a besoin de données sur l'auteur du fichier. Vous pouvez laissez les données vides mais les fichiers GEDCOM exportés ne seront pas valides. &app; requests information about you,
|
||||
</para>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><guilabel>Glisser-Déposer à partir d'une Source externe
|
||||
</guilabel></term>
|
||||
<listitem><para> Ceci choisit entre une référence et une copie locale
|
||||
quand un fichier est déposé dans la galerie. Une référence
|
||||
économise l'espace-disque en ne copiant pas l'objet. La copie locale
|
||||
rend votre base de données déplaçable puisqu'elle ne dépend pas de
|
||||
fichiers externes. Réfléchissez à votre besoin pour faire le meilleur choix.</para>
|
||||
|
||||
<para>Cochez le choix <guilabel>Ouvrir l'éditeur de propriétés quand
|
||||
un objet est déposé</guilabel> pour lancer l'éditeur de propriétés
|
||||
après qu'un objet a été déposé dans la Galerie.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Glisser-Déposer depuis une source interne</guilabel></term>
|
||||
<listitem><para>Cochez le choix <guilabel>Ouvrir l'éditeur de propriétés quand
|
||||
un objet est déposé</guilabel> pour lancer l'éditeur de propriétés
|
||||
après qu'un objet interne (à la base de données) a été déposé dans la Galerie.
|
||||
</para></listitem>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect3>
|
||||
|
||||
<!-- =============== Customization Sub-subsection ================ -->
|
||||
<sect3 id="prefs-db-id">
|
||||
<title>Identifiants internes gramps</title>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><guilabel> Préfixes d'identifiants &app;</guilabel></term>
|
||||
<listitem><para> Saisissez les préfixes utilisés par &app; pour générer
|
||||
les identifiants pour différents éléments de données.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Autorise la modification des identifiants internes de
|
||||
Gramps</guilabel></term>
|
||||
<listitem><para> Cochez ce choix pour autoriser la modification des identifiants internes
|
||||
utilisés par &app;. N'autorisez cela que si vous savez vraiment ce que vous faites.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect3>
|
||||
|
||||
<!-- =============== Customization Sub-subsection ================ -->
|
||||
<sect3 id="prefs-db-rcs">
|
||||
<title>Contrôle de Révision</title>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><guilabel>Utiliser le contrôle de révision</guilabel></term>
|
||||
<listitem><para> Cochez ce choix si vous autorisez &app; à utiliser
|
||||
la gestion des versions pour votre base de données.
|
||||
Si vous le faites, choisissez le système de gestion de version
|
||||
par le menu.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Prompt pour un commentaire de sauvegarde</guilabel></term>
|
||||
<listitem><para> Cochez ce choix pour que &app; demande un commentaire lors de la sauvegarde
|
||||
de la base de données.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</sect3>
|
||||
|
||||
</sect2>
|
||||
|
||||
</sect1> <!-- ================ End Customization ================== -->
|
||||
<sect2 id="gramps-prefs-display">
|
||||
<title>Affichage</title>
|
||||
<para> Cette catégorie regroupe les préférences pour afficher le contenu de la base de données et les contrôles. Les sous-catégories suivantes existent :</para>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><guilabel>Général</guilabel></term>
|
||||
<listitem>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><guilabel>Vue de défaut</guilabel></term>
|
||||
<listitem><para> Ceci détermine quelle vue apparaîtra quand vous commencez &app;. Choisissez entre les vues de personne et de famille.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Modèle de vue de famille</guilabel></term>
|
||||
<listitem><para> Ceci choisit entre les deux modèles disponibles de vue de famille. Le style <guilabel>Gauche vers la Droite</guilabel>
|
||||
ressemble à Family Tree Maker (tm), alors que le style
|
||||
<guilabel>de Haut en Bas</guilabel> est proche de Réunion.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Toujours afficher l'onglet LDS</guilabel></term>
|
||||
<listitem><para> Validez ce choix si vous souhaiter toujours afficher l'onglet des données LDS (Later Days Saints, Mormons en français). Si vous ne savez pas ce que c'est, ne le validez pas. </para></listitem></varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Astuce d'affichage du jour</guilabel></term>
|
||||
<listitem><para> Vérifiez cette boîte pour avoir <guilabel>l'astuce du jour</guilabel> à chaque démarrage. Les astuces sont montrés aléatoirement de la base de
|
||||
&app;.
|
||||
</para>
|
||||
|
||||
<tip><para><guilabel>L'astuce du jour</guilabel> est susceptible d'être utile pour le nouvel utilisateur de &app;.
|
||||
</para></tip>
|
||||
</listitem></varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Dates</guilabel></term>
|
||||
|
||||
<listitem>
|
||||
<para> Choisissez le format d'affichage pour les dates à partir des formats disponibles énumérés dans ce menu.
|
||||
</para>
|
||||
|
||||
<tip><para>Les formats d'affichage disponibles sont spécifiques à une langue. Selon le displayer &app; pour votre langue, vous pouvez ou ne pouvez pas avoir beaucoup de choix.
|
||||
</para></tip>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Barre d'outils et Barre de Status</guilabel></term>
|
||||
<listitem>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term><guilabel>Barre d'outils</guilabel></term>
|
||||
<listitem><para> Sélectionne l'affichage des icônes de la barre d'outils. Les <guilabel>paramètres GNOME
|
||||
</guilabel> seront utilisés par &app;. Il est possible d'afficher seulement les icônes, seulement le texte ou encore d'afficher les deux.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term><guilabel>Barre de Status</guilabel></term>
|
||||
<listitem><para> Sélectionne ce qui est affiché dans la barre de status. Il est possible d'afficher le nom de l'individu seul, accompagné de l'identifiant Gramps ou aussi le lien entre la personne sélectionnée et le probant (individu origine de la recherche
|
||||
généalogique ascendante). Cette dernière option n'est correctement rédigée qu'en langue Anglaise pour le moment.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect2>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 id="gramps-prefs-other">
|
||||
<title>D'autres personnalisations</title>
|
||||
|
||||
<para>Sans compter que d'autres <guilabel>Préférences</guilabel> sont disponibles dans &app;.Pour différentes raisons ils ont été rendus plus aisément accessibles, comme énuméré ci-dessous.
|
||||
</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>Rédacteur de Colonne</term>
|
||||
<listitem>
|
||||
<para>Les colonnes des vues de liste peuvent être ajoutées, enlevées, ou déplacées à nouveau dans un dialogue de <guilabel>rédacteur de colonne</guilabel>,
|
||||
voir <xref linkend="column-editor-fig"/>. Seulement des colonnes vérifiées seront montrées dans la vue. Pour changer leur ordre, glisser n'importe quelle colonne à son endroit désiré à l'intérieur de la fenêtre. Cliquer sur <guibutton>Valider</guibutton>
|
||||
reflétera les changements de la vue appropriée. Pour appeler la fenêtre d'édition de colonne choisissez<menuchoice><guimenu>Edition</guimenu><guimenuitem>
|
||||
Editeur de Colonne...</guimenuitem></menuchoice>.
|
||||
</para>
|
||||
|
||||
<tip>
|
||||
<para>L'<guilabel>éditeur de Colonne</guilabel> est disponible et travaille de la même manière pour toutes les vues. Spécifiquement, elle est disponible pour la vue des Individus, vue de famille (liste d'enfants), vue des sources, vue des Lieux et vue des médias.</para> </tip>
|
||||
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Réglage de la personne de référence</term>
|
||||
<listitem><para>La personne de référence est la personne qui devient active
|
||||
quand le bouton <guibutton>personne de référence</guibutton> est utilisé
|
||||
ou le menu contextuel (clic-droit)</para>
|
||||
|
||||
<para>Pour éditer la personne de référence, sélectionner la personne désirée puis choisissez
|
||||
<menuchoice><guimenu>Edition</guimenu><guimenuitem>personne de référence...</guimenuitem></menuchoice>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
|
||||
<varlistentry><term>Ajustement des commandes de visionnement</term>
|
||||
<listitem> Les Barre d'outils, Barre de Status et Filtres (vue des Individus seulement) sont ajustables dans
|
||||
<guimenu>Affichage</guimenu>.
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 id="gramps-prefs-adv">
|
||||
<title>Manipulation avançée des préférences</title>
|
||||
|
||||
<warning><para>Le contenu de cette section est en dehors de la portée d'un utilisateur général de &app;.
|
||||
Si vous continuez, vous pouvez endommager votre installation de &app; Faites attention. VOUS AVEZ ÉTÉ AVERTIS!
|
||||
</para></warning>
|
||||
|
||||
<para>Par défaut, &app; stocke ses préférences en utilisant le système gconf2. Toutes les préférences utilisés dans cette version de &app;
|
||||
&app; sont stockés dans les sous-répertoires <filename>/apps/gramps/</filename> L'accès aux clefs peut être fait avec
|
||||
<command>gconftool-2</command> en ligne de commande, ou
|
||||
<command>gconf-editor</command> Outil de GUI.
|
||||
</para>
|
||||
|
||||
<para>Toutes les clefs sont documentées, et les mécanismes d'avis sont employés comme appropriés. Par conséquent, la mise à jour des clefs à l'extérieur de &app;
|
||||
devrait mener à mettre à jour &app; en temps réel, sans le remettre en marche nécessairement.</para>
|
||||
</sect1>
|
||||
|
||||
</chapter>
|
||||
@@ -1,398 +1,266 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<appendix id="faq">
|
||||
|
||||
<!--
|
||||
User Manual for Gramps - a GTK+/GNOME based genealogy program
|
||||
|
||||
Copyright (C) 2003 Alexander Roitman
|
||||
Copyright (C) 2003-2005 Alexander Roitman
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this
|
||||
document under the terms of the GNU Free Documentation
|
||||
License (GFDL), Version 1.1 or any later version published
|
||||
by the Free Software Foundation with no Invariant Sections,
|
||||
no Front-Cover Texts, and no Back-Cover Texts.
|
||||
A copy of the license is included in the file COPYING-DOCS
|
||||
distributed with this manual.
|
||||
This document 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 document 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$ -->
|
||||
|
||||
<!-- =============== Appendices Subsection ================ -->
|
||||
<sect2 id="faq">
|
||||
<title>Foire Aux Questions</title>
|
||||
<para>Cette annexe répond aux questions fréquemment posées sur les listes
|
||||
de discussions et les forums. Elle n'est évidemment pas limitative.
|
||||
Si vous souhaitez y ajouter des questions et/ou des réponses,
|
||||
envoyez un message électronique à
|
||||
<ulink url="mailto:gramps-devel@lists.sf.net" type="mailto">gramps-devel@lists.sf.net</ulink>
|
||||
<title>Questions Fréquemment Posées</title>
|
||||
<para>Cette annexe répond aux questions les plus fréquemment posées sur les listes de discussions et les forums. Elle n'est évidemment pas limitative. Si vous souhaitez ajouter des questions et/ou des réponses, envoyez un message électronique à <ulink url="mailto:gramps-devel@lists.sf.net"
|
||||
type="mailto">gramps-devel@lists.sf.net</ulink>
|
||||
</para>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term>Qu'est ce que &app; ? </term>
|
||||
<listitem><para>&app; est le Système de Recherche et Analyse Généalogique
|
||||
(Genealogical Research and Analysis Management Program System).
|
||||
Autrement dit, c'est un programme personnel de généalogie qui vous permet
|
||||
de conserver, modifier et chercher dans des données généalogiques, avec
|
||||
l'aide de l'ordinateur.
|
||||
|
||||
<varlistentry><term>Qu'est ce que &app; ?</term>
|
||||
<listitem><para> &app; est un Système de Recherche et d'Analyse Généalogique (Genealogical Research and Analysis Management Program System). Autrement dit, c'est un
|
||||
programme personnel de généalogie qui vous permet de conserver, modifier et chercher dans des données généalogiques, avec l'aide de l'ordinateur.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Où puis-je le trouver et que coûte-t'il ? </term>
|
||||
<varlistentry><term>D'où l'obtiens-je et combien coûte-t-il?</term>
|
||||
<listitem><para>
|
||||
&app; peut être téléchargé gratuitement depuis le site Internet
|
||||
<ulink url="http://sf.net/projects/gramps" type="http">http://sf.net/projects/gramps</ulink>.
|
||||
C'est un projet Open Source publié sous la licence GNU GPL.
|
||||
Vous avez complètement accès aux programmes sources et vous avez
|
||||
le droit de redistribuer le programme et les sources librement.
|
||||
&app; peut être téléchargé gratuitement depuis le site Internet <ulink url="http://sf.net/projects/gramps"
|
||||
type="http">http://sf.net/projects/gramps</ulink> C'est un projet Open Source publié sous la licence GNU GPL. Vous avez complètement accès aux programmes sources et vous avez le droit de redistribuer le programme et les sources librement.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Fonctionne-t'il avec Windows (tm) ? </term>
|
||||
<varlistentry><term>Fonctionne-t'il avec Windows (tm)?</term>
|
||||
<listitem><para>
|
||||
Non. &app; utilise les librairies GTK et GNOME. Les librairies GTK
|
||||
ont été portées sous Windows, mais pas les librairies GNOME.
|
||||
Cependant, cela pourrait changer un jour.
|
||||
Non. &app; utilise les librairies GTK et GNOME. Les librairies GTK ont été portées sous Windows, mais pas les librairies GNOME. Cependant, cela pourrait changer un jour.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Fonctionne-t'il sur le Macintosh ? </term>
|
||||
<varlistentry><term>Fonctionne-t'il sur Macintosh</term>
|
||||
<listitem><para>
|
||||
Le projet Fink (<ulink url="http://fink.sf.net"
|
||||
type="http">http://fink.sf.net</ulink>) a porté une vieille version de
|
||||
&app; (0.8.0) sur OSX. La version Mac OSX n'est pas directement supportée
|
||||
par le projet &app;, surtout parce qu'aucun développeur de &app;
|
||||
n'a accès à Mac OSX.</para>
|
||||
|
||||
<para>La version Gnome 2 de &app; (0.9.x) n'a pas été portée par le
|
||||
projet Fink. Vous êtes priés de contacter le projet Fink pour plus
|
||||
d'information.
|
||||
</para></listitem>
|
||||
<ulink url="http://fink.sourceforge.net"
|
||||
type="http">Le projet Fink </ulink> a porté
|
||||
<ulink url="http://fink.sourceforge.net/pdb/package.php/gramps"
|
||||
type="http"> quelques anciennes versions </ulink> de
|
||||
&app; à OSX (tm). La version Mac OSX n'est pas directement supportée par le projet &app; surtout parce qu'aucun développeur de &app; n'a accès à
|
||||
Mac OSX. La version Gnome 2 de &app; (0.9.x) n'a pas été portée par le projet Fink. Vous êtes priés de contacter le projet Fink pour plus d'information.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Fonctionne-t'il avec KDE ? </term>
|
||||
<varlistentry><term>Fonctionne-t'il avec KDE ?</term>
|
||||
<listitem><para>
|
||||
Oui, à condition que les librairies GNOME nécessaires soient installées.
|
||||
Oui, à condition que les librairies GNOME nécessaires soient installées.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Dois-je vraiment installer GNOME ? </term>
|
||||
<listitem><para>Oui, mais il n'est pas obligatoire d'utiliser le bureau GNOME.
|
||||
<varlistentry><term>Dois-je vraiment installer GNOME ?</term>
|
||||
<listitem><para> Oui, mais il n'est pas obligatoire d'utiliser le bureau GNOME.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>De quelle version de GNOME ai-je besoin ? </term>
|
||||
<varlistentry><term>De quelle version de GNOME ai-je besoin ?</term>
|
||||
<listitem><para>
|
||||
Les dernières versions de &app; (0.9.0 et suivantes) ont besoin de GNOME 2.0 ou ultérieures.
|
||||
Les versions précédentes utilisaient GNOME 1.X.
|
||||
Cette version de &app; exige GNOME 2,8,0 ou plus haut. Les versions précédentes des séries 1.0.x ont exigé GNOME 2,0.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>&app; est-il compatible avec
|
||||
d'autres logiciels de généalogie ? </term>
|
||||
<varlistentry><term>&app; est-il compatible avec d'autres logiciels de généalogie ? (GenApps)</term>
|
||||
<listitem><para>
|
||||
&app; fait tout ce qui est possible pour rester compatible avec
|
||||
le format de données généalogique standard Gedcom. Nous avons
|
||||
des filtres de lecture et d'écriture pour les fichiers Gedcom. </para>
|
||||
&app; fait tout ce qui est possible pour rester compatible avec le format de données généalogique standard Gedcom. Nous avons des filtres de lecture et d'écriture pour les fichiers Gedcom. </para>
|
||||
|
||||
<para>
|
||||
Il faut savoir que le format Gedcom est mal utilisé. Chaque logiciel
|
||||
de généalogie a sa propre variante de Gedcom. Quand nous avons connaissance
|
||||
d'une variante, il est très rapide de créer les filtres de lecture et d'écriture.
|
||||
Par contre, trouver les variantes demande d'avoir l'information de la part
|
||||
des utilisateurs. N'hésitez pas à nous signaler une variante non supportée
|
||||
par &app;, nous ferons ensuite de notre mieux pour la supporter !
|
||||
<para>
|
||||
Il faut savoir que le format Gedcom est mal utilisé. Chaque logiciel de généalogie a sa propre variante de Gedcom. Quand nous avons connaissance d'une variante, il est très rapide de créer les filtres de lecture et d'écriture. Par contre, trouver les variantes demande d'avoir l'information de la part des
|
||||
utilisateurs. N'hésitez pas à nous signaler une variante non supportée par &app;,
|
||||
, nous ferons ensuite de notre mieux pour la supporter !
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>&app; peut-il lire les fichiers créés par le logiciel de
|
||||
généalogie SuperGenWare ? </term>
|
||||
<listitem><para>Voir la question précédente.
|
||||
<varlistentry><term>&app; peut-il lire des fichiers créés par GenApp X?</term>
|
||||
<listitem><para> Voir ci-dessus.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>&app; peut-il écrire les fichiers lisibles par le logiciel de
|
||||
généalogie SuperGenWare ?</term>
|
||||
<listitem><para>Voir au-dessus..
|
||||
<varlistentry><term>&app; peut-il écrire des fichiers pour GenApp X?</term>
|
||||
<listitem><para> Voir ci-dessus.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>&app; peut-il imprimer mon arbre généalogique ? </term>
|
||||
<varlistentry><term>&app; peut-il imprimer mon arbre généalogique?</term>
|
||||
<listitem><para>
|
||||
Oui. Chacun a son idée sur comment doit être dessiné un arbre généalogique.
|
||||
Certains pensent qu'il faut montrer toutes les familles depuis un ancêtre lointain
|
||||
jusqu'à la racine de l'arbre, d'autres qu'il faut remonter de la personne
|
||||
actuelle et montrer tous ses ancêtres et leurs familles. D'autres encore
|
||||
pensent à un tableau, à des éditions en mode texte... </para>
|
||||
Oui. Chacun a son idée sur comment doit être dessiné un arbre généalogique. Certains pensent qu'il faut montrer toutes les familles depuis un ancêtre lointain jusqu'à la racine de l'arbre, d'autres qu'il faut remonter de la personne actuelle et montrer tous ses ancêtres et leurs familles. D'autres encore pensent à un tableau, à des éditions en mode texte.</para>
|
||||
|
||||
<para>
|
||||
&app; peut faire tout cela, en des présentations très variées ainsi que d'autres encore.
|
||||
Plus généralement, le principe de greffons (plugins) permet aux utilisateurs
|
||||
et donc à vous-même, de créer vos propres greffons qui créent vos propres rapports,
|
||||
états ou sorties papier pour aider vos recherches.
|
||||
<para>
|
||||
&app; peut faire tout cela, en des présentations très variées ainsi que d'autres encore. Plus généralement, le principe de greffons (plugins) permet aux utilisateurs et donc à vous-même, de créer vos propres greffons qui créent vos propres rapports, états ou sorties papier pour aider vos recherches.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Quel est le format des sorties d'impression de &app; ? </term>
|
||||
<varlistentry><term>Dans quels formats &app; peut-il produire ses rapports? </term>
|
||||
<listitem><para>
|
||||
Les sorties de texte pour impression sont disponibles dans les formats HTML, PDF, AbiWord,
|
||||
KWord, LaTeX, RTF, et OpenOffice. Les impressions graphiques (dessins et diagrammes)
|
||||
sont disponibles en formats PostScript, PDF, SVG, OpenOffice et GraphViz.
|
||||
Les formats de texte disponibles dans les formats sont : HTML, PDF, AbiWord, KWord, LaTeX, RTF, et OpenOffice. Les impressions graphiques (dessins et diagrammes) sont disponibles en formats PostScript, PDF, SVG, OpenOffice et GraphViz.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>&app; est-il compatible avec Internet ? </term>
|
||||
<listitem><para>
|
||||
&app; peut garder des liens web et envoyer votre navigateur web vers eux.
|
||||
Il peut importer des données que vous téléchargez depuis le Réseau. Il
|
||||
peut exporter des données que vous y enverrez. Il connait les formats
|
||||
de fichiers courants (JPEG, PNG et GIF pour les images, MP3, OGG et
|
||||
WAV pour les sons, QuickTime, MPEG et AVI pour les video). A part cela,
|
||||
il n'y a pas grand chose d'autre qu'un généalogiste puisse faire avec
|
||||
Internet :-) .
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Puis-je créer une édition, un filtre ou un machin ? </term>
|
||||
<listitem><para>
|
||||
Oui. Il y a beaucoup de façons de personnaliser &app;. Vous pouvez
|
||||
modifier ou créer les modèles d'impressions. Vous avez ainsi le contrôle des
|
||||
polices de caractères, des couleurs et d'éléments de la disposition
|
||||
des impressions. Vous pouvez aussi utiliser les réglages de &app;
|
||||
pour choisir les informations servant à préparer l'impression.
|
||||
En plus de tout cela, vous pouvez créer vos propres filtres.
|
||||
Cela sert à sélectionner des individus selon vos besoins.
|
||||
Vous pouvez combiner ces filtres pour constituer des filtres
|
||||
plus élaborés. Enfin, vous pouvez créer vos greffons. Ils peuvent
|
||||
servir à définir des rapports, des outils d'aide à la recherche
|
||||
ou encore des filtres de lecture ou d'écriture de données. Cela
|
||||
demande la connaissance de la programmation en Python.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Quels standards &app; supporte-t'il ? </term>
|
||||
<listitem><para>
|
||||
L'amusant à propos des standards est qu'on ne risque pas d'en manquer :-).
|
||||
&app; supporte les variantes suivantes de Gedcom :
|
||||
GEDCOM5.5, Brother's Keeper, Family Origins, Familty Tree Maker, Ftree,
|
||||
GeneWeb, Legacy, Personal Ancestral File, Pro-Gen, Reunion et
|
||||
Visual Genealogie.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Quelle est la taille maximale d'une base de données
|
||||
&app; ? </term>
|
||||
<listitem><para>
|
||||
&app; n'a pas de limite stricte sur la taille de sa base de données.
|
||||
Il y a seulement des limites pratiques. Pour le moment, &app; charge
|
||||
ses données en mémoire, qui devient alors la ressource critique.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Combien de personnes peut-on mettre dans une base
|
||||
de données &app; ? </term>
|
||||
<listitem><para>
|
||||
Nous avons expérimenté que &app; tient jusqu'environ 15000 personnes
|
||||
sur une configuration moyenne. Encore une fois, cela dépend en fait
|
||||
de la taille mémoire du système.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Pourquoi &app; est-il si lent ? </term>
|
||||
<listitem><para>
|
||||
Si &app; vous parait si lent, c'est probablement que vous avez une
|
||||
grosse base de données. Pour le moment, &app; charge les données en
|
||||
mémoire. En conséquence, les temps de réponse s'allongent pour de gros
|
||||
volumes de données. En particulier, le résultat sera catastrophique
|
||||
si les données de &app; occasionnent de la pagination (swap).
|
||||
</para>
|
||||
<para>
|
||||
Ceci sera traité dans la première version stable après le version 1.0 .
|
||||
En attendant, ajouter de la mémoire peut tout changer mais nous sommes
|
||||
conscients que ce n'est pas la meilleure façon de traiter le problème.
|
||||
Si vous souhaitez aider à l'implémentation avec une vraie base de donnée,
|
||||
n'hésitez pas à nous contacter par courrier électronique à
|
||||
<ulink url="mailto:gramps-devel@lists.sf.net"
|
||||
type="mailto">gramps-devel@lists.sf.net</ulink>
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Ma base de données est vraiment très grosse.
|
||||
Y-a t'il un moyen de la charger sans tout charger en mémoire ? </term>
|
||||
<listitem><para>
|
||||
Actuellement, il n'y a pas d'autre moyen. C'est notre plus grosse
|
||||
priorité après la finition de la version 1.0 . L'utilisation d'une
|
||||
vraie base de données se fera dans la prochaine version stable (1.2),
|
||||
qui améliorera grandement les performances, tant en vitesse
|
||||
d'exécution qu'en empreinte mémoire.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Je veux relancer le dialogue d'installation (druid). Comment fais-je ? </term>
|
||||
<listitem><para>
|
||||
&app; gère un état dans les données de configuration GNOME pour mémoriser le fait
|
||||
que le dialogue d'installation a été exécuté. Ceci peut se faire par la commande
|
||||
suivante :</para>
|
||||
<para><command>gconftool-2 -u /apps/gramps/startup</command>
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Pourquoi les caractères non latins sont-ils mal
|
||||
affichés dans les impressions PDF ou Postscript ? </term>
|
||||
<listitem><para>
|
||||
C'est un problème connu. Le Postscript (et le PDF) utilisent des
|
||||
polices de caractères internes qui correspondent bien au jeu de caractère
|
||||
latin-1. En principe, on pourrait utiliser n'importe quel police de caractères
|
||||
mais il faudrait l'embarquer dans le fichier. C'est délicat parce que
|
||||
chaque système gère à sa façon les polices et leur définition. </para>
|
||||
|
||||
<para>
|
||||
Ce devrait être réglé quand nous serons passés avec Gnome-print.
|
||||
Entre temps, une solution de contournement est de générer des éditions
|
||||
en format OpenOffice.org, puis de générer le PDF depuis OpenOffice.org.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Pourquoi ne peut-on pas ajouter, enlever ou modifier
|
||||
des colonnes aux listes dans les Vues Individus et Famille ? </term>
|
||||
<listitem><para>
|
||||
Ceci sera traité quand l'erreur dans TreeModelSort de pygtk sera corrigée
|
||||
(voir <ulink url="http://bugzilla.gnome.org/show_bug.cgi?id=125172"
|
||||
type="http">http://bugzilla.gnome.org/show_bug.cgi?id=125172</ulink>
|
||||
pour les détails).
|
||||
Dès que la correction sera validée et mise dans pygtk, nous ajouterons
|
||||
la capacité d'ajouter, retirer et éditer des colonnes avec tri.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Je souhaiterais contribuer à &app; en écrivant
|
||||
mon édition favorite. Comment fais-je ? </term>
|
||||
<listitem><para>
|
||||
La façon la plus simple pour écrire de nouveaux rapports, filtres
|
||||
ou outils est d'en copier un qui existe déjà puis de le modifier.
|
||||
Si cela vous convient, tant mieux ! Si votre idée ne rentre
|
||||
dans la logique d'aucun outil existant, le <ulink
|
||||
url="http://gramps.sourceforge.net/phpwiki/index.php/GrampsDevelopersPage"
|
||||
type="http">lien</ulink> peut vous aider à écrire un greffon en partant de rien.
|
||||
|
||||
Si vous avez besoin de plus d'aide, ou si vous voulez discuter de
|
||||
votre idée avec nous, n'hésitez pas à nous contacter par messagerie
|
||||
électronique à <ulink
|
||||
url="mailto:gramps-devel@lists.sf.net"
|
||||
type="mailto">gramps-devel@lists.sf.net</ulink>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Pour tester votre réalisation, vous pouvez sauver le greffon dans le répertoire
|
||||
<replaceable>$HOME/.gramps/plugins</replaceable> où il devrait être
|
||||
trouvé par &app; et chargé lors du lancement.
|
||||
Un greffon bien écrit s'enregistre lui-même dans &app; et crée son
|
||||
entrée dans un menu.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Si votre greffon vous satisfait et que vous voulez contribuer vers
|
||||
le projet &app;, vous êtes le bienvenu : contactez-nous à
|
||||
<ulink url="mailto:gramps-devel@lists.sf.net"
|
||||
type="mailto">gramps-devel@lists.sf.net</ulink>
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>J'ai trouvé une erreur et je veux qu'elle soit
|
||||
corrigée tout de suite ! Que puis-je faire ? </term>
|
||||
<varlistentry><term>&app; est-il compatible avec Internet?</term>
|
||||
<listitem><para>
|
||||
La meilleure chose à faire est de corriger l'erreur, puis d'envoyer
|
||||
la correction à
|
||||
<ulink url="mailto:gramps-devel@lists.sf.net"
|
||||
type="mailto">gramps-devel@lists.sf.net</ulink> :-)</para>
|
||||
|
||||
<para>
|
||||
Autrement, la meilleure chose ensuite est d'envoyer un bon
|
||||
rapport d'anomalie. Ceci peut se faire de deux façons différentes :
|
||||
(1) envoyez votre rapport à
|
||||
<ulink url="mailto:gramps-bugs@lists.sf.net"
|
||||
type="mailto">gramps-bugs@lists.sf.net</ulink>
|
||||
ou (2) enregistrez votre rapport avec les système de suivi d'erreur à
|
||||
<ulink url="http://sf.net/tracker/?group_id=25770" type="http">
|
||||
http://sf.net/tracker/?group_id=25770&atid=385137</ulink>
|
||||
(cette fonction est aussi disponible en choisissant
|
||||
<menuchoice><guisubmenu>Aide</guisubmenu><guimenuitem>Signaler une erreur
|
||||
</guimenuitem></menuchoice> dans le menu principal de &app;). </para>
|
||||
|
||||
<para>Un bon rapport d'anomalie devrait comprendre : </para>
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para>
|
||||
La version de &app; que vous utilisez (disponible par l'entrée de menu
|
||||
<menuchoice><guisubmenu>Aide</guisubmenu>
|
||||
<guimenuitem>A propos</guimenuitem></menuchoice>).
|
||||
&app; cpeut garder des liens web et envoyer votre navigateur web vers eux. Il peut importer des données que vous téléchargez depuis le Réseau. Il peut exporter des données que vous y enverrez. Il connait les formats de fichiers courants (JPEG, PNG et GIF pour les images, MP3, OGG et WAV pour les sons, QuickTime, MPEG et AVI pour les video). A part cela, il n'y a pas grand chose d'autre qu'un généalogiste puisse faire avec Internet :-) .
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<listitem><para>
|
||||
La langue d'utilisation de &app; (faites </para>
|
||||
<para><command>echo $LANG</command></para>
|
||||
<para>dans votre terminal de commande).
|
||||
<varlistentry><term>Puis-je créer une édition, un filtre ou un machin ?</term>
|
||||
<listitem><para>
|
||||
Oui. Il y a beaucoup de façons de personnaliser &app;. Vous pouvez modifier ou créer les modèles d'impressions. Vous avez ainsi le contrôle des polices de caractères, des couleurs et d'éléments de la disposition des impressions. Vous pouvez aussi utiliser les réglages de &app;
|
||||
pour choisir
|
||||
les informations servant à préparer l'impression. En plus de tout cela, vous pouvez créer vos propres filtres. Cela sert à sélectionner des individus selon vos besoins. Vous pouvez combiner ces filtres pour constituer des filtres plus élaborés. Enfin, vous pouvez créer vos greffons. Ils peuvent servir à définir des rapports, des outils d'aide à la recherche ou encore des filtres de lecture ou d'écriture de données. Cela demande la connaissance de la programmation en Python.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<listitem><para>
|
||||
Les symptomes indiquant que c'est effectivement une erreur.
|
||||
<varlistentry><term>Quels standards &app; supporte-t'il ?</term>
|
||||
<listitem><para>
|
||||
L'amusant à propos des standards est qu'on ne risque pas d'en manquer :-). &app; supporte les variantes suivantes de Gedcom : GEDCOM5.5, Brother's Keeper, Family Origins, Familty Tree Maker, Ftree, GeneWeb, Legacy, Personal Ancestral File, Pro-Gen, Reunion et Visual Genealogie.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<listitem><para>
|
||||
Tous les messages de trace, d'erreur ou avertissement
|
||||
qui ont été affichés dans le terminal ou dans une fenêtre de trace séparée.
|
||||
<varlistentry><term>Quelle est la taille maximale d'une base de données &app; ?</term>
|
||||
<listitem><para>
|
||||
&app; n'a pas de limite stricte sur la taille de sa base de données. Il y a seulement des limites pratiques. Pour le moment, &app;
|
||||
charge ses données en mémoire, qui devient alors la ressource critique.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</itemizedlist>
|
||||
<varlistentry><term>Combien de personnes peut-on mettre dans une base de données &app; ?</term>
|
||||
<listitem><para>
|
||||
Nous avons expérimenté que &app; tient jusqu'environ 15000 personnes sur une configuration moyenne. Encore une fois, cela dépend en fait de la taille mémoire du système
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<para>La plupart des erreurs peuvent être corrigées rapidement
|
||||
quand suffisamment d'information est fournie. Pour garantir
|
||||
la qualité de l'information, nous vous invitons à suivre
|
||||
vos rapports d'anomalie. En particulier, si vous enregistrez
|
||||
un rapport sur le système de suivi sf.net bug, PAR PITIE enregistrez-vous
|
||||
sur sf.net avant de soumettre votre rapport
|
||||
(enregistrez-vous sur un compte libre si vous n'en avez pas encore).
|
||||
Nous aurons ainsi un moyen de vous joindre si nous avons besoin de plus d'information.
|
||||
Si vous préférez enregistrer un rapport de façon anonyme, au moins
|
||||
surveillez souvent si votre page de rapport a quelque chose de nouveau,
|
||||
comme ce sera probablement le cas. </para>
|
||||
<varlistentry><term>Pourquoi &app; est-il si lent ?</term>
|
||||
<listitem><para> Essayez juste la version en cours, &appversion;.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<para>Si tout cela ne vous parait pas clair, suivez
|
||||
<ulink url="http://www.chiark.greenend.org.uk/~sgtatham/bugs.html"
|
||||
type="http">ce lien.</ulink>
|
||||
<varlistentry><term>Ma base de données est vraiment très grosse. Y-a t'il un moyen de la charger sans tout charger en mémoire ?</term>
|
||||
<listitem><para>
|
||||
&app; ne charge plus toutes les données en mémoire, ce qui lui permet de fonctionner avec une base de données beaucoup plus grande qu'avant.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Je veux relancer le dialogue d'installation (assistant). Comment faire ?</term>
|
||||
<listitem><para>
|
||||
&app; gère un état dans les données de configuration GNOME pour mémoriser le fait que le dialogue d'installation a été exécuté. Ceci peut se faire par la commande suivante :</para>
|
||||
|
||||
<para><command>gconftool-2 -u /apps/gramps/behavior/startup</command>
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Pourquoi est-ce que des caractères non-latins sont montrés comme ordures dans des rapports de PDF/ps?</term>
|
||||
<listitem><para> C'est une limitation des polices des formats de pdf. Pour imprimer le texte non-latin, utilisez l'impression de GNOME.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Pourquoi ne peut on pas modifier les colonnes dans la vue des Familles et des Individus ?</term>
|
||||
<listitem><para> Maintenant vous pouvez! Essayez juste la version en cours, &appversion;.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Je souhaiterais contribuer à &app; en écrivant mon rapport favoris. Comment faire ?</term>
|
||||
<listitem><para>
|
||||
La façon la plus simple pour écrire de nouveaux rapports, filtres ou outils est d'en copier un qui existe déjà puis de le modifier. Si cela vous convient, tant mieux ! Si votre idée ne rentre dans la logique d'aucun outil existant, <ulink
|
||||
url="http://gramps.sourceforge.net/phpwiki/index.php/GrampsDevelopersPage"
|
||||
type="http">ce lien</ulink>peut fournir de l'aide en écrivant votre propre plugin à partir de zéro. Si vous avez besoin de plus d'aide ou vous voudriez discuter de votre idée avec nous, n'hésitez à nous contacter <ulink
|
||||
url="mailto:gramps-devel@lists.sf.net"
|
||||
type="mailto">gramps-devel@lists.sf.net</ulink>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Pour tester votre réalisation, vous pouvez sauver le plugin dans le répertoire
|
||||
<replaceable>$HOME/.gramps/plugins</replaceable> où il devrait être trouvé par &app; et chargé lors du lancement. Un plugin bien écrit s'enregistre lui-même dans &app; et crée son entrée dans un menu.</para>
|
||||
|
||||
<para>
|
||||
Si votre plugin vous satisfait et que vous voulez contribuer vers le projet &app;, vous êtes le bienvenu : contactez-nous à <ulink url="mailto:gramps-devel@lists.sf.net"
|
||||
type="mailto">gramps-devel@lists.sf.net</ulink>
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
|
||||
<varlistentry><term>J'ai trouvé une erreur et je veux qu'elle soit corrigée tout de suite! Que puis-je faire ?</term>
|
||||
<listitem><para>
|
||||
La meilleure chose à faire est de corriger l'erreur, puis d'envoyer la correction
|
||||
<ulink url="mailto:gramps-devel@lists.sf.net"
|
||||
type="mailto">gramps-devel@lists.sf.net</ulink> :-)</para>
|
||||
|
||||
<para>Autrement, la meilleure chose ensuite est d'envoyer un bon rapport d'anomalie. Ceci peut se faire de deux façons différentes : (1) envoyez votre rapport à
|
||||
<ulink url="mailto:gramps-bugs@lists.sf.net"
|
||||
type="mailto">gramps-bugs@lists.sf.net</ulink>
|
||||
ou (2) enregistrez votre rapport avec les système de suivi d'erreur à
|
||||
<ulink url="http://sf.net/tracker/?group_id=25770" type="http">
|
||||
http://sf.net/tracker/?group_id=25770&atid=385137</ulink>
|
||||
(cette fonction est également disponible sous
|
||||
<menuchoice><guisubmenu>Aide</guisubmenu><guimenuitem>Signaler une erreur</guimenuitem></menuchoice> ans le menu principal de &app;). </para>
|
||||
|
||||
<para>Un bon rapport d'anomalie devrait comprendre : </para>
|
||||
|
||||
<itemizedlist>
|
||||
|
||||
<listitem><para>
|
||||
La version de &app; que vous utilisez <menuchoice><guisubmenu>Aide</guisubmenu>
|
||||
<guimenuitem>A propos</guimenuitem></menuchoice> menu item).
|
||||
</para></listitem>
|
||||
|
||||
<listitem><para>
|
||||
La langue d'utilisation de &app; (faites </para>
|
||||
<para><command>echo $LANG</command></para>
|
||||
<para>dans votre terminal).
|
||||
</para></listitem>
|
||||
|
||||
<listitem><para>
|
||||
Les symptomes indiquant que c'est effectivement une erreur.
|
||||
</para></listitem>
|
||||
|
||||
<listitem><para>
|
||||
Tous les messages de trace, d'erreur ou avertissement qui ont été affichés dans le terminal ou dans une fenêtre de trace séparée.
|
||||
</para></listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
<para>La plupart des erreurs peuvent être corrigées rapidement quand suffisamment d'information est fournie. Pour garantir la qualité de l'information, nous vous invitons à suivre vos rapports d'anomalie. En particulier, si vous enregistrez un rapport sur le système de suivi sf.net bug, PAR PITIE enregistrez-vous sur sf.net avant de soumettre votre rapport
|
||||
(enregistrez-vous sur un compte libre si vous n'en avez pas encore). Nous aurons ainsi un moyen de vous joindre si nous avons besoin de plus d'information. Si vous préférez enregistrer un rapport de façon anonyme, au moins surveillez souvent si votre page de rapport a quelque chose de nouveau, comme ce sera probablement le cas.</para>
|
||||
|
||||
<para>Si tout cela ne vous parait pas clair, suivez
|
||||
<ulink url="http://www.chiark.greenend.org.uk/~sgtatham/bugs.html"
|
||||
type="http">ce lien.</ulink>
|
||||
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Il est évident que &app; doit absolument
|
||||
devenir une application (client-serveur/web/PHP/weblog/Javascript/C++/distribuée/KDE/Motif/Tcl/Win32/C#/Je-ne-sais-pas-encore-quoi).
|
||||
Quand cela va-t'il se faire ? </term>
|
||||
<varlistentry><term>Il est évident que &app; doit absolument devenir une application (clientserveur/ web/PHP/weblog/Javascript/C++/ distribuée/KDE/Motif/Tcl/Win32/C#/Jene- sais-pas-encore-quoi). Quand cela va-t'il se faire ?</term>
|
||||
<listitem><para>
|
||||
Le meilleur moyen que cela se fasse est de le faire vous-même.
|
||||
Comme &app; est libre et open-source, personne ne vous interdit
|
||||
de prendre tout le code et de continuer le développement dans
|
||||
la direction qui vous convient. Vous devrez donner un autre nom
|
||||
à votre projet pour éviter les confusions avec la suite de &app;.
|
||||
Si vous voulez que le projet &app; vous fournisse des avis,
|
||||
de l'expertise, des outils ou n'importe quoi, nous serons heureux
|
||||
de coopérer avec votre projet, pour assurer la compatibilité
|
||||
ou bien des opérations de lecture-écriture de et vers le format
|
||||
de données de votre projet. </para>
|
||||
Le meilleur moyen que cela se fasse est de le faire vous-même. Comme
|
||||
&app; iest libre et open-source, personne ne vous interdit de prendre tout le code et de continuer le développement dans la direction qui vous convient. Vous devrez donner un autre nom à votre projet pour éviter les confusions avec la suite de &app;
|
||||
development. Si vous voulez que le projet &app; pvous fournisse des avis, de l'expertise, des outils ou n'importe quoi, nous serons heureux de coopérer avec votre projet, pour assurer la compatibilité ou bien des opérations de lecture-écriture de et vers le format de données de votre projet. </para>
|
||||
|
||||
<para>
|
||||
Cependant, si vous souhaitez que le projet &app; suive votre
|
||||
stratégie, vous devrez convaincre les développeurs de &app;
|
||||
que votre stratégie est bonne pour &app; et meilleure que
|
||||
celle prévue. </para>
|
||||
<para>
|
||||
Cependant, si vous souhaitez que le projet &app; suive votre stratégie, vous devrez convaincre les développeurs de &app; que votre stratégie est bonne pour &app; et meilleure que celle prévue.</para>
|
||||
|
||||
<para>
|
||||
TRUC : si les développeurs de &app; ne sont pas convaincus
|
||||
après trois messages envoyés à gramps-devel, peut-être vous feriez mieux
|
||||
d'aller seul plutôt qu'avec un groupe d'idiots qui ne
|
||||
peuvent pas comprendre votre génie :-) .
|
||||
<tip><para>
|
||||
si les développeurs de &app; ne sont pas convaincus après trois messages envoyés à gramps-devel, peut-être vous feriez mieux d'aller seul plutôt qu'avec un groupe d'idiots qui ne peuvent pas comprendre votre génie
|
||||
:-).
|
||||
|
||||
</para></listitem>
|
||||
</para></tip></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</sect2>
|
||||
</appendix>
|
||||
|
After Width: | Height: | Size: 8.2 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 9.4 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
After Width: | Height: | Size: 7.1 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 8.6 KiB |
|
After Width: | Height: | Size: 8.1 KiB |
@@ -1,376 +1,365 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<appendix id="append-filtref">
|
||||
|
||||
<!--
|
||||
User Manual for Gramps - a GTK+/GNOME based genealogy program
|
||||
Copyright (C) 2003 Alexander Roitman
|
||||
Permission is granted to copy, distribute and/or modify this
|
||||
document under the terms of the GNU Free Documentation
|
||||
License (GFDL), Version 1.1 or any later version published
|
||||
by the Free Software Foundation with no Invariant Sections,
|
||||
no Front-Cover Texts, and no Back-Cover Texts.
|
||||
A copy of the license is included in the file COPYING-DOCS
|
||||
distributed with this manual.
|
||||
User Manual for Gramps - a GTK+/GNOME based genealogy program
|
||||
|
||||
Copyright (C) 2003-2005 Alexander Roitman
|
||||
|
||||
This document 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 document 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$ -->
|
||||
<!-- =============== Appendices Subsection ================ -->
|
||||
<sect2 id="append-filtref">
|
||||
<title>Documentation de référence sur les règles de filtrage</title>
|
||||
<para>Cette annexe décrit les fonctions de filtrage actuellement définies
|
||||
dans &app;. Ces règles sont disponibles quand vous créez des filtres
|
||||
personnalisés. Elles sont ici présentées par catégories.
|
||||
|
||||
<title>Les règles de filtrage</title>
|
||||
<para>Cette annexe décrit les fonctions de filtrage actuellement définies dans &app; (voir <xref linkend="tools-util-cfe"/>. Ces règles sont présentées ici par catégories.
|
||||
</para>
|
||||
|
||||
<!-- =============== Appendices Sub-subsection ================ -->
|
||||
<sect3 id="filtref-general">
|
||||
<sect1 id="filtref-general">
|
||||
<title>Filtres généraux</title>
|
||||
<para>Cette catégorie comprend les fonctions les plus générales : </para>
|
||||
<para>Cette catégorie comprend les fonctions les plus générales :</para>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term>A un enregistrement complet</term>
|
||||
<listitem><para> Cette règle accepte toutes les personnes
|
||||
dont l'enregistrement est marqué comme complet. Pour le moment,
|
||||
la complétude de l'enregistrement est marquée par le chercheur
|
||||
dans le dialogue <guilabel>Modifie Personne</guilabel>.
|
||||
<listitem><para>
|
||||
|
||||
Cette règle accepte toutes les personnes dont l'enregistrement est marqué comme complet. Pour le moment, la complétude de l'enregistrement est marquée par le chercheur dans le dialogue Modifie Personne.
|
||||
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Tout le monde</term>
|
||||
<listitem><para> Cette fonction accepte toutes les personnes de la base de données.
|
||||
Elle n'est pas très utile seule sauf pour tester. Par contre, elle
|
||||
sert en combinaison avec d'autres fonctions.
|
||||
<varlistentry><term>Individus ayant des noms incomplets</term>
|
||||
<listitem><para> Cette règle sélectionne toutes les personnes ayant des noms incomplets.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Individus marqués</term>
|
||||
<listitem><para> Cette règle sélectionne toutes les personnes qui sont sur la liste de signet.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Noms qui contiennent une chaîne</term>
|
||||
<listitem><para> Cette fonction sélectionne toutes les personnes
|
||||
dont l'identité contient la chaîne donnée. Par exemple,
|
||||
Jacques Dupont, Jean Dupond et seront sélectionnés par cette
|
||||
fonction, utilisée avec la valeur "pon".
|
||||
<listitem><para> Cette fonction sélectionne toutes les personnes dont l'identité contient la chaîne donnée. Par exemple, Jacques Dupont, Jean Dupond seront sélectionnés par cette fonction, utilisée avec la valeur "pon".
|
||||
Des chaînes séparées peuvent être utilisées pour le prénom, le nom de famille, le suffixe et le titre. La fonction sélectionne un individu quand toutes les chaînes non vides font partie du nom d'une personne. Si vous voulez utiliser une seule valeur, laissez les autres vides.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Tout le monde</term>
|
||||
<listitem><para> Cette fonction accepte toutes les personnes de la base de données. Elle n'est pas très utile seule sauf pour tester. Par contre, elle sert en combinaison avec d'autres fonctions.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Individus probablement en vie</term>
|
||||
<listitem><para> Cette règle sélectionne toutes les personnes dont les dates n'indiquent pas leur mort et qui ne sont pas anormalement vieilles, jugeant à leurs données disponibles de naissance et aujourd'hui.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Individus dont le nom contient</term>
|
||||
<listitem><para>Cette règle sélectionne toute personne dont le nom contient la valeur indiquée, complètement ou en partie. Par exemple, Marta Ericsdotter sera trouvée par la règle sous-chaîne= "eric" pour le nom de famille.
|
||||
</para>
|
||||
|
||||
<para> Des chaînes séparées peuvent être utilisées pour
|
||||
le prénom, le nom de famille, le suffixe et le titre.
|
||||
La fonction sélectionne un individu quand toutes les chaînes
|
||||
non vides font partie du nom d'une personne. Si vous voulez
|
||||
utiliser une seule valeur, laissez les autres vides.
|
||||
<para>Des valeurs séparées peuvent être employées pour le nom indiqué, le nom de famille, le suffixe, et le titre. La règle est efficace si et seulement si, toutes les valeurs non vides (partiellement) sont assorties par le nom d'une personne. Pour employer juste une valeur, laissez les autres valeurs vides.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>A l'identifiant</term>
|
||||
<listitem><para> Cette fonction sélectionne la personne ayant
|
||||
exactement l'identifiant &app; donné.
|
||||
<listitem><para> Cette fonction sélectionne la personne ayant exactement l'identifiant &app; donné.
|
||||
</para>
|
||||
|
||||
<para> Vous pouvez entrer l'identifiant dans un champ texte,
|
||||
ou bien sélectionner une personne dans la liste en cliquant le bouton
|
||||
<guibutton>Select...</guibutton>. Dans ce cas, l'identifiant apparaîtra
|
||||
dans le champ de saisie de texte après la sélection.
|
||||
<para> Vous pouvez entrer l'identifiant dans un champ texte, ou bien sélectionner une personne dans la liste en cliquant le bouton
|
||||
<guibutton>Sélectionner...</guibutton>. Dans ce cas, l'identifiant apparaîtra dans le champ de saisie de texte après la sélection.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Est la personne de référence</term>
|
||||
<listitem><para> Cette règle sélectionne la personne de référence.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Individus marqués comme privés</term>
|
||||
<listitem><para> Cette règle sélectionne les personnes dont les informations sont marquées comme privés.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Est une femme</term>
|
||||
<listitem><para> Cette fonction sélectionne les femmes.
|
||||
<listitem><para> Cette fonction sélectionne les femmes.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Individus qui ont des images</term>
|
||||
<listitem><para> Cette règle sélectionne les personnes avec des images dans leurs galeries.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Individus sans date de naissance</term>
|
||||
<listitem><para> Cette règle sélectionne les personnes sans date de naissance.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Est un homme</term>
|
||||
<listitem><para> Ce filtre sélectionne les hommes.
|
||||
<listitem><para> Ce filtre sélectionne les hommes.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</sect3>
|
||||
</sect1>
|
||||
|
||||
<!-- =============== Appendices Sub-subsection ================ -->
|
||||
<sect3 id="filtref-event">
|
||||
<title>Fonctions sur évènements</title>
|
||||
<para>Cette catégorie regroupe les fonctions qui utilisent les évènements des personnes : </para>
|
||||
<sect1 id="filtref-event">
|
||||
<title> Filtres d'événements</title>
|
||||
<para>Cette catégorie regroupe les fonctions qui utilisent les évènements des personnes :</para>
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term>A la naissance</term>
|
||||
<listitem><para>Cette fonction sélectionne les personnes dont
|
||||
la naissance correspond aux valeurs données pour Date, Lieu, et Description.
|
||||
La correspondance est faite même quand l'évènement n'est que partiellement
|
||||
identique. Les correspondances sont insensibles à la casse des caractères.
|
||||
Par exemple, toute personne née en France sera sélectionnée par
|
||||
la valeur "fr" pour le lieu.
|
||||
</para>
|
||||
|
||||
<para> La règle sélectionne l'entrée si et seulement si toutes les
|
||||
valeurs non vides correspondent (partiellement) à la naissance
|
||||
de la personne. Si vous voulez sélectionner sur un seul champ,
|
||||
laissez les autres champs vides.
|
||||
<listitem><para> Cette fonction sélectionne les personnes dont la naissance correspond aux valeurs données pour Date, Lieu, et Description. La correspondance est faite même quand l'évènement n'est que partiellement identique.
|
||||
</para>
|
||||
<para> Les
|
||||
correspondances sont insensibles à la casse des caractères. Par exemple, toute personne née en France sera sélectionnée par la valeur "fr" pour le lieu. La règle sélectionne l'entrée si et seulement si toutes les valeurs non vides correspondent (partiellement) à la naissance de la personne. Si vous voulez sélectionner sur un seul champ, laissez les autres champs vides.
|
||||
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>A le décès</term>
|
||||
<listitem><para>Cette fonction sélectionne les personnes dont
|
||||
le décès correspond aux valeurs données pour Date, Lieu, et Description.
|
||||
La correspondance est faite même quand l'évènement n'est que partiellement
|
||||
identique. Les correspondances sont insensibles à la casse des caractères.
|
||||
Par exemple, toute personne décédée en France sera sélectionnée par
|
||||
la valeur "fr" pour le lieu.
|
||||
<varlistentry><term>Au décès</term>
|
||||
<listitem><para> Cette fonction sélectionne les personnes dont le décès correspond aux valeurs données pour Date, Lieu, et Description. La correspondance est faite même quand l'évènement n'est que partiellement identique. Les correspondances sont insensibles à la casse des caractères. Par exemple, toute personne décédée en France sera sélectionnée par la valeur "fr" pour le lieu.
|
||||
</para>
|
||||
|
||||
<para> La règle sélectionne l'entrée si et seulement si toutes les
|
||||
valeurs non vides correspondent (partiellement) à la naissance
|
||||
de la personne. Si vous voulez sélectionner sur un seul champ,
|
||||
laissez les autres champs vides.
|
||||
<para> La règle sélectionne l'entrée si et seulement si toutes les valeurs non vides correspondent (partiellement) à la naissance de la personne. Si vous voulez sélectionner sur un seul champ, laissez les autres champs vides.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>A la source</term>
|
||||
<listitem><para> Cette règle sélectionne les personnes dont les informations se rapportent à la source indiquée.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>A l'évènement personnel</term>
|
||||
<listitem><para>Cette fonction sélectionne les personnes dont
|
||||
un évènement personnel correspond aux valeurs données pour Date, Lieu, Type et Description.
|
||||
La correspondance est faite même quand l'évènement n'est que partiellement
|
||||
identique. Les correspondances sont insensibles à la casse des caractères.
|
||||
Par exemple, toute personne ayant obtenu un diplômee en France sera sélectionnée par
|
||||
la valeur "fr" pour le lieu.
|
||||
<listitem><para> Cette fonction sélectionne les personnes dont un évènement personnel correspond aux valeurs données pour Date, Lieu, Type et Description. La correspondance est faite même quand l'évènement n'est que partiellement identique. Les correspondances sont insensibles à la casse des caractères. Par exemple, toute personne ayant obtenu un diplômee en France sera sélectionnée par la valeur "fr" pour le lieu.
|
||||
</para>
|
||||
|
||||
<para> L'évènement personnel est sélectionné dans une liste déroulante.
|
||||
La règle sélectionne l'entrée si et seulement si toutes les
|
||||
valeurs non vides correspondent (partiellement) à un évènement
|
||||
de la personne. Si vous voulez sélectionner sur un seul champ,
|
||||
laissez les autres champs vides.
|
||||
<para> L'évènement personnel est sélectionné dans une liste déroulante. La règle sélectionne l'entrée si et seulement si toutes les valeurs non vides correspondent (partiellement) à un évènement de la personne. Si vous voulez sélectionner sur un seul champ, laissez les autres champs vides.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>A l'évènement familial</term>
|
||||
<listitem><para>Cette fonction sélectionne les personnes dont
|
||||
un évènement familial correspond aux valeurs données pour Date, Lieu, Type et Description.
|
||||
La correspondance est faite même quand l'évènement n'est que partiellement
|
||||
identique. Les correspondances sont insensibles à la casse des caractères.
|
||||
Par exemple, toute personne s'étant mariée en France sera sélectionnée par
|
||||
la valeur Mariage pour l'évènement et "fr" pour le lieu.
|
||||
<listitem><para> Cette fonction sélectionne les personnes dont un évènement familial correspond aux valeurs données pour Date, Lieu, Type et Description. La correspondance est faite même quand l'évènement n'est que partiellement identique. Les correspondances sont insensibles à la casse des caractères. Par exemple, toute personne s'étant mariée en France sera sélectionnée par la valeur Mariage pour l'évènement et "fr" pour le lieu.
|
||||
</para>
|
||||
|
||||
<para> L'évènement familial est sélectionné dans une liste déroulante.
|
||||
La règle sélectionne l'entrée si et seulement si toutes les
|
||||
valeurs non vides correspondent (partiellement) à un évènement
|
||||
de la famille de la personne. Si vous voulez sélectionner sur un seul champ,
|
||||
laissez les autres champs vides.
|
||||
<para> L'évènement familial est sélectionné dans une liste déroulante. La règle sélectionne l'entrée si et seulement si toutes les valeurs non vides correspondent (partiellement) à un évènement de la famille de la personne. Si vous voulez sélectionner sur un seul champ, laissez les autres champs vides.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Témoin</term>
|
||||
<listitem><para> Cette règle sélectionne les personnes qui sont présentes comme témoin. Si et seulement si le type d'événement (Individuel ou Familial) est indiqué, les événements de ce type seront recherchés.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Individus ayant des événements incomplets</term>
|
||||
<listitem><para> Cette règle recherche la date ou le lieu absent dans n'importe quel événement personnel.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term> Familles ayant des événements incomplets</term>
|
||||
<listitem><para> Cette règle recherche la date ou le lieu absent dans n'importe quel événement familial.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect3>
|
||||
</sect1>
|
||||
|
||||
<!-- =============== Appendices Sub-subsection ================ -->
|
||||
<sect3 id="filtref-family">
|
||||
<title>Filtres Familiaux</title>
|
||||
<para>Cette catégorie comprend les règles suivantes qui sélectionnent
|
||||
les personnes d'après leurs relations familiales : </para>
|
||||
<sect1 id="filtref-family">
|
||||
<title>Filtres familiaux</title>
|
||||
<para>Cette catégorie comprend les règles suivantes qui sélectionnent les personnes d'après leurs relations familiales :</para>
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term>Individus avec des enfants :</term>
|
||||
<listitem><para> Cette règle sélectionne les personnes avec des enfants.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Individus avec mariages multiples</term>
|
||||
<listitem><para> Cette règle sélectionne des personnes avec plus d'un conjoint.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Individus sans mariage</term>
|
||||
<listitem><para> Cette règle sélectionne des personnes sans conjoints.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Individus adoptés</term>
|
||||
<listitem><para> Cette règle sélectionne les personnes adoptées.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>A les relations</term>
|
||||
<listitem><para> Cette règle sélectionne les personnes
|
||||
possédant un type de relation, sélectionné dans le menu.
|
||||
On peut spécifier le nombre de relations et d'enfants en option.
|
||||
<listitem><para> Cette règle sélectionne des personnes avec une relation particulière. Le nombre de relations et le nombre d'enfants peuvent être indiqués.
|
||||
</para>
|
||||
|
||||
<para> La règle sélectionne l'entrée si et seulement si toutes les
|
||||
valeurs non vides correspondent (partiellement) à un évènement
|
||||
de la famille de la personne. Si vous voulez sélectionner sur un seul champ,
|
||||
laissez les autres champs vides.
|
||||
<para> La règle est efficace si, et seulement si, toutes les valeurs non vides (partiellement) correspondent. Pour employer juste une valeur, laissez les autres valeurs vides.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Est l'époux(se) d'un individu résultant du filtrage</term>
|
||||
<listitem><para> Cette règle sélectionne les personnes mariées
|
||||
à une personne choisie par un filtre.
|
||||
Le filtre est choisi par son nom dans un menu.
|
||||
<varlistentry><term>Est le conjoint résultant du filtrage</term>
|
||||
<listitem><para> Cette règle sélectionne des personnes mariées à un individu associé à un filtre. Le nom du filtre doit être choisi parmi le menu.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Est l'enfant d'un individu résultant du filtrage</term>
|
||||
<listitem><para> Cette règle sélectionne les personnes enfant
|
||||
d'une personne choisie par un filtre.
|
||||
Le filtre est choisi par son nom dans un menu.
|
||||
<varlistentry><term> Est un enfant résultant du filtrage</term>
|
||||
<listitem><para> Cette règle sélectionne les personnes pour qui l'un ou l'autre parent est associé à un filtre. Le nom du filtre doit être choisi parmi le menu.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Est le parent d'un individu résultant du filtrage</term>
|
||||
<listitem><para> Cette règle sélectionne les personnes parentes
|
||||
(père ou mère) d'une personne choisie par un filtre.
|
||||
Le filtre est choisi par son nom dans un menu.
|
||||
<varlistentry><term> Est un parent résultant du filtrage</term>
|
||||
<listitem><para> Cette règle sélectionne les personnes dont l'enfant est associé à un filtre. Le nom du filtre doit être choisi parmi le menu.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term> Est un enfant résultant du filtrage</term>
|
||||
<listitem><para> Cette règle sélectionne les personnes dont l'enfant de mêmes parents est associé à un filtre. Le nom du filtre doit être choisi parmi le menu.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect3>
|
||||
</sect1>
|
||||
|
||||
<!-- =============== Appendices Sub-subsection ================ -->
|
||||
<sect3 id="filtref-ancestral">
|
||||
<title>Filtres ascendants</title>
|
||||
<para>Cette catégorie comprend les règles suivantes qui sélectionnent
|
||||
les personnes d'après leurs relations d'ascendance avec d'autres personnes : </para>
|
||||
<sect1 id="filtref-ancestral">
|
||||
<title> Filtres ascendants</title>
|
||||
<para>Cette catégorie comprend les règles suivantes qui sélectionnent les personnes d'après leurs relations d'ascendance avec d'autres personnes :</para>
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term>Est l'ancêtre de</term>
|
||||
<listitem><para>Cette règle sélectionne les personnes ancêtres
|
||||
de la personne désignée. L'option Inclusif précise
|
||||
si la personne désignée est à considérer comme ancêtre
|
||||
d'elle-même, ce qui est utile pour construire des éditions.
|
||||
<listitem><para> Cette règle sélectionne les personnes ancêtres de la personne désignée. L'option Inclusif précise si la personne désignée est à considérer comme ancêtre d'elle-même, ce qui est utile pour construire des éditions.
|
||||
</para>
|
||||
|
||||
<para> Vous pouvez soit saisir l'identifiant dans une zone de saisie,
|
||||
soit sélectionner une personne dans la liste en cochant le bouton
|
||||
<guibutton>Sélectionner...</guibutton>. Dans ce cas, son identifiant
|
||||
apparaîtra dans la zone de saisie après la sélection.
|
||||
<para> Vous pouvez soit saisir l'identifiant dans une zone de saisie, soit sélectionner une personne dans la liste en cochant le bouton
|
||||
<guibutton>Sélectionner...</guibutton> . Dans ce cas, son identifiant apparaîtra dans la zone de saisie après la sélection.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Est l'ascendant d'un individu sur au moins N générations</term>
|
||||
<listitem><para>Cette règle sélectionne les personnes ancêtres
|
||||
de la personne désignée à au moins N générations d'écart.
|
||||
Par exemple, un écart de 2 sélectionnera les grands-parents, les
|
||||
arrière-grands-parents..., mais pas les parents de la personnes
|
||||
désignée.
|
||||
<listitem><para> Cette règle sélectionne les personnes ancêtres de la personne désignée à au moins N générations d'écart. Par exemple, un écart de 2 sélectionnera les grands-parents, les arrière-grands-parents..., mais pas les parents de la
|
||||
personnes désignée.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Est l'ascendant d'un individu sur moins de N générations</term>
|
||||
<listitem><para>Cette règle sélectionne les personnes ancêtres
|
||||
de la personne désignée à au plus N générations d'écart.
|
||||
Par exemple, un écart de 2 sélectionnera les parents et les grands-parents,
|
||||
mais pas les arrière-grands-parents... de la personnes
|
||||
désignée.
|
||||
</para></listitem>
|
||||
<listitem><para> Cette règle sélectionne les personnes ancêtres de la personne désignée à au plus N générations d'écart. Par exemple, un écart de 2 sélectionnera les parents et les grands-parents, mais pas les arrière-grands-parents... de la personnes désignée.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>A un ancêtre commun avec</term>
|
||||
<listitem><para> Cette règle sélectionne les personnes qui ont un ancêtre
|
||||
commun avec la personne désignée.
|
||||
<listitem><para> Cette règle sélectionne les personnes qui ont un ancêtre commun avec la personne désignée.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>A un ascendant commun avec les individus résultant du filtrage</term>
|
||||
<listitem><para> Cette règle sélectionne les personnes qui ont un ancêtre
|
||||
commun avec les personnes sélectionnées par un filtre.
|
||||
Le filtre est choisi par son nom dans un menu.
|
||||
<listitem><para> Cette règle sélectionne les personnes qui ont un ancêtre commun avec les personnes sélectionnées par un filtre. Le filtre est choisi par son nom dans un menu.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Est l'ascendant d'un individu résultant du filtrage</term>
|
||||
<listitem><para> Cette règle sélectionne les personnes qui sont ancêtres
|
||||
d'une des personnes sélectionnées par un filtre.
|
||||
Le filtre est choisi par son nom dans un menu.
|
||||
</para></listitem>
|
||||
<listitem><para> Cette règle sélectionne les personnes qui sont ancêtres d'une des personnes sélectionnées par un filtre. Le filtre est choisi par son nom dans un menu.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect3>
|
||||
</sect1>
|
||||
|
||||
<!-- =============== Appendices Sub-subsection ================ -->
|
||||
<sect3 id="filtref-descendant">
|
||||
<title>Filtres des Descendants</title>
|
||||
<para>Cette catégorie comprend les règles suivantes qui sélectionnent
|
||||
les personnes d'après leurs relations de descendance avec d'autres personnes : </para>
|
||||
<sect1 id="filtref-descendant">
|
||||
<title>Filtres descendants</title>
|
||||
<para>Cette catégorie comprend les règles suivantes qui sélectionnent les personnes d'après leurs relations de descendance avec d'autres personnes :</para>
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term>Est descendant(e) de</term>
|
||||
<listitem><para>Cette règle sélectionne les personnes qui descendent
|
||||
de la personne désignée. L'option Inclusif précise
|
||||
si la personne désignée est à considérer comme descendant
|
||||
d'elle-même, ce qui est utile pour construire des éditions.
|
||||
<listitem><para> Cette règle sélectionne les personnes qui descendent de la personne désignée. L'option Inclusif précise si la personne désignée est à considérer comme descendant d'elle-même, ce qui est utile pour construire des rapports.
|
||||
</para>
|
||||
|
||||
<para> Vous pouvez soit saisir l'identifiant dans une zone de saisie,
|
||||
soit sélectionner une personne dans la liste en cochant le bouton
|
||||
<guibutton>Sélectionner...</guibutton>. Dans ce cas, son identifiant
|
||||
apparaîtra dans la zone de saisie après la sélection.
|
||||
<para> Vous pouvez soit saisir l'identifiant dans une zone de saisie, soit sélectionner une personne dans la liste en cochant le bouton
|
||||
<guibutton>Sélectionner...</guibutton>.Dans ce cas, son identifiant apparaîtra dans la zone de saisie après la sélection.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Est descendant d'un individu sur au moins N générations</term>
|
||||
<listitem><para>Cette règle sélectionne les personnes qui descendent
|
||||
de la personne désignée à au moins N générations d'écart.
|
||||
Par exemple, un écart de 2 sélectionnera les petits-enfants, les
|
||||
arrière-petits-enfants..., mais pas les enfants de la personnes
|
||||
désignée.
|
||||
<listitem><para> Cette règle sélectionne les personnes qui descendent de la personne désignée à au moins N générations d'écart. Par exemple, un écart de 2 sélectionnera les petits-enfants, les arrière-petits-enfants..., mais pas les enfants de la personnes désignée.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Est descendant d'un individu sur moins de N générations</term>
|
||||
<listitem><para>Cette règle sélectionne les personnes qui descendent
|
||||
de la personne désignée à au plus N générations d'écart.
|
||||
Par exemple, un écart de 2 sélectionnera les enfants et les petits-enfants,
|
||||
mais pas les arrière-petits-enfants... de la personnes
|
||||
désignée.
|
||||
<listitem><para> Cette règle sélectionne les personnes qui descendent de la personne désignée à au plus N générations d'écart. Par exemple, un écart de 2 sélectionnera les enfants et les petits-enfants, mais pas les arrière-petits-enfants... de la personnes désignée.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Est descendant d'un individu résultant du filtrage</term>
|
||||
<listitem><para> Cette règle sélectionne les personnes qui descendent
|
||||
d'une des personnes sélectionnées par un filtre.
|
||||
Le filtre est choisi par son nom dans un menu.
|
||||
</para></listitem>
|
||||
<listitem><para> Cette règle sélectionne les personnes qui descendent d'une des personnes sélectionnées par un filtre. Le filtre est choisi par son nom dans un menu.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Est un membre de la famille descendante de</term>
|
||||
<listitem><para> Cette règle sélectione en plus des descendants directs
|
||||
de la personne désignée, ceux des époux(ses) des descendants directs.
|
||||
<listitem><para> Cette règle sélectione en plus des descendants directs de la personne désignée, ceux des époux(ses) des descendants directs.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect3>
|
||||
</sect1>
|
||||
|
||||
<!-- =============== Appendices Sub-subsection ================ -->
|
||||
<sect3 id="filtref-relat">
|
||||
<title>Filtres relationnels</title>
|
||||
<para>Cette catégorie comprend les règles suivantes qui sélectionnent
|
||||
les personnes d'après leurs relations : </para>
|
||||
<sect1 id="filtref-relat">
|
||||
<title> Filtres relationnels</title>
|
||||
<para>Cette catégorie comprend les règles suivantes qui sélectionnent les personnes d'après leurs relations :
|
||||
</para>
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term>Relation entre deux individus</term>
|
||||
<listitem><para> Cette règle sélectionne les ancêtres des deux personnes
|
||||
jusqu'à leur ancêtre commun s'il existe. Ceci donne la
|
||||
"liaison relationnelle" entre ces individus à travers leur(s)
|
||||
ancêtre(s) commun(s).
|
||||
</para>
|
||||
|
||||
<para> Vous pouvez soit saisir l'identifiant des personnes dans une zone de saisie,
|
||||
soit les sélectionner dans la liste en cochant leur bouton
|
||||
<guibutton>Sélectionner...</guibutton>. Dans ce cas, l'identifiant
|
||||
apparaîtra dans la zone de saisie après la sélection.
|
||||
<listitem><para> Cette règle sélectionne les ancêtres des deux personnes jusqu'à leur ancêtre commun s'il existe. Ceci donne la "liaison relationnelle" entre ces individus à travers leur(s) ancêtre(s) commun(s).
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect3>
|
||||
|
||||
<para> Vous pouvez soit saisir l'identifiant des personnes dans une zone de saisie, soit les sélectionner dans la liste en cochant leur bouton <guibutton>Sélectionner...</guibutton>.Dans ce cas, l'identifiant apparaîtra dans la zone de saisie après la sélection.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect1>
|
||||
|
||||
<!-- =============== Appendices Sub-subsection ================ -->
|
||||
<sect3 id="filtref-misc">
|
||||
<title>Filtres divers</title>
|
||||
<para>Cette catégorie comprend les règles suivantes qui n'appartiennent
|
||||
pas à une autre catégorie : </para>
|
||||
<sect1 id="filtref-misc">
|
||||
<title> Filtres divers</title>
|
||||
<para>Cette catégorie comprend les règles suivantes qui n'appartiennent pas aux autres catégories :</para>
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term>A l'attribut individuel</term>
|
||||
<listitem><para> Cette règle sélectionne les personnes
|
||||
qui ont l'attribut individuel avec une valeur donnée.
|
||||
L'attribut sur lequel porte la sélection est choisi dans un menu déroulant.
|
||||
La valeur désirée pour cet attribut est saisie dans une zone de texte.
|
||||
<listitem><para> Cette règle sélectionne les personnes qui ont l'attribut individuel avec une valeur donnée. L'attribut sur lequel porte la sélection est choisi dans un menu déroulant. La valeur désirée pour cet attribut est saisie dans une zone de texte.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>A l'attribut familial</term>
|
||||
<listitem><para> Cette règle sélectionne les personnes
|
||||
qui ont l'attribut familial avec une valeur donnée.
|
||||
L'attribut sur lequel porte la sélection est choisi dans un menu déroulant.
|
||||
La valeur désirée pour cet attribut est saisie dans une zone de texte.
|
||||
<listitem><para> Cette règle sélectionne les personnes qui ont l'attribut familial avec une valeur donnée. L'attribut sur lequel porte la sélection est choisi dans un menu déroulant. La valeur désirée pour cet attribut est saisie dans une zone de texte.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Correspond au filtre suivant</term>
|
||||
<listitem><para> Cette règle sélectionne les personnes par un filtre.
|
||||
Le filtre est choisi par son nom dans un menu.
|
||||
<listitem><para> Cette règle sélectionne les personnes par un filtre. Le filtre est choisi par son nom dans un menu.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect3>
|
||||
</sect1>
|
||||
|
||||
</sect2>
|
||||
</appendix>
|
||||
@@ -1,33 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<chapter id="gramps-getting-started">
|
||||
|
||||
<!--
|
||||
User Manual for Gramps - a GTK+/GNOME based genealogy program
|
||||
User Manual for Gramps - a GTK+/GNOME based genealogy program
|
||||
|
||||
Copyright (C) 2003 Alexander Roitman
|
||||
Permission is granted to copy, distribute and/or modify this
|
||||
document under the terms of the GNU Free Documentation
|
||||
License (GFDL), Version 1.1 or any later version published
|
||||
by the Free Software Foundation with no Invariant Sections,
|
||||
no Front-Cover Texts, and no Back-Cover Texts.
|
||||
A copy of the license is included in the file COPYING-DOCS
|
||||
distributed with this manual.
|
||||
Copyright (C) 2003-2005 Alexander Roitman
|
||||
|
||||
This document 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 document 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$ -->
|
||||
|
||||
<!-- =========== Getting Started ============================== -->
|
||||
|
||||
<sect1 id="gramps-getting-started">
|
||||
<title>Initiation</title>
|
||||
<title>Commencer</title>
|
||||
|
||||
<para>Ce chapitre fournit les informations les plus basiques sur &app;.</para>
|
||||
|
||||
<!-- ================ Getting Started Subsection ====== -->
|
||||
<sect2 id="gramps-start">
|
||||
<title>Pour lancer gramps</title>
|
||||
<sect1 id="gramps-start">
|
||||
<title>Pour Lancer &app;</title>
|
||||
<para>Vous pouvez lancer &app; comme suit :</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><guimenu>Applications</guimenu> menu</term>
|
||||
<listitem><para>Choisissez <menuchoice><guisubmenu>Autres</guisubmenu>
|
||||
<listitem><para>Les menus peuvent changer selon votre distribution. Pour le bureau GNOME par défaut,
|
||||
<menuchoice><guisubmenu>Autre</guisubmenu>
|
||||
<guimenuitem>Gramps</guimenuitem></menuchoice>. </para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
@@ -35,63 +43,56 @@
|
||||
<listitem><para>Pour lancer &app; en ligne de commande, entrez
|
||||
<command>gramps</command>, puis <keycap>Entrée</keycap>.</para>
|
||||
|
||||
<para>Si vous voulez que &app; ouvre un ensemble de données
|
||||
lors de son lancement, spécifiez le fichier au lancement comme argument
|
||||
de la ligne de commande :</para>
|
||||
<para>Si vous voulez que &app; ouvre un ensemble de données lors de son lancement, spécifiez le fichier au lancement comme argument de la ligne de commande :</para>
|
||||
|
||||
<para>
|
||||
<command>gramps -i</command> <replaceable>chemin.ged</replaceable>
|
||||
<command>gramps</command> <filename>nom_du_fichier.grdb</filename>
|
||||
</para>
|
||||
|
||||
<para>où <replaceable>chemin.ged</replaceable> est le nom du fichier
|
||||
que vous voulez ouvrir ou importer. La documentation de référence
|
||||
des options en ligne de commande est dans <xref linkend="append-cmdline"/>.
|
||||
<para>ou <filename>nom_du_fichier.grdb</filename> est le nom du fichier que vous voulez ouvrir ou importer. La documentation de référence des options en ligne de commande est dans <xref linkend="append-cmdline"/>.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</sect2>
|
||||
</sect1>
|
||||
|
||||
<!-- ================ Getting Started Subsection ==== -->
|
||||
<sect2 id="run-1st-time">
|
||||
<title>La première utilisation de gramps</title>
|
||||
<sect1 id="run-1st-time">
|
||||
<title> La première utilisation de &app;</title>
|
||||
<para>
|
||||
La première fois que vous l'utilisez, GRAMPS affiche un
|
||||
dialogue de premier lancement. Suivez les directives qui vous guident
|
||||
à travers les sections
|
||||
<guilabel>Informations sur le chercheur</guilabel>, <guilabel>Formats de dates
|
||||
numériques</guilabel>, <guilabel>Utilisation d'autres calendriers</guilabel>,
|
||||
et <guilabel>extensions LDS</guilabel> . La plupart de ces dialogues
|
||||
sont simples et ne seront pas décrits ici.
|
||||
La première fois que vous l'utilisez, &app; affiche un dialogue de premier lancement.
|
||||
Suivez les directives qui vous guident à travers les sections
|
||||
<guilabel>Informations sur le chercheur</guilabel>, <guilabel>Formats de dates numériques</guilabel>,
|
||||
<guilabel>Utilisation d'autres calendriers</guilabel>,
|
||||
et <guilabel>extensions LDS</guilabel> La plupart de ces dialogues sont simples et ne seront pas décrits ici.
|
||||
</para>
|
||||
|
||||
<!-- ==== Figure: Getting Started Druid Window ==== -->
|
||||
<figure id="druid-fig">
|
||||
<title>Dialogue de premier lancement : Informations sur le chercheur en généalogie</title>
|
||||
<title>Dialogue de premier lancement : Informations sur le chercheur</title>
|
||||
<screenshot><mediaobject><imageobject><imagedata
|
||||
fileref="figures/researcher.png" format="PNG"/></imageobject>
|
||||
<textobject>
|
||||
<phrase>Affiche le dialogue d'information sur le chercheur en généalogie. </phrase>
|
||||
<phrase>La fenêtre d'informations sur le chercheur</phrase>
|
||||
</textobject></mediaobject></screenshot></figure>
|
||||
<!-- ==== End of Figure ==== -->
|
||||
|
||||
<para>Saisissez vos informations personnelles dans les champs
|
||||
de texte. &app; vous demande ces données uniquement pour pouvoir créer
|
||||
des fichiers Gedcom valides. Ceux-ci décrivent le créateur du fichier.
|
||||
Si vous le souhaitez, vous pouvez tout laisser à blanc mais les fichiers
|
||||
Gedcom créés seront alors incorrects.
|
||||
<para>Saisissez vos informations personnelles dans les champs de texte.
|
||||
&app; vous demande ces données uniquement pour pouvoir créer des fichiers Gedcom valides.
|
||||
Ceux-ci décrivent le créateur du fichier.
|
||||
Si vous le souhaitez, vous pouvez tout laisser en blanc mais les fichiers Gedcom créés seront
|
||||
alors incorrects.
|
||||
</para>
|
||||
|
||||
<para>Ces informations peuvent être saisies plus tard dans le dialogue
|
||||
<guilabel>Préférences</guilabel>, dans la catégorie
|
||||
<guilabel>Usage</guilabel> , sous le choix
|
||||
<guilabel>Recherche d'information/Information sur le chercheur en généalogie</guilabel>.
|
||||
</para></sect2>
|
||||
<para>Ces informations peuvent être saisies plus tard dans le
|
||||
dialogue <guilabel>Préférences</guilabel> / <guilabel>chercheur</guilabel>.
|
||||
</para>
|
||||
|
||||
<!-- ================ Getting Started Sub-section -->
|
||||
<sect2 id="choose-db-start">
|
||||
<title>Choix d'une banque de données au démarrage</title>
|
||||
<para>Si &app; est lancé sans base de données à ouvrir,
|
||||
le dialogue suivant s'ouvrira pour vous le demander.</para>
|
||||
</sect1>
|
||||
|
||||
<!-- ================ Getting Started Subsection -->
|
||||
<sect1 id="choose-db-start">
|
||||
<title> Choix d'une base de données au démarrage</title>
|
||||
<para>Si &app; est lancé sans base de données à ouvrir, le dialogue suivant s'ouvrira pour vous le demander.</para>
|
||||
|
||||
<!-- ==== Figure: Open existing/new database window ==== -->
|
||||
<figure id="first-open">
|
||||
@@ -99,107 +100,58 @@
|
||||
<screenshot><mediaobject><imageobject><imagedata
|
||||
fileref="figures/first-open.png" format="PNG"/></imageobject>
|
||||
<textobject>
|
||||
<phrase>Présente le dialogue d'ouverture d'une base de données. </phrase>
|
||||
<phrase>L'ouverture d'une base de données</phrase>
|
||||
</textobject></mediaobject></screenshot></figure>
|
||||
<!-- ==== End of Figure ==== -->
|
||||
|
||||
<para>Si vous voulez ouvrir une base existante, cochez le bouton radio du haut
|
||||
puis le bouton <guibutton>OK</guibutton> . Il vous sera alors demandé le nom
|
||||
d'une base existante à ouvrir. Au contraire, si vous voulez partir en créant
|
||||
une base vide, sélectionnez Créer une nouvelle base XML. </para>
|
||||
<para>Si vous voulez ouvrir une base existante, cochez le bouton radio du haut puis le bouton OK . Il vous sera alors demandé le nom d'une base existante à ouvrir. Au contraire, si vous voulez partir en créant une base vide, sélectionnez Créer une nouvelle base</para>
|
||||
|
||||
<para>NOTE : quand vous partez avec une base de données nouvelle, vous devez
|
||||
choisir un <replaceable>REPERTOIRE</replaceable> vide et
|
||||
<replaceable>NON UN FICHIER</replaceable>. Cela créera un répertoire vide
|
||||
si besoin est. Le répertoire que vous donnez servira à &app; pour ranger
|
||||
le fichier de données <replaceable>data.gramps</replaceable> et éventuellement les
|
||||
copies des objets multimedia. Ce répertoire sera mis à jour par &app;
|
||||
lors de chaque sauvegarde de la base de données. </para>
|
||||
<note id="file-notdir-note">
|
||||
<title>Choix du fichier</title>
|
||||
<para>
|
||||
À la différence de la version 1.0.X de &app;, cette version n'exige pas de choisir un dossier pour la base de données. Choisissez juste un Nom de fichier, comme dans n'importe quelle autre application.
|
||||
</para>
|
||||
</note>
|
||||
|
||||
<para>NOTE : quand vous ouvrez une base de données existantes, spécifiez
|
||||
un <replaceable>REPERTOIRE</replaceable> et
|
||||
<replaceable>NON UN FICHIER</replaceable>. Le répertoire que vous voulez
|
||||
ouvrir doit contenir le fichier de données <replaceable>data.gramps</replaceable>
|
||||
et éventuellement les copies d'objets multimedia. Un tel répertoire est créé
|
||||
par &app; quand vous créez une base vide et est mis à jour lors de chaque
|
||||
sauvegarde. </para>
|
||||
|
||||
</sect2>
|
||||
</sect1>
|
||||
|
||||
<!-- ================ Getting Started Sub-subsection -->
|
||||
<!--
|
||||
<sect3 id="zodb-support">
|
||||
<title>Support optionnel du format ZODB</title>
|
||||
|
||||
<para>Dans le cas où StandaloneZODB ou bien Zope sont installés sur votre système,
|
||||
&app; vous proposera en plus la possibilité de créer une base ZODB nouvelle.
|
||||
Vous pouvez alors choisir de créer une base nouvelle au format XML ou ZODB.
|
||||
Chaque format a ses avantages et ses inconvénients. </para>
|
||||
|
||||
<para>XML signifie eXtensible Markup Language et conserve les données
|
||||
dans une forme structurée, lisible en clair. En cas de besoin, il peut être
|
||||
facilement analysé par d'autres programmes. Il ne conserve que les données
|
||||
"pures" (sans index par exemple). Son point faible est le coût de
|
||||
traitement plus lourd de gros fichiers de données. </para>
|
||||
|
||||
<para>ZODB signifie "Zope Object Database" et fournit toutes les capacités
|
||||
d'une base de données. Les fichiers ZODB ne peuvent être lus simplement.
|
||||
Ils comprennent des données supplémentaires pour mieux traiter de grandes
|
||||
quantités de données. ZODB est nettement plus rapide pour
|
||||
des ensembles de données de plusieurs milliers de personnes. </para>
|
||||
|
||||
<para>Dire quel format de données est le meilleur est difficile dans l'absolu.
|
||||
Si vous commencez vos recherches, une base XML vous conviendra probablement.
|
||||
Par contre, si vous avez des milliers de personnes dans vos données, vous serez
|
||||
probablement mieux servis avec ZODB. </para>
|
||||
|
||||
</sect3>
|
||||
</sect2>
|
||||
-->
|
||||
<!-- ================ Getting Started Subsection ==== -->
|
||||
<sect2 id="get-help">
|
||||
<title>Avoir de l'aide</title>
|
||||
<para> Les possibilités suivantes vous sont toujours accessibles à partir du menu
|
||||
<menuchoice><guimenu>Aide</guimenu></menuchoice> : </para>
|
||||
<sect1 id="get-help">
|
||||
<title> Obtenir de l'Aide</title>
|
||||
<para> Les possibilités suivantes vous sont toujours accessibles à partir du menu <menuchoice><guimenu>Aide</guimenu></menuchoice></para>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term>Manuel utilisateur</term>
|
||||
<listitem><para> Ce choix vous permet de lire ce manuel dans le navigateur
|
||||
d'aide. </para></listitem>
|
||||
<listitem><para> Ce choix vous permet de lire ce manuel dans le navigateur d'aide.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>FAQ</term>
|
||||
<listitem><para> Ce choix vous donne accès à la Foire Aux Questions
|
||||
de &app; dans le navigateur web. </para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>GRAMPS page d'accueil</term>
|
||||
<listitem><para> Ce choix ouvre la page d'accueil de &app; dans votre navigateur
|
||||
web. </para></listitem>
|
||||
<varlistentry><term>FAQ</term>
|
||||
<listitem><para> Ce choix vous donne accès à la Foire Aux Questions de &app; dans le navigateur web.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Listes de diffusion GRAMPS</term>
|
||||
<listitem><para> Ce choix envoie votre navigateur web vers les archives
|
||||
des listes de diffusion de &app; . </para></listitem>
|
||||
<varlistentry><term>La page d'accueil de &app;</term>
|
||||
<listitem><para> Ce choix ouvre la page d'accueil de &app; dans votre navigateur web.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Rapporter une anomalie</term>
|
||||
<listitem><para> Ce choix vous permet d'enregistrer un rapport d'anomalie sur &app;
|
||||
dans le système de suivi d'anomalies. </para></listitem>
|
||||
<varlistentry><term>Listes de diffusion &app;</term>
|
||||
<listitem><para> Ce choix envoie votre navigateur web vers les archives des listes de diffusion de &app; .</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Lister les greffons</term>
|
||||
<listitem><para> Ce choix liste les greffons chargés par &app;. </para></listitem>
|
||||
<varlistentry><term>Rapporter une erreur</term>
|
||||
<listitem><para> Ce choix vous permet d'enregistrer un rapport d'anomalie sur &app; dans le système de suivi d'anomalies.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Montrez le statut plugin </term>
|
||||
<listitem><para> Employez cet article pour montrer le statut de plugins chargés.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Ouvrir une base exemple</term>
|
||||
<listitem><para> Ce choix ouvre la base de données exemple installée avec
|
||||
&app;. Elle décrit des personnes fictives et sert à apprendre à utiliser
|
||||
&app;. </para></listitem>
|
||||
<listitem><para> Ce choix ouvre la base de données exemple installée avec &app;. Elle décrit des personnes fictives et sert à apprendre à utiliser &app;.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect2>
|
||||
</sect1>
|
||||
|
||||
</sect1> <!-- ================ End Getting Started ======================== -->
|
||||
</chapter>
|
||||
@@ -3,8 +3,8 @@
|
||||
<resource>
|
||||
<creator>Alex Roitman shura@alex.neuro.umn.edu</creator>
|
||||
<title>GRAMPS Manual</title>
|
||||
<date>2003-12-01</date>
|
||||
<version identifier="2.4" date="2003-12-01" description="GNOME2 Compliant GRAMPS Manual"/>
|
||||
<date>2005-10-16</date>
|
||||
<version identifier="2.6" date="2005-10-16" description="GNOME2 Compliant GRAMPS Manual"/>
|
||||
<subject category="GNOME|Applications"/>
|
||||
<description>User Manual for GRAMPS.</description>
|
||||
<type>User Manual</type>
|
||||
@@ -12,7 +12,6 @@
|
||||
<identifier url=""/>
|
||||
<language code="fr"/>
|
||||
<relation seriesid="aa15a444-5ed9-11d7-8329-d7319c90009c"/>
|
||||
<rights type="GNU FDL" license.version="1.1" license="http://www.gnu.org/licenses/fdl.html" holder="Alex Roitman"/>
|
||||
<rights type="GNU GPL" license.version="2" license="http://www.gnu.org/licenses/gpl.html" holder="Alex Roitman"/>
|
||||
</resource>
|
||||
</omf>
|
||||
|
||||
@@ -1,24 +1,47 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?yelp:chunk-depth 3?>
|
||||
<!--
|
||||
User Manual for Gramps - a GTK+/GNOME based genealogy program
|
||||
User Manual for Gramps - a GTK+/GNOME based genealogy program
|
||||
|
||||
Copyright (C) 2003 Alexander Roitman
|
||||
Copyright (C) 2003-2005 Alexander Roitman
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this
|
||||
document under the terms of the GNU Free Documentation
|
||||
License (GFDL), Version 1.1 or any later version published
|
||||
by the Free Software Foundation with no Invariant Sections,
|
||||
no Front-Cover Texts, and no Back-Cover Texts.
|
||||
A copy of the license is included in the file COPYING-DOCS
|
||||
distributed with this manual.
|
||||
This document 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 document 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$ -->
|
||||
|
||||
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
|
||||
|
||||
<!-- Information about the entities
|
||||
The legal.xml file contains legal information, there is no need to edit the file.
|
||||
Use the appversion entity to specify the version of the application.
|
||||
Use the manrevision entity to specify the revision number of this manual.
|
||||
Use the date entity to specify the release date of this manual.
|
||||
Use the app entity to specify the name of the application. -->
|
||||
|
||||
<!ENTITY legal SYSTEM "legal.xml">
|
||||
|
||||
<!ENTITY appversion "2.0.0">
|
||||
<!ENTITY manrevision "2.6">
|
||||
<!ENTITY date "May 2005">
|
||||
<!ENTITY app "GRAMPS">
|
||||
|
||||
<!-- The rest of the entities is simply the chapters of the manual.. -->
|
||||
|
||||
<!ENTITY preface SYSTEM "preface.xml">
|
||||
<!ENTITY getstart SYSTEM "getstart.xml">
|
||||
<!ENTITY mainwin SYSTEM "mainwin.xml">
|
||||
<!ENTITY usage SYSTEM "usage.xml">
|
||||
@@ -27,16 +50,9 @@
|
||||
<!ENTITY keybind SYSTEM "keybind.xml">
|
||||
<!ENTITY filtref SYSTEM "filtref.xml">
|
||||
<!ENTITY cmdline SYSTEM "cmdline.xml">
|
||||
<!ENTITY appversion "1.0.0">
|
||||
<!ENTITY manrevision "2.5">
|
||||
<!ENTITY date "February 2004">
|
||||
<!ENTITY app "<application>GRAMPS</application>">
|
||||
<!-- Information about the entities
|
||||
The legal.xml file contains legal information, there is no need to edit the file.
|
||||
Use the appversion entity to specify the version of the application.
|
||||
Use the manrevision entity to specify the revision number of this manual.
|
||||
Use the date entity to specify the release date of this manual.
|
||||
Use the app entity to specify the name of the application. -->
|
||||
<!ENTITY cmdplug SYSTEM "cmdplug.xml">
|
||||
<!ENTITY bugs SYSTEM "bugs.xml">
|
||||
<!ENTITY authors SYSTEM "authors.xml">
|
||||
]>
|
||||
<!--
|
||||
(Do not remove this comment block.)
|
||||
@@ -46,30 +62,31 @@
|
||||
Template last modified Apr 11, 2002
|
||||
-->
|
||||
<!-- =============Document Header ============================= -->
|
||||
<article id="index" lang="fr">
|
||||
<book id="index" lang="fr">
|
||||
<!-- please do not change the id; for translations, change lang to -->
|
||||
<!-- appropriate code -->
|
||||
<articleinfo>
|
||||
<title>gramps Manuel V&manrevision;</title>
|
||||
<bookinfo>
|
||||
<title>GRAMPS Manual V&manrevision;</title>
|
||||
|
||||
<copyright> <year>2001</year> <holder>Donald N. Allingham</holder> </copyright>
|
||||
<copyright> <year>2003-2004</year> <holder>Alex Roitman</holder> </copyright>
|
||||
<copyright> <year>2003-2005</year> <holder>Alex Roitman</holder> </copyright>
|
||||
|
||||
<!-- translators: uncomment this:
|
||||
|
||||
<copyright>
|
||||
<year>2003-2004</year>
|
||||
<holder>Michel Guitel (french translation)</holder>
|
||||
<year>2002</year>
|
||||
<holder>ME-THE-TRANSLATOR (Latin translation)</holder>
|
||||
</copyright>
|
||||
|
||||
-->
|
||||
<!-- An address can be added to the publisher information. If a role is
|
||||
not specified, the publisher/author is the same for all versions of the
|
||||
document. -->
|
||||
<publisher> <publishername> GRAMPS Project </publishername> </publisher>
|
||||
|
||||
&legal;
|
||||
<!-- This file contains link to license for the documentation (GNU FDL), and
|
||||
other legal stuff such as "NO WARRANTY" statement. Please do not change
|
||||
any of this. -->
|
||||
<!-- This file contains link to license for the documentation (GNU GPL), and
|
||||
other legal stuff such as "NO WARRANTY" statement. -->
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
@@ -77,7 +94,7 @@
|
||||
<surname>Roitman</surname>
|
||||
<affiliation>
|
||||
<orgname>GRAMPS Project</orgname>
|
||||
<address> <email>shura@alex.neuro.umn.edu</email> </address>
|
||||
<address> <email>shura@gramps-project.org</email> </address>
|
||||
</affiliation>
|
||||
</author>
|
||||
<author>
|
||||
@@ -85,27 +102,26 @@
|
||||
<surname>Allingham</surname>
|
||||
<affiliation>
|
||||
<orgname>GRAMPS Project</orgname>
|
||||
<address> <email>dallingham@users.sourceforge.net</email> </address>
|
||||
<address> <email>don@gramps-project.org</email> </address>
|
||||
</affiliation>
|
||||
</author>
|
||||
|
||||
<!-- This is appropriate place for other contributors: translators,
|
||||
maintainers, etc. Commented out by default.
|
||||
-->
|
||||
|
||||
<othercredit role="translator">
|
||||
<firstname>Michel</firstname>
|
||||
<surname>Guitel</surname>
|
||||
<firstname>Latin</firstname>
|
||||
<surname>Translator 1</surname>
|
||||
<affiliation>
|
||||
<orgname>French Translation Team</orgname>
|
||||
<address> <email>michel.guitel@free.fr</email> </address>
|
||||
<orgname>Latin Translation Team</orgname>
|
||||
<address> <email>translator@gnome.org</email> </address>
|
||||
</affiliation>
|
||||
<contrib>French translation</contrib>
|
||||
<contrib>Latin translation</contrib>
|
||||
</othercredit>
|
||||
<!--
|
||||
-->
|
||||
</authorgroup>
|
||||
|
||||
<!-- According to GNU FDL, revision history is mandatory if you are -->
|
||||
<!-- According to GNU GPL, revision history is mandatory if you are -->
|
||||
<!-- modifying/reusing someone else's document. If not, you can omit it. -->
|
||||
<!-- Remember to remove the &manrevision; entity from the revision entries other
|
||||
-->
|
||||
@@ -124,7 +140,16 @@
|
||||
<date>&date;</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@alex.neuro.umn.edu</email></para>
|
||||
<email>shura@gramps-project.org</email></para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>GRAMPS Manual V2.5</revnumber>
|
||||
<date>February 2004</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@gramps-project.org</email></para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
</revision>
|
||||
@@ -133,25 +158,25 @@
|
||||
<date>December 2003</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@alex.neuro.umn.edu</email></para>
|
||||
<email>shura@gramps-project.org</email></para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>GRAMPS Manual V2.3</revnumber>
|
||||
<date>September 2003</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@gramps-project.org</email></para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>GRAMPS Manual V2.3</revnumber>
|
||||
<date>September 2003</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@alex.neuro.umn.edu</email></para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>GRAMPS Manual V2.2</revnumber>
|
||||
<date>July 2003</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@alex.neuro.umn.edu</email></para>
|
||||
<email>shura@gramps-project.org</email></para>
|
||||
<para role="author">Donald A. Peterson
|
||||
<email>dpeterson@sigmaxi.org</email></para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
@@ -162,7 +187,7 @@
|
||||
<date>May 2003</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@alex.neuro.umn.edu</email>
|
||||
<email>shura@gramps-project.org</email>
|
||||
</para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
@@ -172,7 +197,7 @@
|
||||
<date>April 2003</date>
|
||||
<revdescription>
|
||||
<para role="author">Alex Roitman
|
||||
<email>shura@alex.neuro.umn.edu</email>
|
||||
<email>shura@gramps-project.org</email>
|
||||
</para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
@@ -182,7 +207,7 @@
|
||||
<date>2001</date>
|
||||
<revdescription>
|
||||
<para role="author">Donald N. Allingham
|
||||
<email>dallingham@users.sourceforge.net</email>
|
||||
<email>don@gramps-project.org</email>
|
||||
</para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
@@ -192,137 +217,44 @@
|
||||
<date>2001</date>
|
||||
<revdescription>
|
||||
<para role="author">Donald N. Allingham
|
||||
<email>dallingham@users.sourceforge.net</email>
|
||||
<email>don@gramps-project.org</email>
|
||||
</para>
|
||||
<para role="publisher">GRAMPS Project</para>
|
||||
</revdescription>
|
||||
</revision>
|
||||
</revhistory>
|
||||
|
||||
<releaseinfo>This manual describes version &appversion; of GRAMPS.
|
||||
<releaseinfo>Ce manuel décrit la version &appversion; de GRAMPS.
|
||||
</releaseinfo>
|
||||
|
||||
<legalnotice>
|
||||
<title>Feedback</title>
|
||||
<para>To report a bug or make a suggestion regarding the &app; application or
|
||||
this manual, follow the directions in the <ulink url="ghelp:gnome-feedback"
|
||||
type="help">GNOME Feedback Page</ulink>.
|
||||
</para>
|
||||
<!-- Translators may also add here feedback address for translations -->
|
||||
<title>Signalements</title>
|
||||
<para>Pour signaler une erreur ou faire une suggestion sur &app;
|
||||
ou sur ce manuel, allez à la <ulink url="ghelp:gnome-feedback"
|
||||
type="help">Page GNOME</ulink>.
|
||||
</para>
|
||||
</legalnotice>
|
||||
</articleinfo>
|
||||
|
||||
<indexterm zone="index"> <primary>GRAMPS</primary> </indexterm>
|
||||
<indexterm zone="index"> <primary>gramps</primary> </indexterm>
|
||||
|
||||
<!-- ============= Document Body ============================= -->
|
||||
<!-- ============= Introduction ============================== -->
|
||||
<sect1 id="gramps-intro">
|
||||
<title>Introduction</title>
|
||||
<para> &app; est une application de généalogie.
|
||||
&app; est l'acronyme pour
|
||||
Genealogical Research and Analysis Management Programming System
|
||||
(Systeme de Programmation pour Recherche, Analyse et Gestion de données généalogiques).
|
||||
En bref, il vous permet de conserver, modifier et chercher des données de généalogie
|
||||
à l'aide d'un ordinateur. Il est semblable à d'autres programmes de généalogie
|
||||
mais il offre en plus des possibilités qui lui sont uniques. </para>
|
||||
|
||||
<sect2 id="why-gramps">
|
||||
<title>Pourquoi gramps? </title>
|
||||
<para> &app; a été pensé avec l'idée que la plupart des logiciels
|
||||
de généalogie permettent de saisir des données. Ils suivent en général
|
||||
le modèle de données standard Gedcom. Habituellement, on peut afficher
|
||||
des arbres ascendants ou descendants sur l'écran ou bien les imprimer.
|
||||
On peut ajouter des images aux données. On peut souvent saisir des
|
||||
informations sur des personnes ou des familles non obligatoirement
|
||||
liées avec l'objet de la recherche. D'autres extensions portent sur
|
||||
l'importation ou l'exportation de données ainsi que sur les impressions
|
||||
d'états. </para>
|
||||
|
||||
<para> &app; cherche à fournir toutes les fonctions
|
||||
communes de ces logiciels et aussi la capacité d'intégrer des informations
|
||||
éparses directement, puis de traiter/réorganiser
|
||||
n'importe quel évènement et/ou donnée dans toute la base de données,
|
||||
pour aider l'utilisateur dans ses recherches, analyses, recoupements
|
||||
et éventuellement mises en relation de données. En bref, cet outil
|
||||
traite toutes les données en un lieu unique avec l'aide de l'ordinateur,
|
||||
en remplaçant le crayon et les montagnes de papier. </para>
|
||||
</sect2>
|
||||
</sect1> <!-- ================ End Intro ================================ -->
|
||||
|
||||
&getstart; <!-- Getting Started -->
|
||||
&mainwin; <!-- Main window -->
|
||||
&usage; <!-- Usage -->
|
||||
&custom; <!-- Customization -->
|
||||
|
||||
|
||||
<!-- ============= Bugs ================================== -->
|
||||
<!-- This section is optional and is commented out by default.
|
||||
You can use it to describe known bugs and limitations of the
|
||||
program if there are any - please be frank and list all
|
||||
problems you know of.
|
||||
-->
|
||||
|
||||
<sect1 id="mayapp-bugs">
|
||||
<title>Erreurs connues, limitations</title>
|
||||
<para>Pour le moment, &app; charge toutes ses données en mémoire ce qui
|
||||
charge lourdement le système quand la base de données est très grande
|
||||
(au dessus de 15000 individus sur une configuration moyenne).
|
||||
Ceci sera traité dans la version 1.2 par l'utilisation d'une base de données
|
||||
intégrée. L'utilisation mémoire comme les performances seront grandement améliorées. </para>
|
||||
|
||||
<para>L'envoi direct sur une imprimante n'est pas supporté.
|
||||
Il est prévu de corriger celà après la version stable 1.0 par le recours
|
||||
à l'architecture gnome-print.</para>
|
||||
|
||||
<para>Les impressions PS et PDF génèrent des caractères erronés à la
|
||||
place des caractères Unicode. gnome-print devrait aussi régler ce problème.
|
||||
En attendant, la solution est de produire des états au format
|
||||
OpenOffice.org puis de les convertir en PDF avec OpenOffice.</para>
|
||||
</sect1>
|
||||
<!-- ============= About ================================== -->
|
||||
<!-- This section contains info about the program (not docs), such as
|
||||
author's name(s), web page, license, feedback address. This
|
||||
section is optional: primary place for this info is "About.." box of
|
||||
the program. However, if you do wish to include this info in the
|
||||
manual, this is the place to put it.
|
||||
Alternatively, you can put this information in the title page.-->
|
||||
<sect1 id="gramps-about">
|
||||
<title>A propos de gramps</title>
|
||||
<para> &app; est écrit par Donald N. Allingham
|
||||
(<email>dallingham@users.sourceforge.net</email>).
|
||||
Si vous cherchez plus d'information sur &app;, allez à l'URL de la
|
||||
<ulink url="http://gramps.sourceforge.net" type="http">Page Web du
|
||||
Projet GRAMPS</ulink>. </para>
|
||||
<title>Retour</title>
|
||||
<para>
|
||||
Si vous désirez signaler une erreur du programme, ou faire une suggestion
|
||||
à propos du programme ou du manuel, utilisez le menu d'aide
|
||||
de &app; ou suivez le lien
|
||||
<ulink url="ghelp:gnome-feedback" type="help">suggestions</ulink>.
|
||||
Pour rapporter un bug ou faire une suggestion concernant cette application ou ce manuel, employer le menu d'aide de GRAMPS, ou <ulink url="http://gramps-project.org/index.php?module=pagemaster&PAGE_user_op=view_page&PAGE_id=3"
|
||||
type="http">ce lien</ulink>.
|
||||
</para>
|
||||
|
||||
<para> This program is distributed 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. A copy of this license can be found at this
|
||||
<ulink url="ghelp:gpl" type="help">link</ulink>, or in the file
|
||||
COPYING included with the source code of this program. </para>
|
||||
<!-- Translators may also add here feedback address for translations -->
|
||||
</legalnotice>
|
||||
</bookinfo>
|
||||
|
||||
</sect1> <!-- ============= End About ============================= -->
|
||||
<!-- ============= Document Body ============================= -->
|
||||
|
||||
<!-- ============= Appendices ================================== -->
|
||||
<sect1 id="appendices">
|
||||
<title>Appendices</title>
|
||||
|
||||
&faq; <!-- FAQ -->
|
||||
&keybind; <!-- Keybindings reference -->
|
||||
&filtref; <!-- Filter rule reference -->
|
||||
&cmdline; <!-- Command line reference -->
|
||||
<!-- Preface -->
|
||||
&preface;
|
||||
|
||||
<!-- Regular chapters -->
|
||||
&getstart; <!-- Getting Started -->
|
||||
&mainwin; <!-- Main window -->
|
||||
&usage; <!-- Usage -->
|
||||
&custom; <!-- Customization -->
|
||||
|
||||
<!-- Appendices -->
|
||||
&faq; <!-- FAQ -->
|
||||
&keybind; <!-- Keybindings reference -->
|
||||
&filtref; <!-- Filter rule reference -->
|
||||
&cmdline; <!-- Command line reference -->
|
||||
&bugs; <!-- Bugs and problems -->
|
||||
&authors; <!-- About authors -->
|
||||
|
||||
</sect1>
|
||||
|
||||
</article>
|
||||
</book>
|
||||
@@ -1,32 +1,37 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<appendix id="append-keybind">
|
||||
|
||||
<!--
|
||||
User Manual for Gramps - a GTK+/GNOME based genealogy program
|
||||
|
||||
Copyright (C) 2003 Alexander Roitman
|
||||
Copyright (C) 2003-2005 Alexander Roitman
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this
|
||||
document under the terms of the GNU Free Documentation
|
||||
License (GFDL), Version 1.1 or any later version published
|
||||
by the Free Software Foundation with no Invariant Sections,
|
||||
no Front-Cover Texts, and no Back-Cover Texts.
|
||||
A copy of the license is included in the file COPYING-DOCS
|
||||
distributed with this manual.
|
||||
This document 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 document 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$ -->
|
||||
|
||||
<!-- =============== Appendices Subsection ================ -->
|
||||
<sect2 id="append-keybind">
|
||||
<title>Manuel de référence des commandes au clavier</title>
|
||||
<para>Cette annexe décrit les commandes clavier qui ne sont pas
|
||||
affichées dans les menus de &app;.
|
||||
<title>Commandes Clavier</title>
|
||||
<para>La plupart des commandes du menu ont un équivalent au clavier.</para>
|
||||
|
||||
<para>Cette annexe décrit les commandes clavier qui ne sont pas affichées dans les menus de &app;.
|
||||
</para>
|
||||
|
||||
<!-- =============== Appendices Sub-subsection ================ -->
|
||||
<sect3 id="keybind-people">
|
||||
<title>Vue Individus</title>
|
||||
<para>Les commandes suivantes sont disponibles dans la Vue Individus : </para>
|
||||
<sect1 id="keybind-lists">
|
||||
<title>Vue Individuelle</title>
|
||||
<para>Les commandes suivantes sont disponibles dans la Vue des Individus,
|
||||
des Sources, des Lieux, des Médias.</para>
|
||||
|
||||
<informaltable frame="topbot">
|
||||
<tgroup cols="2">
|
||||
@@ -34,29 +39,25 @@
|
||||
<colspec colname="col2"/>
|
||||
<thead>
|
||||
<row valign="top">
|
||||
<entry colname="col1" colsep="0" valign="top"><para>Commande</para></entry>
|
||||
<entry colname="col1" colsep="0" valign="top"><para>Clé</para></entry>
|
||||
<entry colname="col2" valign="top"><para>Fonction</para></entry>
|
||||
</row>
|
||||
</thead>
|
||||
<tbody>
|
||||
<row valign="top">
|
||||
<entry><para><keycap>Entrée</keycap></para></entry>
|
||||
<entry><para>Ouvre le dialogue <guilabel>Modifie Personne</guilabel>
|
||||
sur la personne sélectionnée.</para></entry>
|
||||
<entry><para>Ouvre le dialogue <guilabel>Edition de l'individus</guilabel> sur la personne sélectionnée</para></entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</informaltable>
|
||||
|
||||
</sect3>
|
||||
</sect1>
|
||||
|
||||
|
||||
<!-- =============== Appendices Sub-subsection ================ -->
|
||||
<sect3 id="keybind-family">
|
||||
<title>Vue Famille</title>
|
||||
<para>Les commandes disponibles dans la Vue Famille dépendent
|
||||
de l'élément actif. La table suivante liste les commandes
|
||||
pour tous les types déléments. </para>
|
||||
<sect1 id="keybind-family">
|
||||
<title> Vue Familiale</title>
|
||||
<para>Les commandes disponibles dans la Vue Famille dépendent de l'élément actif. Le tableau suivante liste les commandes pour tous les types d'éléments.</para>
|
||||
|
||||
<variablelist>
|
||||
|
||||
@@ -69,22 +70,22 @@
|
||||
<colspec colname="col2"/>
|
||||
<thead>
|
||||
<row valign="top">
|
||||
<entry colname="col1" colsep="0" valign="top"><para>Commande</para></entry>
|
||||
<entry colname="col1" colsep="0" valign="top"><para>Clé</para></entry>
|
||||
<entry colname="col2" valign="top"><para>Fonction</para></entry>
|
||||
</row>
|
||||
</thead>
|
||||
<tbody>
|
||||
<row valign="top">
|
||||
<entry><para><keycap>Entrée</keycap></para></entry>
|
||||
<entry><para>Ouvre le dialogue <guilabel>Modifie Personne</guilabel> sur
|
||||
la personne active.</para></entry>
|
||||
</row>
|
||||
<entry><para><keycap>Entrée</keycap></para></entry>
|
||||
<entry><para>Ouvre le dialogue <guilabel>Edition de l'individus</guilabel> sur la personne sélectionnée</para></entry>
|
||||
</row>
|
||||
<row valign="top">
|
||||
<entry><para><keycap>Ctrl</keycap>+<keycap>Flèche vers le bas</keycap>
|
||||
ou <keycap>Ctrl</keycap>+<keycap>Flèche à droite</keycap></para></entry>
|
||||
<entry><para>Echange la personne active et son époux(se) sélectionné(e).
|
||||
Utilisez <keycap>Ctrl</keycap>+<keycap>Flèche vers le bas</keycap> dans la Vue Famille standard et
|
||||
<keycap>Ctrl</keycap>+<keycap>Flèche à droite</keycap> dans la vue alternative Famille. </para></entry>
|
||||
<entry><para><keycap>Ctrl</keycap>+<keycap>Bas</keycap>
|
||||
or <keycap>Ctrl</keycap>+<keycap>Droite</keycap></para></entry>
|
||||
<entry><para>Echange la personne active et son époux(se) sélectionné(e). Utilisez
|
||||
<keycap>Ctrl</keycap>+<keycap>Bas</keycap> dans
|
||||
la Vue Famille standard et
|
||||
<keycap>Ctrl</keycap>+<keycap>Droite</keycap> à droite dans la vue alternative Famille.</para></entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
@@ -103,39 +104,40 @@
|
||||
<colspec colname="col2"/>
|
||||
<thead>
|
||||
<row valign="top">
|
||||
<entry colname="col1" colsep="0" valign="top"><para>Commande</para></entry>
|
||||
<entry colname="col1" colsep="0" valign="top"><para>Clé</para></entry>
|
||||
<entry colname="col2" valign="top"><para>Fonction</para></entry>
|
||||
</row>
|
||||
</thead>
|
||||
<tbody>
|
||||
<row valign="top">
|
||||
<entry><para><keycap>Entrée</keycap></para></entry>
|
||||
<entry><para>Modifie la relation entre la personne active et l'époux(se)
|
||||
sélectionné(e).</para></entry>
|
||||
<entry><para>Modifie la relation entre la personne active et l'époux(se) sélectionné(e).</para></entry>
|
||||
</row>
|
||||
<row valign="top">
|
||||
<entry><para><keycap>Shift</keycap>+<keycap>Entrée</keycap></para></entry>
|
||||
<entry><para>Modifie les informations de l'époux(se) sélectionné(e).</para></entry>
|
||||
<entry><para>Modifie les informations de l'époux(se)
|
||||
sélectionné(e).
|
||||
</para></entry>
|
||||
</row>
|
||||
<row valign="top">
|
||||
<entry><para><keycap>Inser</keycap></para></entry>
|
||||
<entry><para><keycap>Insert</keycap></para></entry>
|
||||
<entry><para>Ajoute une personne existante à la liste des époux(ses).</para></entry>
|
||||
</row>
|
||||
<row valign="top">
|
||||
<entry><para><keycap>Shift</keycap>+<keycap>Inser</keycap></para></entry>
|
||||
<entry><para><keycap>Shift</keycap>+<keycap>Insert</keycap></para></entry>
|
||||
<entry><para>Ajoute une nouvelle personne à la liste des époux(ses).</para></entry>
|
||||
</row>
|
||||
<row valign="top">
|
||||
<entry><para><keycap>Delete</keycap></para></entry>
|
||||
<entry><para>Enlève l'époux(se) sélectionné(e) de la liste des époux(ses).
|
||||
L'époux(se) enlevée n'est pas supprimé(e) de la base de données.</para></entry>
|
||||
<entry><para><keycap>Suppr</keycap></para></entry>
|
||||
<entry><para>Enlève l'époux(se) sélectionné(e) de la liste des époux(ses). L'époux(se) enlevée n'est pas supprimé(e) de la base de données.</para></entry>
|
||||
</row>
|
||||
<row valign="top">
|
||||
<entry><para><keycap>Ctrl</keycap>+<keycap>Flèche vers le haut</keycap>
|
||||
ou <keycap>Ctrl</keycap>+<keycap>Flèche vers la gauche</keycap></para></entry>
|
||||
<entry><para>Echange l'époux(se) sélectionné(e) et la personne active.
|
||||
Utilisez <keycap>Ctrl</keycap>+<keycap>Flèche vers le bas</keycap> dans la vue Famille
|
||||
standard et <keycap>Ctrl</keycap>+<keycap>Flèche à droite</keycap> dans l'autre vue.</para></entry>
|
||||
<entry><para><keycap>Ctrl</keycap>+<keycap>Haut</keycap>
|
||||
ou <keycap>Ctrl</keycap>+<keycap>Gauche</keycap></para></entry>
|
||||
<entry><para>Swap Echange l'époux(se) sélectionné(e) et la personne active. Utilisez
|
||||
<keycap>Ctrl</keycap>+<keycap>Haut</keycap> dans la vue Famille standard et
|
||||
<keycap>Ctrl</keycap>+<keycap>Gauche</keycap> dans l'autre vue.
|
||||
View.</para></entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
@@ -154,40 +156,34 @@
|
||||
<colspec colname="col2"/>
|
||||
<thead>
|
||||
<row valign="top">
|
||||
<entry colname="col1" colsep="0" valign="top"><para>Commande</para></entry>
|
||||
<entry colname="col1" colsep="0" valign="top"><para>Clé</para></entry>
|
||||
<entry colname="col2" valign="top"><para>Fonction</para></entry>
|
||||
</row>
|
||||
</thead>
|
||||
<tbody>
|
||||
<row valign="top">
|
||||
<entry><para><keycap>Entrée</keycap></para></entry>
|
||||
<entry><para>Ouvre la relation entre les parents et leur enfant
|
||||
(personne sélectionnée ou bien époux(se) sélectionnée, selon
|
||||
le parent qui est sélectionné à ce moment). </para></entry>
|
||||
<entry><para>Ouvre la relation entre les parents et leur enfant</para></entry>
|
||||
</row>
|
||||
<row valign="top">
|
||||
<entry><para><keycap>Inser</keycap></para></entry>
|
||||
<entry><para>Ajoute une famille existante dans la
|
||||
liste (des parents de la mersonne active).</para></entry>
|
||||
<entry><para><keycap>Insert</keycap></para></entry>
|
||||
<entry><para>Ajoute une famille existante dans la liste (des parents de la mersonne active).</para></entry>
|
||||
</row>
|
||||
<row valign="top">
|
||||
<entry><para><keycap>Shift</keycap>+<keycap>Inser</keycap></para></entry>
|
||||
<entry><para>Ajoute une nouvelle famille dans la
|
||||
liste (des parents de la mersonne active).</para></entry>
|
||||
<entry><para><keycap>Shift</keycap>+<keycap>Insert</keycap></para></entry>
|
||||
<entry><para>Ajoute une nouvelle famille dans la liste (des parents de la mersonne active).</para></entry>
|
||||
</row>
|
||||
<row valign="top">
|
||||
<entry><para><keycap>Suppr</keycap></para></entry>
|
||||
<entry><para>Enlève la famille sélectionnée de la liste.
|
||||
Les parents ne sont pas supprimés de la base de données.</para></entry>
|
||||
<entry><para>Enlève la famille sélectionnée de la liste. Les parents ne sont pas supprimés de la base de données.</para></entry>
|
||||
</row>
|
||||
<row valign="top">
|
||||
<entry><para><keycap>Ctrl</keycap>+<keycap>Flèche vers la droite</keycap>
|
||||
ou <keycap>Ctrl</keycap>+<keycap>Flèche vers le bas</keycap></para></entry>
|
||||
<entry><para>Prend comme famille active les parents sélectionnés.
|
||||
Utilisez <keycap>Ctrl</keycap>+<keycap>Flèche vers la droite</keycap> dans
|
||||
la vue famille standard et
|
||||
<keycap>Ctrl</keycap>+<keycap>Flèche vers le bas</keycap> dans l'autre
|
||||
vue.</para></entry>
|
||||
<entry><para><keycap>Ctrl</keycap>+<keycap>Droite</keycap>
|
||||
or <keycap>Ctrl</keycap>+<keycap>Bas</keycap></para></entry>
|
||||
<entry><para>Prend comme famille active les parents
|
||||
sélectionnés. Utilisez <keycap>Ctrl</keycap>+<keycap>Droite</keycap> dans la vue famille standard et
|
||||
<keycap>Ctrl</keycap>+<keycap>Bas</keycap> vers le bas dans l'autre vue.
|
||||
</para></entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
@@ -206,43 +202,38 @@
|
||||
<colspec colname="col2"/>
|
||||
<thead>
|
||||
<row valign="top">
|
||||
<entry colname="col1" colsep="0" valign="top"><para>Commande</para></entry>
|
||||
<entry colname="col1" colsep="0" valign="top"><para>Clé</para></entry>
|
||||
<entry colname="col2" valign="top"><para>Fonction</para></entry>
|
||||
</row>
|
||||
</thead>
|
||||
<tbody>
|
||||
<row valign="top">
|
||||
<entry><para><keycap>Entrée</keycap></para></entry>
|
||||
<entry><para>Ouvre la relation entre l'enfant et son
|
||||
parent (la personne active et l'époux(se) sélectionnée).</para></entry>
|
||||
<entry><para>Ouvre la relation entre l'enfant et son parent (la personne active et l'époux(se) sélectionnée).</para></entry>
|
||||
</row>
|
||||
<row valign="top">
|
||||
<entry><para><keycap>Shift</keycap>+<keycap>Entrée</keycap></para></entry>
|
||||
<entry><para>Ouvre les informations personnelles de l'enfant
|
||||
sélectionné.</para></entry>
|
||||
<entry><para>Ouvre les informations personnelles de l'enfant sélectionné.</para></entry>
|
||||
</row>
|
||||
<row valign="top">
|
||||
<entry><para><keycap>Inser</keycap></para></entry>
|
||||
<entry><para>Ajoute une personne de la base de données à la liste des
|
||||
enfants.</para></entry>
|
||||
<entry><para><keycap>Insert</keycap></para></entry>
|
||||
<entry><para>Ajoute une personne de la base de données à la liste des enfants.</para></entry>
|
||||
</row>
|
||||
<row valign="top">
|
||||
<entry><para><keycap>Shift</keycap>+<keycap>Inser</keycap></para></entry>
|
||||
<entry><para>Ajoute une personne nouvelle à la liste des
|
||||
enfants.</para></entry>
|
||||
<entry><para><keycap>Shift</keycap>+<keycap>Insert</keycap></para></entry>
|
||||
<entry><para>Ajoute une personne nouvelle à la liste des enfants.</para></entry>
|
||||
</row>
|
||||
<row valign="top">
|
||||
<entry><para><keycap>Suppr</keycap></para></entry>
|
||||
<entry><para>Enlève l'enfant sélectionné de la liste.
|
||||
Cet enfant n'est pas supprimé de la base de données.</para></entry>
|
||||
<entry><para>Enlève l'enfant sélectionné de la liste. Cet enfant n'est pas supprimé de la base de données.</para></entry>
|
||||
</row>
|
||||
<row valign="top">
|
||||
<entry><para><keycap>Ctrl</keycap>+<keycap>Flèche vers la gauche</keycap>
|
||||
ou <keycap>Ctrl</keycap>+<keycap>Flèche vers le haut</keycap></para></entry>
|
||||
<entry><para>Prend l'enfant sélectionné comme Personne Active.
|
||||
Utilisez <keycap>Ctrl</keycap>+<keycap>Left</keycap> dans la vue Famille standard et
|
||||
<keycap>Ctrl</keycap>+<keycap>Flèche vers le haut</keycap> dans l'autre
|
||||
vue.</para></entry>
|
||||
<entry><para><keycap>Ctrl</keycap>+<keycap>Gauche</keycap>
|
||||
or <keycap>Ctrl</keycap>+<keycap>Haut</keycap></para></entry>
|
||||
<entry><para>Prend l'enfant sélectionné comme Personne Active. Utilisez
|
||||
<keycap>Ctrl</keycap>+<keycap>Gauche</keycap> dans la vue Famille standard et
|
||||
<keycap>Ctrl</keycap>+<keycap>Haut</keycap> dans l'autre vue.
|
||||
View.</para></entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
@@ -253,7 +244,6 @@
|
||||
|
||||
</variablelist>
|
||||
|
||||
</sect3>
|
||||
|
||||
</sect2>
|
||||
</sect1>
|
||||
|
||||
</appendix>
|
||||
@@ -1,76 +1,13 @@
|
||||
<legalnotice id="legalnotice">
|
||||
<para>
|
||||
Permission is granted to copy, distribute and/or modify this
|
||||
document under the terms of the GNU Free Documentation
|
||||
License (GFDL), Version 1.1 or any later version published
|
||||
by the Free Software Foundation with no Invariant Sections,
|
||||
no Front-Cover Texts, and no Back-Cover Texts. You can find
|
||||
a copy of the GFDL at this <ulink type="help"
|
||||
url="ghelp:fdl">link</ulink> or in the file COPYING-DOCS
|
||||
distributed with this manual.
|
||||
</para>
|
||||
<para> This manual is part of a collection of GNOME manuals
|
||||
distributed under the GFDL. If you want to distribute this
|
||||
manual separately from the collection, you can do so by
|
||||
adding a copy of the license to the manual, as described in
|
||||
section 6 of the license.
|
||||
</para>
|
||||
Ce manuel est un logiciel libre; vous pouvez le redistribuer et/ou le modifier en vertu de la licence de grand public de GNU comme publiée par Free Software Foundation; version 2 de la licence, ou (à votre option) toute version postérieure.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Many of the names used by companies to distinguish their
|
||||
products and services are claimed as trademarks. Where those
|
||||
names appear in any GNOME documentation, and the members of
|
||||
the GNOME Documentation Project are made aware of those
|
||||
trademarks, then the names are in capital letters or initial
|
||||
capital letters.
|
||||
</para>
|
||||
<para>
|
||||
Ce manuel est distribué dans l'espoir qu'il sera utile, mais SANS GARANTIE; sans même la garantie implicite de la VALEUR MARCHANDE ou POUR UN BUT PARTICULIER. Voyez la licence grand public GNU pour plus de détails.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT ARE PROVIDED
|
||||
UNDER THE TERMS OF THE GNU FREE DOCUMENTATION LICENSE
|
||||
WITH THE FURTHER UNDERSTANDING THAT:
|
||||
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>DOCUMENT IS PROVIDED ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR
|
||||
IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES
|
||||
THAT THE DOCUMENT OR MODIFIED VERSION OF THE
|
||||
DOCUMENT IS FREE OF DEFECTS MERCHANTABLE, FIT FOR
|
||||
A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE
|
||||
RISK AS TO THE QUALITY, ACCURACY, AND PERFORMANCE
|
||||
OF THE DOCUMENT OR MODIFIED VERSION OF THE
|
||||
DOCUMENT IS WITH YOU. SHOULD ANY DOCUMENT OR
|
||||
MODIFIED VERSION PROVE DEFECTIVE IN ANY RESPECT,
|
||||
YOU (NOT THE INITIAL WRITER, AUTHOR OR ANY
|
||||
CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY
|
||||
SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
|
||||
OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS
|
||||
LICENSE. NO USE OF ANY DOCUMENT OR MODIFIED
|
||||
VERSION OF THE DOCUMENT IS AUTHORIZED HEREUNDER
|
||||
EXCEPT UNDER THIS DISCLAIMER; AND
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL
|
||||
THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE),
|
||||
CONTRACT, OR OTHERWISE, SHALL THE AUTHOR,
|
||||
INITIAL WRITER, ANY CONTRIBUTOR, OR ANY
|
||||
DISTRIBUTOR OF THE DOCUMENT OR MODIFIED VERSION
|
||||
OF THE DOCUMENT, OR ANY SUPPLIER OF ANY OF SUCH
|
||||
PARTIES, BE LIABLE TO ANY PERSON FOR ANY
|
||||
DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR
|
||||
CONSEQUENTIAL DAMAGES OF ANY CHARACTER
|
||||
INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS
|
||||
OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR
|
||||
MALFUNCTION, OR ANY AND ALL OTHER DAMAGES OR
|
||||
LOSSES ARISING OUT OF OR RELATING TO USE OF THE
|
||||
DOCUMENT AND MODIFIED VERSIONS OF THE DOCUMENT,
|
||||
EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF
|
||||
THE POSSIBILITY OF SUCH DAMAGES.
|
||||
</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
<para>
|
||||
Vous devriez avoir reçu une copie de la licence grand public GNU avec ce programme; sinon, écrivez à Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
</para>
|
||||
</legalnotice>
|
||||
|
||||
@@ -1,75 +1,66 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<chapter id="gramps-mainwin">
|
||||
|
||||
<!--
|
||||
User Manual for Gramps - a GTK+/GNOME based genealogy program
|
||||
User Manual for Gramps - a GTK+/GNOME based genealogy program
|
||||
|
||||
Copyright (C) 2003 Alexander Roitman
|
||||
Copyright (C) 2003-2005 Alexander Roitman
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this
|
||||
document under the terms of the GNU Free Documentation
|
||||
License (GFDL), Version 1.1 or any later version published
|
||||
by the Free Software Foundation with no Invariant Sections,
|
||||
no Front-Cover Texts, and no Back-Cover Texts.
|
||||
A copy of the license is included in the file COPYING-DOCS
|
||||
distributed with this manual.
|
||||
This document 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 document 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$ -->
|
||||
|
||||
<!-- ================ Main Window ================================ -->
|
||||
<sect1 id="gramps-mainwin">
|
||||
<title>Fenêtre principale</title>
|
||||
<para>La fenêtre suivante est affichée quand vous ouvrez une base de données
|
||||
(nouvelle ou existante).</para>
|
||||
<title>Fenêtre Principale</title>
|
||||
<para>La fenêtre suivante est affichée quand vous ouvrez une base de données (nouvelle ou existante).</para>
|
||||
|
||||
<!-- ==== Figure: Main Window ==== -->
|
||||
<figure id="mainwin-fig">
|
||||
<title>Fenêtre principale gramps</title>
|
||||
<title>Fenêtre principale de &app;</title>
|
||||
<screenshot><mediaobject><imageobject><imagedata
|
||||
fileref="figures/mainwin.png" format="PNG"/></imageobject>
|
||||
<textobject>
|
||||
<phrase>Montre la fenêtre principale de &app; . Comprend le titre, les barres de menu,
|
||||
d'outils, sidebar, la zone d'affichage, d'état, de progression
|
||||
et de défilement. La barre de menu comprend les menus Fichier, Edition, Affichage, Aller à, Signets,
|
||||
Editions, Outils, Paramètres et Aide. </phrase>
|
||||
<phrase>Cette fenêtre contient une barre de titre, une barre de menu,
|
||||
une barre d'outils, une barre latérale, une zone d'affichage, une barre d'état, une barre de progression
|
||||
et une barre de défilement. La barre de menu contient les menus : Fichier, Edition, Affichage, Aller à, Signets,
|
||||
Rapports, Outils, Fenêtre, et Aide.</phrase>
|
||||
</textobject></mediaobject></screenshot></figure>
|
||||
<!-- ==== End of Figure ==== -->
|
||||
|
||||
<para>La fenêtre de &app; contient les éléments suivants : </para>
|
||||
<para>La fenêtre de &app; contient les éléments suivants:</para>
|
||||
<variablelist>
|
||||
<varlistentry><term>Barre de menu</term>
|
||||
<listitem><para>La barre de menu est placée tout en haut de la fenêtre
|
||||
(juste à droite du titre de la fenêtre) et donne accès à toutes les fonctions de
|
||||
&app; à travers ses menus.</para></listitem>
|
||||
<varlistentry><term> Barre de menu</term>
|
||||
<listitem><para>
|
||||
La barre de menu est placée tout en haut de la fenêtre (juste à droite du titre de la fenêtre) et donne accès à toutes les fonctions de &app; à travers ses menus.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry><term>La barre d'outils</term>
|
||||
<listitem><para> La barre d'outils est placée juste sous la barre de menu.
|
||||
Elle donne accès aux fonctions les plus utilisées de
|
||||
&app;. Sa présentation peut être changée
|
||||
dans le menu <guilabel>Préférences</guilabel></para></listitem>
|
||||
<varlistentry><term>Barre d'outils</term>
|
||||
<listitem><para> La barre d'outils est placée juste sous la barre de menu. Elle donne accès aux fonctions les plus utilisées de &app;. Sa présentation peut être changée dans le menu <guilabel>Préferences</guilabel>
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry><term>Barre de progression</term>
|
||||
<listitem><para>La barre de progression se trouve en bas, à gauche de la fenêtre
|
||||
principale de &app; . Elle montre l'avancement des opérations longues
|
||||
comme le chargement ou l'écriture de grosses bases de données,
|
||||
l'importation ou l'exportation de données de et vers d'autres formats
|
||||
ou la génération de sites web, etc. </para></listitem>
|
||||
<listitem><para>La barre de progression se trouve en bas, à gauche de la fenêtre principale de &app;. Elle montre l'avancement des opérations longues comme le chargement ou l'écriture de grosses bases de données, l'importation ou l'exportation de données de et vers d'autres formats ou la génération de sites web, etc.</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry><term>La barre d'état</term>
|
||||
<listitem><para>La barre d'état est placée à droite de la barre de progression,
|
||||
tout en bas de la fenêtre de &app; .
|
||||
Elle informe sur le travail en cours avec &app;
|
||||
et explique les éléments de menu.
|
||||
Son comportement peut être changé dans le dialogue
|
||||
<guilabel>Préférences</guilabel> . </para></listitem>
|
||||
<listitem><para>La barre d'état est placée à droite de la barre de progression, tout en bas de la fenêtre de &app; . Elle informe sur le travail en cours avec &app; et explique les éléments de menu. Son comportement peut être changé dans le dialogue
|
||||
<guilabel>Préferences</guilabel></para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry><term>Zone d'affichage</term>
|
||||
<listitem><para>Le plus grand espace dans la fenêtre de
|
||||
&app; est la zone d'affichage.
|
||||
Elle montre une vue des données généalogiques, selon le type
|
||||
d'affichage en cours. Les six types d'affichage suivants sont disponibles
|
||||
dans &app;:
|
||||
<listitem><para>Le plus grand espace dans la fenêtre de &app; est la zone d'affichage. Elle montre une vue des données généalogiques, selon le type d'affichage en cours.
|
||||
Les six types d'affichage suivants sont disponibles dans &app;:
|
||||
<itemizedlist>
|
||||
<listitem><para>Vue per Individus</para></listitem>
|
||||
<listitem><para>Vue par Individus</para></listitem>
|
||||
<listitem><para>Vue par Famille</para></listitem>
|
||||
<listitem><para>Vue par Arborescence</para></listitem>
|
||||
<listitem><para>Vue des Sources</para></listitem>
|
||||
@@ -82,27 +73,21 @@
|
||||
</variablelist>
|
||||
|
||||
<!-- ================ Main Window Subsection -->
|
||||
<sect2 id="gramps-views">
|
||||
<sect1 id="gramps-views">
|
||||
<title>Vues</title>
|
||||
<para>Les vues sont les différentes façons d'afficher les données généalogiques.
|
||||
Comme l'information est vaste et hétérogène, il faut mieux en réaliser
|
||||
l'affichage en catégories homogènes plus restreintes.
|
||||
Chaque vue représente une de ces catégories.
|
||||
Le changement de vue est décrit ci-dessous, avant leur description
|
||||
détaillée. </para>
|
||||
<para>Les vues sont les différentes façons d'afficher les données généalogiques. Comme l'information est vaste et hétérogène, il faut mieux en réaliser l'affichage en catégories homogènes plus restreintes. Chaque vue représente une de ces catégories. Le changement de vue est décrit ci-dessous, avant leur description détaillée.</para>
|
||||
|
||||
<!-- ================ Main Window Sub-subsection -->
|
||||
<sect3 id="view-modes">
|
||||
<title>Le changement entre les vues et modes d'affichage</title>
|
||||
<para>Selon l'état de l'item de menu <menuchoice>
|
||||
<guimenu>Visualiser</guimenu><guimenuitem>Barre verticale</guimenuitem>
|
||||
</menuchoice> , le mode d'affichage peut être changé soit dans
|
||||
la barre verticale, soit dans les onglets en haut de la fenêtre.
|
||||
<sect2 id="view-modes">
|
||||
<title>Le changement entre les vues et les modes d'affichage</title>
|
||||
<para>Selon l'état du menu <menuchoice>
|
||||
<guimenu>Affichage</guimenu><guimenuitem>Barre latérale</guimenuitem>
|
||||
</menuchoice>, le mode d'affichage peut être changé soit dans la barre verticale,
|
||||
soit dans les onglets en haut de la fenêtre.
|
||||
</para>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry><term>Pour changer de Vue dans la barre verticale,
|
||||
cliquez dans l'icône de la vue que vous désirez.</term>
|
||||
<varlistentry><term>Pour changer de Vue dans la barre latérale, cliquez sur l'icône de la vue que vous désirez.</term>
|
||||
<listitem>
|
||||
<!-- ==== Figure: Sidebar Mode ==== -->
|
||||
<figure id="side-nofilt-fig">
|
||||
@@ -110,69 +95,90 @@
|
||||
<screenshot><mediaobject><imageobject><imagedata
|
||||
fileref="figures/mainwin.png" format="PNG"/></imageobject>
|
||||
<textobject>
|
||||
<phrase>Mode avec barre latérale. </phrase>
|
||||
<phrase>Vue avec la barre latérale</phrase>
|
||||
</textobject></mediaobject></screenshot></figure>
|
||||
<!-- ==== End of Figure ==== -->
|
||||
</listitem></varlistentry>
|
||||
|
||||
<varlistentry><term>Pour changer de vue en mode "Onglet",
|
||||
cliquez sur l'onglet désiré.</term>
|
||||
<varlistentry><term>Pour changer de vue en mode "Onglet", cliquez sur l'onglet désiré.</term>
|
||||
<listitem>
|
||||
<!-- ==== Figure: Tabbed Notebook Mode ==== -->
|
||||
<figure id="noside-nofilt-fig">
|
||||
<title>Mode Onglets</title>
|
||||
<title>Mode Onglets </title>
|
||||
<screenshot><mediaobject><imageobject><imagedata
|
||||
fileref="figures/noside-nofilt.png" format="PNG"/></imageobject>
|
||||
<textobject>
|
||||
<phrase>Mode Onglets. </phrase>
|
||||
<phrase>Vue en Mode Onglets</phrase>
|
||||
</textobject></mediaobject></screenshot></figure>
|
||||
<!-- ==== End of Figure ==== -->
|
||||
</listitem></varlistentry>
|
||||
</variablelist>
|
||||
|
||||
<para>Pour changer entre les modes avec barre latérale et Onglets
|
||||
choisissez <menuchoice> <guimenu>Affichage</guimenu>
|
||||
<para> Pour changer entre les modes avec barre latérale et Onglets choisissez
|
||||
<menuchoice> <guimenu>Affichage</guimenu>
|
||||
<guimenuitem>Barre latérale</guimenuitem>
|
||||
</menuchoice> dans le menu principal de &app; .</para>
|
||||
|
||||
</sect3>
|
||||
</sect2>
|
||||
|
||||
<!-- ================ Main Window Sub-subsection -->
|
||||
<sect3 id="people-view">
|
||||
<title>Vue des individus</title>
|
||||
<para>Quand &app; ouvre une base de données,
|
||||
la Vue est celle des individus (<xref linkend="side-nofilt-fig"/>
|
||||
et <xref linkend="noside-nofilt-fig"/>). La Vue Individus liste
|
||||
les personnes dont les données sont enregistrées dans la base de données. </para>
|
||||
|
||||
<para> Les personnes sont présentées en arbre, selon leur nom de famille.
|
||||
Chaque nom est un noeud de l'arbre. Cliquer sur la croix à gauche du noeud
|
||||
le déploie ou le replie selon son état. Quand un arbre est déployé,
|
||||
le contenu du noeud est affiché. Quand il est replié, le contenu
|
||||
n'est pas visible. Les données sont cependant conservées, elles sont
|
||||
seulement masquées.
|
||||
<sect2 id="people-view">
|
||||
<title>Vue des Individus</title>
|
||||
<para>Quand &app; ouvre une base de données, la Vue est celle des individus
|
||||
(<xref linkend="side-nofilt-fig"/>
|
||||
et <xref linkend="noside-nofilt-fig"/>).La Vue Individus liste les personnes dont les données
|
||||
sont enregistrées dans la base de données.</para>
|
||||
|
||||
<para> Les personnes sont présentées en arbre, selon leur nom de famille.
|
||||
Chaque nom est un noeud de l'arbre. Cliquer sur la croix à gauche du noeud le déploie
|
||||
ou le replie selon son état. Quand un arbre est déployé, le contenu du noeud est affiché.
|
||||
Quand il est replié, le contenu n'est pas visible. Les données sont cependant conservées,
|
||||
elles sont seulement masquées.
|
||||
</para>
|
||||
|
||||
<para>La Vue des Individus montre les <guilabel>Noms</guilabel>,
|
||||
<guilabel>Identifiants</guilabel> &app;,
|
||||
|
||||
<para>La Vue des Individus montre les <guilabel>Noms</guilabel>,
|
||||
<guilabel>Identifiants &app;</guilabel>,
|
||||
<guilabel>Genre</guilabel>, et
|
||||
leurs dates de <guilabel>Naissance</guilabel> et <guilabel>Décès</guilabel>.
|
||||
La liste peut être triée par rapport à n'importe quel champ.</para>
|
||||
leurs dates de <guilabel>Naissance</guilabel> et de <guilabel>Décès</guilabel>.
|
||||
La liste peut être triée par rapport par n'importe quel champ.</para>
|
||||
|
||||
<tip id="columns-tip"><title>Liste ordonnée par la colonne choisie</title>
|
||||
<para>Par exemple, pour trier selon la colonne
|
||||
<guilabel>date de naissance</guilabel>, cliquer sur l'en-tête. Pour trier la liste dans l'ordre
|
||||
(décroissant), cliquer une fois de plus sur l'en-tête de colonne désirée. </para></tip>
|
||||
|
||||
<para>Exemple : pour trier la liste par date de naissance, cliquez sur
|
||||
l'en-tête de colonne <guilabel>Date de naissance</guilabel>. Pour trier par ordre
|
||||
inverse (décroissant), cliquez une autre fois sur l'en-tête de colonne. </para>
|
||||
<para>Les colonnes peuvent être ajoutées, enlevées, ou triées à nouveau dans une fenêtre de dialogue voir
|
||||
<xref linkend="column-editor-fig"/>.Seulement les colonnes vérifiées seront montrées dans la vue.
|
||||
Pour changer leur ordre, glisser n'importe quelle colonne à l' endroit désiré.
|
||||
Cliquer sur <guibutton>Valider</guibutton> reflétera les changements de la vue des individus.
|
||||
Pour appeler la <guilabel>Fenêtre d'édition de colonnes </guilabel>,
|
||||
choisissez <menuchoice><guimenu>Edition</guimenu><guimenuitem>Editeur de Colonnes</guimenuitem></menuchoice>.
|
||||
</para>
|
||||
|
||||
<tip id="columns-tip2"><title>D'autres Vues</title>
|
||||
<para>L'<guilabel>éditeur de colonnes</guilabel> est disponible et travaille de la même
|
||||
manière pour toutes les vues de liste, pas seulement vue des individus.</para> </tip>
|
||||
|
||||
<!-- ==== Figure: Enabled Filter ==== -->
|
||||
<figure id="column-editor-fig">
|
||||
<title>Fenêtre d'édition de Colonnes</title>
|
||||
<screenshot><mediaobject><imageobject><imagedata
|
||||
fileref="figures/column-editor.png" format="PNG"/></imageobject>
|
||||
<textobject>
|
||||
<phrase>Vue du dialogue d'édition des colonnes </phrase>
|
||||
</textobject></mediaobject></screenshot></figure>
|
||||
|
||||
|
||||
<!-- ================ Main Window Sub-sub-subsection -->
|
||||
<sect4 id="filters">
|
||||
<sect3 id="filters">
|
||||
<title>Filtres</title>
|
||||
<para>Les bases de données généalogiques peuvent décrire beaucoup d'individus.
|
||||
<para>Les bases de données généalogiques peuvent décrire beaucoup d'individus.
|
||||
Comme les longues énumérations sont difficiles à traiter mentalement,
|
||||
&app; fournit une façon pratique pour réduire
|
||||
l'ensemble des données visibles avec un filtre. Pour économiser l'espace sur l'écran,
|
||||
les contrôles de filtre peuvent être cachés, selon l'état de l'item de menu
|
||||
<menuchoice> <guimenu>Visualiser</guimenu>
|
||||
<guimenuitem>Filtre</guimenuitem> </menuchoice> .</para>
|
||||
&app; fournit une façon pratique pour réduire l'ensemble des données visibles avec un filtre.
|
||||
Pour économiser l'espace sur l'écran, les contrôles de filtre peuvent être cachés, selon
|
||||
l'état du menu
|
||||
<menuchoice> <guimenu>Affichage</guimenu>
|
||||
<guimenuitem>Filtres</guimenuitem> </menuchoice></para>
|
||||
|
||||
<!-- ==== Figure: Enabled Filter ==== -->
|
||||
<figure id="side-filt-fig">
|
||||
@@ -180,247 +186,183 @@
|
||||
<screenshot><mediaobject><imageobject><imagedata
|
||||
fileref="figures/side-filt.png" format="PNG"/></imageobject>
|
||||
<textobject>
|
||||
<phrase>Montre le contrôle du filtre. </phrase>
|
||||
<phrase>Vue du dialogue de contrôle des filtres </phrase>
|
||||
</textobject></mediaobject></screenshot></figure>
|
||||
<!-- ==== End of Figure ==== -->
|
||||
|
||||
<para>Quand &app; ouvre une base de données, le filtre
|
||||
est le filtre simple appelé <guilabel>Tout le monde</guilabel>,
|
||||
c'est à dire qu'il n'y a aucun filtrage. Pour choisir un filtre,
|
||||
utilisez le pop-up <guilabel>Filtre</guilabel> au-dessus de la
|
||||
liste des individus. Quand vous avez choisi le filtre, cliquez sur le bouton
|
||||
<guibutton>Appliquer</guibutton> en haut à droite de la fenêtre.
|
||||
Le filtre sera alors appliqué. Pour inverser la règle de filtrage
|
||||
cochez le choix <guilabel>Inverse</guilabel> à gauche du bouton
|
||||
<guibutton>Appliquer</guibutton>. </para>
|
||||
<para>Quand &app; ouvre une base de données, le filtre est le filtre
|
||||
simple appelé <guilabel>Tout le monde</guilabel>, c'est à dire qu'il n'y a aucun filtrage.
|
||||
Pour choisir un filtre, utilisez le pop-up <guilabel>Filtre</guilabel> au-dessus de la liste des individus.
|
||||
Quand vous avez choisi le filtre, cliquez sur le bouton
|
||||
<guibutton>Appliquer</guibutton> en haut à droite de la fenêtre.
|
||||
Le filtre sera alors appliqué. Pour inverser la règle de filtrage cochez le choix Inverse à gauche du bouton
|
||||
</para>
|
||||
|
||||
<para>Exemple : Pour voir les personnes sans enfants, choisissez le filtre
|
||||
<guilabel>Individus ayant des enfants</guilabel>, cochez la case
|
||||
<guilabel>Inverse</guilabel>, puis cliquez sur le bouton
|
||||
<guibutton>Appliquer</guibutton>. Pour annuler le filtrage, sélectionnez
|
||||
le filtre <guilabel>Tout le monde</guilabel>
|
||||
puis cliquez sur le bouton <guibutton>Appliquer</guibutton>. </para>
|
||||
<tip id="filt-tip"><title>Exemple d'utilisation de filtre</title>
|
||||
<para>Pour montrer seulement les hommes, choisissez le filtre
|
||||
<guilabel>Hommes</guilabel> puis cliquer sur le bouton
|
||||
<guibutton>Appliquer</guibutton> button. Pour décommander le filtrage, placez le filtre
|
||||
sur <guilabel>Toute la base de données</guilabel>
|
||||
et cliquer sur <guibutton>Appliquer</guibutton>.</para>
|
||||
</tip>
|
||||
|
||||
<note id="filt-note">
|
||||
<title>Le filtrage est persistant</title>
|
||||
<para> Même si le contrôle de filtre n'est pas affiché,
|
||||
(<menuchoice> <guimenu>Affichage</guimenu>
|
||||
<guimenuitem>Filtre</guimenuitem> </menuchoice> , le filtrage est activé.
|
||||
En d'autres termes, que le contrôle du filtre soit affiché ou pas n'a pas de rapport
|
||||
avec l'effet du filtre.</para>
|
||||
|
||||
<para>Cela peut prêter à confusion quand vous activez le
|
||||
filtre puis que vous cachez son contrôle.
|
||||
En cas de problème, affichez le contrôle du filtre par <menuchoice> <guimenu>Affichage</guimenu>
|
||||
<guimenuitem>Filtre</guimenuitem> </menuchoice> puis vérifiez que le filtre est actif.</para>
|
||||
</note>
|
||||
</sect3>
|
||||
|
||||
<para>Note : même si le contrôle de filtre n'est pas affiché,
|
||||
(<menuchoice> <guimenu>Visualiser</guimenu>
|
||||
<guimenuitem>Filtre</guimenuitem> </menuchoice> n'est pas coché),
|
||||
le filtrage est activé. En d'autres termes,
|
||||
que le contrôle du filtre soit affiché ou pas n'a pas de rapport avec
|
||||
l'effet du filtre. Cela peut prêter à confusion quand vous activez le filtre
|
||||
puis que vous cachez son contrôle. En cas de problème, affichez
|
||||
le contrôle du filtre par
|
||||
<menuchoice> <guimenu>Visualiser</guimenu>
|
||||
<guimenuitem>Filtre</guimenuitem> </menuchoice> puis vérifiez quel filtre
|
||||
est actif. </para>
|
||||
</sect4>
|
||||
|
||||
<!-- ================ Main Window Sub-sub-subsection -->
|
||||
<sect4 id="alpha-tabs">
|
||||
<title>Onglets Alphabetiques</title>
|
||||
<para>&app; propose une autre façon de gérer de longues listes de personnes :
|
||||
les onglets alphabétiques. Lors du chargement d'une base de données,
|
||||
&app; examine les noms de famille et sépare la liste complète des personnes
|
||||
en sous-ensembles, selon l'initiale du nom de famille.
|
||||
Les onglets alphabétiques sont affichés en bas de la fenêtre de &app;.
|
||||
Le dernier onglet, <guilabel>Autre</guilabel>, désigne les caractères non identifiés :
|
||||
tous les éléments non rattachés aux autres onglets.
|
||||
En particulier, les individus sans nom de famille y sont rattachés.</para>
|
||||
</sect4>
|
||||
|
||||
</sect3>
|
||||
</sect2>
|
||||
|
||||
<!-- ================ Main Window Sub-subsection -->
|
||||
<sect3 id="family-view">
|
||||
<sect2 id="family-view">
|
||||
<title>Vue des Familles</title>
|
||||
<para>L'affichage par famille montre les informations autour
|
||||
de la personne sélectionnée (ou Active). En particulier, cette vue montre
|
||||
les relations (c'est à dire les mariages ou concubinages, etc.) de la personne active,
|
||||
ses parents (ou beaux-parents, or tuteurs, etc), ainsi que
|
||||
ses enfants (que ce soit des enfants directs, de conjoint ou bien adoptés, etc.).
|
||||
<para>L'affichage par famille montre les informations autour de la personne sélectionnée
|
||||
(ou Active). En particulier, cette vue montre les relations
|
||||
(c'est à dire les mariages ou concubinages, etc.) de la personne active, ses parents
|
||||
(ou beaux-parents, or tuteurs, etc), ainsi que ses enfants
|
||||
(que ce soit des enfants directs, de conjoint ou bien adoptés, etc.).
|
||||
</para>
|
||||
|
||||
<!-- ==== Figure: Family View ==== -->
|
||||
<figure id="family-fig">
|
||||
<title>Vue Famille</title>
|
||||
<title>Vue des Familles</title>
|
||||
<screenshot><mediaobject><imageobject><imagedata
|
||||
fileref="figures/family.png" format="PNG"/></imageobject>
|
||||
<textobject>
|
||||
<phrase>Montre le Vue Famille. </phrase>
|
||||
<phrase>Vue des Familles </phrase>
|
||||
</textobject></mediaobject></screenshot></figure>
|
||||
<!-- ==== End of Figure ==== -->
|
||||
|
||||
<para>Les données de la personne active sont dans le haut, à gauche
|
||||
de la fenêtre. Juste en dessous, une autre boîte montre ses époux,
|
||||
épouses (ou toutes autres personnes en relation familiale).
|
||||
La double flèche dans le bouton à droite de la personne active
|
||||
fait échanger la personne active et son époux ou épouse sélectionné(e).
|
||||
Vous pouvez modifier la relation entre la personne active et son
|
||||
époux ou épouse sélectionnée en double-cliquant sur la personne
|
||||
active. Vous pouvez modifier les données de l'époux ou épouse sélectionnée
|
||||
en shift-cliquant sur lui ou elle. </para>
|
||||
<para>Les données de la personne active sont dans le haut, à gauche de la fenêtre. Juste en dessous, une autre boîte montre ses époux, épouses (ou toutes autres personnes en relation familiale). La double flèche dans le bouton à droite de la personne active fait échanger la personne active et son époux ou épouse sélectionné(e). Vous pouvez modifier la relation entre la personne active et son époux ou épouse sélectionnée en double-cliquant sur la personne active. Vous pouvez modifier les données de l'époux ou épouse sélectionnée en shift-cliquant sur lui ou elle.</para>
|
||||
|
||||
<para>Pour ajouter une nouvelle relation depuis la personne active,
|
||||
utilisez un des boutons du haut, à droite de la boîte de l'époux
|
||||
ou de l'épouse. Celui du haut ajoute une nouvelle personne dans
|
||||
la base de données et la relation avec la personne active. Celui du milieu
|
||||
crée une relation entre la personne active et une personne déjà déclarée
|
||||
dans la base de données. Le bouton du bas (<guibutton>-</guibutton>) à droite
|
||||
de la boîte de l'époux ou de l'épouse retire la relation avec cette personne.
|
||||
La plupart de ces fonctions sont aussi disponibles en cliquant avec le bouton
|
||||
droit de la souris dans la boîte de l'époux ou de l'épouse, puis
|
||||
en sélectionnant l'action voulue dans le menu contextuel ainsi
|
||||
activé. </para>
|
||||
<para> Pour ajouter une nouvelle relation depuis la personne active, utilisez un des boutons du haut, à droite de la boîte de l'époux ou de l'épouse. Celui du haut ajoute une nouvelle personne dans la base de données et la relation avec la personne active. Celui du milieu crée une relation entre la personne active et une personne déjà déclarée dans la base de données.
|
||||
Le bouton du bas (<guibutton>-</guibutton>) à droite de la boîte de l'époux ou de l'épouse retire la relation avec cette personne. La plupart de ces fonctions sont aussi disponibles en cliquant avec le bouton droit de la souris dans la boîte de l'époux ou de l'épouse, puis en sélectionnant l'action voulue dans le menu contextuel ainsi activé.</para>
|
||||
|
||||
<para>Les parents de la personne active ainsi que de la personne sélectionnée en relation
|
||||
sont affichés dans la partie droite de la fenêtre. Ceux de la personne active
|
||||
sont en haut, ceux de la personne en relation en bas. Leurs boîtes
|
||||
ont chacune un ensemble de trois boutons à droite.
|
||||
Les boutons <guibutton>+</guibutton> et <guibutton>-</guibutton>
|
||||
vous permettent d'ajouter ou de retirer des parents de la personne correspondante
|
||||
(active ou époux). La flèche vers la droite change de famille courante,
|
||||
en mettant la famille correspondante comme famille courante. Celà
|
||||
met comme personne active le père sélectionné, et comme épouse la mère.
|
||||
La plupart de ces fonctions sont aussi disponibles en cliquant avec le bouton
|
||||
droit de la souris dans la boîte des parents de l'époux ou de l'épouse, puis
|
||||
en sélectionnant l'action voulue dans le menu contextuel ainsi
|
||||
activé. </para>
|
||||
<para>Les parents de la personne active ainsi que de la personne sélectionnée en relation sont affichés dans la partie droite de la fenêtre. Ceux de la personne active sont en haut, ceux de la personne en relation en bas. Leurs boîtes ont chacune un ensemble de trois boutons à droite. Les boutons <guibutton>+</guibutton> et <guibutton>-</guibutton>
|
||||
vous permettent d'ajouter ou de retirer des parents de la personne correspondante (active ou époux). La flèche vers la droite change de famille courante, en mettant la famille correspondante comme famille courante. Celà met comme personne active le père sélectionné, et comme épouse la mère. La plupart de ces fonctions sont aussi disponibles en cliquant avec le bouton droit de la souris dans la boîte des parents de l'époux ou de l'épouse, puis en sélectionnant l'action voulue dans le menu contextuel ainsi activé. </para>
|
||||
|
||||
<para>La boîte du bas liste les enfants de la personne active et de
|
||||
la relation courante (sélectionnée). La liste des enfants peut être
|
||||
triée par date de naissance comme d'habitude, en cliquant dans l'en-tête de colonne
|
||||
<guilabel>Date de naissance</guilabel>.
|
||||
En plus des colonnes <guilabel>Nom</guilabel>,
|
||||
<guilabel>Identification</guilabel>, <guilabel>Genre</guilabel> et
|
||||
<guilabel>Date de naissance</guilabel>, la liste comprend une colonne
|
||||
<guilabel>Statut</guilabel>. Les deux mots de statut décrivent la relation
|
||||
entre l'enfant et son père ou sa mère (comme Naissance, Adoption...).
|
||||
Quatre boutons sont disponibles à droite de la liste des enfants.
|
||||
Celui du haut (flèche vers la gauche) met l'enfant sélectionné comme
|
||||
personne active. Les deux suivants ajoutent une personne dans la famille :
|
||||
celui du haut crée une personne tandis que celui du bas met une personne
|
||||
déjà déclarée dans la base de données comme enfant dans cette famille.
|
||||
Enfin, le bouton tout en bas <guibutton>-</guibutton>
|
||||
retire l'enfant sélectionné de la famille. Notez que ceci ne supprime
|
||||
pas la personne de la base de données.
|
||||
La plupart de ces fonctions sont aussi disponibles en cliquant avec le bouton
|
||||
droit de la souris dans la boîte des enfants, puis
|
||||
en sélectionnant l'action voulue dans le menu contextuel ainsi
|
||||
activé. </para>
|
||||
<para>La boîte du bas liste les enfants de la personne active et de la relation courante (sélectionnée). La liste des enfants peut être triée par date de naissance comme d'habitude, en cliquant dans l'en-tête de colonne
|
||||
<guilabel>Date de Naissance</guilabel>. En plus des colonnes <guilabel>Nom</guilabel>,
|
||||
<guilabel>Identifiant</guilabel>, <guilabel>Genre</guilabel>, et
|
||||
<guilabel>Date de Naissance</guilabel> , la vue comprend une ligne
|
||||
<guilabel>Statut</guilabel>. Les deux mots de statut décrivent la relation entre l'enfant et son père ou sa mère (comme Naissance, Adoption...).
|
||||
L'<guilabel>éditeur de colonnes</guilabel> peut être utilisé pour modifier l'affichage des colonnes.
|
||||
Quatre boutons sont disponibles à droite de la liste des enfants. Celui du haut (flèche vers la gauche) met l'enfant sélectionné comme personne active. Les deux suivants ajoutent une personne dans la famille : celui du haut crée une personne tandis que celui du bas met une personne déjà déclarée dans la base de données comme enfant dans cette famille. Enfin, le bouton tout en bas
|
||||
<guibutton>-</guibutton> retire l'enfant sélectionné de la famille. Notez que ceci ne supprime pas la personne de la base de données. La plupart de ces fonctions sont aussi disponibles en cliquant avec le bouton droit de la souris dans la boîte des enfants, puis en sélectionnant l'action voulue dans le menu contextuel ainsi activé.</para>
|
||||
|
||||
<para>La disposition de la Vue Famille peut être changé entre la disposition
|
||||
de gauche à droite décrite ci-dessus et la disposition de haut en bas
|
||||
décrite ci-dessous. Ceci se fait dans la section
|
||||
<guilabel>Affichage</guilabel> du dialogue
|
||||
<guilabel>Préférences</guilabel>. La disposition de haut en bas
|
||||
propose les mêmes fonctions que la disposition de gauche à droite. </para>
|
||||
<para>La disposition de la Vue Famille peut être changé entre la disposition de gauche à droite décrite ci-dessus et la disposition de haut en bas décrite ci-dessous.
|
||||
Ceci se fait dans la section
|
||||
<guilabel>Affichages</guilabel> du dialogue
|
||||
<guilabel>Préferences</guilabel>. La disposition de haut en bas propose les mêmes fonctions
|
||||
que la disposition de gauche à droite.</para>
|
||||
|
||||
<!-- ==== Figure: Family View ==== -->
|
||||
<figure id="family-alt-fig">
|
||||
<title>Autre Vue Famille</title>
|
||||
<title>Vue Alternative des Familles</title>
|
||||
<screenshot><mediaobject><imageobject><imagedata
|
||||
fileref="figures/family-alt.png" format="PNG"/></imageobject>
|
||||
<textobject>
|
||||
<phrase>Montre l'autre Vue Famille. </phrase>
|
||||
<phrase>Vue Alternative des Familles </phrase>
|
||||
</textobject></mediaobject></screenshot></figure>
|
||||
<!-- ==== End of Figure ==== -->
|
||||
|
||||
</sect3>
|
||||
</sect2>
|
||||
|
||||
<!-- ================ Main Window Sub-subsection -->
|
||||
<sect3 id="pedigree-view">
|
||||
<title>Vue d'Arborescence</title>
|
||||
<sect2 id="pedigree-view">
|
||||
<title>Vue de l'Arborescence</title>
|
||||
|
||||
<!-- ==== Figure: Pedigree View ==== -->
|
||||
<figure id="pedigree-fig">
|
||||
<title>Vue d'Arborescence</title>
|
||||
<figure id="pedigree-fig">
|
||||
<title>Vue de l'Arborescence</title>
|
||||
<screenshot><mediaobject><imageobject><imagedata
|
||||
fileref="figures/pedigree.png" format="PNG"/></imageobject>
|
||||
<textobject>
|
||||
<phrase>Montre la Vue en Arborescence. </phrase>
|
||||
<phrase>Vue de l'Arborescence</phrase>
|
||||
</textobject></mediaobject></screenshot></figure>
|
||||
<!-- ==== End of Figure ==== -->
|
||||
|
||||
<para>La vue en Arborescence vous aide à voir la place de la personne active
|
||||
dans l'arbre de ses ancêtres. Elle montre quatre générations, de la personne
|
||||
active vers ses parents, ses grands-parents et ses arrière grands-parents.
|
||||
Chaque personne est représentée par un rectangle portant
|
||||
son nom. Deux lignes relient la personne à son père (ligne supérieure) et sa
|
||||
mère (ligne inférieure). Les lignes continues figurent les liens
|
||||
de filiation tandis que les lignes pointillées représentent les autres liens
|
||||
(adoption, beau-père ou belle-mère, tuteurs).
|
||||
Quand le pointeur de la souris passe sur une personne, son rectangle
|
||||
s'agrandit pour afficher ses dates de naissance et de décès.
|
||||
Quand le pointeur de la souris passe sur une ligne de famille, celle-ci
|
||||
est mise en évidence. Double-cliquer sur la ligne met alors le parent correspondant comme
|
||||
personne active. Tout l'affichage change alors en conséquence. </para>
|
||||
<para>La vue en Arborescence vous aide à voir la place de la personne active dans l'arbre de ses ancêtres. Elle montre quatre générations,
|
||||
de la personne active
|
||||
<guilabel>1</guilabel>vers ses parents <guilabel>2</guilabel>,
|
||||
ses grands-parents <guilabel>3</guilabel> et ses arrière grands-parents
|
||||
<guilabel>4</guilabel>.
|
||||
Chaque personne est représentée par un rectangle portant son nom. Deux lignes relient la personne à son père (ligne supérieure) et sa mère (ligne inférieure). Les lignes continues figurent les liens de filiation tandis que les lignes pointillées représentent les autres liens (adoption, beau-père ou belle-mère, tuteurs). Quand le pointeur de la souris passe sur une personne, son rectangle s'agrandit pour afficher ses dates de naissance et de décès. Quand le pointeur de la souris passe sur une ligne de famille, celle-ci est mise en évidence. Double-cliquer sur la ligne met alors le parent correspondant comme personne active.
|
||||
Tout l'affichage change alors en conséquence.</para>
|
||||
|
||||
<!-- ==== Figure: Pedigree View ==== -->
|
||||
<figure id="pedigree-child-cut-fig">
|
||||
<title>Menu des enfants</title>
|
||||
<screenshot><mediaobject><imageobject><imagedata
|
||||
fileref="figures/pedigree-child-cut.png" format="PNG"/></imageobject>
|
||||
<textobject>
|
||||
<phrase>Montre le menu des enfants dans la vue en arbre. </phrase>
|
||||
</textobject></mediaobject></screenshot></figure>
|
||||
<!-- ==== End of Figure ==== -->
|
||||
<!-- ==== Figure: Pedigree View ==== -->
|
||||
<figure id="pedigree-child-cut-fig">
|
||||
<title>Menu des Enfants</title>
|
||||
<screenshot><mediaobject><imageobject><imagedata
|
||||
fileref="figures/pedigree-child-cut.png" format="PNG"/></imageobject>
|
||||
<textobject>
|
||||
<phrase>La vue des Enfants dans l'arborescence </phrase>
|
||||
</textobject></mediaobject></screenshot></figure>
|
||||
<!-- ==== End of Figure ==== -->
|
||||
|
||||
<para>Une flèche vers la gauche est affichée dans la partie gauche de la fenêtre.
|
||||
En cliquant dessus, un menu comprenant les enfants de la personne active
|
||||
apparait. Sélectionner un des enfants le met alors comme personne active.
|
||||
Le nom de chaque enfant est affiché différemment selon que la personne est
|
||||
une feuille de l'arbre (sans enfants connus) ou bien a des enfants connus.
|
||||
Le nom d'une personne dont on connait des enfants apparaît en caractères
|
||||
gras et italiques au lieu d'être affiché en caractères normaux.
|
||||
Si la personne active n'a qu'un enfant, aucun menu ne sera affiché puisqu'il
|
||||
n'y a pas de choix possible. Dans ce cas, l'unique enfant devient la personne
|
||||
active dès que l'on a cliqué sur le bouton. </para>
|
||||
<para>Une flèche vers la gauche est affichée dans la partie gauche de la fenêtre. En cliquant dessus, un menu comprenant les enfants de la personne active apparait. Sélectionner un des enfants le met alors comme personne active. Le nom de chaque enfant est affiché différemment selon que la personne est une feuille de l'arbre (sans enfants connus) ou bien a des enfants connus. Le nom d'une personne dont on connait des enfants apparaît en caractères gras et italiques au lieu d'être affiché en caractères normaux. Si la personne active n'a qu'un enfant, aucun menu ne sera affiché puisqu'il n'y a pas de choix possible. Dans ce cas, l'unique enfant devient la personne active dès que l'on a cliqué sur le bouton.</para>
|
||||
|
||||
<para>Deux flèches vers la droite sont affichées dans la partie droite de la fenêtre.
|
||||
Celle du haut prend comme personne active le père de la personne active.
|
||||
Celle du bas met comme nouvelle personne active la mère de la personne
|
||||
active.
|
||||
Comme précédemment, tout l'affichage change alors en conséquence. </para>
|
||||
<para>Deux flèches vers la droite sont affichées dans la partie droite de la fenêtre. Celle du haut prend comme personne active le père de la personne active. Celle du bas met comme nouvelle personne active la mère de la personne active. Comme précédemment, tout l'affichage change alors en conséquence.</para>
|
||||
|
||||
<!-- ==== Figure: Pedigree View ==== -->
|
||||
<figure id="pedigree-anchor-fig">
|
||||
<title>Vue en arborescence avec ancrage</title>
|
||||
<figure id="pedigree-siblings-cut-fig">
|
||||
<title>Menu Personnel Contextuel</title>
|
||||
<screenshot><mediaobject><imageobject><imagedata
|
||||
fileref="figures/pedigree-siblings-cut.png" format="PNG"/></imageobject>
|
||||
<textobject>
|
||||
<phrase>Vue du menu Personnel Contextuel dans l'arborescence</phrase>
|
||||
</textobject></mediaobject></screenshot></figure>
|
||||
<!-- ==== End of Figure ==== -->
|
||||
|
||||
<para>
|
||||
Un clic-droit appelle un menu contextuel.
|
||||
Ce menu indique si l'individu a des <guilabel>Conjoints</guilabel>,
|
||||
des <guilabel>Enfants de mêmes parents</guilabel>,
|
||||
des <guilabel>Enfants</guilabel> et des <guilabel>Parents</guilabel>.
|
||||
Le sous-menus peut indiquer l'absence des données dans la catégorie appropriée.
|
||||
</para>
|
||||
|
||||
|
||||
<!-- ==== Figure: Pedigree View ==== -->
|
||||
<figure id="pedigree-anchor-fig">
|
||||
<title>Vue de l'Arbre avec l'ancre</title>
|
||||
<screenshot><mediaobject><imageobject><imagedata
|
||||
fileref="figures/pedigree-anchor.png" format="PNG"/></imageobject>
|
||||
<textobject>
|
||||
<phrase>Shows Pedigree View with the anchor set. </phrase>
|
||||
<phrase>Vue de l'Arbre avec l'ancre </phrase>
|
||||
</textobject></mediaobject></screenshot></figure>
|
||||
<!-- ==== End of Figure ==== -->
|
||||
|
||||
<para>Un principe avancé de numérotation des générations existe dans
|
||||
la vue arborescente. Il est rendu disponible en jetant l'ancre
|
||||
sur la personne active. Si l'ancre est jetée, les générations sont étiquetées
|
||||
comme suit : la personne active et toutes celles de sa génération sont
|
||||
<para>Un principe avancé de numérotation des générations existe dans la vue arborescente. Il est rendu disponible en jetant l'ancre sur la personne active. Si l'ancre est jetée, les générations sont étiquetées comme suit : la personne active et toutes celles de sa génération sont
|
||||
étiquetées <guilabel>0</guilabel>.
|
||||
Les ancêtres sont numérotés avec des nombres positifs
|
||||
Les ancêtres sont numérotés avec des nombres positifs
|
||||
(<guilabel>1</guilabel>, <guilabel>2</guilabel>, <guilabel>3</guilabel>,
|
||||
etc.) et les descendants sont numérotés avec des nombres négatifs
|
||||
(<guilabel>-1</guilabel>, <guilabel>-2</guilabel>, <guilabel>-3</guilabel>,
|
||||
etc.). Dans tous les cas, l'étiquette représente le nombre de générations
|
||||
entre la génération étiquetée et la personne active lors du jet de l'ancre.
|
||||
Dans ce mode, vous pouvez vous déplacer dans l'arbre des générations et
|
||||
les compter depuis la personne active.</para>
|
||||
etc.). Dans tous les cas, l'étiquette représente le nombre de générations entre la génération étiquetée et la personne active lors du jet de l'ancre. Dans ce mode, vous pouvez vous déplacer dans l'arbre des générations et les compter depuis la personne active.</para>
|
||||
|
||||
<para>Pour placer l'ancre, choisissez <guilabel>Jeter l'ancre</guilabel> dans
|
||||
le menu contextuel (clic droit) quand la personne voulue est la personne
|
||||
active à la racine de la vue arborescente. Les étiquettes changeront alors
|
||||
et le nom de la personne-ancre sera affiché en bas à gauche de la vue arborescente.
|
||||
La personne-ancre le restera jusqu'à ce que l'ancre soit retirée
|
||||
(choix <guilabel>Lever l'ancre</guilabel> dans le menu contextuel) ou
|
||||
ou encore que la personne active ne soit plus en relation avec la personne-ancre.
|
||||
Ce dernier cas arrive par l'utilisation des outils de déplacement avancé
|
||||
de &app;. Voir <xref linkend="gramps-nav"/> pour plus de détails.
|
||||
<para>Pour placer l'ancre, choisissez <guilabel>Jeter l'ancre</guilabel> dans le menu contextuel (clic droit) quand la personne voulue est la personne active à la racine de la vue arborescente. Les étiquettes changeront alors et le nom de la personne-ancre sera affiché en bas à gauche de la vue arborescente. The labels will change immediately,
|
||||
and the name of the anchor person will appear at the lower left corner
|
||||
of the display area. La personne-ancre le restera jusqu'à ce que l'ancre soit retirée (choix
|
||||
<guilabel>Lever l'ancre</guilabel> dans le menu contextuel) ou ou encore que la personne active ne soit plus en relation avec la personne-ancre. Ce dernier cas arrive par l'utilisation des outils de déplacement avancé de &app;. Voir
|
||||
<xref linkend="gramps-nav"/> pour plus de détails.
|
||||
</para>
|
||||
|
||||
</sect3>
|
||||
</sect2>
|
||||
|
||||
<!-- ================ Main Window Sub-subsection -->
|
||||
<sect3 id="sources-view">
|
||||
<title>Vue des Sources</title>
|
||||
<sect2 id="sources-view">
|
||||
<title>Sources View</title>
|
||||
|
||||
<!-- ==== Figure: Sources View ==== -->
|
||||
<figure id="sources-fig">
|
||||
@@ -428,25 +370,19 @@
|
||||
<screenshot><mediaobject><imageobject><imagedata
|
||||
fileref="figures/sources.png" format="PNG"/></imageobject>
|
||||
<textobject>
|
||||
<phrase>Montre la Vue des Sources. </phrase>
|
||||
<phrase>Vue des Sources </phrase>
|
||||
</textobject></mediaobject></screenshot></figure>
|
||||
<!-- ==== End of Figure ==== -->
|
||||
|
||||
<para>La Vue Sources présente les sources d'information conservées dans la
|
||||
base de données. Ceci peut couvrir des documents variés comme les actes de naissance, décès,
|
||||
mariage, livres, journaux, journaux personnels. En fait tout document peut
|
||||
être pris comme une source d'information. Les sources peuvent être utilisée comme référence
|
||||
pour n'importe quel évènement conservé dans la base de données.
|
||||
La Vue Sources présente pour chaque source le
|
||||
<guilabel>Titre</guilabel>, l'<guilabel>Identifiant</guilabel>, et
|
||||
l'<guilabel>Auteur</guilabel>. Le tri peut être fait par rapport
|
||||
à n'importe quelle colonne. Il se fait comme d'habitude : un clic dans
|
||||
l'en-tête de la colonne pour trier en ordre ascendant, un autre clic
|
||||
pour trier dans l'ordre descendant. </para>
|
||||
</sect3>
|
||||
<para>La Vue des Sources présente les sources d'information conservées dans la base de données. Ceci peut couvrir des documents variés comme les actes de naissance, décès, mariage, livres, journaux, journaux personnels. En fait tout document peut être pris comme une source d'information. Les sources peuvent être utilisée comme référence pour n'importe quel évènement conservé dans la base de données. La Vue Sources présente pour chacune le
|
||||
<guilabel>Titre</guilabel>, l'<guilabel>Identifiant</guilabel>, et l'
|
||||
<guilabel>Auteur</guilabel>. Le tri peut être fait par rapport à n'importe quelle colonne. Il se fait comme d'habitude : un clic dans l'en-tête de la colonne pour trier en ordre ascendant, un autre clic pour trier dans l'ordre descendant.
|
||||
L'<guilabel>Editeur de colonnes</guilabel> peut être utilisé pour l'affichage des colonnes.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<!-- ================ Main Window Sub-subsection -->
|
||||
<sect3 id="places-view">
|
||||
<sect2 id="places-view">
|
||||
<title>Vue des Lieux</title>
|
||||
|
||||
<!-- ==== Figure: Places View ==== -->
|
||||
@@ -455,50 +391,40 @@
|
||||
<screenshot><mediaobject><imageobject><imagedata
|
||||
fileref="figures/places.png" format="PNG"/></imageobject>
|
||||
<textobject>
|
||||
<phrase>Montre la Vue des Lieux. </phrase>
|
||||
<phrase>Vue des Lieux </phrase>
|
||||
</textobject></mediaobject></screenshot></figure>
|
||||
<!-- ==== End of Figure ==== -->
|
||||
|
||||
<para>La Vue des Lieux présente la liste des endroits géographiques
|
||||
où se sont passés les évènements enregistrés dans la base de données.
|
||||
Cela peut être les lieux de naissance, mariage, décès des individus,
|
||||
aussi bien que leur lieu d'habitation, de travail ou d'études comme
|
||||
n'importe quelle référence géographique. La Vue des Lieux affiche
|
||||
pour chaque lieu son <guilabel>Nom</guilabel>,
|
||||
<guilabel>Identifiant</guilabel>, <guilabel>Paroisse</guilabel>,
|
||||
<guilabel>Ville</guilabel>, <guilabel>Département</guilabel>,
|
||||
<guilabel>Région</guilabel>, et <guilabel>Pays</guilabel>. Toutes ces colonnes
|
||||
peuvent servir de critère de tri comme d'habitude. </para>
|
||||
</sect3>
|
||||
<para>La Vue des Lieux présente la liste des endroits géographiques où se sont passés les évènements enregistrés dans la base de données. Cela peut être les lieux de naissance, mariage, décès des individus, aussi bien que leur lieu d'habitation, de travail ou d'études comme n'importe quelle référence géographique. La Vue des Lieux affiche pour chaque lieu son
|
||||
<guilabel>Nom</guilabel>,
|
||||
son <guilabel>Identifiant</guilabel>, sa <guilabel>Paroisse</guilabel>,
|
||||
sa <guilabel>Ville</guilabel>, son <guilabel>Département</guilabel>,
|
||||
sa <guilabel>Région</guilabel> et son <guilabel>Pays</guilabel>.
|
||||
Toutes ces colonnes peuvent servir de règle de tri.
|
||||
L'<guilabel>Editeur de colonnes</guilabel> peut être utilisé pour l'affichage des colonnes.</para>
|
||||
</sect2>
|
||||
|
||||
<!-- ================ Main Window Sub-subsection -->
|
||||
<sect3 id="media-view">
|
||||
<title>Vue des Medias</title>
|
||||
<sect2 id="media-view">
|
||||
<title>Media View</title>
|
||||
|
||||
<!-- ==== Figure: Media View ==== -->
|
||||
<figure id="media-fig">
|
||||
<title>Vue des Medias</title>
|
||||
<title>Vue des Médias</title>
|
||||
<screenshot><mediaobject><imageobject><imagedata
|
||||
fileref="figures/media.png" format="PNG"/></imageobject>
|
||||
<textobject>
|
||||
<phrase>Montre la Vue des Medias. </phrase>
|
||||
<phrase>Vue des Médias </phrase>
|
||||
</textobject></mediaobject></screenshot></figure>
|
||||
<!-- ==== End of Figure ==== -->
|
||||
|
||||
<para>La Vue des Medias présente la liste des objets multimedia
|
||||
utilisés dans la base de données. Les objets multimedia sont
|
||||
des fichiers liés aux données de la base généalogique. Techniquement,
|
||||
on peut mettre n'importe quel fichier en objet multimedia.
|
||||
Habituellement, on y met des images, des enregistrements audio ou video.
|
||||
La liste présente pour chaque objet multimedia son
|
||||
<guilabel>Titre</guilabel>,
|
||||
<guilabel>Identifiant</guilabel>, <guilabel>Type</guilabel> et
|
||||
<para>La Vue des Medias présente la liste des objets multimedia utilisés dans la base de données. Les objets multimedia sont des fichiers liés aux données de la base généalogique. Techniquement, on peut mettre n'importe quel fichier en objet multimedia. Habituellement, on y met des images, des enregistrements audio ou video. La liste présente pour chaque objet multimedia son
|
||||
<guilabel>Nom</guilabel>,
|
||||
son <guilabel>Identifiant</guilabel>, son <guilabel>Type</guilabel>, et son
|
||||
<guilabel>Chemin d'accès</guilabel>.
|
||||
Toutes ces colonnes peuvent servir de critère de tri comme d'habitude.
|
||||
La partie supérieure de la fenêtre montre une prévisualisation
|
||||
quand c'est possible ainsi que les informations sur l'objet multimedia
|
||||
sélectionné. </para>
|
||||
</sect3>
|
||||
Toutes ces colonnes peuvent servir de règle de tri.
|
||||
La partie supérieure de la fenêtre montre une prévisualisation quand c'est possible ainsi que les informations sur l'objet multimedia sélectionné. </para>
|
||||
</sect2>
|
||||
|
||||
</sect2>
|
||||
</sect1> <!-- ================ End Main Window ===================== -->
|
||||
</sect1>
|
||||
</chapter>
|
||||
@@ -0,0 +1,181 @@
|
||||
<preface id="gramps-preface">
|
||||
|
||||
<!--
|
||||
User Manual for Gramps - a GTK+/GNOME based genealogy program
|
||||
|
||||
Copyright (C) 2003-2005 Alexander Roitman
|
||||
|
||||
This document 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 document 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$ -->
|
||||
|
||||
<title>Préface</title>
|
||||
<para> &app; est une application de généalogie. &app; est l'acronyme de Genealogical Research and Analysis Management Programming System (Systeme de Programmation pour Recherche, Analyse et Gestion de données généalogiques). En bref, il vous permet de conserver, modifier et chercher des données de
|
||||
généalogie à l'aide d'un ordinateur. Il est semblable à d'autres programmes de généalogie mais il offre en plus des possibilités qui lui sont uniques</para>
|
||||
|
||||
<sect1 id="why-gramps">
|
||||
<title>Pourquoi &app;?</title>
|
||||
<para> &app; a été pensé avec l'idée que la plupart des logiciels de généalogie permettent de saisir des données. Ils suivent en général le modèle de données standard Gedcom. Habituellement, on peut afficher des arbres ascendants ou descendants sur l'écran ou bien les imprimer. On peut ajouter des images aux données. On peut souvent saisir des informations sur des personnes ou des familles non obligatoirement liées avec l'objet de la recherche. D'autres extensions portent sur l'importation ou l'exportation de données ainsi que sur les impressions d'états.
|
||||
<para> &app; cherche à fournir toutes les fonctions communes de ces logiciels et aussi la capacité d'intégrer des informations éparses directement, puis de traiter/réorganiser n'importe quel évènement et/ou donnée dans toute la base de
|
||||
données, pour aider l'utilisateur dans ses recherches, analyses, recoupements et éventuellement mises en relation de données. En bref, cet outil traite toutes les données en un lieu unique avec l'aide de l'ordinateur, en remplaçant le crayon et les montagnes de papier. </para>
|
||||
</para>
|
||||
</sect1>
|
||||
|
||||
|
||||
<sect1 id="whats-new">
|
||||
<title> Ce qu'il y a de neuf depuis la version 1.X</title>
|
||||
<para>Cette section énumère les changements les plus notables par rapport à la dernière branche stable de &app;, la 1.X</para>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry><term>Base de données Berkeley </term>
|
||||
<listitem><para>Le format de &app; est maintenant la base de données BSDDB. Ce changement nous a permis de surmonter des issues d'exécution et les conditions de mémoire de la branche 1.0.X. Avec ce format, une base de données de 100 000 individus ne présentent pas un obstacle important.</para>
|
||||
|
||||
<para>
|
||||
Ce nouveau format est ouvert et entièrement documenté dans la référence de l'api distribuée avec la source de &app;
|
||||
</para>
|
||||
|
||||
<para>Une conséquence de la nouvelle base de données reste que les changements, une fois approuvés par l'utilisateur, sont appliqués immédiatement. En bref, une fois que vous cliquez OK chez la personne, la famille, source, lieux, objet médias, ou un événement, tous les changements faits sont enregistrés dans la base de données. Aucun enregistrement n'est nécessaire (ou même possible). En outre, il est possible de défaire des actions récentes.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Améliorations de l'interface</term>
|
||||
<listitem><para>
|
||||
Il y a de nombreux changements dans l'interface. La plupart d'entre eux sont des améliorations subtiles et tous ne peuvent pas être énumérés ici. Les changements les plus apparents sont:
|
||||
<itemizedlist>
|
||||
<listitem><para>Disparition des étiquettes alphabétiques</para></listitem>
|
||||
<listitem><para>Possibilités d'ajouter/supprimer/modifier la vue des listes</para></listitem>
|
||||
<listitem><para>Disparition des fonctions d'enregistrement et ajout d'une fonction "retour à la dernière version"</para></listitem>
|
||||
<listitem><para>Gestion et déplacements appropriés de la plupart des fenêtres</para></listitem>
|
||||
<listitem><para>Soutien de l'astuce du jour</para></listitem>
|
||||
<listitem><para>menu Personnel contextuel (clic de droit) les parents, les enfants et les conjoints peuvent être affichés dans l'arborescence</para></listitem>
|
||||
<listitem><para>Magicien d'exportation</para></listitem>
|
||||
<listitem><para>Fonction intégrée de recherche dans les vues de liste</para></listitem>
|
||||
<listitem><para>Dialogue de sélecteur de date</para></listitem>
|
||||
<listitem><para>Perfectionnements dans l'édition des noms : les patronymes et les chaînes non transférées </para></listitem>
|
||||
<listitem><para>Ajout du fichier récent (gramps et menu de GNOME)</para></listitem>
|
||||
</itemizedlist>
|
||||
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Les autres base de données</term>
|
||||
<listitem><para>
|
||||
Avec BSDDB, la base de données est en mémoire, de même que pour le format GRAMPS XML et les GEDCOM. Il est maintenant possible d'ouvrir de façon "indigènes", des données dans ces deux formats (bien que préférant le format par défaut : grdb), sans installer nécessairement une base de données vide et l'importer. Cette approche exige de contenir toutes les données en mémoire, ainsi il est seulement utile pour de petites bases de données (selon la capacité de la mémoire disponible). En un tel mode, les données sont automatiquement sauvées sur la sortie, pour imiter la fonctionnalité de la vraie base de données.
|
||||
|
||||
<warning id="gedcom-inmem1-warn">
|
||||
<title>Edition de GEDCOM</title>
|
||||
<para>
|
||||
Maintenez svp à l'esprit que l'information du fichier GEDCOM peut être perdue pendant l'importation dans &app;. Simplement l'ouverture et le visionnement du dossier ne le changeront pas. Cependant, si des changements étaient faits et ils n'étaient pas exportés, sortir de &app; sauvera les données, avec la perte possible de données.
|
||||
</para>
|
||||
</warning>
|
||||
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Importation et exportation</term>
|
||||
<listitem><para>
|
||||
Les nouveaux filtres d'importation et d'exportation disponibles pour GeneWeb.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Rapports</term>
|
||||
<listitem><para>
|
||||
Un nouveau rapport -- diagramme de statistiques -- a été ajouté à &app;.
|
||||
</para>
|
||||
|
||||
<para>Un changement global du cadre entier de rapport a été accomplis. Tous les rapports se rappellent maintenant leurs options. Il est possible de produire des rapports en ligne de commande, sans lancer la session interactive de &app;. Le rapport api est beaucoup plus simple maintenant, le rendant facile d'écriture. Un exemple simple de code peut être employé pour un rapport autonome, un article de livre, et un rapport en ligne de commande.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Ligne de commande</term>
|
||||
<listitem><para>La nouvelle fonctionnalité de ligne de commande inclut d'ouvrir l'argument de nom de fichier non donné sans aucun drapeau, aussi bien que de nouveaux drapeaux et options pour la production d'états. En outre, l'addition de nouveaux formats mène à l'addition des options de format disponible.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Internationalisation</term>
|
||||
<listitem><para>
|
||||
L'approche pour écrire et montrer des dates a été complètement retouchée. En particulier, le nouveau cadre tient compte d'une localisation plus profonde des dates montrées, ce qui n'était jamais possible en utilisant les chaînes traduisibles.</para>
|
||||
|
||||
<para>L'internationalisation des noms ont été également améliorées. Des noms peuvent être groupés sous une chaîne non-transférée. Les Patronymes sont soutenus, et il est facile de programmer de nouvelles manières pour montrer des noms, comme celà peut être exigé par diverses cultures et langues.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry><term>Intégration de bureau</term>
|
||||
<listitem><para>Tous les formats connus de &app; sont maintenant enregistrés comme types-MIME, chacun avec son icône et &app; en tant que programme par défaut. Double-cliquer sur un dossier avec n'importe lequel de ces formats lancera &app; et ouvrira la base. &app; a également ajouté le soutien des documents récents. Présent dans le menu GNOME et dans &app;.
|
||||
</para>
|
||||
<para>Les préférences sont maintenant correctement en magasin en utilisant GConf, avec des schémas, la division des clefs dans de plus petits annuaires, la vérification des erreurs, et l'avis.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</sect1>
|
||||
|
||||
|
||||
<sect1 id="typography">
|
||||
<title> Conventions typographiques</title>
|
||||
<para>
|
||||
Dans ce manuel, nous utilisons des mots identifiés par la typographie spéciale:
|
||||
<itemizedlist>
|
||||
<listitem><application>Applications</application></listitem>
|
||||
<listitem><command>Commandes</command> à lancer à la ligne de commande</listitem>
|
||||
<listitem><filename>Nom_de_fichier</filename></listitem>
|
||||
<listitem><replaceable>Texte remplaçable</replaceable></listitem>
|
||||
<listitem><guilabel>Icônes/Onglets</guilabel> pour les boutons et d'autres parties de l'interface graphique</listitem>
|
||||
|
||||
<listitem> Le choix du menu :
|
||||
<menuchoice>
|
||||
<guimenu>Menu</guimenu>
|
||||
<guisubmenu>Sous-menu</guisubmenu>
|
||||
<guimenuitem>Article du Menu</guimenuitem>
|
||||
</menuchoice>
|
||||
</listitem>
|
||||
<listitem><guibutton>Boutons</guibutton> que vous pouvez cliquer</listitem>
|
||||
<listitem><userinput> Quelque chose que vous saisissez</userinput></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Nous fournissons également des informations additionnelles dans les astuces et les notes, comme suit.
|
||||
|
||||
<tip id="example-tip">
|
||||
<title>Astuce</title>
|
||||
<para>
|
||||
Les astuces et le peu d'information supplémentaire ressembleront à ceci.
|
||||
</para>
|
||||
</tip>
|
||||
|
||||
<note id="example-note">
|
||||
<title>Note</title>
|
||||
<para>
|
||||
Les notes ressembleront à ceci.
|
||||
</para>
|
||||
</note>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
En conclusion, nous avons également des avertissements :
|
||||
|
||||
<warning id="example-warning">
|
||||
<title>Avertissement d'exemple</title>
|
||||
<para>
|
||||
Si vous courrez un ennui, nous vous avertirons à l'avance.
|
||||
</para>
|
||||
</warning>
|
||||
</para>
|
||||
</sect1>
|
||||
|
||||
</preface>
|
||||
@@ -1,320 +0,0 @@
|
||||
<!--?xml version="1.0" encoding="UTF-8"?-->
|
||||
|
||||
<!-- A Document Type Definition for genealogy data (as produced by Gramps)
|
||||
|
||||
Copyright (c) 2001 Graham J. Williams
|
||||
|
||||
Time-stamp: <2002/01/22 15:41:37 Graham.Williams@csiro.au>
|
||||
|
||||
Freely Redistributable under the terms of the GNU General Public License.
|
||||
|
||||
Based on GEDCOM and conforming to the Gramps XML encoding.
|
||||
Still under development and Gramps XML not complete.
|
||||
|
||||
Information on Gramps is available from http://
|
||||
|
||||
-->
|
||||
|
||||
<!--
|
||||
|
||||
DATABASE
|
||||
|
||||
Defines an XML document which is a <database> consisting of a
|
||||
|
||||
header Information about the "owner" of the database
|
||||
people
|
||||
families
|
||||
sources
|
||||
places
|
||||
objects
|
||||
bookmarks
|
||||
|
||||
-->
|
||||
|
||||
<!ELEMENT database (header, people?, families?, sources?, places?, objects?,
|
||||
bookmarks?)>
|
||||
|
||||
<!-- ************************************************************
|
||||
|
||||
HEADER
|
||||
|
||||
A <header> consists of <created> (information about this
|
||||
genealogical database) and <researcher> (information about the
|
||||
person who created this genealogical database)
|
||||
|
||||
-->
|
||||
|
||||
<!ELEMENT header (created, researcher?)>
|
||||
|
||||
<!ELEMENT created EMPTY>
|
||||
<!ATTLIST created
|
||||
date CDATA #REQUIRED
|
||||
version CDATA #REQUIRED
|
||||
people CDATA #REQUIRED
|
||||
families CDATA #REQUIRED>
|
||||
|
||||
<!ELEMENT researcher (resname, resaddr?, rescity?, resstate?,
|
||||
rescountry?, respostal?, resphone?, resemail?)>
|
||||
<!ELEMENT resname (#PCDATA)>
|
||||
<!ELEMENT resaddr (#PCDATA)>
|
||||
<!ELEMENT rescity (#PCDATA)>
|
||||
<!ELEMENT resstate (#PCDATA)>
|
||||
<!ELEMENT rescountry (#PCDATA)>
|
||||
<!ELEMENT respostal (#PCDATA)>
|
||||
<!ELEMENT resphone (#PCDATA)>
|
||||
<!ELEMENT resemail (#PCDATA)>
|
||||
|
||||
<!-- ************************************************************
|
||||
|
||||
PEOPLE
|
||||
|
||||
The UID is a place holder for PAF UID's that are imported. PAF
|
||||
generates a unique ID for each person which is useful for
|
||||
merges. It is not used by Gramps otherwise.
|
||||
|
||||
-->
|
||||
|
||||
<!ELEMENT people (person)*>
|
||||
<!ATTLIST people default CDATA #IMPLIED>
|
||||
|
||||
<!--
|
||||
|
||||
PERSON
|
||||
|
||||
gender Either M or F.
|
||||
name
|
||||
aka Also known as. Alternative names from marriage,
|
||||
adoption, legal name change, etc
|
||||
|
||||
nick The nick name - a name the person is sometimes known by.
|
||||
|
||||
-->
|
||||
|
||||
<!ELEMENT person (gender, name?, aka*, nick?, pos?, uid?, event*,
|
||||
objref*, url*, childof*, address*, parentin*,
|
||||
sourceref?, attribute*, note?)>
|
||||
<!ATTLIST person id ID #REQUIRED>
|
||||
|
||||
<!--
|
||||
|
||||
GENDER has values of M or F.
|
||||
|
||||
-->
|
||||
|
||||
<!ELEMENT gender (#PCDATA)>
|
||||
|
||||
<!--
|
||||
|
||||
NAME and AKA
|
||||
|
||||
first Given names
|
||||
last Surname
|
||||
suffix
|
||||
title E.g., Sargent Major
|
||||
|
||||
-->
|
||||
|
||||
<!ELEMENT name (first?, last?,suffix?,title?)>
|
||||
<!ATTLIST name conf CDATA #IMPLIED
|
||||
priv CDATA #IMPLIED>
|
||||
|
||||
<!ELEMENT aka (first?, last?,suffix?,note?)>
|
||||
<!ATTLIST aka conf CDATA #IMPLIED
|
||||
priv CDATA #IMPLIED>
|
||||
|
||||
<!ELEMENT first (#PCDATA)>
|
||||
<!ELEMENT last (#PCDATA)>
|
||||
<!ELEMENT suffix (#PCDATA)>
|
||||
<!ELEMENT title (#PCDATA)>
|
||||
|
||||
<!ELEMENT nick (#PCDATA)>
|
||||
<!ELEMENT uid (#PCDATA)>
|
||||
|
||||
<!ELEMENT pos EMPTY>
|
||||
<!ATTLIST pos x CDATA #REQUIRED
|
||||
y CDATA #REQUIRED>
|
||||
|
||||
<!ELEMENT childof EMPTY>
|
||||
<!ATTLIST childof
|
||||
ref IDREF #REQUIRED
|
||||
mrel (Birth|Adopted|Stepchild|Other|Unknown) #IMPLIED
|
||||
frel (Birth|Adopted|Stepchild|Other|Unknown) #IMPLIED>
|
||||
|
||||
<!ELEMENT parentin EMPTY>
|
||||
<!ATTLIST parentin
|
||||
ref IDREF #REQUIRED>
|
||||
|
||||
<!ELEMENT address (dateval?,street?,city?,state?,country?,postal?,
|
||||
note?,sourceref?)>
|
||||
<!ATTLIST address conf CDATA #IMPLIED
|
||||
priv CDATA #IMPLIED>
|
||||
|
||||
<!ELEMENT street (#PCDATA)>
|
||||
<!ELEMENT city (#PCDATA)>
|
||||
<!ELEMENT country (#PCDATA)>
|
||||
<!ELEMENT postal (#PCDATA)>
|
||||
<!ELEMENT state (#PCDATA)>
|
||||
|
||||
<!-- ************************************************************
|
||||
|
||||
FAMILY
|
||||
|
||||
An element to record information about a family.
|
||||
|
||||
-->
|
||||
|
||||
<!ELEMENT families (family)*>
|
||||
|
||||
<!ELEMENT family (father?,mother?,event*,objref*,child*,attribute*,note?)>
|
||||
<!ATTLIST family
|
||||
id ID #REQUIRED
|
||||
type (Married|Unmarried|Partners|Other|Unkown) #IMPLIED>
|
||||
|
||||
<!ELEMENT father EMPTY>
|
||||
<!ATTLIST father ref IDREF #REQUIRED>
|
||||
|
||||
<!ELEMENT mother EMPTY>
|
||||
<!ATTLIST mother ref IDREF #REQUIRED>
|
||||
|
||||
<!ELEMENT child EMPTY>
|
||||
<!ATTLIST child ref IDREF #REQUIRED>
|
||||
|
||||
<!-- ************************************************************
|
||||
|
||||
SOURCES
|
||||
|
||||
-->
|
||||
|
||||
<!ELEMENT sources (source)*>
|
||||
<!ELEMENT source (sauthor?,spubinfo?,scallno?)>
|
||||
<!ATTLIST source id ID #REQUIRED>
|
||||
<!ELEMENT sauthor (#PCDATA)>
|
||||
<!ELEMENT spubinfo (#PCDATA)>
|
||||
<!ELEMENT scallno (#PCDATA)>
|
||||
|
||||
<!-- ************************************************************
|
||||
|
||||
PLACES
|
||||
|
||||
-->
|
||||
|
||||
<!ELEMENT places (placeobj)*>
|
||||
|
||||
<!ELEMENT placeobj (coord?,location*,objref*,url*,note?)>
|
||||
<!ATTLIST placeobj id ID #REQUIRED title CDATA #IMPLIED>
|
||||
|
||||
<!ELEMENT coord EMPTY>
|
||||
<!ATTLIST coord long CDATA #REQUIRED lat CDATA #REQUIRED>
|
||||
|
||||
<!ELEMENT location EMPTY>
|
||||
<!ATTLIST location
|
||||
city CDATA #IMPLIED
|
||||
county CDATA #IMPLIED
|
||||
state CDATA #IMPLIED
|
||||
country CDATA #IMPLIED
|
||||
parish CDATA #IMPLIED
|
||||
>
|
||||
|
||||
|
||||
<!ELEMENT objects (object)*>
|
||||
|
||||
<!ELEMENT object (attribute)*>
|
||||
<!ATTLIST object
|
||||
id ID #REQUIRED
|
||||
src CDATA #IMPLIED
|
||||
mime CDATA #IMPLIED
|
||||
description CDATA #IMPLIED>
|
||||
|
||||
|
||||
|
||||
<!-- ************************************************************
|
||||
|
||||
BOOKMARKS
|
||||
|
||||
-->
|
||||
|
||||
<!ELEMENT bookmarks (bookmark)*>
|
||||
<!ELEMENT bookmark EMPTY>
|
||||
<!ATTLIST bookmark ref IDREF #REQUIRED>
|
||||
|
||||
<!-- ************************************************************
|
||||
|
||||
SHARED ELEMENTS
|
||||
|
||||
-->
|
||||
|
||||
<!ELEMENT attribute (note?,sourceref?)>
|
||||
<!ATTLIST attribute conf CDATA #IMPLIED
|
||||
priv CDATA #IMPLIED
|
||||
type CDATA #IMPLIED
|
||||
value CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!--ELEMENT attr_type (#PCDATA)>
|
||||
<!ELEMENT attr_value (#PCDATA)-->
|
||||
|
||||
|
||||
<!--
|
||||
|
||||
EVENT
|
||||
|
||||
We can enumerate all possibilities for an event and then this will
|
||||
not conform to Gramps as Gramps allows any type of events (i.e., a
|
||||
user can define their own type of event) . By allowing anything
|
||||
(CDATA) we no longer have automatic checking and in emacs no more
|
||||
automatic selection of event types.
|
||||
|
||||
So decide to use the enumerated list for now unless there is a storm
|
||||
of protest.
|
||||
|
||||
Alternative Birth Another possible birth date
|
||||
Degree Awarding of a degree
|
||||
Education Some step in the education process
|
||||
Graduation Graduation (often same as degree)
|
||||
|
||||
-->
|
||||
|
||||
<!ELEMENT event (dateval?,place?,description?,sourceref?,note?)>
|
||||
<!ATTLIST event type
|
||||
(Annulment|Birth|Death|Christening|Baptism|Engagement|Marriage|
|
||||
Occupation|Education|Degree|Immi|Burial|Cremation)
|
||||
#REQUIRED>
|
||||
|
||||
<!ELEMENT dateval EMPTY>
|
||||
<!ATTLIST dateval
|
||||
val CDATA #REQUIRED
|
||||
type CDATA #IMPLIED>
|
||||
|
||||
<!--ELEMENT date (#PCDATA) replaced by dateval-->
|
||||
<!ELEMENT description (#PCDATA)>
|
||||
|
||||
<!ELEMENT note (#PCDATA)>
|
||||
|
||||
<!ELEMENT url EMPTY>
|
||||
<!ATTLIST url href CDATA #REQUIRED
|
||||
conf CDATA #IMPLIED
|
||||
priv (0|1) #IMPLIED
|
||||
description CDATA #IMPLIED>
|
||||
|
||||
<!ELEMENT place EMPTY>
|
||||
<!ATTLIST place ref IDREF #REQUIRED>
|
||||
|
||||
<!ELEMENT sourceref (spage?,scomments?,stext?,sdate?)>
|
||||
<!ATTLIST sourceref ref IDREF #REQUIRED>
|
||||
|
||||
<!ELEMENT spage (#PCDATA)>
|
||||
<!ELEMENT scomments (#PCDATA)>
|
||||
<!ELEMENT sdate (#PCDATA)>
|
||||
<!ELEMENT stext (#PCDATA)>
|
||||
|
||||
<!ELEMENT objref (attribute)*>
|
||||
<!ATTLIST objref
|
||||
ref IDREF #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT img EMPTY>
|
||||
<!ATTLIST img
|
||||
src CDATA #REQUIRED
|
||||
description CDATA #IMPLIED
|
||||
display CDATA #IMPLIED>
|
||||
|
||||
@@ -0,0 +1,358 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2001 Graham J. Williams
|
||||
# Copyright (C) 2000-2005 Donald N. Allingham
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# 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$
|
||||
-->
|
||||
|
||||
<!--
|
||||
This is the Document Type Definition file for v1.0.0
|
||||
of the GRAMPS XML genealogy data format.
|
||||
Please use the following formal public identifier to identify it:
|
||||
|
||||
"-//GRAMPS//DTD GRAMPS XML V1.0.0//EN"
|
||||
|
||||
For example:
|
||||
<!DOCTYPE database PUBLIC "-//GRAMPS//DTD GRAMPS XML V1.0.0//EN"
|
||||
"http://gramps-project.org/xml/1.0.0/grampsxml.dtd"
|
||||
[...]>
|
||||
-->
|
||||
|
||||
|
||||
<!--
|
||||
DATABASE
|
||||
Defines an XML document which is a <database> consisting of a
|
||||
|
||||
header Information about the "owner" of the database
|
||||
people
|
||||
families
|
||||
sources
|
||||
places
|
||||
objects
|
||||
bookmarks
|
||||
-->
|
||||
|
||||
<!ELEMENT database (header, people?, families?, sources?, places?, objects?,
|
||||
bookmarks?)>
|
||||
<!ATTLIST database xmlns CDATA #FIXED "http://gramps-project.org/xml/1.0.0/">
|
||||
|
||||
<!-- ************************************************************
|
||||
HEADER
|
||||
|
||||
A <header> consists of <created> (information about this
|
||||
genealogical database) and <researcher> (information about the
|
||||
person who created this genealogical database)
|
||||
-->
|
||||
|
||||
<!ELEMENT header (created, researcher?)>
|
||||
|
||||
<!ELEMENT created EMPTY>
|
||||
<!ATTLIST created
|
||||
date CDATA #REQUIRED
|
||||
version CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT researcher (resname, resaddr?, rescity?, resstate?,
|
||||
rescountry?, respostal?, resphone?, resemail?)>
|
||||
<!ELEMENT resname (#PCDATA)>
|
||||
<!ELEMENT resaddr (#PCDATA)>
|
||||
<!ELEMENT rescity (#PCDATA)>
|
||||
<!ELEMENT resstate (#PCDATA)>
|
||||
<!ELEMENT rescountry (#PCDATA)>
|
||||
<!ELEMENT respostal (#PCDATA)>
|
||||
<!ELEMENT resphone (#PCDATA)>
|
||||
<!ELEMENT resemail (#PCDATA)>
|
||||
|
||||
<!-- ************************************************************
|
||||
PEOPLE
|
||||
-->
|
||||
|
||||
<!ELEMENT people (person)*>
|
||||
<!ATTLIST people
|
||||
default CDATA #IMPLIED
|
||||
home IDREF #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT person (gender, name*, nick?, event*, lds_ord*,
|
||||
objref*, address*, attribute*, url*,
|
||||
childof*, parentin*, note?, sourceref*)>
|
||||
<!ATTLIST person
|
||||
id CDATA #REQUIRED
|
||||
handle ID #REQUIRED
|
||||
change CDATA #REQUIRED
|
||||
complete (0|1) #IMPLIED
|
||||
>
|
||||
|
||||
<!--
|
||||
GENDER has values of M, F, or U.
|
||||
-->
|
||||
<!ELEMENT gender (#PCDATA)>
|
||||
|
||||
<!ELEMENT name (first?,last?,suffix?,patronymic?,title?,
|
||||
(daterange|dateval|datestr)?,note?,sourceref*)>
|
||||
<!ATTLIST name
|
||||
alt (0|1) #IMPLIED
|
||||
type CDATA #IMPLIED
|
||||
priv (0|1) #IMPLIED
|
||||
sort CDATA #IMPLIED
|
||||
display CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT first (#PCDATA)>
|
||||
<!ELEMENT last (#PCDATA)>
|
||||
<!ATTLIST last
|
||||
prefix CDATA #IMPLIED
|
||||
group CDATA #IMPLIED
|
||||
>
|
||||
<!ELEMENT suffix (#PCDATA)>
|
||||
<!ELEMENT patronymic (#PCDATA)>
|
||||
<!ELEMENT title (#PCDATA)>
|
||||
|
||||
<!ELEMENT nick (#PCDATA)>
|
||||
|
||||
<!ELEMENT childof EMPTY>
|
||||
<!ATTLIST childof
|
||||
hlink IDREF #REQUIRED
|
||||
mrel (None|Birth|Adopted|Stepchild|Sponsored|Foster|Other|Unknown) #IMPLIED
|
||||
frel (None|Birth|Adopted|Stepchild|Sponsored|Foster|Other|Unknown) #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT parentin EMPTY>
|
||||
<!ATTLIST parentin hlink IDREF #REQUIRED>
|
||||
|
||||
<!ELEMENT address ((daterange|dateval|datestr)?,street?,city?,state?,
|
||||
country?,postal?,phone?,note?,sourceref?)>
|
||||
<!ATTLIST address priv (0|1) #IMPLIED>
|
||||
|
||||
<!ELEMENT street (#PCDATA)>
|
||||
<!ELEMENT city (#PCDATA)>
|
||||
<!ELEMENT country (#PCDATA)>
|
||||
<!ELEMENT postal (#PCDATA)>
|
||||
<!ELEMENT state (#PCDATA)>
|
||||
<!ELEMENT phone (#PCDATA)>
|
||||
|
||||
|
||||
<!-- ************************************************************
|
||||
FAMILY
|
||||
An element to record information about a family.
|
||||
-->
|
||||
|
||||
<!ELEMENT families (family)*>
|
||||
|
||||
<!ELEMENT family (father?,mother?,event*,lds_ord*,
|
||||
objref*,child*,attribute*,note?,sourceref*)>
|
||||
<!ATTLIST family
|
||||
id CDATA #REQUIRED
|
||||
handle ID #REQUIRED
|
||||
change CDATA #REQUIRED
|
||||
complete (0|1) #IMPLIED
|
||||
type CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT father EMPTY>
|
||||
<!ATTLIST father hlink IDREF #REQUIRED>
|
||||
|
||||
<!ELEMENT mother EMPTY>
|
||||
<!ATTLIST mother hlink IDREF #REQUIRED>
|
||||
|
||||
<!ELEMENT child EMPTY>
|
||||
<!ATTLIST child hlink IDREF #REQUIRED>
|
||||
|
||||
<!-- ************************************************************
|
||||
SOURCES
|
||||
-->
|
||||
|
||||
<!ELEMENT sources (source)*>
|
||||
<!ELEMENT source (stitle?,sauthor?,spubinfo?,sabbrev?,
|
||||
note?,objref*,data_item*)>
|
||||
<!ATTLIST source
|
||||
id CDATA #REQUIRED
|
||||
handle ID #REQUIRED
|
||||
change CDATA #REQUIRED
|
||||
>
|
||||
<!ELEMENT stitle (#PCDATA)>
|
||||
<!ELEMENT sauthor (#PCDATA)>
|
||||
<!ELEMENT spubinfo (#PCDATA)>
|
||||
<!ELEMENT sabbrev (#PCDATA)>
|
||||
|
||||
<!-- ************************************************************
|
||||
PLACES
|
||||
-->
|
||||
|
||||
<!ELEMENT places (placeobj)*>
|
||||
|
||||
<!ELEMENT placeobj (coord?,location*,objref*,url*,note?,sourceref*)>
|
||||
<!ATTLIST placeobj
|
||||
id CDATA #REQUIRED
|
||||
handle ID #REQUIRED
|
||||
change CDATA #REQUIRED
|
||||
title CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT coord EMPTY>
|
||||
<!ATTLIST coord
|
||||
long CDATA #REQUIRED
|
||||
lat CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT location EMPTY>
|
||||
<!ATTLIST location
|
||||
city CDATA #IMPLIED
|
||||
parish CDATA #IMPLIED
|
||||
county CDATA #IMPLIED
|
||||
state CDATA #IMPLIED
|
||||
country CDATA #IMPLIED
|
||||
postal CDATA #IMPLIED
|
||||
phone CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!-- ************************************************************
|
||||
OBJECTS
|
||||
-->
|
||||
|
||||
<!ELEMENT objects (object)*>
|
||||
|
||||
<!ELEMENT object (attribute*,note?,(daterange|dateval|datestr)?,sourceref*)>
|
||||
<!ATTLIST object
|
||||
id CDATA #REQUIRED
|
||||
handle ID #REQUIRED
|
||||
change CDATA #REQUIRED
|
||||
src CDATA #REQUIRED
|
||||
mime CDATA #REQUIRED
|
||||
description CDATA #REQUIRED
|
||||
>
|
||||
|
||||
|
||||
<!-- ************************************************************
|
||||
BOOKMARKS
|
||||
-->
|
||||
|
||||
<!ELEMENT bookmarks (bookmark)*>
|
||||
<!ELEMENT bookmark EMPTY>
|
||||
<!ATTLIST bookmark hlink IDREF #REQUIRED>
|
||||
|
||||
<!-- ************************************************************
|
||||
SHARED ELEMENTS
|
||||
-->
|
||||
<!ELEMENT daterange EMPTY>
|
||||
<!ATTLIST daterange
|
||||
start CDATA #REQUIRED
|
||||
stop CDATA #REQUIRED
|
||||
quality (estimated|calculated) #IMPLIED
|
||||
cformat CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT dateval EMPTY>
|
||||
<!ATTLIST dateval
|
||||
val CDATA #REQUIRED
|
||||
type (before|after|about) #IMPLIED
|
||||
quality (estimated|calculated) #IMPLIED
|
||||
cformat CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT datestr EMPTY>
|
||||
<!ATTLIST datestr val CDATA #REQUIRED>
|
||||
|
||||
<!ELEMENT note (#PCDATA)>
|
||||
<!ATTLIST note format (0|1) #IMPLIED>
|
||||
|
||||
<!ELEMENT sourceref (spage?,scomments?,stext?,(daterange|dateval|datestr)?)>
|
||||
<!ATTLIST sourceref
|
||||
hlink IDREF #REQUIRED
|
||||
conf CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT spage (#PCDATA)>
|
||||
<!ELEMENT scomments (#PCDATA)>
|
||||
<!ELEMENT sdate (#PCDATA)>
|
||||
<!ELEMENT stext (#PCDATA)>
|
||||
|
||||
<!ELEMENT attribute (sourceref*,note?)>
|
||||
<!ATTLIST attribute
|
||||
priv (0|1) #IMPLIED
|
||||
type CDATA #REQUIRED
|
||||
value CDATA #REQUIRED
|
||||
>
|
||||
|
||||
|
||||
<!--
|
||||
EVENT
|
||||
-->
|
||||
|
||||
<!ELEMENT event ((daterange|dateval|datestr)?,witness*,place?,cause?,
|
||||
description?,note?,sourceref*,objref*)>
|
||||
<!ATTLIST event
|
||||
type CDATA #REQUIRED
|
||||
priv (0|1) #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT witness (comment?)>
|
||||
<!ATTLIST witness
|
||||
hlink IDREF #IMPLIED
|
||||
name CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT comment (#PCDATA)>
|
||||
|
||||
<!ELEMENT place EMPTY>
|
||||
<!ATTLIST place hlink IDREF #REQUIRED>
|
||||
|
||||
<!ELEMENT cause (#PCDATA)>
|
||||
<!ELEMENT description (#PCDATA)>
|
||||
|
||||
<!ELEMENT url EMPTY>
|
||||
<!ATTLIST url
|
||||
priv (0|1) #IMPLIED
|
||||
href CDATA #REQUIRED
|
||||
description CDATA #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT objref (attribute*,sourceref*,note?)>
|
||||
<!ATTLIST objref
|
||||
hlink IDREF #REQUIRED
|
||||
priv (0|1) #IMPLIED
|
||||
>
|
||||
|
||||
<!ELEMENT data_item EMPTY>
|
||||
<!ATTLIST data_item
|
||||
key CDATA #REQUIRED
|
||||
value CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT lds_ord ((daterange|dateval|datestr)?,temple?,place?,status?,
|
||||
sealed_to?,note?,sourceref*)>
|
||||
<!ATTLIST lds_ord
|
||||
type CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT temple EMPTY>
|
||||
<!ATTLIST temple
|
||||
val CDATA #REQUIRED
|
||||
>
|
||||
|
||||
<!ELEMENT status EMPTY>
|
||||
<!ATTLIST status
|
||||
val CDATA #REQUIRED
|
||||
>
|
||||
<!ELEMENT sealed_to EMPTY>
|
||||
<!ATTLIST sealed_to
|
||||
hlink IDREF #REQUIRED
|
||||
>
|
||||
@@ -0,0 +1,486 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2005 Donald N. Allingham
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
# Written by Alex Roitman
|
||||
|
||||
# $Id$
|
||||
-->
|
||||
|
||||
<!--
|
||||
This is the RELAX NG schema for the GRAMPS XML genealogy data format.
|
||||
-->
|
||||
|
||||
|
||||
<grammar
|
||||
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
|
||||
ns="http://gramps-project.org/xml/1.0.0/"
|
||||
xmlns="http://relaxng.org/ns/structure/1.0">
|
||||
|
||||
<start><element name="database">
|
||||
|
||||
<element name="header">
|
||||
<element name="created">
|
||||
<attribute name="date"><data type="date"/></attribute>
|
||||
<attribute name="version"><text/></attribute>
|
||||
</element>
|
||||
<optional><element name="researcher">
|
||||
<ref name="researcher-content"/>
|
||||
</element></optional>
|
||||
</element>
|
||||
|
||||
<optional><element name="people">
|
||||
<optional><attribute name="default"><text/></attribute></optional>
|
||||
<optional><attribute name="home">
|
||||
<data type="IDREF"/>
|
||||
</attribute></optional>
|
||||
<zeroOrMore><element name="person">
|
||||
<ref name="person-content"/>
|
||||
</element></zeroOrMore>
|
||||
</element></optional>
|
||||
|
||||
<optional><element name="families">
|
||||
<zeroOrMore><element name="family">
|
||||
<ref name="family-content"/>
|
||||
</element></zeroOrMore>
|
||||
</element></optional>
|
||||
|
||||
<optional><element name="sources">
|
||||
<zeroOrMore><element name="source">
|
||||
<ref name="source-content"/>
|
||||
</element></zeroOrMore>
|
||||
</element></optional>
|
||||
|
||||
<optional><element name="places">
|
||||
<zeroOrMore><element name="placeobj">
|
||||
<ref name="place-content"/>
|
||||
</element></zeroOrMore>
|
||||
</element></optional>
|
||||
|
||||
<optional><element name="objects">
|
||||
<zeroOrMore><element name="object">
|
||||
<ref name="object-content"/>
|
||||
</element></zeroOrMore>
|
||||
</element></optional>
|
||||
|
||||
<optional><element name="bookmarks">
|
||||
<zeroOrMore><element name="bookmark">
|
||||
<ref name="bookmark-content"/>
|
||||
</element></zeroOrMore>
|
||||
</element></optional>
|
||||
|
||||
</element></start>
|
||||
|
||||
<define name="researcher-content">
|
||||
<element name="resname"><text/></element>
|
||||
<optional><element name="resaddr"><text/></element></optional>
|
||||
<optional><element name="rescity"><text/></element></optional>
|
||||
<optional><element name="resstate"><text/></element></optional>
|
||||
<optional><element name="rescountry"><text/></element></optional>
|
||||
<optional><element name="respostal"><text/></element></optional>
|
||||
<optional><element name="resphone"><text/></element></optional>
|
||||
<optional><element name="resemail"><text/></element></optional>
|
||||
</define>
|
||||
|
||||
<define name="primary-object">
|
||||
<attribute name="id"><text/></attribute>
|
||||
<attribute name="handle"><data type="ID"/></attribute>
|
||||
<attribute name="change"><text/></attribute>
|
||||
</define>
|
||||
|
||||
<define name="person-content">
|
||||
<ref name="primary-object"/>
|
||||
<optional><attribute name="complete"><choice>
|
||||
<value>0</value>
|
||||
<value>1</value>
|
||||
</choice></attribute></optional>
|
||||
<element name="gender"><choice>
|
||||
<value>M</value>
|
||||
<value>F</value>
|
||||
<value>U</value>
|
||||
</choice></element>
|
||||
<zeroOrMore><element name="name">
|
||||
<ref name="name-content"/>
|
||||
</element></zeroOrMore>
|
||||
<optional><element name="nick"><text/></element></optional>
|
||||
<zeroOrMore><element name="event">
|
||||
<ref name="event-content"/>
|
||||
</element></zeroOrMore>
|
||||
<zeroOrMore><element name="lds_ord">
|
||||
<ref name="lds-content"/>
|
||||
</element></zeroOrMore>
|
||||
<zeroOrMore><element name="objref">
|
||||
<ref name="objref-content"/>
|
||||
</element></zeroOrMore>
|
||||
<zeroOrMore><element name="address">
|
||||
<ref name="address-content"/>
|
||||
</element></zeroOrMore>
|
||||
<zeroOrMore><element name="attribute">
|
||||
<ref name="attribute-content"/>
|
||||
</element></zeroOrMore>
|
||||
<zeroOrMore><element name="url">
|
||||
<ref name="url-content"/>
|
||||
</element></zeroOrMore>
|
||||
<zeroOrMore><element name="childof">
|
||||
<attribute name="hlink"><data type="IDREF"/></attribute>
|
||||
<optional><attribute name="mrel">
|
||||
<ref name="child-rel"/>
|
||||
</attribute></optional>
|
||||
<optional><attribute name="frel">
|
||||
<ref name="child-rel"/>
|
||||
</attribute></optional>
|
||||
</element></zeroOrMore>
|
||||
<zeroOrMore><element name="parentin">
|
||||
<attribute name="hlink"><data type="IDREF"/></attribute>
|
||||
</element></zeroOrMore>
|
||||
<optional><element name="note">
|
||||
<ref name="note-content"/>
|
||||
</element></optional>
|
||||
<zeroOrMore><element name="sourceref">
|
||||
<ref name="sourceref-content"/>
|
||||
</element></zeroOrMore>
|
||||
</define>
|
||||
|
||||
<define name="child-rel">
|
||||
<choice>
|
||||
<value>Birth</value>
|
||||
<value>Adopted</value>
|
||||
<value>Stepchild</value>
|
||||
<value>Sponsored</value>
|
||||
<value>Foster</value>
|
||||
<value>None</value>
|
||||
<value>Other</value>
|
||||
<value>Unknown</value>
|
||||
</choice>
|
||||
</define>
|
||||
|
||||
<define name="name-content">
|
||||
<optional><attribute name="alt"><choice>
|
||||
<value>0</value>
|
||||
<value>1</value>
|
||||
</choice></attribute></optional>
|
||||
<optional><attribute name="priv">
|
||||
<ref name="priv-content"/>
|
||||
</attribute></optional>
|
||||
<optional><attribute name="type"><choice>
|
||||
<value>Also Known As</value>
|
||||
<value>Birth Name</value>
|
||||
<value>Married Name</value>
|
||||
<value>Other Name</value>
|
||||
</choice></attribute></optional>
|
||||
<optional><attribute name="sort"><text/></attribute></optional>
|
||||
<optional><attribute name="display"><text/></attribute></optional>
|
||||
<optional><element name="first"><text/></element></optional>
|
||||
<optional><element name="last">
|
||||
<text/>
|
||||
<optional><attribute name="prefix"><text/></attribute></optional>
|
||||
<optional><attribute name="group"><text/></attribute></optional>
|
||||
</element></optional>
|
||||
<optional><element name="suffix"><text/></element></optional>
|
||||
<optional><element name="patronymic"><text/></element></optional>
|
||||
<optional><element name="title"><text/></element></optional>
|
||||
<optional><ref name="date-content"/></optional>
|
||||
<optional><element name="note">
|
||||
<ref name="note-content"/>
|
||||
</element></optional>
|
||||
<zeroOrMore><element name="sourceref">
|
||||
<ref name="sourceref-content"/>
|
||||
</element></zeroOrMore>
|
||||
</define>
|
||||
|
||||
<define name="address-content">
|
||||
<optional><attribute name="priv">
|
||||
<ref name="priv-content"/>
|
||||
</attribute></optional>
|
||||
<optional><ref name="date-content"/></optional>
|
||||
<optional><element name="street"><text/></element></optional>
|
||||
<optional><element name="city"><text/></element></optional>
|
||||
<optional><element name="state"><text/></element></optional>
|
||||
<optional><element name="country"><text/></element></optional>
|
||||
<optional><element name="postal"><text/></element></optional>
|
||||
<optional><element name="phone"><text/></element></optional>
|
||||
<optional><element name="note">
|
||||
<ref name="note-content"/>
|
||||
</element></optional>
|
||||
<optional><element name="sourceref">
|
||||
<ref name="sourceref-content"/>
|
||||
</element></optional>
|
||||
</define>
|
||||
|
||||
<define name="date-content">
|
||||
<choice>
|
||||
<element name="daterange">
|
||||
<attribute name="start"><text/></attribute>
|
||||
<attribute name="stop"><text/></attribute>
|
||||
<optional><attribute name="quality"><choice>
|
||||
<value>estimated</value>
|
||||
<value>calculated</value>
|
||||
</choice></attribute></optional>
|
||||
<optional><attribute name="cformat"><text/></attribute></optional>
|
||||
</element>
|
||||
<element name="dateval">
|
||||
<attribute name="val"><text/></attribute>
|
||||
<optional><attribute name="cformat"><text/></attribute></optional>
|
||||
<optional><attribute name="type"><choice>
|
||||
<value>before</value>
|
||||
<value>after</value>
|
||||
<value>about</value>
|
||||
</choice></attribute></optional>
|
||||
<optional><attribute name="quality"><choice>
|
||||
<value>estimated</value>
|
||||
<value>calculated</value>
|
||||
</choice></attribute></optional>
|
||||
</element>
|
||||
<element name="datestr">
|
||||
<attribute name="val"><text/></attribute>
|
||||
</element>
|
||||
</choice>
|
||||
</define>
|
||||
|
||||
<define name="family-content">
|
||||
<ref name="primary-object"/>
|
||||
<optional><attribute name="complete"><choice>
|
||||
<value>0</value>
|
||||
<value>1</value>
|
||||
</choice></attribute></optional>
|
||||
<optional><attribute name="type"><choice>
|
||||
<value>Married</value>
|
||||
<value>Unmarried</value>
|
||||
<value>Civil Union</value>
|
||||
<value>Unknown</value>
|
||||
<value>Other</value>
|
||||
</choice></attribute></optional>
|
||||
<optional><element name="father">
|
||||
<attribute name="hlink"><data type="IDREF"/></attribute>
|
||||
</element></optional>
|
||||
<optional><element name="mother">
|
||||
<attribute name="hlink"><data type="IDREF"/></attribute>
|
||||
</element></optional>
|
||||
<zeroOrMore><element name="event">
|
||||
<ref name="event-content"/>
|
||||
</element></zeroOrMore>
|
||||
<zeroOrMore><element name="lds_ord">
|
||||
<ref name="lds-content"/>
|
||||
</element></zeroOrMore>
|
||||
<zeroOrMore><element name="objref">
|
||||
<ref name="objref-content"/>
|
||||
</element></zeroOrMore>
|
||||
<zeroOrMore><element name="child">
|
||||
<attribute name="hlink"><data type="IDREF"/></attribute>
|
||||
</element></zeroOrMore>
|
||||
<zeroOrMore><element name="attribute">
|
||||
<ref name="attribute-content"/>
|
||||
</element></zeroOrMore>
|
||||
<optional><element name="note">
|
||||
<ref name="note-content"/>
|
||||
</element></optional>
|
||||
<optional><ref name="date-content"/></optional>
|
||||
<zeroOrMore><element name="sourceref">
|
||||
<ref name="sourceref-content"/>
|
||||
</element></zeroOrMore>
|
||||
</define>
|
||||
|
||||
<define name="source-content">
|
||||
<ref name="primary-object"/>
|
||||
<optional><element name="stitle"><text/></element></optional>
|
||||
<optional><element name="sauthor"><text/></element></optional>
|
||||
<optional><element name="spubinfo"><text/></element></optional>
|
||||
<optional><element name="sabbrev"><text/></element></optional>
|
||||
<optional><element name="note">
|
||||
<ref name="note-content"/>
|
||||
</element></optional>
|
||||
<zeroOrMore><element name="objref">
|
||||
<ref name="objref-content"/>
|
||||
</element></zeroOrMore>
|
||||
<zeroOrMore><element name="data_item">
|
||||
<attribute name="key"><text/></attribute>
|
||||
<attribute name="value"><text/></attribute>
|
||||
</element></zeroOrMore>
|
||||
</define>
|
||||
|
||||
<define name="place-content">
|
||||
<ref name="primary-object"/>
|
||||
<attribute name="title"><text/></attribute>
|
||||
<optional><element name="coord">
|
||||
<attribute name="long"><data type="float"/></attribute>
|
||||
<attribute name="lat"><data type="float"/></attribute>
|
||||
</element></optional>
|
||||
<zeroOrMore><element name="location">
|
||||
<optional><attribute name="city"><text/></attribute></optional>
|
||||
<optional><attribute name="parish"><text/></attribute></optional>
|
||||
<optional><attribute name="county"><text/></attribute></optional>
|
||||
<optional><attribute name="state"><text/></attribute></optional>
|
||||
<optional><attribute name="country"><text/></attribute></optional>
|
||||
<optional><attribute name="postal"><text/></attribute></optional>
|
||||
<optional><attribute name="phone"><text/></attribute></optional>
|
||||
</element></zeroOrMore>
|
||||
<zeroOrMore><element name="objref">
|
||||
<ref name="objref-content"/>
|
||||
</element></zeroOrMore>
|
||||
<zeroOrMore><element name="url">
|
||||
<ref name="url-content"/>
|
||||
</element></zeroOrMore>
|
||||
<optional><element name="note">
|
||||
<ref name="note-content"/>
|
||||
</element></optional>
|
||||
<zeroOrMore><element name="sourceref">
|
||||
<ref name="sourceref-content"/>
|
||||
</element></zeroOrMore>
|
||||
|
||||
</define>
|
||||
|
||||
<define name="object-content">
|
||||
<ref name="primary-object"/>
|
||||
<attribute name="src"><text/></attribute>
|
||||
<attribute name="mime"><text/></attribute>
|
||||
<attribute name="description"><text/></attribute>
|
||||
<zeroOrMore><element name="attribute">
|
||||
<ref name="attribute-content"/>
|
||||
</element></zeroOrMore>
|
||||
<optional><element name="note">
|
||||
<ref name="note-content"/>
|
||||
</element></optional>
|
||||
<optional><ref name="date-content"/></optional>
|
||||
<zeroOrMore><element name="sourceref">
|
||||
<ref name="sourceref-content"/>
|
||||
</element></zeroOrMore>
|
||||
</define>
|
||||
|
||||
<define name="bookmark-content">
|
||||
<attribute name="hlink"><data type="IDREF"/></attribute>
|
||||
</define>
|
||||
|
||||
<define name="note-content">
|
||||
<optional><attribute name="format"><choice>
|
||||
<value>0</value>
|
||||
<value>1</value>
|
||||
</choice></attribute></optional>
|
||||
<text/>
|
||||
</define>
|
||||
|
||||
<define name="sourceref-content">
|
||||
<attribute name="hlink"><data type="IDREF"/></attribute>
|
||||
<optional><attribute name="conf"><text/></attribute></optional>
|
||||
<optional><element name="spage"><text/></element></optional>
|
||||
<optional><element name="scomments"><text/></element></optional>
|
||||
<optional><element name="stext"><text/></element></optional>
|
||||
<optional><ref name="date-content"/></optional>
|
||||
</define>
|
||||
|
||||
<define name="priv-content">
|
||||
<choice>
|
||||
<value>0</value>
|
||||
<value>1</value>
|
||||
</choice>
|
||||
</define>
|
||||
|
||||
<define name="attribute-content">
|
||||
<optional><attribute name="priv">
|
||||
<ref name="priv-content"/>
|
||||
</attribute></optional>
|
||||
<attribute name="type"><text/></attribute>
|
||||
<attribute name="value"><text/></attribute>
|
||||
<zeroOrMore><element name="sourceref">
|
||||
<ref name="sourceref-content"/>
|
||||
</element></zeroOrMore>
|
||||
<optional><element name="note">
|
||||
<ref name="note-content"/>
|
||||
</element></optional>
|
||||
</define>
|
||||
|
||||
<define name="event-content">
|
||||
<attribute name="type"><text/></attribute>
|
||||
<optional><attribute name="priv">
|
||||
<ref name="priv-content"/>
|
||||
</attribute></optional>
|
||||
<optional><ref name="date-content"/></optional>
|
||||
<zeroOrMore><element name="witness">
|
||||
<optional><attribute name="hlink">
|
||||
<data type="IDREF"/>
|
||||
</attribute></optional>
|
||||
<optional><attribute name="name"><text/></attribute></optional>
|
||||
<optional><element name="comment"><text/></element></optional>
|
||||
</element></zeroOrMore>
|
||||
<optional><element name="place">
|
||||
<attribute name="hlink"><data type="IDREF"/></attribute>
|
||||
</element></optional>
|
||||
<optional><element name="cause"><text/></element></optional>
|
||||
<optional><element name="description"><text/></element></optional>
|
||||
<optional><element name="note">
|
||||
<ref name="note-content"/>
|
||||
</element></optional>
|
||||
<optional><ref name="date-content"/></optional>
|
||||
<zeroOrMore><element name="sourceref">
|
||||
<ref name="sourceref-content"/>
|
||||
</element></zeroOrMore>
|
||||
<zeroOrMore><element name="objref">
|
||||
<ref name="objref-content"/>
|
||||
</element></zeroOrMore>
|
||||
</define>
|
||||
|
||||
<define name="url-content">
|
||||
<optional><attribute name="priv">
|
||||
<ref name="priv-content"/>
|
||||
</attribute></optional>
|
||||
<attribute name="href"><text/></attribute>
|
||||
<optional><attribute name="description"><text/></attribute></optional>
|
||||
</define>
|
||||
|
||||
<define name="objref-content">
|
||||
<attribute name="hlink"><data type="IDREF"/></attribute>
|
||||
<optional><attribute name="priv">
|
||||
<ref name="priv-content"/>
|
||||
</attribute></optional>
|
||||
<zeroOrMore><element name="attribute">
|
||||
<ref name="attribute-content"/>
|
||||
</element></zeroOrMore>
|
||||
<zeroOrMore><element name="sourceref">
|
||||
<ref name="sourceref-content"/>
|
||||
</element></zeroOrMore>
|
||||
<optional><element name="note">
|
||||
<ref name="note-content"/>
|
||||
</element></optional>
|
||||
</define>
|
||||
|
||||
<define name="lds-content">
|
||||
<attribute name="type"><text/></attribute>
|
||||
<optional><ref name="date-content"/></optional>
|
||||
<optional><element name="temple">
|
||||
<attribute name="val"><text/></attribute>
|
||||
</element></optional>
|
||||
<optional><element name="place">
|
||||
<attribute name="hlink"><data type="IDREF"/></attribute>
|
||||
</element></optional>
|
||||
<optional><element name="status">
|
||||
<attribute name="val"><text/></attribute>
|
||||
</element></optional>
|
||||
<optional><element name="sealed_to">
|
||||
<attribute name="hlink"><data type="IDREF"/></attribute>
|
||||
</element></optional>
|
||||
<optional><element name="note">
|
||||
<ref name="note-content"/>
|
||||
</element></optional>
|
||||
<optional><ref name="date-content"/></optional>
|
||||
<zeroOrMore><element name="sourceref">
|
||||
<ref name="sourceref-content"/>
|
||||
</element></zeroOrMore>
|
||||
</define>
|
||||
|
||||
</grammar>
|
||||
@@ -0,0 +1,3 @@
|
||||
gramps.1
|
||||
Makefile.in
|
||||
Makefile
|
||||
@@ -0,0 +1,13 @@
|
||||
# Process this file with automake to produce Makefile.in
|
||||
|
||||
SUBDIRS = fr
|
||||
|
||||
man_IN_FILES = gramps.1.in
|
||||
man_MANS = $(man_IN_FILES:.1.in=.1)
|
||||
|
||||
EXTRA_DIST = $(man_MANS) $(man_IN_FILES)
|
||||
|
||||
gramps.1: $(top_builddir)/config.status gramps.1.in
|
||||
cd $(top_builddir) && CONFIG_FILES=doc/man/$@ $(SHELL) ./config.status
|
||||
|
||||
CLEANFILES=$(man_MANS)
|
||||
@@ -0,0 +1,3 @@
|
||||
gramps.1
|
||||
Makefile.in
|
||||
Makefile
|
||||
@@ -0,0 +1,13 @@
|
||||
# Process this file with automake to produce Makefile.in
|
||||
|
||||
man_IN_FILES = gramps.1.in
|
||||
man_MANS = $(man_IN_FILES:.1.in=.1)
|
||||
|
||||
mandir = @mandir@/fr
|
||||
|
||||
EXTRA_DIST = $(man_MANS) $(man_IN_FILES)
|
||||
|
||||
gramps.1: $(top_builddir)/config.status gramps.1.in
|
||||
cd $(top_builddir) && CONFIG_FILES=doc/man/fr/$@ $(SHELL) ./config.status
|
||||
|
||||
CLEANFILES=$(man_MANS)
|
||||
@@ -0,0 +1,214 @@
|
||||
.TH gramps 1 "@VERSION@" "Janvier 2006" "@VERSION@"
|
||||
.SH NOM
|
||||
gramps \- GRAMPS est une application de généalogie. GRAMPS est l'acronyme de Genealogical Research and Analysis Management Programming System (Systeme de Programmation pour Recherche, Analyse et Gestion de données généalogiques)
|
||||
|
||||
.SH SYNOPSIS
|
||||
.B gramps
|
||||
.RB [ \-?|\-\^\-help ]
|
||||
.RB [ \-\^\-usage ]
|
||||
.RB [ \-\^\-version ]
|
||||
.RB [ \-O|\-\^\-open=
|
||||
.IR FICHIER
|
||||
.RB [ \-f|\-\^\-format=
|
||||
.IR FORMAT ]]
|
||||
.RB [ \-i|\-\^\-import=
|
||||
.IR FICHIER
|
||||
.RB [ \-f|\-\^\-format=
|
||||
.IR FORMAT ]]
|
||||
.RB [ \-i|\-\^\-import=
|
||||
.IR ... ]
|
||||
.RB [ \-o|\-\^\-output=
|
||||
.IR FICHIER
|
||||
.RB [ \-f|\-\^\-format=
|
||||
.IR FORMAT ]]
|
||||
.RB [ \-a|\-\^\-action=
|
||||
.IR ACTION ]
|
||||
.RB [ \-p|\-\^\-options=
|
||||
.IR OPTIONSTRING ]]
|
||||
.RB [
|
||||
.IR FICHIER
|
||||
.RB ]
|
||||
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
\fIGramps\fP est un programme Libre/OpenSource de généalogie. Il est écrit en python,
|
||||
et utilise une interface GTK+/GNOME.
|
||||
Gramps est semblable à d'autres programmes de généalogie tel que \fIFamily Tree Maker (FTM)\fR, \fIPersonal Ancestral
|
||||
Files\fR, ou le programme GNU Geneweb.
|
||||
Il peut importer/exporter le format le plus utilisé par les autres logiciels de généalogie : GEDCOM.
|
||||
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.BI gramps " FICHIER"
|
||||
Si \fIFICHIER\fR est désigné (sans autres commandes) alors une session interactive est ouverte. Les autres options sont ignorées. Ce type de lancement permet d'utiliser gramps
|
||||
pour manipuler des données comme dans un navigateur web. Les formats natifs de gramps sont acceptés, voir ci-dessous.
|
||||
.br
|
||||
|
||||
.TP
|
||||
.BI \-f,\-\^\-format= " FORMAT"
|
||||
Le format spécifique du \fIFICHIER\fR est précédé par les options \fB\-O\fR,
|
||||
\fB\-i\fR, ou
|
||||
\fB\-o\fR. Si l'option \fB\-f\fR n'est pas donnée pour le \fIFICHIER\fR, alors le format sera celui de l'extension.
|
||||
.br
|
||||
|
||||
Les formats disponibles pour l'ouverture sont \fBgrdb\fR (choisi si \fIFICHIER\fR se termine par
|
||||
\fB.grdb\fR), \fBgramps\-xml\fR (choisi si \fIFICHIER\fR se termine par
|
||||
\fB.gramps\fR), et \fBgedcom\fR (choisi si \fIFICHIER\fR se termine par \fB.ged\fR).
|
||||
.br
|
||||
|
||||
Les formats disponibles pour l'importation sont \fBgrdb\fR, \fBgramps\-xml\fR, \fBgedcom\fR,
|
||||
\fBgramps\-pkg\fR (choisi si \fIFICHIER\fR se termine par \fB.gpkg\fR), et
|
||||
\fBgeneweb\fR (choisi si \fIFICHIER\fR se termine par \fB.gw\fR).
|
||||
.br
|
||||
|
||||
Les formats disponibles pour l'exportation sont \fBgrdb\fR, \fBgramps\-xml\fR, \fBgedcom\fR,
|
||||
\fBgramps\-pkg\fR, \fBwft\fR (choisi si \fIFICHIER\fR se termine par \fB.wft\fR),
|
||||
\fBgeneweb\fR, et \fBiso\fR (jamais deviné, toujours spécifié avec l'option
|
||||
\fB\-f\fR).
|
||||
|
||||
.TP
|
||||
.BI \-O,\-\^\-open= " FICHIER"
|
||||
Ouvrir un \fIFICHIER\fR.
|
||||
Seulement les formats \fBgrdb\fR, \fBgramps\-xml\fR, et \fBgedcom\fR peuvent être ouvert directement. Pour les autres formats, vous devez utiliser l'option d'import,
|
||||
laquelle ouvrira une base vide et importera les données.
|
||||
.br
|
||||
|
||||
Seulement un fichier peut être ouvert. Si vous utilisez plusieurs sources, vous devez utiliser l'option d'import.
|
||||
|
||||
.TP
|
||||
.BI \-i,\-\^\-import= " FICHIER"
|
||||
Importer des données depuis un \fIFICHIER\fR.
|
||||
.br
|
||||
|
||||
Quand plus d'un fichier doit être importé, chacun doit être précédé par la commande \fB\-i\fR. Ces fichiers sont importés dans le même ordre,
|
||||
i.e. \fB\-i\fR \fIFICHIER1\fR \fB\-i\fR \fIFICHIER2\fR
|
||||
et \fB\-i\fR \fIFICHIER2\fR \fB\-i\fR \fIFICHIER1\fR vont tous les deux produire différents IDs gramps.
|
||||
|
||||
.TP
|
||||
.BI \-o,\-\^\-output= " FICHIER"
|
||||
Exporter des données dans un \fIFICHIER\fR. Pour le format \fBiso\fR, le \fIFICHIER\fR est le nom du répertoire dans lequel la base de données gramps est écrite.
|
||||
Pour \fBgrdb\fR, \fBgramps\-xml\fR, \fBgedcom\fR, \fBwft\fR, \fBgramps\-pkg\fR,
|
||||
et \fBgeneweb\fR, le \fIFICHIER\fR est le nom du fichier de sortie
|
||||
.br
|
||||
|
||||
Quand plus d'un fichier doit être exporté, chacun doit être précédé par la commande \fB\-o\fR. Ces fichiers sont importés dans le même ordre.
|
||||
|
||||
.TP
|
||||
.BI \-a,\-\^\-action= " ACTION"
|
||||
Accomplir une \fIACTION\fR sur les données importées. C'est effectué à la fin de l'importation. Les actions possibles sont \fBsummary\fR
|
||||
(Comme le rapport->Affichage->Résumé?), \fBcheck\fR (comme l'outil->Réparation de la base->Vérifier et réparer), et \fBreport\fR (produit un rapport, à besoin
|
||||
de \fIOPTIONSTRING\fR précédé par la commande \fB\-p\fR.
|
||||
.br
|
||||
|
||||
Ces options de rapport doivent satisfaire ces conditions:
|
||||
.br
|
||||
Il ne doit pas y avoir d'espace.
|
||||
Si certains arguments doivent utiliser des espaces, la chaîne doit être encadrée par des guillemets.
|
||||
Les options vont par paire nom et valeur.
|
||||
Une paire est séparée par un signe égal.
|
||||
Différentes paires sont séparées par une virgule.
|
||||
.br
|
||||
|
||||
La plupart des options sont spécifiques à chaque rapport. Même s'il existe des options communes.
|
||||
|
||||
.BI "name=reportname "
|
||||
.br
|
||||
Cette option obligatoire, elle détermine quel rapport sera généré. Si le nom du rapport saisi ne correspond à aucun rapport disponible, un message d'erreur sera ajouté.
|
||||
|
||||
.BI "show=all"
|
||||
.br
|
||||
Cette option produit une liste avec les noms des options disponibles pour un rapport donné.
|
||||
|
||||
.BI "show=optionname"
|
||||
.br
|
||||
Cette option affiche une description de toutes les fonctionnalités proposées par optionname, aussi bien les types que les valeurs pour une option.
|
||||
|
||||
.br
|
||||
Utiliser les options ci-dessus pour trouver tout sur un rapport choisi.
|
||||
|
||||
.LP
|
||||
Quand plus d'une action doit être effectuée, chacune doit être précédée par la commande \fB\-a\fR. Les actions seront réalisées une à une, dans l'ordre spécifié.
|
||||
|
||||
.BI "Operation"
|
||||
.br
|
||||
Si le premier argument de la ligne de commande ne commence pas par un tiret (i.e. pas
|
||||
d'instruction), gramps va essayer d'ouvrir le fichier avec le nom donné par le premier argument et démarrer une session interactive, en ignorant le reste de la ligne de commande.
|
||||
|
||||
.LP
|
||||
Si la commande \fB\-O\fR est notée, alors gramps va essayer le fichier défini et va travailler avec ses données, comme pour les autres paramètres de la ligne de commande.
|
||||
|
||||
.LP
|
||||
Avec ou sans la commande \fB\-O\fR, il peut y avoir plusieurs imports, exports, et actions dans la ligne de commande \fB\-i\fR,
|
||||
\fB\-o\fR, et \fB\-a\fR.
|
||||
|
||||
.LP
|
||||
L'ordre des options \fB\-i\fR, \fB\-o\fR, ou \fB\-a\fR n'a pas de sens. L'ordre actuel est toujours : imports -> actions -> exports. Mais l'ouverture doit toujours être la première!
|
||||
|
||||
.LP
|
||||
Si aucune option \fB\-O\fR ou \fB\-i\fR n'est donnée, gramps lancera sa propre fenêtre et demarrera avec une base vide, puisqu'il n'y a pas données.
|
||||
|
||||
.LP
|
||||
Si aucune option \fB\-o\fR ou \fB\-a\fR n'est donnée, gramps lancera sa propre fenêtre et démarrera avec la base de données issue de tout les imports. Cette base sera \fBimport_db.grdb\fR sous le répertoire \fB~/.gramps/import\fR.
|
||||
|
||||
.LP
|
||||
Les erreurs rencontrées lors d'import, export, ou action, seront mémorisées en \fIstdout\fR (si elles sont le fait de la manipulation par gramps) ou
|
||||
en \fIstderr\fR (si elles ne sont pas le fait d'une manipulation). Utilisez les shell de redirection de
|
||||
\fIstdout\fR et \fIstderr\fR pour sauver les messages et les erreurs dans les fichiers.
|
||||
|
||||
.SH EXEMPLES
|
||||
.TP
|
||||
Lecture de quatre bases de données dont les formats peuvent être devinés d'après les noms, puis vérification des données:
|
||||
\fBgramps\fR \fB\-i\fR \fIfile1.ged\fR \fB\-i\fR \fIfile2.tgz\fR \fB\-i\fR \fI~/db3.gramps\fR \fB\-i\fR \fIfile4.wft\fR \fB\-a\fR \fIcheck\fR
|
||||
.TP
|
||||
Si vous voulez préciser les formats de fichiers dans l'exemple ci-dessus, complétez les noms de fichiers par les options \fB\-f\fR appropriées:
|
||||
\fBgramps\fR \fB\-i\fR \fIfile1.ged\fR \fB\-f\fR \fIgedcom\fR \fB\-i\fR \fIfile2.tgz\fR \fB\-f\fR \fIgramps-pkg\fR \fB\-i\fR \fI~/db3.gramps\fR \fB\-f\fR \fIgramps-xml\fR \fB\-i\fR \fIfile4.wft\fR \fB\-f\fR \fIwft\fR \fB\-a\fR \fIcheck\fR
|
||||
.TP
|
||||
Pour enregistrer le résultat des lectures, donnez l'option \fB\-o\fR (utiliser \fB\-f\fR si le nom de fichier ne permet pas à gramps de deviner le format):
|
||||
\fBgramps\fR \fB\-i\fR \fIfile1.ged\fR \fB\-i\fR \fIfile2.tgz\fR \fB\-o\fR \fI~/new-package\fR \fB\-f\fR \fIgramps-pkg\fR
|
||||
.TP
|
||||
Pour lire trois ensembles de données puis lancer une session interactive de gramps sur le tout :
|
||||
\fBgramps\fR \fB\-i\fR \fIfile1.ged\fR \fB\-i\fR \fIfile2.tgz\fR \fB\-i\fR \fI~/db3.gramps\fR
|
||||
.TP
|
||||
Enfin, pour lancer une session interactive normale, entrer : \fBgramps\fR
|
||||
|
||||
.SH CONCEPTS
|
||||
GRAMPS est un système basé sur le support de plugin-python, permettant d'importer et d'exporter, la saisie,
|
||||
générer des rapports, des outils, et afficher des filtres pouvant être ajoutés sans modifier le programme.
|
||||
.LP
|
||||
Par ailleurs, gramps permet la génération directe : impression, rapports avec sortie vers d'autres formats, comme \fIOpenOffice.org\fR, \fIAbiWord\fR, HTML,
|
||||
ou LaTeX pour permettre à l'utilisateur de choisir selon ses besoins
|
||||
|
||||
.SH BUGS CONNUS ET LIMITATIONS
|
||||
|
||||
.SH FICHIERS
|
||||
.LP
|
||||
\fI${PREFIX}/bin/gramps\fP
|
||||
.br
|
||||
\fI${PREFIX}/share/gramps\fP
|
||||
.br
|
||||
\fI${HOME}/.gramps\fP
|
||||
|
||||
.SH AUTEURS
|
||||
Donald Allingham \fI<don@gramps-project.org>\fR
|
||||
.br
|
||||
\fIhttp://gramps.sourceforge.net\fR
|
||||
.LP
|
||||
Cette page man a d'abord été écrite par:
|
||||
.br
|
||||
Brandon L. Griffith \fI<brandon@debian.org>\fR
|
||||
.br
|
||||
pour Debian GNU/Linux système.
|
||||
.LP
|
||||
Cette page man est maintenue par:
|
||||
.br
|
||||
Alex Roitman \fI<shura@gramps-project.org>\fR
|
||||
.LP
|
||||
La traduction française:
|
||||
.br
|
||||
Jérôme Rapinat \fI<romjerome@yahoo.fr>\fR
|
||||
.br
|
||||
|
||||
.SH DOCUMENTATION
|
||||
La documentation-utilisateur est disponible par le navigateur d'aide de GNOME sous la forme du manuel Gramps. Ce manuel est également disponible sous format XML comme \fBgramps-manual.xml\fR sous \fIdoc/gramps-manual/$LANG\fR dans les sources officielles.
|
||||
.LP
|
||||
La documentation pour développeur est disponible sur le site \fIhttp://developers.gramps-project.org\fR.
|
||||
@@ -1,4 +1,4 @@
|
||||
.TH gramps 1 "@VERSION@" "May 2005" "@VERSION@"
|
||||
.TH gramps 1 "@VERSION@" "August 2005" "@VERSION@"
|
||||
.SH NAME
|
||||
gramps \- Genealogical Research and Analysis Management Programming System.
|
||||
|
||||
@@ -59,8 +59,8 @@ the format of that file is guessed according to its extension.
|
||||
|
||||
Formats
|
||||
available for opening are \fBgrdb\fR (guessed if \fIFILE\fR ends with
|
||||
\fB.grdb\fR), \fBgramps\-xml\fR (guessed if \fIFILE\fR is a
|
||||
directory), and \fBgedcom\fR (guessed if \fIFILE\fR ends with \fB.ged\fR).
|
||||
\fB.grdb\fR), \fBgramps\-xml\fR (guessed if \fIFILE\fR ends with
|
||||
\fB.gramps\fR), and \fBgedcom\fR (guessed if \fIFILE\fR ends with \fB.ged\fR).
|
||||
.br
|
||||
|
||||
Formats
|
||||
@@ -80,10 +80,6 @@ Open \fIFILE\fR.
|
||||
Only \fBgrdb\fR, \fBgramps\-xml\fR, and \fBgedcom\fR formats can be
|
||||
opened directly. For other formats, you will need to use the import option
|
||||
which will set up the empty database and then import data into it.
|
||||
For \fBgramps\-xml\fR format, the \fIFILE\fR
|
||||
is actually the name of directory under which the gramps database resides.
|
||||
For \fBgrdb\fR and \fBgedcom\fR, the \fIFILE\fR is the name of
|
||||
the corresponding file.
|
||||
.br
|
||||
|
||||
Only a single file can be opened. If you need to combine data from several
|
||||
@@ -91,11 +87,7 @@ sources, you will need to use the import option.
|
||||
|
||||
.TP
|
||||
.BI \-i,\-\^\-import= " FILE"
|
||||
Import data from \fIFILE\fR. For \fBgramps\-xml\fR format, the \fIFILE\fR
|
||||
is actually the name of directory under which the gramps database resides.
|
||||
For \fBgrdb\fR, \fBgedcom\fR, \fBgramps\-pkg\fR, and \fBgeneweb\fR,
|
||||
the \fIFILE\fR is
|
||||
the name of the corresponding file.
|
||||
Import data from \fIFILE\fR.
|
||||
.br
|
||||
|
||||
When more than one input file is given, each has to be preceded by \fB\-i\fR
|
||||
@@ -106,9 +98,9 @@ gramps IDs in the resulting database.
|
||||
|
||||
.TP
|
||||
.BI \-o,\-\^\-output= " FILE"
|
||||
Export data into \fIFILE\fR. For \fBgramps\-xml\fR and \fBiso\fR formats, the
|
||||
\fIFILE\fR is actually the name of directory the gramps database will be
|
||||
written into. For \fBgrdb\fR, \fBgedcom\fR, \fBwft\fR, \fBgramps\-pkg\fR,
|
||||
Export data into \fIFILE\fR. For \fBiso\fR format, the \fIFILE\fR is actually
|
||||
the name of directory the gramps database will be written into.
|
||||
For \fBgrdb\fR, \fBgramps\-xml\fR, \fBgedcom\fR, \fBwft\fR, \fBgramps\-pkg\fR,
|
||||
and \fBgeneweb\fR, the \fIFILE\fR is the name of the resulting file.
|
||||
.br
|
||||
|
||||
@@ -182,8 +174,8 @@ exports, and actions specified further on the command line by using \fB\-i\fR,
|
||||
|
||||
.LP
|
||||
The order of \fB\-i\fR, \fB\-o\fR, or \fB\-a\fR options does not matter. The
|
||||
actual order always is: all imports (if any) -> all exports (if any) ->
|
||||
all actions (if any). But opening must always be first!
|
||||
actual order always is: all imports (if any) -> all actions (if any)
|
||||
-> all exports (if any). But opening must always be first!
|
||||
|
||||
.LP
|
||||
If no \fB\-O\fR or \fB\-i\fR option is given, gramps will launch its main
|
||||
@@ -205,16 +197,16 @@ of \fIstdout\fR and \fIstderr\fR to save messages and errors in files.
|
||||
.SH EXAMPLES
|
||||
.TP
|
||||
To import four databases (whose formats can be determined from their names) and then check the resulting database for errors, one may type:
|
||||
\fBgramps\fR \fB\-i\fR \fIfile1.ged\fR \fB\-i\fR \fIfile2.tgz\fR \fB\-i\fR \fI~/db3\fR \fB\-i\fR \fIfile4.wft\fR \fB\-a\fR \fIcheck\fR
|
||||
\fBgramps\fR \fB\-i\fR \fIfile1.ged\fR \fB\-i\fR \fIfile2.tgz\fR \fB\-i\fR \fI~/db3.gramps\fR \fB\-i\fR \fIfile4.wft\fR \fB\-a\fR \fIcheck\fR
|
||||
.TP
|
||||
To explicitly specify the formats in the above example, append filenames with appropriate \fB\-f\fR options:
|
||||
\fBgramps\fR \fB\-i\fR \fIfile1.ged\fR \fB\-f\fR \fIgedcom\fR \fB\-i\fR \fIfile2.tgz\fR \fB\-f\fR \fIgramps-pkg\fR \fB\-i\fR \fI~/db3\fR \fB\-f\fR \fIgramps\fR \fB\-i\fR \fIfile4.wft\fR \fB\-f\fR \fIwft\fR \fB\-a\fR \fIcheck\fR
|
||||
\fBgramps\fR \fB\-i\fR \fIfile1.ged\fR \fB\-f\fR \fIgedcom\fR \fB\-i\fR \fIfile2.tgz\fR \fB\-f\fR \fIgramps-pkg\fR \fB\-i\fR \fI~/db3.gramps\fR \fB\-f\fR \fIgramps-xml\fR \fB\-i\fR \fIfile4.wft\fR \fB\-f\fR \fIwft\fR \fB\-a\fR \fIcheck\fR
|
||||
.TP
|
||||
To record the database resulting from all imports, supply \fB\-o\fR flag (use \fB\-f\fR if the filename does not allow gramps to guess the format):
|
||||
\fBgramps\fR \fB\-i\fR \fIfile1.ged\fR \fB\-i\fR \fIfile2.tgz\fR \fB\-o\fR \fI~/new-package\fR \fB\-f\fR \fIgramps-pkg\fR
|
||||
.TP
|
||||
To import three databases and start interactive gramps session with the result:
|
||||
\fBgramps\fR \fB\-i\fR \fIfile1.ged\fR \fB\-i\fR \fIfile2.tgz\fR \fB\-i\fR \fI~/db3\fR
|
||||
\fBgramps\fR \fB\-i\fR \fIfile1.ged\fR \fB\-i\fR \fIfile2.tgz\fR \fB\-i\fR \fI~/db3.gramps\fR
|
||||
.TP
|
||||
Finally, to start normal interactive session type:
|
||||
\fBgramps\fR
|
||||
@@ -60,9 +60,9 @@
|
||||
1 SEX M
|
||||
1 TITL Grand Poobah
|
||||
1 OBJE
|
||||
2 FROM jpeg
|
||||
2 FORM jpeg
|
||||
2 FILE foo/O0.jpg
|
||||
1 BIRT
|
||||
1 BIRT Edwin Michael Smith's Birth event
|
||||
2 DATE 24 MAY 1961
|
||||
2 PLAC San Jose, Santa Clara Co., CA
|
||||
1 OCCU
|
||||
@@ -70,6 +70,12 @@
|
||||
1 EDUC
|
||||
2 DATE BET. 1979 - 1984
|
||||
2 PLAC UC Berkeley
|
||||
1 SSN 123-456-7890
|
||||
1 CAST cast keyword
|
||||
1 DSCR dscr keyword
|
||||
1 IDNO idno keyword
|
||||
1 NATI nati keyword
|
||||
1 NCHI nchi keyword
|
||||
1 _DEG
|
||||
2 DATE 1984
|
||||
2 PLAC B.S.E.E.
|
||||
@@ -88,7 +94,7 @@
|
||||
2 SOUR @S1601@
|
||||
1 SEX F
|
||||
1 OBJE
|
||||
2 FROM jpeg
|
||||
2 FORM jpeg
|
||||
2 FILE foo/O0.jpg
|
||||
1 BIRT
|
||||
2 DATE 22 NOV 1933
|
||||
@@ -102,6 +108,7 @@
|
||||
2 DATE BET. 1794 - 1796
|
||||
2 PLAC Tommarp, Kristianstad Lan, Sweden
|
||||
1 DEAT
|
||||
2 DATE deceased
|
||||
2 PLAC Sweden
|
||||
1 REFN 366
|
||||
1 FAMS @F03@
|
||||
@@ -508,7 +515,6 @@
|
||||
2 DATE 26 JUN 34 B.C.
|
||||
2 PLAC Hayward, Alameda Co., CA
|
||||
0 @F01@ FAM
|
||||
1 HUSB @I01@
|
||||
1 WIFE @I40@
|
||||
1 CHIL @I42@
|
||||
2 _FREL Adopted
|
||||
@@ -528,9 +534,6 @@
|
||||
1 CHIL @I29@
|
||||
2 _FREL Adopted
|
||||
2 _MREL Adopted
|
||||
1 CHIL @I01@
|
||||
2 _FREL Adopted
|
||||
2 _MREL Adopted
|
||||
1 MARR
|
||||
2 DATE 4 JUN 1954
|
||||
2 PLAC Sparks, Washoe Co., NV
|
||||
|
||||
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 69 KiB |
|
After Width: | Height: | Size: 57 KiB |
|
After Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 108 KiB |
|
After Width: | Height: | Size: 110 KiB |
@@ -3,7 +3,7 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2000-2003 Donald N. Allingham
|
||||
# Copyright (C) 2000-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
|
||||
@@ -36,4 +36,4 @@ else
|
||||
export PYTHONPATH=$GRAMPSDIR:$GRAMPSLIBDIR:$GRAMPSPLUGINSDIR:$PYTHONPATH
|
||||
fi
|
||||
|
||||
exec @PYTHON@ $GRAMPSDIR/gramps.py $*
|
||||
exec @PYTHON@ $GRAMPSDIR/gramps.py "$@"
|
||||
@@ -86,8 +86,8 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%{_datadir}/mime/packages/gramps.xml
|
||||
|
||||
%post
|
||||
GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` \
|
||||
gconftool-2 --makefile-install-rule \
|
||||
GCONF_CONFIG_SOURCE=`@GCONFTOOL@ --get-default-source` \
|
||||
@GCONFTOOL@ --makefile-install-rule \
|
||||
%{_sysconfdir}/gconf/schemas/gramps.schemas > /dev/null
|
||||
/usr/bin/update-desktop-database %{_datadir}/applications &> /dev/null
|
||||
/usr/bin/update-mime-database %{_datadir}/mime &> /dev/null
|
||||
|
||||
@@ -30,6 +30,7 @@ Provides the interface to allow a person to add a media object to the database.
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import os
|
||||
import gc
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -45,8 +46,8 @@ from gettext import gettext as _
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from QuestionDialog import ErrorDialog
|
||||
from WindowUtils import GladeIf
|
||||
import gtk.glade
|
||||
import gnome
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -58,6 +59,7 @@ import Utils
|
||||
import RelImage
|
||||
import RelLib
|
||||
import GrampsMime
|
||||
import GrampsDisplay
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -89,12 +91,9 @@ class AddMediaObject:
|
||||
|
||||
Utils.set_titles(self.window,self.glade.get_widget('title'),
|
||||
_('Select a media object'))
|
||||
|
||||
self.glade.signal_autoconnect({
|
||||
"on_fname_update_preview" : self.on_name_changed,
|
||||
"on_help_imagesel_clicked" : self.on_help_imagesel_clicked,
|
||||
})
|
||||
|
||||
|
||||
self.gladeif = GladeIf(self.glade)
|
||||
self.gladeif.connect('fname', 'update_preview', self.on_name_changed)
|
||||
self.window.show()
|
||||
|
||||
def internal_toggled(self, obj):
|
||||
@@ -102,7 +101,7 @@ class AddMediaObject:
|
||||
|
||||
def on_help_imagesel_clicked(self,obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
gnome.help_display('gramps-manual','gramps-edit-quick')
|
||||
GrampsDisplay.help('gramps-edit-quick')
|
||||
self.val = self.window.run()
|
||||
|
||||
def on_savephoto_clicked(self):
|
||||
@@ -156,11 +155,11 @@ class AddMediaObject:
|
||||
if old_title == '' or old_title == self.temp_name:
|
||||
self.description.set_text(root)
|
||||
self.temp_name = root
|
||||
|
||||
if os.path.isfile(filename):
|
||||
|
||||
filename = Utils.find_file( filename)
|
||||
if filename:
|
||||
mtype = GrampsMime.get_type(filename)
|
||||
|
||||
if mtype[0:5] == "image":
|
||||
if mtype and mtype.startswith("image"):
|
||||
image = RelImage.scale_image(filename,const.thumbScale)
|
||||
else:
|
||||
image = Utils.find_mime_type_pixbuf(mtype)
|
||||
@@ -173,10 +172,12 @@ class AddMediaObject:
|
||||
if val == gtk.RESPONSE_OK:
|
||||
self.on_savephoto_clicked()
|
||||
self.window.destroy()
|
||||
gc.collect()
|
||||
return self.object
|
||||
elif val == gtk.RESPONSE_HELP:
|
||||
self.on_help_imagesel_clicked(None)
|
||||
else:
|
||||
self.window.destroy()
|
||||
gc.collect()
|
||||
return None
|
||||
return None
|
||||
@@ -34,6 +34,7 @@ __version__ = "$Revision$"
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from gettext import gettext as _
|
||||
import gc
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -41,23 +42,24 @@ from gettext import gettext as _
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import gtk.glade
|
||||
import gnome
|
||||
import gobject
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# gramps modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import GrampsDisplay
|
||||
import RelLib
|
||||
import const
|
||||
import Utils
|
||||
import PeopleModel
|
||||
import Date
|
||||
import DateHandler
|
||||
import Marriage
|
||||
import NameDisplay
|
||||
import GenericFilter
|
||||
from QuestionDialog import ErrorDialog
|
||||
from QuestionDialog import ErrorDialog, QuestionDialog2
|
||||
from WindowUtils import GladeIf
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -92,6 +94,7 @@ class AddSpouse:
|
||||
# the same gender as the current person.
|
||||
|
||||
self.glade = gtk.glade.XML(const.gladeFile, "spouseDialog","gramps")
|
||||
self.gladeif = GladeIf(self.glade)
|
||||
|
||||
self.relation_def = self.glade.get_widget("reldef")
|
||||
self.rel_combo = self.glade.get_widget("rel_combo")
|
||||
@@ -102,8 +105,6 @@ class AddSpouse:
|
||||
|
||||
self.renderer = gtk.CellRendererText()
|
||||
|
||||
self.slist = PeopleModel.PeopleModel(self.db,self.filter)
|
||||
self.spouse_list.set_model(self.slist)
|
||||
self.selection = self.spouse_list.get_selection()
|
||||
self.selection.connect('changed',self.select_row)
|
||||
self.add_columns(self.spouse_list)
|
||||
@@ -114,67 +115,53 @@ class AddSpouse:
|
||||
name = NameDisplay.displayer.display(person)
|
||||
title = _("Choose Spouse/Partner of %s") % name
|
||||
|
||||
Utils.set_titles(self.glade.get_widget('spouseDialog'),
|
||||
self.window = self.glade.get_widget('spouseDialog')
|
||||
Utils.set_titles(self.window,
|
||||
self.glade.get_widget('title'),title,
|
||||
_('Choose Spouse/Partner'))
|
||||
|
||||
self.glade.signal_autoconnect({
|
||||
"on_select_spouse_clicked" : self.select_spouse_clicked,
|
||||
"on_spouse_help_clicked" : self.on_spouse_help_clicked,
|
||||
"on_show_toggled" : self.on_show_toggled,
|
||||
"on_new_spouse_clicked" : self.new_spouse_clicked,
|
||||
"destroy_passed_object" : Utils.destroy_passed_object
|
||||
})
|
||||
|
||||
self.gladeif.connect('button117','clicked',self.close)
|
||||
self.gladeif.connect('spouseDialog','delete_event',self.delete_event)
|
||||
self.gladeif.connect('spouse_ok','clicked',self.select_spouse_clicked)
|
||||
self.gladeif.connect('spouse_help','clicked',self.on_spouse_help_clicked)
|
||||
self.gladeif.connect('spouseNewPerson','clicked',self.new_spouse_clicked)
|
||||
self.gladeif.connect('showall','clicked',self.on_show_toggled)
|
||||
|
||||
self.rel_combo.set_active(RelLib.Family.MARRIED)
|
||||
self.update_data()
|
||||
self.window.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH))
|
||||
gobject.idle_add(self.update_data)
|
||||
|
||||
def delete_event(self,obj):
|
||||
self.gladeif.close()
|
||||
|
||||
def close(self,obj):
|
||||
self.gladeif.close()
|
||||
self.window.destroy()
|
||||
|
||||
def build_all(self):
|
||||
filt = GenericFilter.GenericFilter()
|
||||
filt.add_rule(GenericFilter.Everyone([]))
|
||||
return filt
|
||||
return None
|
||||
|
||||
def build_likely(self,gender):
|
||||
birth_handle = self.person.get_birth_handle()
|
||||
death_handle = self.person.get_death_handle()
|
||||
|
||||
filt = GenericFilter.GenericFilter()
|
||||
if gender == RelLib.Person.MALE:
|
||||
filt.add_rule(GenericFilter.IsFemale([]))
|
||||
else:
|
||||
filt.add_rule(GenericFilter.IsMale([]))
|
||||
|
||||
if birth_handle:
|
||||
birth = self.db.get_event_from_handle(birth_handle)
|
||||
date_obj = Date.Date(birth.get_date_object())
|
||||
year = date_obj.get_year()
|
||||
if year:
|
||||
date_obj.set_year(year-50)
|
||||
date_obj.set_modifier(Date.MOD_AFTER)
|
||||
text = DateHandler.displayer.display(date_obj)
|
||||
rule = GenericFilter.HasBirth([text,"",""])
|
||||
filt.add_rule(rule)
|
||||
filt.add_rule(LikelyFilter([self.person.handle,self.person.gender]))
|
||||
return filt
|
||||
|
||||
def add_columns(self,tree):
|
||||
column = gtk.TreeViewColumn(_('Name'), self.renderer,text=0)
|
||||
column.set_resizable(True)
|
||||
#column.set_clickable(True)
|
||||
column.set_min_width(225)
|
||||
tree.append_column(column)
|
||||
column = gtk.TreeViewColumn(_('ID'), self.renderer,text=1)
|
||||
column.set_resizable(True)
|
||||
#column.set_clickable(True)
|
||||
column.set_min_width(75)
|
||||
tree.append_column(column)
|
||||
column = gtk.TreeViewColumn(_('Birth date'), self.renderer,text=3)
|
||||
#column.set_resizable(True)
|
||||
column.set_clickable(True)
|
||||
tree.append_column(column)
|
||||
|
||||
def on_spouse_help_clicked(self,obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
gnome.help_display('gramps-manual','gramps-edit-quick')
|
||||
GrampsDisplay.help('gramps-edit-quick')
|
||||
|
||||
def get_selected_ids(self):
|
||||
mlist = []
|
||||
@@ -191,9 +178,9 @@ class AddSpouse:
|
||||
"""
|
||||
idlist = self.get_selected_ids()
|
||||
if idlist and idlist[0]:
|
||||
self.ok.set_sensitive(1)
|
||||
self.ok.set_sensitive(True)
|
||||
else:
|
||||
self.ok.set_sensitive(0)
|
||||
self.ok.set_sensitive(False)
|
||||
|
||||
def new_spouse_clicked(self,obj):
|
||||
"""
|
||||
@@ -224,7 +211,7 @@ class AddSpouse:
|
||||
been closed.
|
||||
"""
|
||||
person = epo.person
|
||||
self.update_data(person.get_handle())
|
||||
self.update_data()
|
||||
|
||||
self.slist = PeopleModel.PeopleModel(self.db,self.filter)
|
||||
self.slist.rebuild_data()
|
||||
@@ -254,14 +241,20 @@ class AddSpouse:
|
||||
_("A person cannot be linked as his/her spouse"))
|
||||
return
|
||||
|
||||
# don't do anything if adding a parent
|
||||
# display warning if adding a parent
|
||||
for (family_handle,frel,mrel) in self.person.get_parent_family_handle_list():
|
||||
family = self.db.get_family_from_handle(family_handle)
|
||||
if spouse_id in [family.get_mother_handle(),family.get_father_handle()]:
|
||||
ErrorDialog(_("Error adding a spouse"),
|
||||
_("A person cannot be linked as his/her "
|
||||
"child's spouse"))
|
||||
return
|
||||
dialog = QuestionDialog2(
|
||||
_("Spouse is a parent"),
|
||||
_("The person selected as a spouse is a parent of the "
|
||||
"active person. Usually, this is a mistake. You may "
|
||||
"choose either to proceed with adding a spouse, or to "
|
||||
"return to the Choose Spouse dialog to fix the problem."),
|
||||
_("Proceed with adding"), _("Return to dialog"),
|
||||
self.window)
|
||||
if not dialog.run():
|
||||
return
|
||||
|
||||
# don't do anything if the marriage already exists
|
||||
for f in self.person.get_family_handle_list():
|
||||
@@ -273,16 +266,24 @@ class AddSpouse:
|
||||
_("The spouse is already present in this family"))
|
||||
return
|
||||
if spouse_id in fam.get_child_handle_list():
|
||||
ErrorDialog(_("Error adding a spouse"),
|
||||
_("A person cannot be linked as his/her "
|
||||
"parent's spouse"))
|
||||
return
|
||||
dialog = QuestionDialog2(
|
||||
_("Spouse is a child"),
|
||||
_("The person selected as a spouse is a child of the "
|
||||
"active person. Usually, this is a mistake. You may "
|
||||
"choose either to proceed with adding a spouse, or to "
|
||||
"return to the Choose Spouse dialog to fix the problem."),
|
||||
_("Proceed with adding"), _("Return to dialog"),
|
||||
self.window)
|
||||
if not dialog.run():
|
||||
return
|
||||
|
||||
trans = self.db.transaction_begin()
|
||||
|
||||
if not self.active_family:
|
||||
self.active_family = RelLib.Family()
|
||||
self.db.add_family(self.active_family,trans)
|
||||
gid = self.db.find_next_family_gramps_id()
|
||||
self.active_family.set_gramps_id(gid)
|
||||
self.active_family.set_handle(self.db.create_id())
|
||||
self.person.add_family_handle(self.active_family.get_handle())
|
||||
self.db.commit_person(self.person,trans)
|
||||
|
||||
@@ -302,62 +303,12 @@ class AddSpouse:
|
||||
self.db.transaction_commit(trans,_("Add Spouse"))
|
||||
|
||||
Utils.destroy_passed_object(obj)
|
||||
gc.collect()
|
||||
m = Marriage.Marriage(self.parent, self.active_family, self.parent.db)
|
||||
m.on_add_clicked()
|
||||
|
||||
def relation_type_changed(self,obj):
|
||||
self.update_data()
|
||||
|
||||
def all_filter(self, person):
|
||||
return person.get_gender() != self.sgender
|
||||
|
||||
def likely_filter(self, person):
|
||||
if person.get_gender() == self.sgender:
|
||||
return False
|
||||
|
||||
pd_id = person.get_death_handle()
|
||||
pb_id = person.get_birth_handle()
|
||||
|
||||
if pd_id:
|
||||
pdday = self.db.get_event_from_handle(pd_id).get_date_object()
|
||||
else:
|
||||
pdday = Date.Date()
|
||||
|
||||
if pb_id:
|
||||
pbday = self.db.get_event_from_handle(pb_id).get_date_object()
|
||||
else:
|
||||
pbday = Date.Date()
|
||||
|
||||
if self.bday.get_year_valid():
|
||||
if pbday.get_year_valid():
|
||||
# reject if person birthdate differs more than
|
||||
# 100 years from spouse birthdate
|
||||
if abs(pbday.get_year() - self.bday.get_year()) > 100:
|
||||
return 0
|
||||
|
||||
if pdday.get_year_valid():
|
||||
# reject if person birthdate is after the spouse deathdate
|
||||
if self.bday.get_year() + 10 > pdday.get_high_year():
|
||||
return 0
|
||||
|
||||
# reject if person birthdate is more than 100 years
|
||||
# before the spouse deathdate
|
||||
if self.bday.get_high_year() + 100 < pdday.get_year():
|
||||
return 0
|
||||
|
||||
if self.dday.get_year_valid():
|
||||
if pbday.get_year_valid():
|
||||
# reject if person deathdate was prior to
|
||||
# the spouse birthdate
|
||||
if self.dday.get_high_year() < pbday.get_year() + 10:
|
||||
return 0
|
||||
|
||||
if pdday.get_year_valid():
|
||||
# reject if person deathdate differs more than
|
||||
# 100 years from spouse deathdate
|
||||
if abs(pdday.get_year() - self.dday.get_year()) > 100:
|
||||
return 0
|
||||
return 1
|
||||
gobject.idle_add(self.update_data)
|
||||
|
||||
def set_gender(self):
|
||||
if self.rel_combo.get_active() == RelLib.Family.CIVIL_UNION:
|
||||
@@ -371,18 +322,62 @@ class AddSpouse:
|
||||
else:
|
||||
self.sgender = RelLib.Person.FEMALE
|
||||
|
||||
def update_data(self,person = None):
|
||||
def update_data(self):
|
||||
"""
|
||||
Called whenever the relationship type changes. Rebuilds the
|
||||
the potential spouse list.
|
||||
"""
|
||||
|
||||
self.window.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH))
|
||||
while(gtk.events_pending()):
|
||||
gtk.main_iteration()
|
||||
self.slist = PeopleModel.PeopleModel(self.db,self.filter)
|
||||
self.spouse_list.set_model(self.slist)
|
||||
self.window.window.set_cursor(None)
|
||||
|
||||
def on_show_toggled(self,obj):
|
||||
if self.filter == self.likely:
|
||||
self.filter = self.all
|
||||
else:
|
||||
self.filter = self.likely
|
||||
self.update_data()
|
||||
gobject.idle_add(self.update_data)
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Likely Filters
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class LikelyFilter(GenericFilter.Rule):
|
||||
|
||||
labels = [ 'Person handle', 'Person gender' ]
|
||||
category = _('General filters')
|
||||
|
||||
def prepare(self,db):
|
||||
person = db.get_person_from_handle(self.list[0])
|
||||
if person.birth_handle:
|
||||
birth = db.get_event_from_handle(person.birth_handle)
|
||||
dateobj = Date.Date(birth.date)
|
||||
year = dateobj.get_year()
|
||||
dateobj.set_year(year+40)
|
||||
self.lower = dateobj.sortval
|
||||
dateobj.set_year(year-40)
|
||||
self.upper = dateobj.sortval
|
||||
else:
|
||||
self.upper = None
|
||||
self.lower = None
|
||||
|
||||
if person.gender == RelLib.Person.MALE:
|
||||
self.gender = RelLib.Person.FEMALE
|
||||
else:
|
||||
self.gender = RelLib.Person.MALE
|
||||
|
||||
def apply(self,db,person):
|
||||
if person.gender != self.gender:
|
||||
return False
|
||||
if not person.birth_handle or (self.upper == None and
|
||||
self.lower == None):
|
||||
return True
|
||||
event = db.get_event_from_handle(person.birth_handle)
|
||||
return (event.date == None or event.date.sortval == 0 or
|
||||
self.lower > event.date.sortval > self.upper)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2000-2005 Donald N. Allingham
|
||||
# Copyright (C) 2000-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
|
||||
@@ -31,6 +31,7 @@ mechanism for the user to edit address information.
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from gettext import gettext as _
|
||||
import gc
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -38,19 +39,22 @@ from gettext import gettext as _
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import gtk.glade
|
||||
import gnome
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# gramps modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import GrampsDisplay
|
||||
import const
|
||||
import Utils
|
||||
import Date
|
||||
import RelLib
|
||||
import Sources
|
||||
import DateEdit
|
||||
import Spell
|
||||
|
||||
from WindowUtils import GladeIf
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -85,21 +89,35 @@ class AddressEditor:
|
||||
|
||||
# Get the important widgets from the glade description
|
||||
self.top = gtk.glade.XML(const.dialogFile, "addr_edit","gramps")
|
||||
self.gladeif = GladeIf(self.top)
|
||||
|
||||
self.window = self.top.get_widget("addr_edit")
|
||||
self.addr_start = self.top.get_widget("address_start")
|
||||
self.addr_start.set_editable(not self.db.readonly)
|
||||
self.street = self.top.get_widget("street")
|
||||
self.street.set_editable(not self.db.readonly)
|
||||
self.city = self.top.get_widget("city")
|
||||
self.city.set_editable(not self.db.readonly)
|
||||
self.state = self.top.get_widget("state")
|
||||
self.state.set_editable(not self.db.readonly)
|
||||
self.country = self.top.get_widget("country")
|
||||
self.country.set_editable(not self.db.readonly)
|
||||
self.postal = self.top.get_widget("postal")
|
||||
self.postal.set_editable(not self.db.readonly)
|
||||
self.phone = self.top.get_widget("phone")
|
||||
self.phone.set_editable(not self.db.readonly)
|
||||
self.note_field = self.top.get_widget("addr_note")
|
||||
self.note_field.set_editable(not self.db.readonly)
|
||||
self.spell = Spell.Spell(self.note_field)
|
||||
self.priv = self.top.get_widget("priv")
|
||||
self.priv.set_sensitive(not self.db.readonly)
|
||||
self.slist = self.top.get_widget("slist")
|
||||
self.sources_label = self.top.get_widget("sourcesAddr")
|
||||
self.notes_label = self.top.get_widget("noteAddr")
|
||||
self.flowed = self.top.get_widget("addr_flowed")
|
||||
self.flowed.set_sensitive(not self.db.readonly)
|
||||
self.preform = self.top.get_widget("addr_preform")
|
||||
self.preform.set_sensitive(not self.db.readonly)
|
||||
|
||||
title_label = self.top.get_widget("title")
|
||||
|
||||
@@ -119,10 +137,12 @@ class AddressEditor:
|
||||
if self.addr.get_note():
|
||||
self.note_field.get_buffer().set_text(self.addr.get_note())
|
||||
Utils.bold_label(self.notes_label)
|
||||
if addr.get_note_format() == 1:
|
||||
if addr.get_note_format() == 1:
|
||||
self.preform.set_active(1)
|
||||
else:
|
||||
self.note_field.set_wrap_mode(gtk.WRAP_NONE)
|
||||
else:
|
||||
self.flowed.set_active(1)
|
||||
self.note_field.set_wrap_mode(gtk.WRAP_WORD)
|
||||
else:
|
||||
self.addr_date_obj = Date.Date()
|
||||
self.srcreflist = []
|
||||
@@ -133,16 +153,18 @@ class AddressEditor:
|
||||
self.top.get_widget('del_src'), self.db.readonly)
|
||||
|
||||
date_stat = self.top.get_widget("date_stat")
|
||||
date_stat.set_sensitive(not self.db.readonly)
|
||||
self.date_check = DateEdit.DateEdit(
|
||||
self.addr_date_obj, self.addr_start, date_stat, self.window)
|
||||
|
||||
self.top.signal_autoconnect({
|
||||
"on_switch_page" : self.on_switch_page,
|
||||
"on_help_addr_clicked" : self.on_help_clicked,
|
||||
"on_ok_addr_clicked" : self.ok_clicked,
|
||||
"on_cancel_addr_clicked" : self.close,
|
||||
"on_addr_edit_delete_event" : self.on_delete_event,
|
||||
})
|
||||
self.gladeif.connect('addr_edit','delete_event',self.on_delete_event)
|
||||
self.gladeif.connect('button122','clicked',self.close)
|
||||
self.gladeif.connect('button121','clicked',self.ok_clicked)
|
||||
okbtn = self.top.get_widget('button121')
|
||||
okbtn.set_sensitive(not self.db.readonly)
|
||||
self.gladeif.connect('button129','clicked',self.on_help_clicked)
|
||||
self.gladeif.connect('notebook2','switch_page',self.on_switch_page)
|
||||
self.gladeif.connect('addr_preform','toggled',self.format_toggled)
|
||||
|
||||
if parent_window:
|
||||
self.window.set_transient_for(parent_window)
|
||||
@@ -152,11 +174,15 @@ class AddressEditor:
|
||||
def on_delete_event(self,obj,b):
|
||||
self.close_child_windows()
|
||||
self.remove_itself_from_menu()
|
||||
self.gladeif.close()
|
||||
gc.collect()
|
||||
|
||||
def close(self,obj):
|
||||
self.close_child_windows()
|
||||
self.remove_itself_from_menu()
|
||||
self.gladeif.close()
|
||||
self.window.destroy()
|
||||
gc.collect()
|
||||
|
||||
def close_child_windows(self):
|
||||
for child_window in self.child_windows.values():
|
||||
@@ -187,7 +213,7 @@ class AddressEditor:
|
||||
|
||||
def on_help_clicked(self,obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
gnome.help_display('gramps-manual','adv-ad')
|
||||
GrampsDisplay.help('adv-ad')
|
||||
|
||||
def ok_clicked(self,obj):
|
||||
"""
|
||||
@@ -215,6 +241,12 @@ class AddressEditor:
|
||||
self.callback(self.addr)
|
||||
self.close(obj)
|
||||
|
||||
def format_toggled(self,junk):
|
||||
if self.preform.get_active():
|
||||
self.note_field.set_wrap_mode(gtk.WRAP_NONE)
|
||||
else:
|
||||
self.note_field.set_wrap_mode(gtk.WRAP_WORD)
|
||||
|
||||
def check(self,get,set,data):
|
||||
"""Compares a data item, updates if necessary, and sets the
|
||||
parents lists_changed flag"""
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2000-2005 Donald N. Allingham
|
||||
# Copyright (C) 2000-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
|
||||
@@ -33,7 +33,6 @@ Module responsible for handling the command line arguments for GRAMPS.
|
||||
#-------------------------------------------------------------------------
|
||||
import os
|
||||
import getopt
|
||||
import time
|
||||
from gettext import gettext as _
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@@ -50,6 +49,7 @@ import GrampsKeys
|
||||
import RecentFiles
|
||||
import PluginMgr
|
||||
import Report
|
||||
import Tool
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -127,7 +127,8 @@ class ArgHandler:
|
||||
o,v = options[opt_ix]
|
||||
if o in ( '-O', '--open'):
|
||||
fname = v
|
||||
ftype = GrampsMime.get_type(os.path.abspath(os.path.expanduser(fname)))
|
||||
ftype = GrampsMime.get_type(
|
||||
os.path.abspath(os.path.expanduser(fname)))
|
||||
if opt_ix<len(options)-1 \
|
||||
and options[opt_ix+1][0] in ( '-f', '--format'):
|
||||
format = options[opt_ix+1][1]
|
||||
@@ -137,7 +138,7 @@ class ArgHandler:
|
||||
continue
|
||||
elif ftype == const.app_gedcom:
|
||||
format = 'gedcom'
|
||||
elif ftype == "x-directory/normal":
|
||||
elif ftype == const.app_gramps_xml:
|
||||
format = 'gramps-xml'
|
||||
elif ftype == const.app_gramps:
|
||||
format = 'grdb'
|
||||
@@ -148,11 +149,16 @@ class ArgHandler:
|
||||
self.open = (fname,format)
|
||||
elif o in ( '-i', '--import'):
|
||||
fname = v
|
||||
ftype = GrampsMime.get_type(os.path.abspath(os.path.expanduser(fname)))
|
||||
ftype = GrampsMime.get_type(
|
||||
os.path.abspath(os.path.expanduser(fname)))
|
||||
if opt_ix<len(options)-1 \
|
||||
and options[opt_ix+1][0] in ( '-f', '--format'):
|
||||
format = options[opt_ix+1][1]
|
||||
if format not in ('gedcom','gramps-xml','gramps-pkg','grdb','geneweb'):
|
||||
if format not in ('gedcom',
|
||||
'gramps-xml',
|
||||
'gramps-pkg',
|
||||
'grdb',
|
||||
'geneweb'):
|
||||
print "Invalid format: %s" % format
|
||||
print "Ignoring input file: %s" % fname
|
||||
continue
|
||||
@@ -160,7 +166,7 @@ class ArgHandler:
|
||||
format = 'gedcom'
|
||||
elif ftype == const.app_gramps_package:
|
||||
format = 'gramps-pkg'
|
||||
elif ftype == "x-directory/normal":
|
||||
elif ftype == const.app_gramps_xml:
|
||||
format = 'gramps-xml'
|
||||
elif ftype == const.app_gramps:
|
||||
format = 'grdb'
|
||||
@@ -176,7 +182,13 @@ class ArgHandler:
|
||||
if opt_ix<len(options)-1 \
|
||||
and options[opt_ix+1][0] in ( '-f', '--format'):
|
||||
outformat = options[opt_ix+1][1]
|
||||
if outformat not in ('gedcom','gramps-xml','gramps-pkg','grdb','iso','wft','geneweb'):
|
||||
if outformat not in ('gedcom',
|
||||
'gramps-xml',
|
||||
'gramps-pkg',
|
||||
'grdb',
|
||||
'iso',
|
||||
'wft',
|
||||
'geneweb'):
|
||||
print "Invalid format: %s" % outformat
|
||||
print "Ignoring output file: %s" % outfname
|
||||
continue
|
||||
@@ -188,17 +200,10 @@ class ArgHandler:
|
||||
outformat = 'wft'
|
||||
elif outfname[-2:].upper() == "GW":
|
||||
outformat = 'geneweb'
|
||||
elif not os.path.isfile(outfname):
|
||||
if not os.path.isdir(outfname):
|
||||
try:
|
||||
os.makedirs(outfname,0700)
|
||||
except:
|
||||
print "Cannot create directory %s" % outfname
|
||||
print "Ignoring output file: %s" % outfname
|
||||
continue
|
||||
elif outfname[-6:].upper() == "GRAMPS":
|
||||
outformat = 'gramps-xml'
|
||||
elif fname[-3:].upper() == "GRDB":
|
||||
format = 'grdb'
|
||||
elif outfname[-4:].upper() == "GRDB":
|
||||
outformat = 'grdb'
|
||||
else:
|
||||
print "Unrecognized format for output file %s" % outfname
|
||||
print "Ignoring output file: %s" % outfname
|
||||
@@ -206,7 +211,7 @@ class ArgHandler:
|
||||
self.exports.append((outfname,outformat))
|
||||
elif o in ( '-a', '--action' ):
|
||||
action = v
|
||||
if action not in ( 'check', 'summary', 'report' ):
|
||||
if action not in ( 'check', 'summary', 'report', 'tool' ):
|
||||
print "Unknown action: %s. Ignoring." % action
|
||||
continue
|
||||
options_str = ""
|
||||
@@ -228,20 +233,17 @@ class ArgHandler:
|
||||
import GrampsBSDDB
|
||||
self.parent.db.close()
|
||||
self.parent.db = GrampsBSDDB.GrampsBSDDB()
|
||||
self.parent.read_file(filename)
|
||||
return 1
|
||||
return self.parent.read_file(filename)
|
||||
elif filetype == const.app_gramps_xml:
|
||||
import GrampsXMLDB
|
||||
self.parent.db.close()
|
||||
self.parent.db = GrampsXMLDB.GrampsXMLDB()
|
||||
self.parent.read_file(filename)
|
||||
return 1
|
||||
return self.parent.read_file(filename)
|
||||
elif filetype == const.app_gedcom:
|
||||
import GrampsGEDDB
|
||||
self.parent.db.close()
|
||||
self.parent.db = GrampsGEDDB.GrampsGEDDB()
|
||||
self.parent.read_file(filename)
|
||||
return 1
|
||||
return self.parent.read_file(filename)
|
||||
else:
|
||||
return 0
|
||||
|
||||
@@ -289,7 +291,8 @@ class ArgHandler:
|
||||
if not prompter.chooser():
|
||||
QuestionDialog.ErrorDialog(
|
||||
_("New GRAMPS database was not set up"),
|
||||
_('GRAMPS cannot open non-native data without setting up new GRAMPS database.'))
|
||||
_('GRAMPS cannot open non-native data '
|
||||
'without setting up new GRAMPS database.'))
|
||||
print "Cannot continue without native database. Exiting..."
|
||||
os._exit(1)
|
||||
elif filetype == const.app_gramps_package:
|
||||
@@ -300,13 +303,17 @@ class ArgHandler:
|
||||
print "Unknown file type: %s" % filetype
|
||||
QuestionDialog.ErrorDialog(
|
||||
_("Could not open file: %s") % filename,
|
||||
_('File type "%s" is unknown to GRAMPS.\n\nValid types are: GRAMPS database, GRAMPS XML, GRAMPS package, and GEDCOM.') % filetype)
|
||||
_('File type "%s" is unknown to GRAMPS.\n\n'
|
||||
'Valid types are: GRAMPS database, GRAMPS XML, '
|
||||
'GRAMPS package, and GEDCOM.') % filetype)
|
||||
print "Exiting..."
|
||||
os._exit(1)
|
||||
if success:
|
||||
# Add the file to the recent items
|
||||
RecentFiles.recent_files(filename,filetype)
|
||||
self.parent.build_recent_menu()
|
||||
else:
|
||||
os._exit(1)
|
||||
return
|
||||
|
||||
if self.open:
|
||||
@@ -340,11 +347,13 @@ class ArgHandler:
|
||||
os._exit(1)
|
||||
|
||||
if self.imports:
|
||||
self.parent.cl = bool(self.exports or self.actions or self.parent.cl)
|
||||
self.parent.cl = bool(self.exports or
|
||||
self.actions or self.parent.cl)
|
||||
|
||||
# Create dir for imported database(s)
|
||||
self.impdir_path = os.path.expanduser("~/.gramps/import" )
|
||||
self.imp_db_path = os.path.expanduser("~/.gramps/import/import_db.grdb" )
|
||||
self.imp_db_path = os.path.expanduser(
|
||||
"~/.gramps/import/import_db.grdb" )
|
||||
if not os.path.isdir(self.impdir_path):
|
||||
try:
|
||||
os.mkdir(self.impdir_path,0700)
|
||||
@@ -375,16 +384,16 @@ class ArgHandler:
|
||||
print "Launching interactive session..."
|
||||
|
||||
if self.parent.cl:
|
||||
for expt in self.exports:
|
||||
print "Exporting: file %s, format %s." % expt
|
||||
self.cl_export(expt[0],expt[1])
|
||||
|
||||
for (action,options_str) in self.actions:
|
||||
print "Performing action: %s." % action
|
||||
if options_str:
|
||||
print "Using options string: %s" % options_str
|
||||
self.cl_action(action,options_str)
|
||||
|
||||
for expt in self.exports:
|
||||
print "Exporting: file %s, format %s." % expt
|
||||
self.cl_export(expt[0],expt[1])
|
||||
|
||||
print "Cleaning up."
|
||||
# remove import db after use
|
||||
self.parent.db.close()
|
||||
@@ -433,8 +442,7 @@ class ArgHandler:
|
||||
os._exit(1)
|
||||
elif format == 'gramps-xml':
|
||||
try:
|
||||
dbname = os.path.join(filename,const.xmlFile)
|
||||
ReadXML.importData(self.parent.db,dbname,None,self.parent.cl)
|
||||
ReadXML.importData(self.parent.db,filename,None,self.parent.cl)
|
||||
except:
|
||||
print "Error importing %s" % filename
|
||||
os._exit(1)
|
||||
@@ -453,7 +461,8 @@ class ArgHandler:
|
||||
try:
|
||||
os.mkdir(tmpdir_path,0700)
|
||||
except:
|
||||
print "Could not create temporary directory %s" % tmpdir_path
|
||||
print "Could not create temporary directory %s" \
|
||||
% tmpdir_path
|
||||
os._exit(1)
|
||||
elif not os.access(tmpdir_path,os.W_OK):
|
||||
print "Temporary directory %s is not writable" % tmpdir_path
|
||||
@@ -501,7 +510,14 @@ class ArgHandler:
|
||||
Try to write into filename using the format.
|
||||
Any errors will cause the os._exit(1) call.
|
||||
"""
|
||||
if format == 'gedcom':
|
||||
if format == 'grdb':
|
||||
import WriteGrdb
|
||||
try:
|
||||
WriteGrdb.exportData(self.parent.db,filename)
|
||||
except:
|
||||
print "Error exporting %s" % filename
|
||||
os._exit(1)
|
||||
elif format == 'gedcom':
|
||||
import WriteGedcom
|
||||
try:
|
||||
gw = WriteGedcom.GedcomWriter(self.parent.db,None,1,filename)
|
||||
@@ -511,12 +527,11 @@ class ArgHandler:
|
||||
os._exit(1)
|
||||
elif format == 'gramps-xml':
|
||||
filename = os.path.normpath(os.path.abspath(filename))
|
||||
dbname = os.path.join(filename,const.xmlFile)
|
||||
if filename:
|
||||
try:
|
||||
import WriteXML
|
||||
g = WriteXML.XmlWriter(self.parent.db,None,1,1)
|
||||
ret = g.write(dbname)
|
||||
g = WriteXML.XmlWriter(self.parent.db,None,0,1)
|
||||
ret = g.write(filename)
|
||||
except:
|
||||
print "Error exporting %s" % filename
|
||||
os._exit(1)
|
||||
@@ -547,7 +562,8 @@ class ArgHandler:
|
||||
elif format == 'geneweb':
|
||||
import WriteGeneWeb
|
||||
try:
|
||||
writer = WriteGeneWeb.GeneWebWriter(self.parent.db,None,1,filename)
|
||||
writer = WriteGeneWeb.GeneWebWriter(self.parent.db,
|
||||
None,1,filename)
|
||||
ret = writer.export_data()
|
||||
except:
|
||||
print "Error exporting %s" % filename
|
||||
@@ -598,17 +614,44 @@ class ArgHandler:
|
||||
category = item[1]
|
||||
report_class = item[2]
|
||||
options_class = item[3]
|
||||
if category in (const.CATEGORY_BOOK,const.CATEGORY_CODE,
|
||||
const.CATEGORY_WEB):
|
||||
options_class(self.parent.db,name,category,options_str_dict)
|
||||
if category in (Report.CATEGORY_BOOK,Report.CATEGORY_CODE,
|
||||
Report.CATEGORY_WEB):
|
||||
options_class(self.parent.db,name,
|
||||
category,options_str_dict)
|
||||
else:
|
||||
Report.cl_report(self.parent.db,name,category,
|
||||
report_class,options_class,options_str_dict)
|
||||
report_class,options_class,
|
||||
options_str_dict)
|
||||
return
|
||||
|
||||
print "Unknown report name. Available names are:"
|
||||
for item in PluginMgr.cl_list:
|
||||
print " %s" % item[0]
|
||||
elif action == "tool":
|
||||
try:
|
||||
options_str_dict = dict( [ tuple(chunk.split('=')) for
|
||||
chunk in options_str.split(',') ] )
|
||||
except:
|
||||
options_str_dict = {}
|
||||
print "Ignoring invalid options string."
|
||||
|
||||
name = options_str_dict.pop('name',None)
|
||||
if not name:
|
||||
print "Tool name not given. Please use name=toolname"
|
||||
os._exit(1)
|
||||
|
||||
for item in PluginMgr.cli_tool_list:
|
||||
if name == item[0]:
|
||||
category = item[1]
|
||||
tool_class = item[2]
|
||||
options_class = item[3]
|
||||
Tool.cli_tool(self.parent.db,name,category,
|
||||
tool_class,options_class,options_str_dict)
|
||||
return
|
||||
|
||||
print "Unknown tool name. Available names are:"
|
||||
for item in PluginMgr.cli_tool_list:
|
||||
print " %s" % item[0]
|
||||
else:
|
||||
print "Unknown action: %s." % action
|
||||
os._exit(1)
|
||||
@@ -34,6 +34,8 @@ __version__ = "$Revision$"
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from gettext import gettext as _
|
||||
import gc
|
||||
from cgi import escape
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -41,7 +43,6 @@ from gettext import gettext as _
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import gtk.glade
|
||||
import gnome
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -53,7 +54,11 @@ import Utils
|
||||
import Sources
|
||||
import AutoComp
|
||||
import RelLib
|
||||
import Spell
|
||||
import GrampsDisplay
|
||||
|
||||
from QuestionDialog import WarningDialog
|
||||
from WindowUtils import GladeIf
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -64,7 +69,7 @@ class AttributeEditor:
|
||||
"""
|
||||
Displays a dialog that allows the user to edit an attribute.
|
||||
"""
|
||||
def __init__(self, parent, attrib, title, list, callback,
|
||||
def __init__(self, parent, attrib, title, data_list, callback,
|
||||
parent_window=None):
|
||||
"""
|
||||
Displays the dialog box.
|
||||
@@ -88,12 +93,13 @@ class AttributeEditor:
|
||||
self.attrib = attrib
|
||||
self.callback = callback
|
||||
self.child_windows = {}
|
||||
self.alist = list
|
||||
self.alist = data_list
|
||||
|
||||
self.top = gtk.glade.XML(const.dialogFile, "attr_edit","gramps")
|
||||
self.slist = self.top.get_widget("slist")
|
||||
self.value_field = self.top.get_widget("attr_value")
|
||||
self.note_field = self.top.get_widget("attr_note")
|
||||
self.spell = Spell.Spell(self.note_field)
|
||||
self.attrib_menu = self.top.get_widget("attr_menu")
|
||||
self.type_field = self.attrib_menu.child
|
||||
self.source_field = self.top.get_widget("attr_source")
|
||||
@@ -118,11 +124,11 @@ class AttributeEditor:
|
||||
if title == ", ":
|
||||
title = _("Attribute Editor")
|
||||
else:
|
||||
title = _("Attribute Editor for %s") % title
|
||||
title = _("Attribute Editor for %s") % escape(title)
|
||||
l = self.top.get_widget("title")
|
||||
Utils.set_titles(self.window,l,title,_('Attribute Editor'))
|
||||
|
||||
AutoComp.fill_combo(self.attrib_menu,list)
|
||||
AutoComp.fill_combo(self.attrib_menu,data_list)
|
||||
|
||||
if attrib != None:
|
||||
self.type_field.set_text(const.display_attr(attrib.get_type()))
|
||||
@@ -132,19 +138,28 @@ class AttributeEditor:
|
||||
if attrib.get_note():
|
||||
self.note_field.get_buffer().set_text(attrib.get_note())
|
||||
Utils.bold_label(self.notes_label)
|
||||
if attrib.get_note_format() == 1:
|
||||
if attrib.get_note_format() == 1:
|
||||
self.preform.set_active(1)
|
||||
else:
|
||||
else:
|
||||
self.flowed.set_active(1)
|
||||
|
||||
self.top.signal_autoconnect({
|
||||
"on_help_attr_clicked" : self.on_help_clicked,
|
||||
"on_ok_attr_clicked" : self.on_ok_clicked,
|
||||
"on_cancel_attr_clicked" : self.close,
|
||||
"on_attr_edit_delete_event" : self.on_delete_event,
|
||||
"on_switch_page" : self.on_switch_page
|
||||
})
|
||||
self.gladeif = GladeIf(self.top)
|
||||
self.gladeif.connect('attr_edit','delete_event', self.on_delete_event)
|
||||
self.gladeif.connect('button116', 'clicked', self.close)
|
||||
self.gladeif.connect('button115', 'clicked', self.on_ok_clicked)
|
||||
self.gladeif.connect('button127', 'clicked', self.on_help_clicked)
|
||||
self.gladeif.connect('notebook', 'switch_page', self.on_switch_page)
|
||||
|
||||
if self.db.readonly:
|
||||
w = self.top.get_widget("button115")
|
||||
w.set_sensitive(False)
|
||||
self.value_field.set_editable(False)
|
||||
self.note_field.set_editable(False)
|
||||
self.attrib_menu.set_sensitive(False)
|
||||
self.priv.set_sensitive(False)
|
||||
self.flowed.set_sensitive(False)
|
||||
self.preform.set_sensitive(False)
|
||||
|
||||
if parent_window:
|
||||
self.window.set_transient_for(parent_window)
|
||||
self.add_itself_to_menu()
|
||||
@@ -153,11 +168,15 @@ class AttributeEditor:
|
||||
def on_delete_event(self,obj,b):
|
||||
self.close_child_windows()
|
||||
self.remove_itself_from_menu()
|
||||
self.gladeif.close()
|
||||
gc.collect()
|
||||
|
||||
def close(self,obj):
|
||||
self.close_child_windows()
|
||||
self.remove_itself_from_menu()
|
||||
self.gladeif.close()
|
||||
self.window.destroy()
|
||||
gc.collect()
|
||||
|
||||
def close_child_windows(self):
|
||||
for child_window in self.child_windows.values():
|
||||
@@ -194,7 +213,7 @@ class AttributeEditor:
|
||||
|
||||
def on_help_clicked(self,obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
gnome.help_display('gramps-manual','adv-at')
|
||||
GrampsDisplay.help('adv-at')
|
||||
|
||||
def on_ok_clicked(self,obj):
|
||||
"""
|
||||
|
||||
@@ -32,7 +32,8 @@ def fill_combo(combo,data_list):
|
||||
store = gtk.ListStore(gobject.TYPE_STRING)
|
||||
|
||||
for data in data_list:
|
||||
store.append(row=[data])
|
||||
if data:
|
||||
store.append(row=[data])
|
||||
|
||||
combo.set_model(store)
|
||||
combo.set_text_column(0)
|
||||
@@ -45,7 +46,8 @@ def fill_combo(combo,data_list):
|
||||
def fill_entry(entry,data_list):
|
||||
store = gtk.ListStore(gobject.TYPE_STRING)
|
||||
for data in data_list:
|
||||
store.append(row=[data])
|
||||
if data:
|
||||
store.append(row=[data])
|
||||
|
||||
completion = gtk.EntryCompletion()
|
||||
completion.set_model(store)
|
||||
@@ -56,7 +58,8 @@ def fill_entry(entry,data_list):
|
||||
def fill_option_text(combobox,data):
|
||||
store = gtk.ListStore(str)
|
||||
for item in data:
|
||||
store.append(row=[item])
|
||||
if item:
|
||||
store.append(row=[item])
|
||||
combobox.set_model(store)
|
||||
combobox.set_active(0)
|
||||
|
||||
|
||||
@@ -499,8 +499,8 @@ class ParagraphStyle:
|
||||
"""
|
||||
Defines the characteristics of a paragraph. The characteristics are:
|
||||
font (a FontStyle instance), right margin, left margin, first indent,
|
||||
alignment, level, top border, bottom border, right border, left
|
||||
border, padding, and background color.
|
||||
top margin, bottom margin, alignment, level, top border, bottom border,
|
||||
right border, left border, padding, and background color.
|
||||
|
||||
"""
|
||||
def __init__(self,source=None):
|
||||
@@ -513,6 +513,8 @@ class ParagraphStyle:
|
||||
self.rmargin = source.rmargin
|
||||
self.lmargin = source.lmargin
|
||||
self.first_indent = source.first_indent
|
||||
self.tmargin = source.tmargin
|
||||
self.bmargin = source.bmargin
|
||||
self.align = source.align
|
||||
self.level = source.level
|
||||
self.top_border = source.top_border
|
||||
@@ -526,6 +528,8 @@ class ParagraphStyle:
|
||||
self.font = FontStyle()
|
||||
self.rmargin = 0
|
||||
self.lmargin = 0
|
||||
self.tmargin = 0
|
||||
self.bmargin = 0
|
||||
self.first_indent = 0
|
||||
self.align = PARA_ALIGN_LEFT
|
||||
self.level = 0
|
||||
@@ -543,17 +547,19 @@ class ParagraphStyle:
|
||||
def get_description(self):
|
||||
return self.description
|
||||
|
||||
def set(self,rmargin=None,lmargin=None,first_indent=None,align=None,
|
||||
def set(self,rmargin=None,lmargin=None,first_indent=None,
|
||||
tmargin=None,bmargin=None,align=None,
|
||||
tborder=None,bborder=None,rborder=None,lborder=None,pad=None,
|
||||
bgcolor=None,font=None):
|
||||
"""
|
||||
Allows the values of the object to be set.
|
||||
|
||||
@param rmargin: right margin in centimeters
|
||||
@param lmargin: left margin in centimeters
|
||||
@param rmargin: right indent in centimeters
|
||||
@param lmargin: left indent in centimeters
|
||||
@param first_indent: first line indent in centimeters
|
||||
align - alignment type (PARA_ALIGN_LEFT, PARA_ALIGN_RIGHT,
|
||||
PARA_ALIGN_CENTER, or PARA_ALIGN_JUSTIFY)
|
||||
@param tmargin: space above paragraph in centimeters
|
||||
@param bmargin: space below paragraph in centimeters
|
||||
@param align: alignment type (PARA_ALIGN_LEFT, PARA_ALIGN_RIGHT, PARA_ALIGN_CENTER, or PARA_ALIGN_JUSTIFY)
|
||||
@param tborder: non zero indicates that a top border should be used
|
||||
@param bborder: non zero indicates that a bottom border should be used
|
||||
@param rborder: non zero indicates that a right border should be used
|
||||
@@ -584,6 +590,10 @@ class ParagraphStyle:
|
||||
self.set_left_margin(lmargin)
|
||||
if first_indent != None:
|
||||
self.set_first_indent(first_indent)
|
||||
if tmargin != None:
|
||||
self.set_top_margin(tmargin)
|
||||
if bmargin != None:
|
||||
self.set_bottom_margin(bmargin)
|
||||
|
||||
def set_header_level(self,level):
|
||||
"""
|
||||
@@ -719,29 +729,45 @@ class ParagraphStyle:
|
||||
return "unknown"
|
||||
|
||||
def set_left_margin(self,value):
|
||||
"sets the left paragraph margin in centimeters"
|
||||
"sets the left indent in centimeters"
|
||||
self.lmargin = value
|
||||
|
||||
def set_right_margin(self,value):
|
||||
"sets the right paragraph margin in centimeters"
|
||||
"sets the right indent in centimeters"
|
||||
self.rmargin = value
|
||||
|
||||
def set_first_indent(self,value):
|
||||
"sets the first indent margin in centimeters"
|
||||
"sets the first line indent in centimeters"
|
||||
self.first_indent = value
|
||||
|
||||
def set_top_margin(self,value):
|
||||
"sets the space above paragraph in centimeters"
|
||||
self.tmargin = value
|
||||
|
||||
def set_bottom_margin(self,value):
|
||||
"sets the space below paragraph in centimeters"
|
||||
self.bmargin = value
|
||||
|
||||
def get_left_margin(self):
|
||||
"returns the left margin in centimeters"
|
||||
"returns the left indent in centimeters"
|
||||
return self.lmargin
|
||||
|
||||
def get_right_margin(self):
|
||||
"returns the right margin in centimeters"
|
||||
"returns the right indent in centimeters"
|
||||
return self.rmargin
|
||||
|
||||
def get_first_indent(self):
|
||||
"returns the first indent margin in centimeters"
|
||||
"returns the first line indent in centimeters"
|
||||
return self.first_indent
|
||||
|
||||
def get_top_margin(self):
|
||||
"returns the space above paragraph in centimeters"
|
||||
return self.tmargin
|
||||
|
||||
def get_bottom_margin(self):
|
||||
"returns the space below paragraph in centimeters"
|
||||
return self.bmargin
|
||||
|
||||
#------------------------------------------------------------------------
|
||||
#
|
||||
# StyleSheetList
|
||||
@@ -832,10 +858,14 @@ class StyleSheetList:
|
||||
rm = float(p.get_right_margin())
|
||||
lm = float(p.get_left_margin())
|
||||
fi = float(p.get_first_indent())
|
||||
tm = float(p.get_top_margin())
|
||||
bm = float(p.get_bottom_margin())
|
||||
pa = float(p.get_padding())
|
||||
f.write('rmargin="%s" ' % Utils.gformat(rm))
|
||||
f.write('lmargin="%s" ' % Utils.gformat(lm))
|
||||
f.write('first="%s" ' % Utils.gformat(fi))
|
||||
f.write('tmargin="%s" ' % Utils.gformat(tm))
|
||||
f.write('bmargin="%s" ' % Utils.gformat(bm))
|
||||
f.write('pad="%s" ' % Utils.gformat(pa))
|
||||
f.write('bgcolor="#%02x%02x%02x" ' % p.get_background_color())
|
||||
f.write('level="%d" ' % p.get_header_level())
|
||||
@@ -963,6 +993,13 @@ class SheetParser(handler.ContentHandler):
|
||||
self.p.set_right_margin(Utils.gfloat(attrs['rmargin']))
|
||||
self.p.set_left_margin(Utils.gfloat(attrs['lmargin']))
|
||||
self.p.set_first_indent(Utils.gfloat(attrs['first']))
|
||||
try:
|
||||
# This is needed to read older style files
|
||||
# lacking tmargin and bmargin
|
||||
self.p.set_top_margin(Utils.gfloat(attrs['tmargin']))
|
||||
self.p.set_bottom_margin(Utils.gfloat(attrs['bmargin']))
|
||||
except KeyError:
|
||||
pass
|
||||
self.p.set_padding(Utils.gfloat(attrs['pad']))
|
||||
self.p.set_alignment(int(attrs['align']))
|
||||
self.p.set_right_border(int(attrs['rborder']))
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2000-2004 Donald N. Allingham
|
||||
# Copyright (C) 2000-2005 Donald N. Allingham
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@@ -25,21 +25,28 @@
|
||||
__author__ = "Donald N. Allingham"
|
||||
__version__ = "$Revision$"
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Standard python modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from gettext import gettext as _
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# GTK/Gnome modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import gtk
|
||||
import gnome
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# gramps modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from gettext import gettext as _
|
||||
import GrampsDisplay
|
||||
import NameDisplay
|
||||
import ListModel
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -51,7 +58,7 @@ class Bookmarks :
|
||||
|
||||
def __init__(self,db,bookmarks,menu,callback):
|
||||
"""
|
||||
Creates a the bookmark editor
|
||||
Creates a the bookmark editor.
|
||||
|
||||
bookmarks - list of People
|
||||
menu - parent menu to attach users
|
||||
@@ -81,6 +88,21 @@ class Bookmarks :
|
||||
self.bookmarks.append(person_handle)
|
||||
self.redraw()
|
||||
|
||||
def remove_people(self,person_handle_list):
|
||||
"""
|
||||
Removes people from the list of bookmarked people.
|
||||
|
||||
This function is for use *outside* the bookmark editor
|
||||
(removal when person is deleted or merged away).
|
||||
"""
|
||||
modified = False
|
||||
for person_handle in person_handle_list:
|
||||
if person_handle in self.bookmarks:
|
||||
self.bookmarks.remove(person_handle)
|
||||
modified = True
|
||||
if modified:
|
||||
self.redraw()
|
||||
|
||||
def add_to_menu(self,person_handle):
|
||||
"""adds a person's name to the drop down menu"""
|
||||
person = self.db.get_person_from_handle(person_handle)
|
||||
@@ -98,12 +120,18 @@ class Bookmarks :
|
||||
self.top.set_default_size(400,350)
|
||||
self.top.set_has_separator(False)
|
||||
self.top.vbox.set_spacing(5)
|
||||
label = gtk.Label('<span size="larger" weight="bold">%s</span>' % _("Edit Bookmarks"))
|
||||
label = gtk.Label('<span size="larger" weight="bold">%s</span>'
|
||||
% _("Edit Bookmarks"))
|
||||
label.set_use_markup(True)
|
||||
self.top.vbox.pack_start(label,0,0,5)
|
||||
box = gtk.HBox()
|
||||
self.top.vbox.pack_start(box,1,1,5)
|
||||
self.namelist = gtk.CList(1)
|
||||
|
||||
name_titles = [(_('Name'),-1,-1),(_('ID'),-1,-1),('',-1,0)]
|
||||
self.namelist = gtk.TreeView()
|
||||
self.namemodel = ListModel.ListModel(self.namelist,name_titles)
|
||||
self.namemodel_cols = len(name_titles)
|
||||
|
||||
slist = gtk.ScrolledWindow()
|
||||
slist.add_with_viewport(self.namelist)
|
||||
slist.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
|
||||
@@ -111,20 +139,13 @@ class Bookmarks :
|
||||
bbox = gtk.VButtonBox()
|
||||
bbox.set_layout(gtk.BUTTONBOX_START)
|
||||
bbox.set_spacing(6)
|
||||
up = gtk.Button()
|
||||
up.set_label(gtk.STOCK_GO_UP)
|
||||
up.set_use_stock(1)
|
||||
down = gtk.Button()
|
||||
down.set_label(gtk.STOCK_GO_DOWN)
|
||||
down.set_use_stock(1)
|
||||
delete = gtk.Button()
|
||||
delete.set_label(gtk.STOCK_REMOVE)
|
||||
delete.set_use_stock(1)
|
||||
up = gtk.Button(stock=gtk.STOCK_GO_UP)
|
||||
down = gtk.Button(stock=gtk.STOCK_GO_DOWN)
|
||||
delete = gtk.Button(stock=gtk.STOCK_REMOVE)
|
||||
up.connect('clicked', self.up_clicked)
|
||||
down.connect('clicked',self.down_clicked)
|
||||
delete.connect('clicked',self.delete_clicked)
|
||||
self.top.add_button(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL)
|
||||
self.top.add_button(gtk.STOCK_OK,gtk.RESPONSE_OK)
|
||||
self.top.add_button(gtk.STOCK_CLOSE,gtk.RESPONSE_CLOSE)
|
||||
self.top.add_button(gtk.STOCK_HELP,gtk.RESPONSE_HELP)
|
||||
bbox.add(up)
|
||||
bbox.add(down)
|
||||
@@ -142,50 +163,53 @@ class Bookmarks :
|
||||
list is not empty, or -1 if it is.
|
||||
"""
|
||||
self.draw_window()
|
||||
index = 0
|
||||
for person_handle in self.bookmarks:
|
||||
person = self.db.get_person_from_handle(person_handle)
|
||||
name = NameDisplay.displayer.display(person)
|
||||
self.namelist.append([name])
|
||||
self.namelist.set_row_data(index,person_handle)
|
||||
index = index + 1
|
||||
if person:
|
||||
name = NameDisplay.displayer.display(person)
|
||||
gramps_id = person.get_gramps_id()
|
||||
self.namemodel.add([name,gramps_id,person_handle])
|
||||
self.namemodel.connect_model()
|
||||
|
||||
self.response = self.top.run()
|
||||
if self.response == gtk.RESPONSE_OK:
|
||||
self.ok_clicked()
|
||||
elif self.response == gtk.RESPONSE_HELP:
|
||||
if self.response == gtk.RESPONSE_HELP:
|
||||
self.help_clicked()
|
||||
self.top.destroy()
|
||||
|
||||
def delete_clicked(self,obj):
|
||||
"""Removes the current selection from the list"""
|
||||
if len(self.namelist.selection) > 0:
|
||||
self.namelist.remove(self.namelist.selection[0])
|
||||
store,the_iter = self.namemodel.get_selected()
|
||||
if not the_iter:
|
||||
return
|
||||
row = self.namemodel.get_selected_row()
|
||||
self.bookmarks.pop(row)
|
||||
self.namemodel.remove(the_iter)
|
||||
|
||||
def up_clicked(self,obj):
|
||||
"""Moves the current selection up one row"""
|
||||
if len(self.namelist.selection) > 0:
|
||||
index = self.namelist.selection[0]
|
||||
self.namelist.swap_rows(index-1,index)
|
||||
row = self.namemodel.get_selected_row()
|
||||
if not row or row == -1:
|
||||
return
|
||||
store,the_iter = self.namemodel.get_selected()
|
||||
data = self.namemodel.get_data(the_iter,range(self.namemodel_cols))
|
||||
self.namemodel.remove(the_iter)
|
||||
self.namemodel.insert(row-1,data,None,1)
|
||||
handle = self.bookmarks.pop(row)
|
||||
self.bookmarks.insert(row-1,handle)
|
||||
|
||||
def down_clicked(self,obj):
|
||||
"""Moves the current selection down one row"""
|
||||
if len(self.namelist.selection) > 0:
|
||||
index = self.namelist.selection[0]
|
||||
if index != self.namelist.rows-1:
|
||||
self.namelist.swap_rows(index+1,index)
|
||||
|
||||
def ok_clicked(self):
|
||||
"""Saves the current bookmarks from the list"""
|
||||
del self.bookmarks[0:]
|
||||
for index in range(0,self.namelist.rows):
|
||||
person_handle = self.namelist.get_row_data(index)
|
||||
if person_handle:
|
||||
self.bookmarks.append(person_handle)
|
||||
self.redraw()
|
||||
row = self.namemodel.get_selected_row()
|
||||
if row + 1 >= self.namemodel.count or row == -1:
|
||||
return
|
||||
store,the_iter = self.namemodel.get_selected()
|
||||
data = self.namemodel.get_data(the_iter,range(self.namemodel_cols))
|
||||
self.namemodel.remove(the_iter)
|
||||
self.namemodel.insert(row+1,data,None,1)
|
||||
handle = self.bookmarks.pop(row)
|
||||
self.bookmarks.insert(row+1,handle)
|
||||
|
||||
def help_clicked(self):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
gnome.help_display('gramps-manual','gramps-nav')
|
||||
GrampsDisplay.help('gramps-nav')
|
||||
self.response = self.top.run()
|
||||
|
||||
@@ -205,12 +205,12 @@ def hebrew_sdn(year, month, day):
|
||||
else:
|
||||
length_of_adarI_andII = 59
|
||||
|
||||
if month == 4:
|
||||
sdn = tishri1_after + day - length_of_adarI_andII - 237
|
||||
elif month == 5:
|
||||
sdn = tishri1_after + day - length_of_adarI_andII - 208
|
||||
else:
|
||||
sdn = tishri1_after + day - length_of_adarI_andII - 178
|
||||
if month == 4:
|
||||
sdn = tishri1_after + day - length_of_adarI_andII - 237
|
||||
elif month == 5:
|
||||
sdn = tishri1_after + day - length_of_adarI_andII - 208
|
||||
else:
|
||||
sdn = tishri1_after + day - length_of_adarI_andII - 178
|
||||
else:
|
||||
# It is Adar II or later - don't need the year length.
|
||||
(metonic_cycle,metonic_year,molad_day,molad_halakim,tishri1_after) = _start_of_year(year+1)
|
||||
|
||||
@@ -34,6 +34,7 @@ __version__ = "$Revision$"
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from gettext import gettext as _
|
||||
import gc
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -42,13 +43,14 @@ from gettext import gettext as _
|
||||
#-------------------------------------------------------------------------
|
||||
import gtk.glade
|
||||
import gtk.gdk
|
||||
import gnome
|
||||
import gobject
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# gramps modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import GrampsDisplay
|
||||
import RelLib
|
||||
import const
|
||||
import Utils
|
||||
@@ -57,7 +59,8 @@ import Date
|
||||
import NameDisplay
|
||||
import DateHandler
|
||||
import GenericFilter
|
||||
from QuestionDialog import ErrorDialog
|
||||
from QuestionDialog import ErrorDialog, WarningDialog
|
||||
from WindowUtils import GladeIf
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -90,14 +93,26 @@ class ChooseParents:
|
||||
self.parent_selected = 0
|
||||
self.renderer = gtk.CellRendererText()
|
||||
|
||||
self.sig_keys = [
|
||||
db.connect('person-add', self.person_added),
|
||||
db.connect('person-update', self.redraw),
|
||||
db.connect('person-delete', self.redraw),
|
||||
db.connect('person-rebuild', self.redraw_all)]
|
||||
|
||||
# set default filters
|
||||
self.all_males_filter = GenericFilter.GenericFilter()
|
||||
self.all_males_filter.add_rule(GenericFilter.IsMale([]))
|
||||
self.likely_males_filter = self.build_likely(True)
|
||||
|
||||
self.all_females_filter = GenericFilter.GenericFilter()
|
||||
self.all_females_filter.add_rule(GenericFilter.IsFemale([]))
|
||||
self.likely_females_filter = self.build_likely(False)
|
||||
|
||||
bev = self.db.get_event_from_handle(person.birth_handle)
|
||||
if bev and bev.date and bev.date.sortval != 0:
|
||||
self.likely_females_filter = self.build_likely(False)
|
||||
self.likely_males_filter = self.build_likely(True)
|
||||
else:
|
||||
self.likely_males_filter = self.all_males_filter
|
||||
self.likely_females_filter = self.all_females_filter
|
||||
|
||||
self.father_filter = self.likely_males_filter
|
||||
self.mother_filter = self.likely_females_filter
|
||||
@@ -110,7 +125,13 @@ class ChooseParents:
|
||||
self.father = None
|
||||
|
||||
self.glade = gtk.glade.XML(const.gladeFile,"familyDialog","gramps")
|
||||
self.gladeif = GladeIf(self.glade)
|
||||
self.window = self.glade.get_widget("familyDialog")
|
||||
self.flabel = self.glade.get_widget("flabel")
|
||||
self.mlabel = self.glade.get_widget("mlabel")
|
||||
self.window.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH))
|
||||
self.mlabel.set_label("<i>%s</i>" % _("Loading..."))
|
||||
self.flabel.set_label("<i>%s</i>" % _("Loading..."))
|
||||
|
||||
name = NameDisplay.displayer.display(self.person)
|
||||
self.title_text = _("Choose the Parents of %s") % name
|
||||
@@ -123,14 +144,11 @@ class ChooseParents:
|
||||
self.title = self.glade.get_widget("chooseTitle")
|
||||
self.father_list = self.glade.get_widget("father_list")
|
||||
self.mother_list = self.glade.get_widget("mother_list")
|
||||
self.flabel = self.glade.get_widget("flabel")
|
||||
self.mlabel = self.glade.get_widget("mlabel")
|
||||
self.showallf = self.glade.get_widget('showallf')
|
||||
self.showallm = self.glade.get_widget('showallm')
|
||||
self.add_itself_to_menu()
|
||||
|
||||
self.build_father_list()
|
||||
self.build_mother_list()
|
||||
|
||||
gobject.idle_add(self.draw_list)
|
||||
|
||||
if gtk.gdk.screen_height() > 700:
|
||||
self.father_list.set_size_request(-1,150)
|
||||
@@ -151,26 +169,35 @@ class ChooseParents:
|
||||
self.type = RelLib.Family.MARRIED
|
||||
|
||||
self.prel.set_active(self.type)
|
||||
self.redrawm()
|
||||
|
||||
self.glade.signal_autoconnect({
|
||||
"on_add_parent_clicked" : self.add_parent_clicked,
|
||||
"on_prel_changed" : self.parent_relation_changed,
|
||||
"destroy_passed_object" : self.close,
|
||||
"on_showallf_toggled" : self.showallf_toggled,
|
||||
"on_showallm_toggled" : self.showallm_toggled,
|
||||
"on_save_parents_clicked" : self.save_parents_clicked,
|
||||
"on_help_familyDialog_clicked" : self.on_help_clicked,
|
||||
"on_familyDialog_delete_event" : self.on_delete_event,
|
||||
})
|
||||
|
||||
self.gladeif.connect('familyDialog','delete_event', self.on_delete_event)
|
||||
self.gladeif.connect('button44','clicked', self.close)
|
||||
self.gladeif.connect('button42','clicked', self.save_parents_clicked)
|
||||
self.gladeif.connect('button167','clicked', self.on_help_clicked)
|
||||
self.gladeif.connect('button123','clicked', self.add_parent_clicked)
|
||||
self.gladeif.connect('showallf','toggled', self.showallf_toggled)
|
||||
self.gladeif.connect('prel_combo','changed', self.parent_relation_changed)
|
||||
|
||||
self.keys = const.child_rel_list
|
||||
self.build_list(self.mcombo,mrel)
|
||||
self.build_list(self.fcombo,frel)
|
||||
|
||||
self.window.show()
|
||||
|
||||
def draw_list(self):
|
||||
self.build_father_list()
|
||||
self.build_mother_list()
|
||||
self.window.window.set_cursor(None)
|
||||
|
||||
def build_likely(self,is_male):
|
||||
filt = GenericFilter.GenericFilter()
|
||||
if is_male:
|
||||
filt.add_rule(LikelyFather([self.person.handle]))
|
||||
else:
|
||||
filt.add_rule(LikelyMother([self.person.handle]))
|
||||
return filt
|
||||
|
||||
def build_likely2(self,is_male):
|
||||
birth_handle = self.person.get_birth_handle()
|
||||
|
||||
filt = GenericFilter.GenericFilter()
|
||||
@@ -222,35 +249,50 @@ class ChooseParents:
|
||||
self.redrawm()
|
||||
|
||||
def add_columns(self,tree):
|
||||
|
||||
column = gtk.TreeViewColumn(_('Name'), self.renderer,text=0)
|
||||
column.set_resizable(True)
|
||||
column.set_clickable(True)
|
||||
column.set_sort_column_id(0)
|
||||
column.set_min_width(225)
|
||||
|
||||
column.set_fixed_width(255)
|
||||
column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
|
||||
|
||||
tree.append_column(column)
|
||||
column = gtk.TreeViewColumn(_('ID'), self.renderer,text=1)
|
||||
column.set_resizable(True)
|
||||
column.set_clickable(True)
|
||||
column.set_sort_column_id(1)
|
||||
column.set_min_width(75)
|
||||
|
||||
column.set_fixed_width(75)
|
||||
column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
|
||||
#column.set_min_width(75)
|
||||
|
||||
tree.append_column(column)
|
||||
column = gtk.TreeViewColumn(_('Birth date'), self.renderer,text=3)
|
||||
#column.set_resizable(True)
|
||||
column.set_clickable(True)
|
||||
column.set_fixed_width(150)
|
||||
column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
|
||||
|
||||
tree.append_column(column)
|
||||
|
||||
def on_delete_event(self,obj,b):
|
||||
self.gladeif.close()
|
||||
self.remove_itself_from_menu()
|
||||
self.close_child_windows()
|
||||
gc.collect()
|
||||
|
||||
def close(self,obj):
|
||||
self.gladeif.close()
|
||||
self.remove_itself_from_menu()
|
||||
self.close_child_windows()
|
||||
self.window.destroy()
|
||||
gc.collect()
|
||||
|
||||
def close_child_windows(self):
|
||||
for child_window in self.child_windows.values():
|
||||
child_window.close(None)
|
||||
child_window.close()
|
||||
self.child_windows = {}
|
||||
|
||||
def add_itself_to_menu(self):
|
||||
@@ -276,7 +318,49 @@ class ChooseParents:
|
||||
|
||||
def on_help_clicked(self,obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
gnome.help_display('gramps-manual','gramps-edit-quick')
|
||||
GrampsDisplay.help('gramps-edit-quick')
|
||||
|
||||
def person_added(self,handle_list):
|
||||
update_father = False
|
||||
update_mother = False
|
||||
|
||||
for handle in handle_list:
|
||||
person = self.db.get_person_from_handle(handle)
|
||||
if person.get_gender() == RelLib.Person.MALE:
|
||||
update_father = True
|
||||
elif person.get_gender() == RelLib.Person.FEMALE:
|
||||
update_mother = True
|
||||
|
||||
if update_father:
|
||||
self.person_added_base(handle_list,self.father_model,
|
||||
self.father_filter)
|
||||
if update_mother:
|
||||
self.person_added_base(handle_list,self.mother_model,
|
||||
self.mother_filter)
|
||||
|
||||
def person_added_base(self,handle_list,model,data_filter):
|
||||
for node in handle_list:
|
||||
person = self.db.get_person_from_handle(node)
|
||||
top = person.get_primary_name().get_group_name()
|
||||
model.rebuild_data(data_filter)
|
||||
if not model.is_visable(node):
|
||||
continue
|
||||
if (not model.sname_sub.has_key(top) or
|
||||
len(model.sname_sub[top]) == 1):
|
||||
path = model.on_get_path(top)
|
||||
pnode = model.get_iter(path)
|
||||
model.row_inserted(path,pnode)
|
||||
path = model.on_get_path(node)
|
||||
pnode = model.get_iter(path)
|
||||
model.row_inserted(path,pnode)
|
||||
|
||||
def redraw(self,handle_list):
|
||||
self.redrawf()
|
||||
self.redrawm()
|
||||
|
||||
def redraw_all(self):
|
||||
self.redrawf()
|
||||
self.redrawm()
|
||||
|
||||
def redrawf(self):
|
||||
"""Redraws the potential father list"""
|
||||
@@ -291,8 +375,8 @@ class ChooseParents:
|
||||
def redrawm(self):
|
||||
"""Redraws the potential mother list"""
|
||||
self.mother_model = PeopleModel.PeopleModel(self.db,self.mother_filter)
|
||||
self.mother_list.set_model(self.mother_model)
|
||||
|
||||
self.mother_list.set_model(self.mother_model)
|
||||
if self.type == RelLib.Family.CIVIL_UNION:
|
||||
self.mlabel.set_label("<b>%s</b>" % _("Pa_rent"))
|
||||
else:
|
||||
@@ -309,7 +393,7 @@ class ChooseParents:
|
||||
|
||||
def showallf_toggled(self,obj):
|
||||
if self.father_filter == self.likely_males_filter:
|
||||
self.father_filter = self.all_females_filter
|
||||
self.father_filter = self.all_males_filter
|
||||
else:
|
||||
self.father_filter = self.likely_males_filter
|
||||
self.redrawf()
|
||||
@@ -321,7 +405,7 @@ class ChooseParents:
|
||||
self.mother_filter = self.likely_females_filter
|
||||
self.redrawm()
|
||||
|
||||
def find_family(self,father_handle,mother_handle,trans):
|
||||
def find_family(self,father_handle,mother_handle):
|
||||
"""
|
||||
Finds the family associated with the father and mother.
|
||||
If one does not exist, it is created.
|
||||
@@ -334,30 +418,25 @@ class ChooseParents:
|
||||
if (family.get_father_handle() == father_handle and
|
||||
family.get_mother_handle() == mother_handle):
|
||||
family.add_child_handle(self.person.get_handle())
|
||||
self.db.commit_family(family,trans)
|
||||
return family
|
||||
elif (family.get_father_handle() == mother_handle and
|
||||
family.get_mother_handle() == father_handle):
|
||||
family.add_child_handle(self.person.get_handle())
|
||||
self.db.commit_family(family,trans)
|
||||
return family
|
||||
|
||||
family = RelLib.Family()
|
||||
family.set_father_handle(father_handle)
|
||||
family.set_mother_handle(mother_handle)
|
||||
family.add_child_handle(self.person.get_handle())
|
||||
self.db.add_family(family,trans)
|
||||
family.set_handle(self.db.create_id())
|
||||
family.set_gramps_id(self.db.find_next_family_gramps_id())
|
||||
|
||||
if father_handle:
|
||||
self.father = self.db.get_person_from_handle(father_handle)
|
||||
self.father.add_family_handle(family.get_handle())
|
||||
self.db.commit_person(self.father,trans)
|
||||
if mother_handle:
|
||||
self.mother = self.db.get_person_from_handle(mother_handle)
|
||||
self.mother.add_family_handle(family.get_handle())
|
||||
self.db.commit_person(self.mother,trans)
|
||||
|
||||
self.db.commit_family(family,trans)
|
||||
return family
|
||||
|
||||
def father_select_function(self,store,path,iter,id_list):
|
||||
@@ -435,6 +514,10 @@ class ChooseParents:
|
||||
Called with the OK button is pressed. Saves the selected people
|
||||
as parents of the main person.
|
||||
"""
|
||||
|
||||
for key in self.sig_keys:
|
||||
self.db.disconnect(key)
|
||||
|
||||
try:
|
||||
mother_rel = self.mcombo.get_active()
|
||||
except KeyError:
|
||||
@@ -446,25 +529,23 @@ class ChooseParents:
|
||||
father_rel = RelLib.Person.CHILD_REL_BIRTH
|
||||
|
||||
trans = self.db.transaction_begin()
|
||||
father_handle = None
|
||||
mother_handle = None
|
||||
if self.father or self.mother:
|
||||
if self.mother and not self.father:
|
||||
if self.mother.get_gender() == RelLib.Person.MALE:
|
||||
self.father = self.mother
|
||||
father_handle = self.father.get_handle()
|
||||
self.mother = None
|
||||
mother_handle = None
|
||||
else:
|
||||
mother_handle = self.mother.get_handle()
|
||||
father_handle = None
|
||||
elif self.father and not self.mother:
|
||||
if self.father.get_gender() == RelLib.Person.FEMALE:
|
||||
self.mother = self.father
|
||||
self.father = None
|
||||
mother_handle = self.mother.get_handle()
|
||||
father_handle = None
|
||||
else:
|
||||
father_handle = self.father.get_handle()
|
||||
mother_handle = None
|
||||
elif self.mother.get_gender() != self.father.get_gender():
|
||||
if self.type == "Partners":
|
||||
self.type = "Unknown"
|
||||
@@ -476,20 +557,26 @@ class ChooseParents:
|
||||
self.type = "Partners"
|
||||
father_handle = self.father.get_handle()
|
||||
mother_handle = self.mother.get_handle()
|
||||
self.family = self.find_family(father_handle,mother_handle,trans)
|
||||
else:
|
||||
self.family = None
|
||||
|
||||
if self.family:
|
||||
if self.person.get_handle() in (father_handle,mother_handle):
|
||||
ErrorDialog(_("Error selecting a child"),
|
||||
_("A person cannot be linked as his/her own parent"),
|
||||
self.window)
|
||||
return
|
||||
if self.person.get_handle() in (father_handle,mother_handle):
|
||||
ErrorDialog(_("Error selecting a child"),
|
||||
_("A person cannot be linked as his/her own parent"),
|
||||
self.window)
|
||||
return
|
||||
|
||||
if father_handle or mother_handle:
|
||||
self.family = self.find_family(father_handle,mother_handle)
|
||||
self.family.add_child_handle(self.person.get_handle())
|
||||
self.family.set_relationship(self.type)
|
||||
self.change_family_type(self.family,mother_rel,father_rel)
|
||||
self.change_family_type(self.family,mother_rel,father_rel,trans)
|
||||
self.db.commit_person(self.person,trans)
|
||||
if self.father:
|
||||
self.db.commit_person(self.father,trans)
|
||||
if self.mother:
|
||||
self.db.commit_person(self.mother,trans)
|
||||
self.db.commit_family(self.family,trans)
|
||||
else:
|
||||
self.family = None
|
||||
self.db.transaction_commit(trans,_("Choose Parents"))
|
||||
self.close(None)
|
||||
|
||||
@@ -505,26 +592,42 @@ class ChooseParents:
|
||||
if self.type == RelLib.Family.CIVIL_UNION:
|
||||
self.parent_relation_changed(self.prel)
|
||||
elif person.get_gender() == RelLib.Person.MALE:
|
||||
self.redrawf()
|
||||
path = self.father_model.on_get_path(handle)
|
||||
top_path = self.father_model.on_get_path(name)
|
||||
self.father_list.expand_row(top_path,0)
|
||||
self.father_selection.select_path(path)
|
||||
self.father_list.scroll_to_cell(path,None,1,0.5,0)
|
||||
try:
|
||||
path = self.father_model.on_get_path(handle)
|
||||
top_path = self.father_model.on_get_path(name)
|
||||
self.father_list.expand_row(top_path,0)
|
||||
self.father_selection.select_path(path)
|
||||
self.father_list.scroll_to_cell(path,None,1,0.5,0)
|
||||
except KeyError:
|
||||
self.father_filter = self.all_males_filter
|
||||
self.redrawf()
|
||||
path = self.father_model.on_get_path(handle)
|
||||
top_path = self.father_model.on_get_path(name)
|
||||
self.father_list.expand_row(top_path,0)
|
||||
self.father_selection.select_path(path)
|
||||
self.father_list.scroll_to_cell(path,None,1,0.5,0)
|
||||
else:
|
||||
self.redrawm()
|
||||
path = self.mother_model.on_get_path(handle)
|
||||
top_path = self.mother_model.on_get_path(name)
|
||||
self.mother_list.expand_row(top_path,0)
|
||||
self.mother_selection.select_path(path)
|
||||
self.mother_list.scroll_to_cell(path,None,1,0.5,0)
|
||||
try:
|
||||
path = self.mother_model.on_get_path(handle)
|
||||
top_path = self.mother_model.on_get_path(name)
|
||||
self.mother_list.expand_row(top_path,0)
|
||||
self.mother_selection.select_path(path)
|
||||
self.mother_list.scroll_to_cell(path,None,1,0.5,0)
|
||||
except:
|
||||
self.mother_filter = self.all_females_filter
|
||||
self.redrawm()
|
||||
path = self.mother_model.on_get_path(handle)
|
||||
top_path = self.mother_model.on_get_path(name)
|
||||
self.mother_list.expand_row(top_path,0)
|
||||
self.mother_selection.select_path(path)
|
||||
self.mother_list.scroll_to_cell(path,None,1,0.5,0)
|
||||
|
||||
def add_parent_clicked(self,obj):
|
||||
"""Called with the Add New Person button is pressed. Calls the QuickAdd
|
||||
class to create a new person."""
|
||||
|
||||
person = RelLib.Person()
|
||||
person.set_gender(RelLib.Person.MALE)
|
||||
person.set_gender(RelLib.Person.UNKNOWN)
|
||||
|
||||
try:
|
||||
import EditPerson
|
||||
@@ -533,7 +636,7 @@ class ChooseParents:
|
||||
import DisplayTrace
|
||||
DisplayTrace.DisplayTrace()
|
||||
|
||||
def change_family_type(self,family,mother_rel,father_rel):
|
||||
def change_family_type(self,family,mother_rel,father_rel,trans):
|
||||
"""
|
||||
Changes the family type of the specified family. If the family
|
||||
is None, the the relationship type shoud be deleted.
|
||||
@@ -554,15 +657,6 @@ class ChooseParents:
|
||||
self.person.add_parent_family_handle(family_handle,
|
||||
mother_rel,father_rel)
|
||||
|
||||
trans = self.db.transaction_begin()
|
||||
self.db.commit_person(self.person,trans)
|
||||
self.db.commit_family(family,trans)
|
||||
if self.father:
|
||||
self.db.commit_person(self.father,trans)
|
||||
if self.mother:
|
||||
self.db.commit_person(self.mother,trans)
|
||||
self.db.transaction_commit(trans,_("Choose Parents"))
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# ModifyParents
|
||||
@@ -587,6 +681,7 @@ class ModifyParents:
|
||||
self.mother = self.db.get_person_from_handle(mid)
|
||||
|
||||
self.glade = gtk.glade.XML(const.gladeFile,"modparents","gramps")
|
||||
self.gladeif = GladeIf(self.glade)
|
||||
self.window = self.glade.get_widget("modparents")
|
||||
self.title = self.glade.get_widget("title")
|
||||
|
||||
@@ -608,9 +703,7 @@ class ModifyParents:
|
||||
self.orig_mrel = mr
|
||||
self.orig_frel = fr
|
||||
|
||||
self.glade.signal_autoconnect({
|
||||
"on_parents_help_clicked" : self.on_help_clicked,
|
||||
})
|
||||
self.gladeif.connect('button165','clicked', self.on_help_clicked)
|
||||
|
||||
self.title.set_use_markup(True)
|
||||
|
||||
@@ -658,7 +751,9 @@ class ModifyParents:
|
||||
self.val = self.window.run()
|
||||
if self.val == gtk.RESPONSE_OK:
|
||||
self.save_parents_clicked()
|
||||
self.gladeif.close()
|
||||
self.window.destroy()
|
||||
gc.collect()
|
||||
|
||||
def build_list(self,opt_menu,sel):
|
||||
store = gtk.ListStore(str)
|
||||
@@ -669,7 +764,7 @@ class ModifyParents:
|
||||
|
||||
def on_help_clicked(self,obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
gnome.help_display('gramps-manual','gramps-spec-par')
|
||||
GrampsDisplay.help('gramps-spec-par')
|
||||
self.val = self.window.run()
|
||||
|
||||
def save_parents_clicked(self):
|
||||
@@ -705,3 +800,53 @@ class ModifyParents:
|
||||
trans = self.db.transaction_begin()
|
||||
self.db.commit_person(self.person,trans)
|
||||
self.db.transaction_commit(trans,_("Modify Parents"))
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Likely Filters
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class LikelyFilter(GenericFilter.Rule):
|
||||
|
||||
labels = [ 'Person handle' ]
|
||||
category = _('General filters')
|
||||
|
||||
def __init__(self,data_list,gender):
|
||||
GenericFilter.Rule.__init__(self,data_list)
|
||||
self.gender = gender
|
||||
|
||||
def prepare(self,db):
|
||||
person = db.get_person_from_handle(self.list[0])
|
||||
birth = db.get_event_from_handle(person.birth_handle)
|
||||
dateobj = Date.Date(birth.date)
|
||||
year = dateobj.get_year()
|
||||
dateobj.set_year(year-10)
|
||||
self.lower = dateobj.sortval
|
||||
dateobj.set_year(year-70)
|
||||
self.upper = dateobj.sortval
|
||||
|
||||
def apply(self,db,person):
|
||||
if person.gender != self.gender:
|
||||
return False
|
||||
if not person.birth_handle:
|
||||
return True
|
||||
event = db.get_event_from_handle(person.birth_handle)
|
||||
return (event.date == None or event.date.sortval == 0 or
|
||||
self.lower > event.date.sortval > self.upper)
|
||||
|
||||
class LikelyFather(LikelyFilter):
|
||||
|
||||
name = _('Likely Father')
|
||||
description = _('Matches likely fathers')
|
||||
|
||||
def __init__(self,data_list):
|
||||
LikelyFilter.__init__(self,data_list,RelLib.Person.MALE)
|
||||
|
||||
class LikelyMother(LikelyFilter):
|
||||
|
||||
name = _('Likely Mother')
|
||||
description = _('Matches likely mothers')
|
||||
|
||||
def __init__(self,data_list):
|
||||
LikelyFilter.__init__(self,data_list,RelLib.Person.FEMALE)
|
||||
|
||||
@@ -25,6 +25,9 @@
|
||||
#-------------------------------------------------------------------------
|
||||
import gobject
|
||||
import gtk.glade
|
||||
|
||||
import gc
|
||||
|
||||
import const
|
||||
from gettext import gettext as _
|
||||
|
||||
@@ -72,9 +75,11 @@ class ColumnOrder:
|
||||
self.model.get_value(node,2)))
|
||||
self.callback(newlist)
|
||||
self.top.destroy()
|
||||
gc.collect()
|
||||
|
||||
def cancel_clicked(self,obj):
|
||||
self.top.destroy()
|
||||
gc.collect()
|
||||
|
||||
def toggled(self, cell, path, model):
|
||||
node = model.get_iter((int(path),))
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2000-2004 Donald N. Allingham
|
||||
# Copyright (C) 2000-2005 Donald N. Allingham
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@@ -25,6 +25,8 @@
|
||||
__author__ = "Donald N. Allingham"
|
||||
__version__ = "$Revision$"
|
||||
|
||||
from gettext import gettext as _
|
||||
from Errors import DateError
|
||||
from CalSdn import *
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@@ -120,7 +122,7 @@ class Date:
|
||||
self.sortval = source.sortval
|
||||
else:
|
||||
self.calendar = CAL_GREGORIAN
|
||||
self.modifier = MOD_TEXTONLY
|
||||
self.modifier = MOD_NONE
|
||||
self.quality = QUAL_NONE
|
||||
self.dateval = EMPTY
|
||||
self.text = u""
|
||||
@@ -143,9 +145,9 @@ class Date:
|
||||
Comparison function. Allows the usage of equality tests.
|
||||
This allows you do run statements like 'date1 <= date2'
|
||||
"""
|
||||
if isinstance(other,Date):
|
||||
if isinstance(other,Date):
|
||||
return cmp(self.sortval,other.sortval)
|
||||
else:
|
||||
else:
|
||||
return -1
|
||||
|
||||
def is_equal(self,other):
|
||||
@@ -154,13 +156,14 @@ class Date:
|
||||
instance IN ALL REGARDS. Needed, because the __cmp__ only looks
|
||||
at the sorting value, and ignores the modifiers/comments.
|
||||
"""
|
||||
|
||||
return (self.calendar == other.calendar and
|
||||
self.modifier == other.modifier and
|
||||
self.quality == other.quality and
|
||||
self.dateval == other.dateval and
|
||||
self.text == other.text and
|
||||
self.sortval == other.sortval)
|
||||
if self.modifier == other.modifier and self.modifier == MOD_TEXTONLY:
|
||||
value = self.text == other.text
|
||||
else:
|
||||
value = (self.calendar == other.calendar and
|
||||
self.modifier == other.modifier and
|
||||
self.quality == other.quality and
|
||||
self.dateval == other.dateval)
|
||||
return value
|
||||
|
||||
def __str__(self):
|
||||
"""
|
||||
@@ -233,6 +236,8 @@ class Date:
|
||||
"""
|
||||
Sets the modifier for the date.
|
||||
"""
|
||||
if val not in (MOD_NONE,MOD_BEFORE,MOD_AFTER,MOD_ABOUT,MOD_RANGE,MOD_SPAN,MOD_TEXTONLY):
|
||||
raise DateError("Invalid modifier")
|
||||
self.modifier = val
|
||||
|
||||
def get_quality(self):
|
||||
@@ -250,6 +255,8 @@ class Date:
|
||||
"""
|
||||
Sets the quality selected for the date.
|
||||
"""
|
||||
if val not in (QUAL_NONE,QUAL_ESTIMATED,QUAL_CALCULATED):
|
||||
raise DateError("Invalid quality")
|
||||
self.quality = val
|
||||
|
||||
def get_calendar(self):
|
||||
@@ -270,6 +277,8 @@ class Date:
|
||||
"""
|
||||
Sets the calendar selected for the date.
|
||||
"""
|
||||
if val not in (CAL_GREGORIAN,CAL_JULIAN,CAL_HEBREW,CAL_FRENCH,CAL_PERSIAN,CAL_ISLAMIC):
|
||||
raise DateError("Invalid calendar")
|
||||
self.calendar = val
|
||||
|
||||
def get_start_date(self):
|
||||
@@ -332,6 +341,7 @@ class Date:
|
||||
"""
|
||||
"""
|
||||
self.dateval = self.dateval[0:2] + (year,) + self.dateval[3:]
|
||||
self.calc_sort_value()
|
||||
|
||||
def get_year_valid(self):
|
||||
return self._get_low_item_valid(_POS_YR)
|
||||
@@ -427,6 +437,18 @@ class Date:
|
||||
|
||||
The sort value is recalculated.
|
||||
"""
|
||||
|
||||
if modifier in (MOD_NONE,MOD_BEFORE,MOD_AFTER,MOD_ABOUT) and len(value) < 4:
|
||||
raise DateError("Invalid value. Should be: (DD,MM,YY,slash)")
|
||||
if modifier in (MOD_RANGE,MOD_SPAN) and len(value) < 8:
|
||||
raise DateError("Invalid value. Should be: (DD,MM,YY,slash1,DD,MM,YY,slash2)")
|
||||
if modifier not in (MOD_NONE,MOD_BEFORE,MOD_AFTER,MOD_ABOUT,MOD_RANGE,MOD_SPAN,MOD_TEXTONLY):
|
||||
raise DateError("Invalid modifier")
|
||||
if quality not in (QUAL_NONE,QUAL_ESTIMATED,QUAL_CALCULATED):
|
||||
raise DateError("Invalid quality")
|
||||
if calendar not in (CAL_GREGORIAN,CAL_JULIAN,CAL_HEBREW,CAL_FRENCH,CAL_PERSIAN,CAL_ISLAMIC):
|
||||
raise DateError("Invalid calendar")
|
||||
|
||||
self.quality = quality
|
||||
self.modifier = modifier
|
||||
self.calendar = calendar
|
||||
@@ -434,10 +456,22 @@ class Date:
|
||||
year = max(value[_POS_YR],1)
|
||||
month = max(value[_POS_MON],1)
|
||||
day = max(value[_POS_DAY],1)
|
||||
self.sortval = _calendar_convert[calendar](year,month,day)
|
||||
if year == 0 and month == 0 and day == 0:
|
||||
self.sortval = 0
|
||||
else:
|
||||
self.sortval = _calendar_convert[calendar](year,month,day)
|
||||
if text:
|
||||
self.text = text
|
||||
|
||||
def calc_sort_value(self):
|
||||
year = max(self.dateval[_POS_YR],1)
|
||||
month = max(self.dateval[_POS_MON],1)
|
||||
day = max(self.dateval[_POS_DAY],1)
|
||||
if year == 0 and month == 0 and day == 0:
|
||||
self.sortval = 0
|
||||
else:
|
||||
self.sortval = _calendar_convert[self.calendar](year,month,day)
|
||||
|
||||
def convert_calendar(self,calendar):
|
||||
"""
|
||||
Converts the date from the current calendar to the specified
|
||||
@@ -477,7 +511,8 @@ class Date:
|
||||
"""
|
||||
Returns True if the date contains no information (empty text).
|
||||
"""
|
||||
return self.modifier == MOD_TEXTONLY and not self.text
|
||||
return (self.modifier == MOD_TEXTONLY and not self.text) or \
|
||||
(self.get_start_date()==EMPTY and self.get_stop_date()==EMPTY)
|
||||
|
||||
def is_compound(self):
|
||||
"""
|
||||
|
||||
@@ -30,6 +30,7 @@ __version__ = "$Revision$"
|
||||
|
||||
import Date
|
||||
import locale
|
||||
from gettext import gettext as _
|
||||
|
||||
|
||||
class DateDisplay:
|
||||
@@ -82,11 +83,20 @@ class DateDisplay:
|
||||
)
|
||||
|
||||
_french = (
|
||||
'', u'Vend\xc3\xa9miaire', 'Brumaire',
|
||||
'Frimaire', u'Niv\xc3\xb4se', u'Pluvi\xc3\xb4se',
|
||||
u'Vent\xc3\xb4se', 'Germinal', u'Flor\xc3\xa9al',
|
||||
'Prairial', 'Messidor', 'Thermidor',
|
||||
'Fructidor', 'Extra'
|
||||
'',
|
||||
unicode("Vendémiaire",'latin-1'),
|
||||
'Brumaire',
|
||||
'Frimaire',
|
||||
unicode("Nivôse",'latin-1'),
|
||||
unicode("Pluviôse",'latin-1'),
|
||||
unicode("Ventôse",'latin-1'),
|
||||
'Germinal',
|
||||
unicode("Floréal",'latin-1'),
|
||||
'Prairial',
|
||||
'Messidor',
|
||||
'Thermidor',
|
||||
'Fructidor',
|
||||
'Extra'
|
||||
)
|
||||
|
||||
_persian = (
|
||||
@@ -111,6 +121,8 @@ class DateDisplay:
|
||||
_mod_str = ("","before ","after ","about ","","","")
|
||||
|
||||
_qual_str = ("","estimated ","calculated ")
|
||||
|
||||
_bce_str = "%s B.C.E."
|
||||
|
||||
def __init__(self,format=None):
|
||||
self.display_cal = [
|
||||
@@ -172,15 +184,15 @@ class DateDisplay:
|
||||
return "%s%s%s%s" % (qual_str,self._mod_str[mod],text,self.calendar[cal])
|
||||
|
||||
def _slash_year(self,val,slash):
|
||||
bc = ""
|
||||
if val < 0:
|
||||
val = - val
|
||||
bc = " B.C.E"
|
||||
|
||||
if slash:
|
||||
return "%d/%d%s" % (val,(val%10)+1,bc)
|
||||
year = "%d/%d" % (val,(val%10)+1)
|
||||
else:
|
||||
return "%d%s" % (val,bc)
|
||||
year = "%d" % (val)
|
||||
|
||||
return year
|
||||
|
||||
def display_iso(self,date_val):
|
||||
# YYYY-MM-DD (ISO)
|
||||
@@ -192,7 +204,10 @@ class DateDisplay:
|
||||
value = "%s-%02d" % (year,date_val[1])
|
||||
else:
|
||||
value = "%s-%02d-%02d" % (year,date_val[1],date_val[0])
|
||||
return value
|
||||
if date_val[2] < 0:
|
||||
return self._bce_str % value
|
||||
else:
|
||||
return value
|
||||
|
||||
def text_display(self,date):
|
||||
"""
|
||||
@@ -205,14 +220,15 @@ class DateDisplay:
|
||||
def _display_gregorian(self,date_val):
|
||||
year = self._slash_year(date_val[2],date_val[3])
|
||||
if self.format == 0:
|
||||
value = self.display_iso(date_val)
|
||||
return self.display_iso(date_val)
|
||||
elif self.format == 1:
|
||||
if date_val[0] == 0 and date_val[1] == 0:
|
||||
value = str(date_val[2])
|
||||
else:
|
||||
value = self._tformat.replace('%m',str(date_val[1]))
|
||||
value = value.replace('%d',str(date_val[0]))
|
||||
value = value.replace('%Y',str(date_val[2]))
|
||||
value = value.replace('%Y',str(abs(date_val[2])))
|
||||
value = value.replace('-','/')
|
||||
elif self.format == 2:
|
||||
# Month Day, Year
|
||||
if date_val[0] == 0:
|
||||
@@ -249,27 +265,48 @@ class DateDisplay:
|
||||
value = "%s %s" % (self._MONS[date_val[1]],year)
|
||||
else:
|
||||
value = "%d %s %s" % (date_val[0],self._MONS[date_val[1]],year)
|
||||
return value
|
||||
if date_val[2] < 0:
|
||||
return self._bce_str % value
|
||||
else:
|
||||
return value
|
||||
|
||||
def _display_julian(self,date_val):
|
||||
# Julian date display is the same as Gregorian
|
||||
return self._display_gregorian(date_val)
|
||||
|
||||
def _display_calendar(self,date_val,month_list):
|
||||
year = date_val[2]
|
||||
year = abs(date_val[2])
|
||||
if self.format == 0 or self.format == 1:
|
||||
return self.display_iso(date_val)
|
||||
else:
|
||||
if date_val[0] == 0:
|
||||
if date_val[1] == 0:
|
||||
return year
|
||||
value = year
|
||||
else:
|
||||
return "%s %d" % (month_list[date_val[1]],year)
|
||||
value = u"%s %d" % (month_list[date_val[1]],year)
|
||||
else:
|
||||
return "%s %d, %s" % (month_list[date_val[1]],date_val[0],year)
|
||||
value = u"%s %d, %s" % (month_list[date_val[1]],date_val[0],year)
|
||||
if date_val[2] < 0:
|
||||
return self._bce_str % value
|
||||
else:
|
||||
return value
|
||||
|
||||
def _display_french(self,date_val):
|
||||
return self._display_calendar(date_val,self._french)
|
||||
year = abs(date_val[2])
|
||||
if self.format == 0 or self.format == 1:
|
||||
return self.display_iso(date_val)
|
||||
else:
|
||||
if date_val[0] == 0:
|
||||
if date_val[1] == 0:
|
||||
value = year
|
||||
else:
|
||||
value = u"%s %d" % (self._french[date_val[1]],year)
|
||||
else:
|
||||
value = u"%d %s %s" % (date_val[0],self._french[date_val[1]],year)
|
||||
if date_val[2] < 0:
|
||||
return self._bce_str % value
|
||||
else:
|
||||
return value
|
||||
|
||||
def _display_hebrew(self,date_val):
|
||||
return self._display_calendar(date_val,self._hebrew)
|
||||
|
||||
@@ -42,6 +42,7 @@ __version__ = "$Revision$"
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from gettext import gettext as _
|
||||
import gc
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -51,8 +52,6 @@ from gettext import gettext as _
|
||||
import gtk
|
||||
import gtk.gdk
|
||||
import gtk.glade
|
||||
import gobject
|
||||
import gnome
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -63,7 +62,7 @@ import Date
|
||||
import DateHandler
|
||||
import const
|
||||
import Utils
|
||||
import QuestionDialog
|
||||
import GrampsDisplay
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -80,8 +79,8 @@ MOD_TEXT = (
|
||||
(Date.MOD_TEXTONLY , _('Text only')) )
|
||||
|
||||
QUAL_TEXT = (
|
||||
(Date.QUAL_NONE, _('Regular')),
|
||||
(Date.QUAL_ESTIMATED, _('Estimated')),
|
||||
(Date.QUAL_NONE, _('Regular')),
|
||||
(Date.QUAL_ESTIMATED, _('Estimated')),
|
||||
(Date.QUAL_CALCULATED, _('Calculated')) )
|
||||
|
||||
CAL_TO_MONTHS_NAMES = {
|
||||
@@ -119,6 +118,7 @@ class DateEdit:
|
||||
self.parent_window = parent_window
|
||||
|
||||
self.pixmap_obj = button_obj.get_child()
|
||||
|
||||
self.text_obj.connect('focus-out-event',self.parse_and_check)
|
||||
self.button_obj.connect('clicked',self.invoke_date_editor)
|
||||
|
||||
@@ -130,11 +130,11 @@ class DateEdit:
|
||||
Check current date object and display LED indicating the validity.
|
||||
"""
|
||||
if self.date_obj.get_modifier() == Date.MOD_TEXTONLY:
|
||||
self.pixmap_obj.set_from_pixbuf(self.bad)
|
||||
self.pixmap_obj.set_from_pixbuf(self.pixmap_obj.render_icon(gtk.STOCK_DIALOG_ERROR,gtk.ICON_SIZE_MENU))
|
||||
elif self.date_obj.is_regular():
|
||||
self.pixmap_obj.set_from_pixbuf(self.good)
|
||||
self.pixmap_obj.set_from_pixbuf(self.pixmap_obj.render_icon(gtk.STOCK_YES,gtk.ICON_SIZE_MENU))
|
||||
else:
|
||||
self.pixmap_obj.set_from_pixbuf(self.caution)
|
||||
self.pixmap_obj.set_from_pixbuf(self.pixmap_obj.render_icon(gtk.STOCK_DIALOG_WARNING,gtk.ICON_SIZE_MENU))
|
||||
|
||||
def parse_and_check(self,obj,val):
|
||||
"""
|
||||
@@ -146,6 +146,7 @@ class DateEdit:
|
||||
if text != self.text:
|
||||
self.text = text
|
||||
self.date_obj.copy(DateHandler.parser.parse(text))
|
||||
self.text_obj.set_text(DateHandler.displayer.display(self.date_obj))
|
||||
self.check()
|
||||
|
||||
def invoke_date_editor(self,obj):
|
||||
@@ -257,10 +258,8 @@ class DateEditorDialog:
|
||||
while 1:
|
||||
response = self.top_window.run()
|
||||
if response == gtk.RESPONSE_HELP:
|
||||
try:
|
||||
gnome.help_display('gramps-manual','adv-dates')
|
||||
except gobject.GError, msg:
|
||||
QuestionDialog.ErrorDialog(_("Could not open help"),str(msg))
|
||||
GrampsDisplay.help('adv-dates')
|
||||
|
||||
elif response == gtk.RESPONSE_OK:
|
||||
(the_quality,the_modifier,the_calendar,the_value,the_text) = \
|
||||
self.build_date_from_ui()
|
||||
@@ -275,6 +274,7 @@ class DateEditorDialog:
|
||||
else:
|
||||
break
|
||||
self.top_window.destroy()
|
||||
gc.collect()
|
||||
|
||||
def build_date_from_ui(self):
|
||||
"""
|
||||
|
||||
@@ -46,24 +46,18 @@ import DateDisplay
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
_lang = locale.getlocale(locale.LC_TIME)[0]
|
||||
if _lang:
|
||||
_lang_short = _lang.split('_')[0]
|
||||
else:
|
||||
_lang_short = "C"
|
||||
|
||||
_lang_to_parser = {
|
||||
'C' : DateParser.DateParser,
|
||||
'en_US' : DateParser.DateParser,
|
||||
'en_GB' : DateParser.DateParser,
|
||||
'en_AU' : DateParser.DateParser,
|
||||
'en_CA' : DateParser.DateParser,
|
||||
'en_SE' : DateParser.DateParser,
|
||||
'en' : DateParser.DateParser,
|
||||
}
|
||||
|
||||
_lang_to_display = {
|
||||
'C' : DateDisplay.DateDisplayEn,
|
||||
'en_US' : DateDisplay.DateDisplayEn,
|
||||
'en_GB' : DateDisplay.DateDisplayEn,
|
||||
'en_AU' : DateDisplay.DateDisplayEn,
|
||||
'en_CA' : DateDisplay.DateDisplayEn,
|
||||
'en_SE' : DateDisplay.DateDisplayEn,
|
||||
'en' : DateDisplay.DateDisplayEn,
|
||||
'zh_CN' : DateDisplay.DateDisplay,
|
||||
'zh_TW' : DateDisplay.DateDisplay,
|
||||
@@ -80,7 +74,7 @@ def get_date_formats():
|
||||
try:
|
||||
return _lang_to_display[_lang].formats
|
||||
except:
|
||||
return DateDisplay.DateDisplay.formats
|
||||
return _lang_to_display["C"].formats
|
||||
|
||||
def set_format(value):
|
||||
try:
|
||||
@@ -123,20 +117,29 @@ load_plugins(datesDir)
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
try:
|
||||
parser = _lang_to_parser[_lang]()
|
||||
if _lang_to_parser.has_key(_lang):
|
||||
parser = _lang_to_parser[_lang]()
|
||||
else:
|
||||
parser = _lang_to_parser[_lang_short]()
|
||||
except:
|
||||
print "Date parser for",_lang,"not available, using default"
|
||||
parser = DateParser.DateParser()
|
||||
parser = _lang_to_parser["C"]()
|
||||
|
||||
try:
|
||||
import GrampsKeys
|
||||
val = GrampsKeys.get_date_format(_lang_to_display[_lang].formats)
|
||||
except:
|
||||
val = 0
|
||||
try:
|
||||
val = GrampsKeys.get_date_format(_lang_to_display["C"].formats)
|
||||
except:
|
||||
val = 0
|
||||
|
||||
try:
|
||||
displayer = _lang_to_display[_lang](val)
|
||||
if _lang_to_display.has_key(_lang):
|
||||
displayer = _lang_to_display[_lang](val)
|
||||
else:
|
||||
displayer = _lang_to_display[_lang_short](val)
|
||||
except:
|
||||
print "Date displayer for",_lang,"not available, using default"
|
||||
displayer = DateDisplay.DateDisplay(val)
|
||||
|
||||
displayer = _lang_to_display["C"](val)
|
||||
|
||||
@@ -44,7 +44,7 @@ import calendar
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import Date
|
||||
|
||||
from Errors import DateError
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Top-level module functions
|
||||
@@ -119,6 +119,7 @@ class DateParser:
|
||||
unicode(locale.nl_langinfo(locale.ABMON_12),_codeset).lower(): 12,
|
||||
}
|
||||
|
||||
# modifiers before the date
|
||||
modifier_to_int = {
|
||||
'before' : Date.MOD_BEFORE, 'bef' : Date.MOD_BEFORE,
|
||||
'bef.' : Date.MOD_BEFORE, 'after' : Date.MOD_AFTER,
|
||||
@@ -127,6 +128,9 @@ class DateParser:
|
||||
'abt' : Date.MOD_ABOUT, 'circa' : Date.MOD_ABOUT,
|
||||
'c.' : Date.MOD_ABOUT, 'around' : Date.MOD_ABOUT,
|
||||
}
|
||||
# in some languages some of above listed modifiers are after the date,
|
||||
# in that case the subclass should put them into this dictionary instead
|
||||
modifier_after_to_int = {}
|
||||
|
||||
hebrew_to_int = {
|
||||
"tishri" : 1, "heshvan" : 2, "kislev" : 3,
|
||||
@@ -137,9 +141,9 @@ class DateParser:
|
||||
}
|
||||
|
||||
french_to_int = {
|
||||
u'vend\xc3\xa9miaire' : 1, 'brumaire' : 2,
|
||||
u'vend\xc3\xa9miaire' : 1, 'brumaire' : 2,
|
||||
'frimaire' : 3, u'niv\xc3\xb4se ': 4,
|
||||
u'pluvi\xc3\xb4se' : 5, u'vent\xc3\xb4se' : 6,
|
||||
u'pluvi\xc3\xb4se' : 5, u'vent\xc3\xb4se' : 6,
|
||||
'germinal' : 7, u'flor\xc3\xa9al' : 8,
|
||||
'prairial' : 9, 'messidor' : 10,
|
||||
'thermidor' : 11, 'fructidor' : 12,
|
||||
@@ -205,6 +209,7 @@ class DateParser:
|
||||
self.parser = {
|
||||
Date.CAL_GREGORIAN : self._parse_greg_julian,
|
||||
Date.CAL_JULIAN : self._parse_greg_julian,
|
||||
Date.CAL_FRENCH : self._parse_french,
|
||||
Date.CAL_PERSIAN : self._parse_persian,
|
||||
Date.CAL_HEBREW : self._parse_hebrew,
|
||||
Date.CAL_ISLAMIC : self._parse_islamic,
|
||||
@@ -236,9 +241,15 @@ class DateParser:
|
||||
self._qual_str = '(' + '|'.join(
|
||||
[ key.replace('.','\.') for key in self.quality_to_int.keys() ]
|
||||
) + ')'
|
||||
keys = self.modifier_to_int.keys()
|
||||
keys.sort(lambda x, y: cmp(len(y), len(x)))
|
||||
self._mod_str = '(' + '|'.join(
|
||||
[ key.replace('.','\.') for key in self.modifier_to_int.keys() ]
|
||||
[ key.replace('.','\.') for key in keys ]
|
||||
) + ')'
|
||||
self._mod_after_str = '(' + '|'.join(
|
||||
[ key.replace('.','\.') for key in self.modifier_after_to_int.keys() ]
|
||||
) + ')'
|
||||
|
||||
# Need to reverse-sort the keys, so that April matches before Apr does.
|
||||
# Otherwise, 'april 2000' would be matched as 'apr' + garbage ('il 2000')
|
||||
_month_keys = self.month_to_int.keys()
|
||||
@@ -257,36 +268,37 @@ class DateParser:
|
||||
re.IGNORECASE)
|
||||
self._qual = re.compile("%s\s+(.+)" % self._qual_str,
|
||||
re.IGNORECASE)
|
||||
self._span = re.compile("(from)\s+(.+)\s+(to)\s+(.+)",
|
||||
self._span = re.compile("(from)\s+(?P<start>.+)\s+to\s+(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile("(bet|bet.|between)\s+(.+)\s+(and)\s+(.+)",
|
||||
self._range = re.compile("(bet|bet.|between)\s+(?P<start>.+)\s+and\s+(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._modifier = re.compile('%s\s+(.*)' % self._mod_str,
|
||||
re.IGNORECASE)
|
||||
self._text = re.compile('%s\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?' % self._mon_str,
|
||||
self._modifier_after = re.compile('(.*)\s+%s' % self._mod_after_str,
|
||||
re.IGNORECASE)
|
||||
self._text2 = re.compile('(\d+)?\s+?%s\s*((\d+)(/\d+)?)?' % self._mon_str,
|
||||
self._abt2 = re.compile('<(.*)>',re.IGNORECASE)
|
||||
self._text = re.compile('%s\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?\s*$' % self._mon_str,
|
||||
re.IGNORECASE)
|
||||
self._jtext = re.compile('%s\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?' % self._jmon_str,
|
||||
self._text2 = re.compile('(\d+)?\s+?%s\s*((\d+)(/\d+)?)?\s*$' % self._mon_str,
|
||||
re.IGNORECASE)
|
||||
self._jtext2 = re.compile('(\d+)?\s+?%s\s*((\d+)(/\d+)?)?' % self._jmon_str,
|
||||
self._jtext = re.compile('%s\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?\s*$' % self._jmon_str,
|
||||
re.IGNORECASE)
|
||||
self._ftext = re.compile('%s\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?' % self._fmon_str,
|
||||
self._jtext2 = re.compile('(\d+)?\s+?%s\s*((\d+)(/\d+)?)?\s*$' % self._jmon_str,
|
||||
re.IGNORECASE)
|
||||
self._ftext2 = re.compile('(\d+)?\s+?%s\s*((\d+)(/\d+)?)?' % self._fmon_str,
|
||||
self._ftext = re.compile('%s\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?\s*$' % self._fmon_str,
|
||||
re.IGNORECASE)
|
||||
self._ptext = re.compile('%s\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?' % self._pmon_str,
|
||||
self._ftext2 = re.compile('(\d+)?\s+?%s\s*((\d+)(/\d+)?)?\s*$' % self._fmon_str,
|
||||
re.IGNORECASE)
|
||||
self._ptext2 = re.compile('(\d+)?\s+?%s\s*((\d+)(/\d+)?)?' % self._pmon_str,
|
||||
self._ptext = re.compile('%s\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?\s*$' % self._pmon_str,
|
||||
re.IGNORECASE)
|
||||
self._itext = re.compile('%s\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?' % self._imon_str,
|
||||
self._ptext2 = re.compile('(\d+)?\s+?%s\s*((\d+)(/\d+)?)?\s*$' % self._pmon_str,
|
||||
re.IGNORECASE)
|
||||
self._itext2 = re.compile('(\d+)?\s+?%s\s*((\d+)(/\d+)?)?' % self._imon_str,
|
||||
self._itext = re.compile('%s\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?\s*$' % self._imon_str,
|
||||
re.IGNORECASE)
|
||||
self._range2 = re.compile('%s\s+(\d+)-(\d+)\s*,?\s*((\d+)(/\d+)?)?' % self._mon_str,
|
||||
self._itext2 = re.compile('(\d+)?\s+?%s\s*((\d+)(/\d+)?)?\s*$' % self._imon_str,
|
||||
re.IGNORECASE)
|
||||
self._numeric = re.compile("((\d+)[/\.])?((\d+)[/\.])?(\d+)")
|
||||
self._iso = re.compile("(\d+)-(\d+)-(\d+)")
|
||||
self._numeric = re.compile("((\d+)[/\.])?((\d+)[/\.])?(\d+)\s*$")
|
||||
self._iso = re.compile("(\d+)-(\d+)-(\d+)\s*$")
|
||||
self._rfc = re.compile("(%s,)?\s+(\d|\d\d)\s+%s\s+(\d+)\s+\d\d:\d\d(:\d\d)?\s+(\+|-)\d\d\d\d"
|
||||
% (self._rfc_day_str,self._rfc_mon_str))
|
||||
|
||||
@@ -371,6 +383,8 @@ class DateParser:
|
||||
"""
|
||||
if subparser == None:
|
||||
subparser = self._parse_greg_julian
|
||||
|
||||
if subparser == self._parse_greg_julian:
|
||||
check = gregorian_valid
|
||||
else:
|
||||
check = None
|
||||
@@ -452,10 +466,9 @@ class DateParser:
|
||||
"""
|
||||
match = self._span.match(text)
|
||||
if match:
|
||||
grps = match.groups()
|
||||
text_parser = self.parser[cal]
|
||||
start = self._parse_subdate(grps[1],text_parser)
|
||||
stop = self._parse_subdate(grps[3],text_parser)
|
||||
start = self._parse_subdate(match.group('start'),text_parser)
|
||||
stop = self._parse_subdate(match.group('stop'),text_parser)
|
||||
date.set(qual,Date.MOD_SPAN,cal,start + stop)
|
||||
return 1
|
||||
return 0
|
||||
@@ -468,39 +481,13 @@ class DateParser:
|
||||
"""
|
||||
match = self._range.match(text)
|
||||
if match:
|
||||
grps = match.groups()
|
||||
text_parser = self.parser[cal]
|
||||
start = self._parse_subdate(grps[1],text_parser)
|
||||
stop = self._parse_subdate(grps[3],text_parser)
|
||||
start = self._parse_subdate(match.group('start'),text_parser)
|
||||
stop = self._parse_subdate(match.group('stop'),text_parser)
|
||||
date.set(qual,Date.MOD_RANGE,cal,start + stop)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
def match_range2(self,text,cal,qual,date):
|
||||
"""
|
||||
Try matching numerical range date.
|
||||
|
||||
On success, set the date and return 1. On failure return 0.
|
||||
"""
|
||||
match = self._range2.match(text)
|
||||
if match:
|
||||
grps = match.groups()
|
||||
m = self.month_to_int[grps[0].lower()]
|
||||
|
||||
d0 = self._get_int(grps[1])
|
||||
d1 = self._get_int(grps[2])
|
||||
|
||||
if grps[3] == None:
|
||||
y = 0
|
||||
s = None
|
||||
else:
|
||||
y = int(grps[3])
|
||||
s = grps[4] != None
|
||||
date.set(qual,Date.MOD_RANGE,Date.CAL_GREGORIAN,
|
||||
(d0,m,y,s,d1,m,y,s))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
def match_bce(self,text):
|
||||
"""
|
||||
Try matching BCE qualifier.
|
||||
@@ -520,6 +507,7 @@ class DateParser:
|
||||
|
||||
On success, set the date and return 1. On failure return 0.
|
||||
"""
|
||||
# modifiers before the date
|
||||
match = self._modifier.match(text)
|
||||
if match:
|
||||
grps = match.groups()
|
||||
@@ -529,50 +517,61 @@ class DateParser:
|
||||
date.set(qual,mod,cal,self.invert_year(start))
|
||||
else:
|
||||
date.set(qual,mod,cal,start)
|
||||
return 1
|
||||
return 0
|
||||
return True
|
||||
# modifiers after the date
|
||||
if self.modifier_after_to_int:
|
||||
match = self._modifier_after.match(text)
|
||||
if match:
|
||||
grps = match.groups()
|
||||
start = self._parse_subdate(grps[0])
|
||||
mod = self.modifier_after_to_int.get(grps[1].lower(),Date.MOD_NONE)
|
||||
if bc:
|
||||
date.set(qual,mod,cal,self.invert_year(start))
|
||||
else:
|
||||
date.set(qual,mod,cal,start)
|
||||
return True
|
||||
match = self._abt2.match(text)
|
||||
if match:
|
||||
grps = match.groups()
|
||||
start = self._parse_subdate(grps[0])
|
||||
mod = Date.MOD_ABOUT
|
||||
if bc:
|
||||
date.set(qual,mod,cal,self.invert_year(start))
|
||||
else:
|
||||
date.set(qual,mod,cal,start)
|
||||
return True
|
||||
return False
|
||||
|
||||
def set_date(self,date,text):
|
||||
"""
|
||||
Parses the text and sets the date according to the parsing.
|
||||
"""
|
||||
|
||||
|
||||
date.set_text_value(text)
|
||||
qual = Date.QUAL_NONE
|
||||
cal = Date.CAL_GREGORIAN
|
||||
|
||||
(text,cal) = self.match_calendar(text,cal)
|
||||
(text,qual) = self.match_quality(text,qual)
|
||||
|
||||
if self.match_span(text,cal,qual,date):
|
||||
return
|
||||
if self.match_range(text,cal,qual,date):
|
||||
return
|
||||
if self.match_range2(text,cal,qual,date):
|
||||
return
|
||||
|
||||
(text,bc) = self.match_bce(text)
|
||||
if self.match_modifier(text,cal,qual,bc,date):
|
||||
return
|
||||
|
||||
subdate = self._parse_subdate(text)
|
||||
if subdate == Date.EMPTY:
|
||||
subdate = self._parse_hebrew(text)
|
||||
if subdate == Date.EMPTY:
|
||||
subdate = self._parse_persian(text)
|
||||
if subdate == Date.EMPTY:
|
||||
subdate = self._parse_islamic(text)
|
||||
if subdate == Date.EMPTY:
|
||||
subdate = self._parse_french(text)
|
||||
if subdate == Date.EMPTY:
|
||||
date.set_as_text(text)
|
||||
return
|
||||
else:
|
||||
cal = Date.CAL_FRENCH
|
||||
else:
|
||||
cal = Date.CAL_ISLAMIC
|
||||
else:
|
||||
cal = Date.CAL_PERSIAN
|
||||
else:
|
||||
cal = Date.CAL_HEBREW
|
||||
|
||||
try:
|
||||
subdate = self._parse_subdate(text,self.parser[cal])
|
||||
if subdate == Date.EMPTY and text != "":
|
||||
date.set_as_text(text)
|
||||
return
|
||||
except:
|
||||
date.set_as_text(text)
|
||||
return
|
||||
|
||||
if bc:
|
||||
date.set(qual,Date.MOD_NONE,cal,self.invert_year(subdate))
|
||||
@@ -587,5 +586,8 @@ class DateParser:
|
||||
Parses the text, returning a Date object.
|
||||
"""
|
||||
new_date = Date.Date()
|
||||
self.set_date(new_date,text)
|
||||
try:
|
||||
self.set_date(new_date,text)
|
||||
except DateError:
|
||||
new_date.set_as_text(text)
|
||||
return new_date
|
||||
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2000-2005 Donald N. Allingham
|
||||
# Copyright (C) 2000-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
|
||||
@@ -35,8 +35,6 @@ from gettext import gettext as _
|
||||
#-------------------------------------------------------------------------
|
||||
import gtk
|
||||
import gtk.glade
|
||||
import gobject
|
||||
import gnome
|
||||
|
||||
try:
|
||||
from gnomevfs import get_mime_type
|
||||
@@ -61,6 +59,7 @@ import ReadGrdb
|
||||
import WriteGrdb
|
||||
import WriteXML
|
||||
import WriteGedcom
|
||||
import GrampsDisplay
|
||||
|
||||
from bsddb import db
|
||||
|
||||
@@ -93,30 +92,74 @@ class DbPrompter:
|
||||
title = opendb.get_widget('title')
|
||||
|
||||
Utils.set_titles(top,title,_('Open a database'))
|
||||
|
||||
|
||||
recent = opendb.get_widget("recent")
|
||||
existing = opendb.get_widget("existing")
|
||||
new = opendb.get_widget("new")
|
||||
new.set_active(want_new)
|
||||
filelist = opendb.get_widget("filelist")
|
||||
|
||||
# write in recent file into UI
|
||||
gramps_rf = RecentFiles.GrampsRecentFiles()
|
||||
gramps_rf.gramps_recent_files.sort()
|
||||
gramps_rf.gramps_recent_files.reverse()
|
||||
self.recent_files = []
|
||||
if gramps_rf.gramps_recent_files:
|
||||
# if recent files have been stored
|
||||
cell = gtk.CellRendererText()
|
||||
filelist.pack_start(cell,True)
|
||||
filelist.add_attribute(cell,'text',0)
|
||||
store = gtk.ListStore(str)
|
||||
for item in gramps_rf.gramps_recent_files:
|
||||
try:
|
||||
filename = os.path.basename(item.get_path())
|
||||
filetype = get_mime_type(item.get_path())
|
||||
node = store.append()
|
||||
store.set(node,0,unicode(filename))
|
||||
self.recent_files.append( (item.get_path(), filetype))
|
||||
except RuntimeError:
|
||||
pass # ignore no longer existing files
|
||||
if self.recent_files:
|
||||
filelist.set_model(store)
|
||||
filelist.set_active(0)
|
||||
else:
|
||||
recent.set_sensitive(False)
|
||||
filelist.set_sensitive(False)
|
||||
else:
|
||||
recent.set_sensitive(False)
|
||||
filelist.set_sensitive(False)
|
||||
|
||||
if want_new:
|
||||
new.set_active(True)
|
||||
else:
|
||||
if not self.recent_files:
|
||||
existing.set_active(True)
|
||||
|
||||
while 1:
|
||||
top.show()
|
||||
response = top.run()
|
||||
top.hide()
|
||||
if response == gtk.RESPONSE_OK:
|
||||
if new.get_active():
|
||||
prompter = NewNativeDbPrompter(self.parent,
|
||||
self.parent_window)
|
||||
else:
|
||||
prompter = ExistingDbPrompter(self.parent,
|
||||
try:
|
||||
if response == gtk.RESPONSE_OK:
|
||||
if recent.get_active():
|
||||
(filename,filetype) = self.recent_files[filelist.get_active()]
|
||||
if open_native(self.parent,filename,filetype):
|
||||
break
|
||||
continue
|
||||
elif new.get_active():
|
||||
prompter = NewNativeDbPrompter(self.parent,
|
||||
self.parent_window)
|
||||
else:
|
||||
prompter = ExistingDbPrompter(self.parent,
|
||||
self.parent_window)
|
||||
if prompter.chooser():
|
||||
if prompter.chooser():
|
||||
break
|
||||
elif response == gtk.RESPONSE_CANCEL:
|
||||
break
|
||||
elif response == gtk.RESPONSE_CANCEL:
|
||||
break
|
||||
elif response == gtk.RESPONSE_HELP:
|
||||
try:
|
||||
gnome.help_display('gramps-manual','choose-db-start')
|
||||
except gobject.GError,msg:
|
||||
QuestionDialog.ErrorDialog(_('Help not available'),msg)
|
||||
elif response == gtk.RESPONSE_HELP:
|
||||
GrampsDisplay.help('choose-db-start')
|
||||
except:
|
||||
import sys
|
||||
QuestionDialog.ErrorDialog(_("Could not open file"),str(sys.exc_info()[1]))
|
||||
|
||||
top.destroy()
|
||||
if response == gtk.RESPONSE_CANCEL:
|
||||
@@ -193,17 +236,19 @@ class ExistingDbPrompter:
|
||||
filetype = get_mime_type(filename)
|
||||
(the_path,the_file) = os.path.split(filename)
|
||||
choose.destroy()
|
||||
try:
|
||||
if open_native(self.parent,filename,filetype):
|
||||
return True
|
||||
except db.DBInvalidArgError, msg:
|
||||
QuestionDialog.ErrorDialog(
|
||||
_("Could not open file: %s") % filename, msg[1])
|
||||
return False
|
||||
except:
|
||||
import DisplayTrace
|
||||
DisplayTrace.DisplayTrace()
|
||||
return False
|
||||
if filetype in [const.app_gramps,const.app_gramps_xml,
|
||||
const.app_gedcom]:
|
||||
|
||||
try:
|
||||
return open_native(self.parent,filename,filetype)
|
||||
except db.DBInvalidArgError, msg:
|
||||
QuestionDialog.ErrorDialog(
|
||||
_("Could not open file: %s") % filename, msg[1])
|
||||
return False
|
||||
except:
|
||||
import DisplayTrace
|
||||
DisplayTrace.DisplayTrace()
|
||||
return False
|
||||
|
||||
# The above native formats did not work, so we need to
|
||||
# look up the importer for this format
|
||||
@@ -394,7 +439,7 @@ class NewNativeDbPrompter:
|
||||
filename = filename + ".grdb"
|
||||
choose.destroy()
|
||||
try:
|
||||
self.parent.db.close()
|
||||
close(self.parent)
|
||||
except:
|
||||
pass
|
||||
self.parent.db = GrampsBSDDB.GrampsBSDDB()
|
||||
@@ -472,7 +517,8 @@ class NewSaveasDbPrompter:
|
||||
continue
|
||||
filetype = type_selector.get_value()
|
||||
if filetype == 'auto':
|
||||
os.system('touch %s' % filename)
|
||||
new_file = open(filename, "w")
|
||||
new_file.close()
|
||||
filetype = get_mime_type(filename)
|
||||
(the_path,the_file) = os.path.split(filename)
|
||||
choose.destroy()
|
||||
@@ -484,15 +530,15 @@ class NewSaveasDbPrompter:
|
||||
return False
|
||||
if filetype == const.app_gramps:
|
||||
WriteGrdb.exportData(self.parent.db,filename,None,None)
|
||||
self.parent.db.close()
|
||||
close(self.parent)
|
||||
self.parent.db = GrampsBSDDB.GrampsBSDDB()
|
||||
elif filetype == const.app_gramps_xml:
|
||||
WriteXML.exportData(self.parent.db,filename,None,None)
|
||||
self.parent.db.close()
|
||||
close(self.parent)
|
||||
self.parent.db = GrampsXMLDB.GrampsXMLDB()
|
||||
elif filetype == const.app_gedcom:
|
||||
WriteGedcom.exportData(self.parent.db,filename,None,None)
|
||||
self.parent.db.close()
|
||||
close(self.parent)
|
||||
self.parent.db = GrampsGEDDB.GrampsGEDDB()
|
||||
self.parent.read_file(filename)
|
||||
# Add the file to the recent items
|
||||
@@ -507,14 +553,22 @@ class NewSaveasDbPrompter:
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Helper function
|
||||
# Helper functions
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
def close(parent):
|
||||
# Close existing dialogs
|
||||
for window in parent.child_windows.values():
|
||||
window.close()
|
||||
parent.db.close()
|
||||
|
||||
def open_native(parent,filename,filetype):
|
||||
"""
|
||||
Open native database and return the status.
|
||||
"""
|
||||
|
||||
close(parent)
|
||||
|
||||
(the_path,the_file) = os.path.split(filename)
|
||||
GrampsKeys.save_last_import_dir(the_path)
|
||||
|
||||
@@ -531,22 +585,21 @@ def open_native(parent,filename,filetype):
|
||||
while gtk.events_pending():
|
||||
gtk.main_iteration()
|
||||
|
||||
parent.read_file(filename,update_msg)
|
||||
success = parent.read_file(filename,update_msg)
|
||||
msg_top.destroy()
|
||||
success = True
|
||||
elif filetype == const.app_gramps_xml:
|
||||
parent.db = GrampsXMLDB.GrampsXMLDB()
|
||||
parent.read_file(filename)
|
||||
success = True
|
||||
success = parent.read_file(filename)
|
||||
elif filetype == const.app_gedcom:
|
||||
parent.db = GrampsGEDDB.GrampsGEDDB()
|
||||
parent.read_file(filename)
|
||||
success = True
|
||||
success = parent.read_file(filename)
|
||||
|
||||
if success:
|
||||
# Add the file to the recent items
|
||||
RecentFiles.recent_files(filename,filetype)
|
||||
parent.build_recent_menu()
|
||||
else:
|
||||
parent.db = GrampsBSDDB.GrampsBSDDB()
|
||||
|
||||
return success
|
||||
|
||||
|
||||
@@ -135,11 +135,11 @@ class _DdTargets(object):
|
||||
|
||||
# List of all the test types. These are types
|
||||
# that can be interpreted as text.
|
||||
self._all_text_types = (self.TEXT,
|
||||
self._all_text_types = (self.UTF8_STRING,
|
||||
self.TEXT,
|
||||
self.TEXT_MIME,
|
||||
self.STRING,
|
||||
self.COMPOUND_TEXT,
|
||||
self.UTF8_STRING)
|
||||
self.COMPOUND_TEXT)
|
||||
|
||||
def insert(self,dd_type):
|
||||
"""Add a target to the lookup lists. These lists are
|
||||
|
||||
@@ -61,14 +61,30 @@ _codeset = locale.nl_langinfo(locale.CODESET)
|
||||
#-------------------------------------------------------------------------
|
||||
class BaseModel(gtk.GenericTreeModel):
|
||||
|
||||
def __init__(self,db):
|
||||
def __init__(self,db,scol=0,order=gtk.SORT_ASCENDING):
|
||||
gtk.GenericTreeModel.__init__(self)
|
||||
self.set_property("leak_references",False)
|
||||
self.db = db
|
||||
self.sort_func = self.smap[scol]
|
||||
self.sort_col = scol
|
||||
self.reverse = (order == gtk.SORT_DESCENDING)
|
||||
self.rebuild_data()
|
||||
|
||||
def set_sort_column(self,col):
|
||||
self.sort_func = self.smap[col]
|
||||
|
||||
def sort_keys(self):
|
||||
return []
|
||||
cursor = self.gen_cursor()
|
||||
sarray = []
|
||||
data = cursor.next()
|
||||
while data:
|
||||
sarray.append((self.sort_func(data[1]),data[0]))
|
||||
data = cursor.next()
|
||||
cursor.close()
|
||||
sarray.sort()
|
||||
if self.reverse:
|
||||
sarray.reverse()
|
||||
return map(lambda x: x[1], sarray)
|
||||
|
||||
def rebuild_data(self):
|
||||
if self.db.is_open():
|
||||
@@ -147,7 +163,7 @@ class BaseModel(gtk.GenericTreeModel):
|
||||
|
||||
def on_iter_children(self,node):
|
||||
"""Return the first child of the node"""
|
||||
if node == None:
|
||||
if node == None and self.datalist:
|
||||
return self.datalist[0]
|
||||
return None
|
||||
|
||||
@@ -255,9 +271,9 @@ class ChildModel(gtk.ListStore):
|
||||
#-------------------------------------------------------------------------
|
||||
class SourceModel(BaseModel):
|
||||
|
||||
def __init__(self,db):
|
||||
self.sort_keys = db.get_source_handles
|
||||
def __init__(self,db,scol=0,order=gtk.SORT_ASCENDING):
|
||||
self.map = db.source_map
|
||||
self.gen_cursor = db.get_source_cursor
|
||||
self.fmap = [
|
||||
self.column_title,
|
||||
self.column_id,
|
||||
@@ -267,7 +283,15 @@ class SourceModel(BaseModel):
|
||||
self.column_change,
|
||||
self.column_handle,
|
||||
]
|
||||
BaseModel.__init__(self,db)
|
||||
self.smap = [
|
||||
self.column_title,
|
||||
self.column_id,
|
||||
self.column_author,
|
||||
self.column_abbrev,
|
||||
self.column_pubinfo,
|
||||
self.sort_change,
|
||||
]
|
||||
BaseModel.__init__(self,db,scol,order)
|
||||
|
||||
def on_get_n_columns(self):
|
||||
return len(self.fmap)+1
|
||||
@@ -293,6 +317,8 @@ class SourceModel(BaseModel):
|
||||
def column_change(self,data):
|
||||
return unicode(time.strftime(_date_format,time.localtime(data[8])),
|
||||
_codeset)
|
||||
def sort_change(self,data):
|
||||
return time.localtime(data[8])
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -301,8 +327,8 @@ class SourceModel(BaseModel):
|
||||
#-------------------------------------------------------------------------
|
||||
class PlaceModel(BaseModel):
|
||||
|
||||
def __init__(self,db):
|
||||
self.sort_keys = db.get_place_handles
|
||||
def __init__(self,db,scol=0,order=gtk.SORT_ASCENDING):
|
||||
self.gen_cursor = db.get_place_cursor
|
||||
self.map = db.place_map
|
||||
self.fmap = [
|
||||
self.column_name,
|
||||
@@ -318,7 +344,21 @@ class PlaceModel(BaseModel):
|
||||
self.column_change,
|
||||
self.column_handle,
|
||||
]
|
||||
BaseModel.__init__(self,db)
|
||||
self.smap = [
|
||||
self.column_name,
|
||||
self.column_id,
|
||||
self.column_parish,
|
||||
self.column_postal_code,
|
||||
self.column_city,
|
||||
self.column_county,
|
||||
self.column_state,
|
||||
self.column_country,
|
||||
self.column_longitude,
|
||||
self.column_latitude,
|
||||
self.column_change,
|
||||
self.column_handle,
|
||||
]
|
||||
BaseModel.__init__(self,db,scol,order)
|
||||
|
||||
def on_get_n_columns(self):
|
||||
return len(self.fmap)+1
|
||||
@@ -374,6 +414,9 @@ class PlaceModel(BaseModel):
|
||||
except:
|
||||
return u''
|
||||
|
||||
def sort_change(self,data):
|
||||
return time.localtime(data[11])
|
||||
|
||||
def column_change(self,data):
|
||||
return unicode(time.strftime(_date_format,time.localtime(data[11])),
|
||||
_codeset)
|
||||
@@ -385,8 +428,8 @@ class PlaceModel(BaseModel):
|
||||
#-------------------------------------------------------------------------
|
||||
class MediaModel(BaseModel):
|
||||
|
||||
def __init__(self,db):
|
||||
self.sort_keys = db.get_media_object_handles
|
||||
def __init__(self,db,scol=0,order=gtk.SORT_ASCENDING):
|
||||
self.gen_cursor = db.get_media_cursor
|
||||
self.map = db.media_map
|
||||
|
||||
self.fmap = [
|
||||
@@ -396,19 +439,33 @@ class MediaModel(BaseModel):
|
||||
self.column_path,
|
||||
self.column_change,
|
||||
self.column_date,
|
||||
self.column_place,
|
||||
self.column_handle,
|
||||
]
|
||||
BaseModel.__init__(self,db)
|
||||
self.smap = [
|
||||
self.column_description,
|
||||
self.column_id,
|
||||
self.column_mime,
|
||||
self.column_path,
|
||||
self.sort_change,
|
||||
self.column_date,
|
||||
self.column_handle,
|
||||
]
|
||||
BaseModel.__init__(self,db,scol,order)
|
||||
|
||||
def on_get_n_columns(self):
|
||||
return len(self.fmap)+1
|
||||
|
||||
def column_description(self,data):
|
||||
return unicode(data[4])
|
||||
try:
|
||||
return unicode(data[4])
|
||||
except:
|
||||
return unicode(data[4],'latin1')
|
||||
|
||||
def column_path(self,data):
|
||||
return unicode(data[2])
|
||||
try:
|
||||
return unicode(data[2])
|
||||
except:
|
||||
return unicode(data[2].encode('iso-8859-1'))
|
||||
|
||||
def column_mime(self,data):
|
||||
if data[3]:
|
||||
@@ -424,16 +481,12 @@ class MediaModel(BaseModel):
|
||||
return unicode(DateHandler.displayer.display(data[9]))
|
||||
return u''
|
||||
|
||||
def column_place(self,data):
|
||||
if data[10]:
|
||||
place = self.db.get_place_from_handle(data[10])
|
||||
if place:
|
||||
return place.get_title()
|
||||
return u''
|
||||
|
||||
def column_handle(self,data):
|
||||
return unicode(data[0])
|
||||
|
||||
def sort_change(self,data):
|
||||
return time.localtime(data[8])
|
||||
|
||||
def column_change(self,data):
|
||||
return unicode(time.strftime(_date_format,time.localtime(data[8])),
|
||||
_codeset)
|
||||
@@ -107,7 +107,9 @@ class DisplayTrace:
|
||||
|
||||
window.get_buffer().set_text(msg.getvalue())
|
||||
print msg.getvalue()
|
||||
self.glade.signal_autoconnect({'on_close_clicked':self.close})
|
||||
|
||||
window.connect('delete_event',self.close)
|
||||
self.glade.get_widget('button107').connect('clicked',self.close)
|
||||
|
||||
def close(self,obj):
|
||||
self.top.destroy()
|
||||
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2000-2005 Donald N. Allingham
|
||||
# Copyright (C) 2000-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
|
||||
@@ -26,6 +26,7 @@
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import cPickle as pickle
|
||||
import gc
|
||||
from gettext import gettext as _
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@@ -36,7 +37,6 @@ from gettext import gettext as _
|
||||
import gobject
|
||||
import gtk
|
||||
import gtk.glade
|
||||
import gnome
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -48,9 +48,13 @@ import Utils
|
||||
import Sources
|
||||
import ImageSelect
|
||||
import NameDisplay
|
||||
import Spell
|
||||
import GrampsDisplay
|
||||
import RelLib
|
||||
import ListModel
|
||||
|
||||
from DdTargets import DdTargets
|
||||
|
||||
from WindowUtils import GladeIf
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -61,21 +65,23 @@ class EditPlace:
|
||||
|
||||
def __init__(self,parent,place,parent_window=None):
|
||||
self.parent = parent
|
||||
if place.get_handle():
|
||||
if place and place.get_handle():
|
||||
if self.parent.child_windows.has_key(place.get_handle()):
|
||||
self.parent.child_windows[place.get_handle()].present(None)
|
||||
return
|
||||
else:
|
||||
self.win_key = place.get_handle()
|
||||
self.ref_not_loaded = 1
|
||||
else:
|
||||
self.win_key = self
|
||||
self.ref_not_loaded = 0
|
||||
self.idle = None
|
||||
self.name_display = NameDisplay.displayer.display
|
||||
self.place = place
|
||||
self.db = parent.db
|
||||
self.child_windows = {}
|
||||
self.path = parent.db.get_save_path()
|
||||
self.not_loaded = 1
|
||||
self.ref_not_loaded = 1
|
||||
self.lists_changed = 0
|
||||
if place:
|
||||
self.srcreflist = place.get_source_references()
|
||||
@@ -83,6 +89,8 @@ class EditPlace:
|
||||
self.srcreflist = []
|
||||
|
||||
self.top_window = gtk.glade.XML(const.placesFile,"placeEditor","gramps")
|
||||
self.gladeif = GladeIf(self.top_window)
|
||||
|
||||
self.top = self.top_window.get_widget("placeEditor")
|
||||
self.iconlist = self.top_window.get_widget('iconlist')
|
||||
title_label = self.top_window.get_widget('title')
|
||||
@@ -115,6 +123,7 @@ class EditPlace:
|
||||
self.latitude.set_editable(mode)
|
||||
self.note = self.top_window.get_widget("place_note")
|
||||
self.note.set_editable(mode)
|
||||
self.spell = Spell.Spell(self.note)
|
||||
|
||||
self.web_list = self.top_window.get_widget("web_list")
|
||||
self.web_url = self.top_window.get_widget("web_url")
|
||||
@@ -163,7 +172,7 @@ class EditPlace:
|
||||
self.country.set_text(mloc.get_country())
|
||||
self.longitude.set_text(place.get_longitude())
|
||||
self.latitude.set_text(place.get_latitude())
|
||||
self.refinfo = self.top_window.get_widget("refinfo")
|
||||
self.plist = self.top_window.get_widget("plist")
|
||||
self.slist = self.top_window.get_widget("slist")
|
||||
self.sources_label = self.top_window.get_widget("sourcesPlaceEdit")
|
||||
self.names_label = self.top_window.get_widget("namesPlaceEdit")
|
||||
@@ -180,8 +189,10 @@ class EditPlace:
|
||||
Utils.bold_label(self.notes_label)
|
||||
if place.get_note_format() == 1:
|
||||
self.preform.set_active(1)
|
||||
self.note.set_wrap_mode(gtk.WRAP_NONE)
|
||||
else:
|
||||
self.flowed.set_active(1)
|
||||
self.note.set_wrap_mode(gtk.WRAP_WORD)
|
||||
|
||||
self.flowed.set_sensitive(mode)
|
||||
self.preform.set_sensitive(mode)
|
||||
@@ -189,26 +200,24 @@ class EditPlace:
|
||||
if self.place.get_media_list():
|
||||
Utils.bold_label(self.gallery_label)
|
||||
|
||||
self.top_window.signal_autoconnect({
|
||||
"on_switch_page" : self.on_switch_page,
|
||||
"on_addphoto_clicked" : self.glry.on_add_media_clicked,
|
||||
"on_selectphoto_clicked" : self.glry.on_select_media_clicked,
|
||||
"on_deletephoto_clicked" : self.glry.on_delete_media_clicked,
|
||||
"on_edit_photo_clicked" : self.glry.on_edit_media_clicked,
|
||||
"on_edit_properties_clicked": self.glry.popup_change_description,
|
||||
"on_add_url_clicked" : self.on_add_url_clicked,
|
||||
"on_delete_url_clicked" : self.on_delete_url_clicked,
|
||||
"on_update_url_clicked" : self.on_update_url_clicked,
|
||||
"on_add_loc_clicked" : self.on_add_loc_clicked,
|
||||
"on_delete_loc_clicked" : self.on_delete_loc_clicked,
|
||||
"on_update_loc_clicked" : self.on_update_loc_clicked,
|
||||
"on_web_go_clicked" : self.on_web_go_clicked,
|
||||
"on_help_clicked" : self.on_help_clicked,
|
||||
"on_delete_event" : self.on_delete_event,
|
||||
"on_cancel_clicked" : self.close,
|
||||
"on_apply_clicked" : self.on_place_apply_clicked,
|
||||
})
|
||||
|
||||
self.gladeif.connect('placeEditor', 'delete_event', self.on_delete_event)
|
||||
self.gladeif.connect('button127', 'clicked', self.close)
|
||||
self.gladeif.connect('ok', 'clicked', self.on_place_apply_clicked)
|
||||
self.gladeif.connect('button135', 'clicked', self.on_help_clicked)
|
||||
self.gladeif.connect('notebook3', 'switch_page', self.on_switch_page)
|
||||
self.gladeif.connect('add_name', 'clicked', self.on_add_loc_clicked)
|
||||
self.gladeif.connect('loc_edit', 'clicked', self.on_update_loc_clicked)
|
||||
self.gladeif.connect('del_name', 'clicked', self.on_delete_loc_clicked)
|
||||
self.gladeif.connect('add_photo', 'clicked', self.glry.on_add_media_clicked)
|
||||
self.gladeif.connect('sel_photo', 'clicked', self.glry.on_select_media_clicked)
|
||||
self.gladeif.connect('button134', 'clicked', self.glry.on_edit_media_clicked)
|
||||
self.gladeif.connect('delete_photo', 'clicked', self.glry.on_delete_media_clicked)
|
||||
self.gladeif.connect('add_url', 'clicked', self.on_add_url_clicked)
|
||||
self.gladeif.connect('web_edit', 'clicked', self.on_update_url_clicked)
|
||||
self.gladeif.connect('web_go', 'clicked', self.on_web_go_clicked)
|
||||
self.gladeif.connect('del_url', 'clicked', self.on_delete_url_clicked)
|
||||
self.gladeif.connect('place_preform','toggled',self.format_toggled)
|
||||
|
||||
self.sourcetab = Sources.SourceTab(
|
||||
self.srcreflist,self,
|
||||
self.top_window,self.top,self.slist,
|
||||
@@ -229,7 +238,8 @@ class EditPlace:
|
||||
gtk.gdk.ACTION_COPY)
|
||||
self.web_list.connect('drag_data_get',
|
||||
self.url_source_drag_data_get)
|
||||
self.web_list.connect('drag_data_received',
|
||||
if not self.db.readonly:
|
||||
self.web_list.connect('drag_data_received',
|
||||
self.url_dest_drag_data_received)
|
||||
|
||||
for name in ['del_name','add_name','sel_photo','add_url','del_url']:
|
||||
@@ -237,23 +247,53 @@ class EditPlace:
|
||||
|
||||
self.redraw_url_list()
|
||||
self.redraw_location_list()
|
||||
self.display_references()
|
||||
if parent_window:
|
||||
self.top.set_transient_for(parent_window)
|
||||
self.add_itself_to_menu()
|
||||
self.top_window.get_widget('ok').set_sensitive(not self.db.readonly)
|
||||
self.top.show()
|
||||
|
||||
def on_delete_event(self,obj,b):
|
||||
self.glry.close()
|
||||
self.close_child_windows()
|
||||
self.remove_itself_from_menu()
|
||||
self.pdmap = {}
|
||||
self.build_pdmap()
|
||||
|
||||
if self.ref_not_loaded:
|
||||
Utils.temp_label(self.refs_label,self.top)
|
||||
self.cursor_type = None
|
||||
self.idle = gobject.idle_add(self.display_references)
|
||||
self.ref_not_loaded = 0
|
||||
|
||||
def close(self,obj):
|
||||
def format_toggled(self,junk):
|
||||
if self.preform.get_active():
|
||||
self.note.set_wrap_mode(gtk.WRAP_NONE)
|
||||
else:
|
||||
self.note.set_wrap_mode(gtk.WRAP_WORD)
|
||||
|
||||
def build_pdmap(self):
|
||||
self.pdmap.clear()
|
||||
cursor = self.db.get_place_cursor()
|
||||
data = cursor.next()
|
||||
while data:
|
||||
if data[1][2]:
|
||||
self.pdmap[data[1][2]] = data[0]
|
||||
data = cursor.next()
|
||||
cursor.close()
|
||||
|
||||
def on_delete_event(self,obj,b):
|
||||
self.gladeif.close()
|
||||
self.glry.close()
|
||||
self.close_child_windows()
|
||||
self.remove_itself_from_menu()
|
||||
gc.collect()
|
||||
|
||||
def close(self,obj=None):
|
||||
self.glry.close()
|
||||
self.close_child_windows()
|
||||
self.remove_itself_from_menu()
|
||||
self.gladeif.close()
|
||||
self.top.destroy()
|
||||
if self.idle != None:
|
||||
gobject.source_remove(self.idle)
|
||||
gc.collect()
|
||||
|
||||
def close_child_windows(self):
|
||||
for child_window in self.child_windows.values():
|
||||
@@ -290,7 +330,7 @@ class EditPlace:
|
||||
|
||||
def on_help_clicked(self,obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
gnome.help_display('gramps-manual','adv-plc')
|
||||
GrampsDisplay.help('adv-plc')
|
||||
|
||||
def build_columns(self,tree,list):
|
||||
cnum = 0
|
||||
@@ -314,11 +354,14 @@ class EditPlace:
|
||||
self.redraw_url_list()
|
||||
|
||||
def url_source_drag_data_get(self,widget, context, sel_data, info, time):
|
||||
|
||||
ev = self.web_model.get_selected_objects()[0]
|
||||
store,node = self.web_list.get_selection().get_selected()
|
||||
if not node:
|
||||
return
|
||||
row = store.get_path(node)
|
||||
url = self.ulist[row[0]]
|
||||
bits_per = 8; # we're going to pass a string
|
||||
pickled = pickle.dumps(ev);
|
||||
data = str(('url',self.place.get_handle(),pickled));
|
||||
pickled = pickle.dumps(url)
|
||||
data = str(('url',self.place.get_handle(),pickled))
|
||||
sel_data.set(sel_data.target, bits_per, data)
|
||||
|
||||
def update_lists(self):
|
||||
@@ -348,9 +391,9 @@ class EditPlace:
|
||||
Utils.unbold_label(self.names_label)
|
||||
|
||||
def on_web_go_clicked(self,obj):
|
||||
text = obj.get()
|
||||
text = self.web_url.get()
|
||||
if text != "":
|
||||
gnome.url_show(text)
|
||||
GrampsDisplay.url(text)
|
||||
|
||||
def set(self,field,getf,setf):
|
||||
text = unicode(field.get_text())
|
||||
@@ -364,6 +407,15 @@ class EditPlace:
|
||||
format = self.preform.get_active()
|
||||
mloc = self.place.get_main_location()
|
||||
|
||||
title = self.title.get_text()
|
||||
if self.pdmap.has_key(title) and self.pdmap[title] != self.place.handle:
|
||||
import QuestionDialog
|
||||
QuestionDialog.ErrorDialog(_("Place title is already in use"),
|
||||
_("Each place must have a unique title, and "
|
||||
"title you have selected is already used by "
|
||||
"another place"))
|
||||
return
|
||||
|
||||
self.set(self.city,mloc.get_city,mloc.set_city)
|
||||
self.set(self.parish,mloc.get_parish,mloc.set_parish)
|
||||
self.set(self.state,mloc.get_state,mloc.set_state)
|
||||
@@ -404,7 +456,8 @@ class EditPlace:
|
||||
self.glry.load_images()
|
||||
elif page == 6 and self.ref_not_loaded:
|
||||
self.ref_not_loaded = 0
|
||||
self.display_references()
|
||||
Utils.temp_label(self.refs_label,self.top)
|
||||
self.idle = gobject.idle_add(self.display_references)
|
||||
text = unicode(self.note_buffer.get_text(self.note_buffer.get_start_iter(),
|
||||
self.note_buffer.get_end_iter(),False))
|
||||
if text:
|
||||
@@ -433,12 +486,12 @@ class EditPlace:
|
||||
LocEdit.LocationEditor(self,loc,self.top)
|
||||
|
||||
def on_delete_url_clicked(self,obj):
|
||||
if Utils.delete_selected(obj,self.ulist):
|
||||
if Utils.delete_selected(self.web_list,self.ulist):
|
||||
self.lists_changed = 1
|
||||
self.redraw_url_list()
|
||||
|
||||
def on_delete_loc_clicked(self,obj):
|
||||
if Utils.delete_selected(obj,self.llist):
|
||||
if Utils.delete_selected(self.loc_list,self.llist):
|
||||
self.lists_changed = 1
|
||||
self.redraw_location_list()
|
||||
|
||||
@@ -492,58 +545,111 @@ class EditPlace:
|
||||
self.loc_parish.set_text(loc.get_parish())
|
||||
self.loc_country.set_text(loc.get_country())
|
||||
|
||||
def button_press(self,obj):
|
||||
data = self.model.get_selected_objects()
|
||||
if not data:
|
||||
return
|
||||
(data_type,handle) = data[0]
|
||||
import EventEdit
|
||||
event = self.db.get_event_from_handle(handle)
|
||||
event_name = event.get_name()
|
||||
if data_type == 0:
|
||||
if event_name in ["Birth","Death"]:
|
||||
EventEdit.PersonEventEditor(
|
||||
self,", ", event, None, 1, None, None, self.db.readonly)
|
||||
else:
|
||||
EventEdit.PersonEventEditor(
|
||||
self,", ", event, None, 0, None, None, self.db.readonly)
|
||||
elif data_type == 1:
|
||||
EventEdit.FamilyEventEditor(
|
||||
self,", ", event, None, 0, None, None, self.db.readonly)
|
||||
|
||||
def display_references(self):
|
||||
pevent = []
|
||||
fevent = []
|
||||
msg = ""
|
||||
for key in self.db.get_person_handles(sort_handles=False):
|
||||
p = self.db.get_person_from_handle(key)
|
||||
for event_handle in [p.get_birth_handle(), p.get_death_handle()] + p.get_event_list():
|
||||
event = self.db.get_event_from_handle(event_handle)
|
||||
if event and event.get_place_handle() == self.place.get_handle():
|
||||
pevent.append((p,event))
|
||||
for family_handle in self.db.get_family_handles():
|
||||
f = self.db.get_family_from_handle(family_handle)
|
||||
for event_handle in f.get_event_list():
|
||||
event = self.db.get_event_from_handle(event_handle)
|
||||
if event and event.get_place_handle() == self.place.get_handle():
|
||||
fevent.append((f,event))
|
||||
place_handle = self.place.get_handle()
|
||||
|
||||
any = 0
|
||||
if len(pevent) > 0:
|
||||
any = 1
|
||||
msg = msg + _("People") + "\n"
|
||||
msg = msg + "_________________________\n\n"
|
||||
t = _("%s [%s]: event %s\n")
|
||||
|
||||
for e in pevent:
|
||||
msg = msg + ( t % (self.name_display(e[0]),e[0].get_gramps_id(),_(e[1].get_name())))
|
||||
|
||||
if len(fevent) > 0:
|
||||
any = 1
|
||||
msg = msg + "\n%s\n" % _("Families")
|
||||
msg = msg + "_________________________\n\n"
|
||||
t = _("%s [%s]: event %s\n")
|
||||
|
||||
for e in fevent:
|
||||
father = e[0].get_father_handle()
|
||||
mother = e[0].get_mother_handle()
|
||||
if father and mother:
|
||||
fname = _("%(father)s and %(mother)s") % {
|
||||
"father" : self.name_display( self.db.get_person_from_handle( father)),
|
||||
"mother" : self.name_display( self.db.get_person_from_handle( mother)) }
|
||||
elif father:
|
||||
fname = self.name_display( self.db.get_person_from_handle( father))
|
||||
else:
|
||||
fname = self.name_display( self.db.get_person_from_handle( mother))
|
||||
|
||||
msg = msg + ( t % (fname,e[0].get_gramps_id(),_(e[1].get_name())))
|
||||
|
||||
self.refinfo.get_buffer().set_text(msg)
|
||||
if any:
|
||||
Utils.bold_label(self.refs_label)
|
||||
# Initialize things if we're entering this functioin
|
||||
# for the first time
|
||||
if not self.cursor_type:
|
||||
self.cursor_type = 'Person'
|
||||
self.cursor = self.db.get_person_cursor()
|
||||
self.data = self.cursor.first()
|
||||
|
||||
self.any_refs = False
|
||||
titles = [(_('Type'),0,150),(_('Name'),1,150),
|
||||
(_('ID'),2,75),(_('Event Name'),3,150)]
|
||||
self.model = ListModel.ListModel(self.plist,
|
||||
titles,
|
||||
event_func=self.button_press)
|
||||
|
||||
if self.cursor_type == 'Person':
|
||||
while self.data:
|
||||
handle,val = self.data
|
||||
person = RelLib.Person()
|
||||
person.unserialize(val)
|
||||
for event_handle in [person.get_birth_handle(),
|
||||
person.get_death_handle()] \
|
||||
+ person.get_event_list():
|
||||
event = self.db.get_event_from_handle(event_handle)
|
||||
if event and event.get_place_handle() == place_handle:
|
||||
pname = self.name_display(person)
|
||||
gramps_id = person.get_gramps_id()
|
||||
ename = event.get_name()
|
||||
self.model.add(
|
||||
[_("Personal Event"),pname,gramps_id,ename],
|
||||
(0,event_handle))
|
||||
self.any_refs = True
|
||||
self.data = self.cursor.next()
|
||||
if gtk.events_pending():
|
||||
return True
|
||||
self.cursor.close()
|
||||
|
||||
self.cursor_type = 'Family'
|
||||
self.cursor = self.db.get_family_cursor()
|
||||
self.data = self.cursor.first()
|
||||
|
||||
if self.cursor_type == 'Family':
|
||||
while self.data:
|
||||
handle,val = self.data
|
||||
family = RelLib.Family()
|
||||
family.unserialize(val)
|
||||
for event_handle in family.get_event_list():
|
||||
event = self.db.get_event_from_handle(event_handle)
|
||||
if event and event.get_place_handle() == place_handle:
|
||||
father = family.get_father_handle()
|
||||
mother = family.get_mother_handle()
|
||||
if father and mother:
|
||||
fname = _("%(father)s and %(mother)s") % {
|
||||
"father" : self.name_display(
|
||||
self.db.get_person_from_handle(father)),
|
||||
"mother" : self.name_display(
|
||||
self.db.get_person_from_handle(mother))
|
||||
}
|
||||
elif father:
|
||||
fname = self.name_display(
|
||||
self.db.get_person_from_handle(father))
|
||||
else:
|
||||
fname = self.name_display(
|
||||
self.db.get_person_from_handle(mother))
|
||||
|
||||
gramps_id = family.get_gramps_id()
|
||||
ename = event.get_name()
|
||||
self.model.add(
|
||||
[_("Family Event"),fname,gramps_id,ename],
|
||||
(1,event_handle))
|
||||
self.any_refs = True
|
||||
self.data = self.cursor.next()
|
||||
if gtk.events_pending():
|
||||
return True
|
||||
self.cursor.close()
|
||||
|
||||
if self.any_refs:
|
||||
Utils.bold_label(self.refs_label,self.top)
|
||||
else:
|
||||
Utils.unbold_label(self.refs_label,self.top)
|
||||
|
||||
self.ref_not_loaded = 0
|
||||
self.cursor_type = None
|
||||
return False
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -574,9 +680,9 @@ class DeletePlaceQuery:
|
||||
|
||||
def query_response(self):
|
||||
trans = self.db.transaction_begin()
|
||||
self.db.disable_signals()
|
||||
|
||||
place_handle = self.place.get_handle()
|
||||
self.db.remove_place(place_handle,trans)
|
||||
|
||||
for handle in self.db.get_person_handles(sort_handles=False):
|
||||
person = self.db.get_person_from_handle(handle)
|
||||
@@ -596,5 +702,7 @@ class DeletePlaceQuery:
|
||||
event.remove_handle_references('Place',place_handle)
|
||||
self.db.commit_event(event,trans)
|
||||
|
||||
self.db.enable_signals()
|
||||
self.db.remove_place(place_handle,trans)
|
||||
self.db.transaction_commit(trans,
|
||||
_("Delete Place (%s)") % self.place.get_title())
|
||||
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2000-2005 Donald N. Allingham
|
||||
# Copyright (C) 2000-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
|
||||
@@ -26,14 +26,15 @@
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from gettext import gettext as _
|
||||
import gc
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# GTK/Gnome modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import gobject
|
||||
import gtk.glade
|
||||
import gnome
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -46,6 +47,9 @@ import ImageSelect
|
||||
import ListModel
|
||||
import RelLib
|
||||
import NameDisplay
|
||||
import Spell
|
||||
import GrampsDisplay
|
||||
from WindowUtils import GladeIf
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -60,6 +64,11 @@ class EditSource:
|
||||
self.source = source
|
||||
else:
|
||||
self.source = RelLib.Source()
|
||||
if self.source.get_handle():
|
||||
self.ref_not_loaded = 1
|
||||
else:
|
||||
self.ref_not_loaded = 0
|
||||
self.idle = None
|
||||
self.db = db
|
||||
self.parent = parent
|
||||
self.name_display = NameDisplay.displayer.display
|
||||
@@ -74,13 +83,13 @@ class EditSource:
|
||||
self.child_windows = {}
|
||||
self.path = db.get_save_path()
|
||||
self.not_loaded = 1
|
||||
self.ref_not_loaded = 1
|
||||
self.lists_changed = 0
|
||||
self.gallery_ok = 0
|
||||
mode = not self.db.readonly
|
||||
|
||||
self.top_window = gtk.glade.XML(const.gladeFile,"sourceEditor","gramps")
|
||||
self.top = self.top_window.get_widget("sourceEditor")
|
||||
self.gladeif = GladeIf(self.top_window)
|
||||
|
||||
Utils.set_titles(self.top,self.top_window.get_widget('title'),
|
||||
_('Source Editor'))
|
||||
@@ -93,6 +102,7 @@ class EditSource:
|
||||
self.abbrev = self.top_window.get_widget("abbrev")
|
||||
self.note = self.top_window.get_widget("source_note")
|
||||
self.note.set_editable(mode)
|
||||
self.spell = Spell.Spell(self.note)
|
||||
self.notes_buffer = self.note.get_buffer()
|
||||
self.gallery_label = self.top_window.get_widget("gallerySourceEditor")
|
||||
self.refs_label = self.top_window.get_widget("refsSourceEditor")
|
||||
@@ -125,26 +135,26 @@ class EditSource:
|
||||
Utils.bold_label(self.notes_label)
|
||||
if source.get_note_format() == 1:
|
||||
self.preform.set_active(1)
|
||||
self.note.set_wrap_mode(gtk.WRAP_NONE)
|
||||
else:
|
||||
self.flowed.set_active(1)
|
||||
self.note.set_wrap_mode(gtk.WRAP_WORD)
|
||||
|
||||
if self.source.get_media_list():
|
||||
Utils.bold_label(self.gallery_label)
|
||||
|
||||
self.top_window.signal_autoconnect({
|
||||
"on_switch_page" : self.on_switch_page,
|
||||
"on_addphoto_clicked" : self.gallery.on_add_media_clicked,
|
||||
"on_selectphoto_clicked" : self.gallery.on_select_media_clicked,
|
||||
"on_deletephoto_clicked" : self.gallery.on_delete_media_clicked,
|
||||
"on_editphoto_clicked" : self.gallery.on_edit_media_clicked,
|
||||
"on_edit_properties_clicked": self.gallery.popup_change_description,
|
||||
"on_sourceEditor_help_clicked" : self.on_help_clicked,
|
||||
"on_sourceEditor_ok_clicked" : self.on_source_apply_clicked,
|
||||
"on_sourceEditor_cancel_clicked" : self.close,
|
||||
"on_sourceEditor_delete_event" : self.on_delete_event,
|
||||
"on_delete_data_clicked" : self.on_delete_data_clicked,
|
||||
"on_add_data_clicked" : self.on_add_data_clicked,
|
||||
})
|
||||
self.gladeif.connect('sourceEditor','delete_event',self.on_delete_event)
|
||||
self.gladeif.connect('cancel','clicked',self.close)
|
||||
self.gladeif.connect('ok','clicked',self.on_source_apply_clicked)
|
||||
self.gladeif.connect('button166','clicked',self.on_help_clicked)
|
||||
self.gladeif.connect('notebook2','switch_page',self.on_switch_page)
|
||||
self.gladeif.connect('add_data','clicked',self.on_add_data_clicked)
|
||||
self.gladeif.connect('del_data','clicked',self.on_delete_data_clicked)
|
||||
self.gladeif.connect('add_photo','clicked',self.gallery.on_add_media_clicked)
|
||||
self.gladeif.connect('sel_photo','clicked',self.gallery.on_select_media_clicked)
|
||||
self.gladeif.connect('edit_photo','clicked',self.gallery.on_edit_media_clicked)
|
||||
self.gladeif.connect('delete_photo','clicked',self.gallery.on_delete_media_clicked)
|
||||
self.gladeif.connect('source_preform','toggled',self.format_toggled)
|
||||
|
||||
if self.source.get_handle() == None or self.db.readonly:
|
||||
self.top_window.get_widget("edit_photo").set_sensitive(False)
|
||||
@@ -180,13 +190,23 @@ class EditSource:
|
||||
|
||||
self.top_window.get_widget('ok').set_sensitive(not self.db.readonly)
|
||||
|
||||
self.display_references()
|
||||
if parent_window:
|
||||
self.top.set_transient_for(parent_window)
|
||||
self.add_itself_to_menu()
|
||||
self.top.show()
|
||||
if self.ref_not_loaded:
|
||||
self.ref_not_loaded = 0
|
||||
Utils.temp_label(self.refs_label,self.top)
|
||||
self.cursor_type = None
|
||||
self.idle = gobject.idle_add(self.display_references)
|
||||
self.data_sel = self.datalist.get_selection()
|
||||
|
||||
def format_toggled(self,junk):
|
||||
if self.preform.get_active():
|
||||
self.note.set_wrap_mode(gtk.WRAP_NONE)
|
||||
else:
|
||||
self.note.set_wrap_mode(gtk.WRAP_WORD)
|
||||
|
||||
def on_add_data_clicked(self,widget):
|
||||
node = self.data_model.append(row=['',''])
|
||||
self.data_sel.select_iter(node)
|
||||
@@ -209,16 +229,22 @@ class EditSource:
|
||||
def on_delete_event(self,obj,b):
|
||||
self.close_child_windows()
|
||||
self.remove_itself_from_menu()
|
||||
self.gladeif.close()
|
||||
gc.collect()
|
||||
|
||||
def on_help_clicked(self,obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
gnome.help_display('gramps-manual','adv-src')
|
||||
GrampsDisplay.help('adv-src')
|
||||
|
||||
def close(self,obj):
|
||||
def close(self,obj=None):
|
||||
self.gallery.close()
|
||||
self.close_child_windows()
|
||||
self.remove_itself_from_menu()
|
||||
self.gladeif.close()
|
||||
self.top.destroy()
|
||||
if self.idle != None:
|
||||
gobject.source_remove(self.idle)
|
||||
gc.collect()
|
||||
|
||||
def close_child_windows(self):
|
||||
for child_window in self.child_windows.values():
|
||||
@@ -255,92 +281,176 @@ class EditSource:
|
||||
|
||||
def button_press(self,obj):
|
||||
data = self.model.get_selected_objects()
|
||||
(type,handle) = data[0]
|
||||
if type == 0:
|
||||
if not data:
|
||||
return
|
||||
(data_type,handle) = data[0]
|
||||
if data_type == 0:
|
||||
import EditPerson
|
||||
person = self.db.get_person_from_handle(handle)
|
||||
EditPerson.EditPerson(self.parent,person,self.db)
|
||||
elif type == 1:
|
||||
elif data_type == 1:
|
||||
import Marriage
|
||||
family = self.db.get_family_from_handle(handle)
|
||||
Marriage.Marriage(self.parent,family,self.db)
|
||||
elif type == 2:
|
||||
elif data_type == 2:
|
||||
import EventEdit
|
||||
event = self.db.get_event_from_handle(handle)
|
||||
if event.get_name() in const.marriageEvents:
|
||||
EventEdit.EventEditor(
|
||||
self,", ", const.marriageEvents, const.family_events,
|
||||
event, None, 0, None, None, self.db.readonly)
|
||||
elif event.get_name() in const.personalEvents + [_("Birth"),_("Death")]:
|
||||
EventEdit.EventEditor(
|
||||
self,", ", const.personalEvents, const.personal_events,
|
||||
event, None, 0, None, None, self.db.readonly)
|
||||
elif type == 3:
|
||||
event_name = event.get_name()
|
||||
if const.family_events.has_key(event_name):
|
||||
EventEdit.FamilyEventEditor(
|
||||
self,", ", event, None, 0, None, None, self.db.readonly)
|
||||
elif const.personal_events.has_key(event_name):
|
||||
EventEdit.PersonEventEditor(
|
||||
self,", ", event, None, 0, None, None, self.db.readonly)
|
||||
elif event_name in ["Birth","Death"]:
|
||||
EventEdit.PersonEventEditor(
|
||||
self,", ", event, None, 1, None, None, self.db.readonly)
|
||||
elif data_type == 3:
|
||||
import EditPlace
|
||||
place = self.db.get_place_from_handle(handle)
|
||||
EditPlace.EditPlace(self.parent,place)
|
||||
elif type == 5:
|
||||
import ImageSelect
|
||||
elif data_type == 4:
|
||||
source = self.db.get_source_from_handle(handle)
|
||||
EditSource(source,self.db,self.parent,None,self.db.readonly)
|
||||
elif data_type == 5:
|
||||
media = self.db.get_object_from_handle(handle)
|
||||
ImageSelect.GlobalMediaProperties(self.db,media,self)
|
||||
|
||||
def display_references(self):
|
||||
|
||||
(person_list,family_list,event_list,
|
||||
place_list,source_list,media_list
|
||||
) = Utils.get_source_referents(self.source.get_handle(),self.db)
|
||||
source_handle = self.source.get_handle()
|
||||
|
||||
any = person_list or family_list or event_list \
|
||||
or place_list or source_list or media_list
|
||||
# Initialize things if we're entering this functioin
|
||||
# for the first time
|
||||
if not self.cursor_type:
|
||||
self.cursor_type = 'Person'
|
||||
self.cursor = self.db.get_person_cursor()
|
||||
self.data = self.cursor.first()
|
||||
|
||||
slist = self.top_window.get_widget('slist')
|
||||
self.any_refs = False
|
||||
slist = self.top_window.get_widget('slist')
|
||||
titles = [(_('Type'),0,150),(_('ID'),1,75),(_('Name'),2,150)]
|
||||
self.model = ListModel.ListModel(slist,
|
||||
titles,
|
||||
event_func=self.button_press)
|
||||
|
||||
titles = [(_('Type'),0,150),(_('ID'),1,75),(_('Name'),2,150)]
|
||||
|
||||
self.model = ListModel.ListModel(slist,titles,event_func=self.button_press)
|
||||
if self.cursor_type == 'Person':
|
||||
while self.data:
|
||||
handle,val = self.data
|
||||
person = RelLib.Person()
|
||||
person.unserialize(val)
|
||||
if person.has_source_reference(source_handle):
|
||||
name = self.name_display(person)
|
||||
gramps_id = person.get_gramps_id()
|
||||
self.model.add([_("Person"),gramps_id,name],(0,handle))
|
||||
self.any_refs = True
|
||||
self.data = self.cursor.next()
|
||||
if gtk.events_pending():
|
||||
return True
|
||||
self.cursor.close()
|
||||
|
||||
self.cursor_type = 'Family'
|
||||
self.cursor = self.db.get_family_cursor()
|
||||
self.data = self.cursor.first()
|
||||
|
||||
for handle in person_list:
|
||||
person = self.db.get_person_from_handle(handle)
|
||||
name = self.name_display(person)
|
||||
gramps_id = person.get_gramps_id()
|
||||
self.model.add([_("Person"),gramps_id,name],(0,handle))
|
||||
if self.cursor_type == 'Family':
|
||||
while self.data:
|
||||
handle,val = self.data
|
||||
family = RelLib.Family()
|
||||
family.unserialize(val)
|
||||
if family.has_source_reference(source_handle):
|
||||
name = Utils.family_name(family,self.db)
|
||||
gramps_id = family.get_gramps_id()
|
||||
self.model.add([_("Family"),gramps_id,name],(1,handle))
|
||||
self.any_refs = True
|
||||
self.data = self.cursor.next()
|
||||
if gtk.events_pending():
|
||||
return True
|
||||
self.cursor.close()
|
||||
|
||||
self.cursor_type = 'Event'
|
||||
self.cursor = self.db.get_event_cursor()
|
||||
self.data = self.cursor.first()
|
||||
|
||||
for handle in family_list:
|
||||
family = self.db.get_family_from_handle(handle)
|
||||
name = Utils.family_name(family,self.db)
|
||||
gramps_id = family.get_gramps_id()
|
||||
self.model.add([_("Family"),gramps_id,name],(1,handle))
|
||||
if self.cursor_type == 'Event':
|
||||
while self.data:
|
||||
handle,val = self.data
|
||||
event = RelLib.Event()
|
||||
event.unserialize(val)
|
||||
if event.has_source_reference(source_handle):
|
||||
name = event.get_name()
|
||||
gramps_id = event.get_gramps_id()
|
||||
self.model.add([_("Event"),gramps_id,name],(2,handle))
|
||||
self.any_refs = True
|
||||
self.data = self.cursor.next()
|
||||
if gtk.events_pending():
|
||||
return True
|
||||
self.cursor.close()
|
||||
|
||||
self.cursor_type = 'Place'
|
||||
self.cursor = self.db.get_place_cursor()
|
||||
self.data = self.cursor.first()
|
||||
|
||||
for handle in event_list:
|
||||
event = self.db.get_event_from_handle(handle)
|
||||
name = event.get_name()
|
||||
gramps_id = event.get_gramps_id()
|
||||
self.model.add([_("Event"),gramps_id,name],(2,handle))
|
||||
if self.cursor_type == 'Place':
|
||||
while self.data:
|
||||
handle,val = self.data
|
||||
place = RelLib.Place()
|
||||
place.unserialize(val)
|
||||
if place.has_source_reference(source_handle):
|
||||
name = place.get_title()
|
||||
gramps_id = place.get_gramps_id()
|
||||
self.model.add([_("Place"),gramps_id,name],(3,handle))
|
||||
self.any_refs = True
|
||||
self.data = self.cursor.next()
|
||||
if gtk.events_pending():
|
||||
return True
|
||||
self.cursor.close()
|
||||
|
||||
self.cursor_type = 'Source'
|
||||
self.cursor = self.db.get_source_cursor()
|
||||
self.data = self.cursor.first()
|
||||
|
||||
for handle in place_list:
|
||||
place = self.db.get_place_from_handle(handle)
|
||||
name = place.get_title()
|
||||
gramps_id = place.get_gramps_id()
|
||||
self.model.add([_("Place"),gramps_id,name],(3,handle))
|
||||
if self.cursor_type == 'Source':
|
||||
while self.data:
|
||||
handle,val = self.data
|
||||
source = RelLib.Source()
|
||||
source.unserialize(val)
|
||||
if source.has_source_reference(source_handle):
|
||||
name = source.get_title()
|
||||
gramps_id = source.get_gramps_id()
|
||||
self.model.add([_("Source"),gramps_id,name],(4,handle))
|
||||
self.any_refs = True
|
||||
self.data = self.cursor.next()
|
||||
if gtk.events_pending():
|
||||
return True
|
||||
self.cursor.close()
|
||||
|
||||
self.cursor_type = 'Media'
|
||||
self.cursor = self.db.get_media_cursor()
|
||||
self.data = self.cursor.first()
|
||||
|
||||
for handle in source_list:
|
||||
source = self.db.get_source_from_handle(handle)
|
||||
name = source.get_title()
|
||||
gramps_id = source.get_gramps_id()
|
||||
self.model.add([_("Source"),gramps_id,name],(4,handle))
|
||||
if self.cursor_type == 'Media':
|
||||
while self.data:
|
||||
handle,val = self.data
|
||||
obj = RelLib.MediaObject()
|
||||
obj.unserialize(val)
|
||||
if obj.has_source_reference(source_handle):
|
||||
name = obj.get_description()
|
||||
gramps_id = obj.get_gramps_id()
|
||||
self.model.add([_("Media"),gramps_id,name],(5,handle))
|
||||
self.any_refs = True
|
||||
self.data = self.cursor.next()
|
||||
if gtk.events_pending():
|
||||
return True
|
||||
self.cursor.close()
|
||||
|
||||
for handle in media_list:
|
||||
media = self.db.get_object_from_handle(handle)
|
||||
name = media.get_description()
|
||||
gramps_id = media.get_gramps_id()
|
||||
self.model.add([_("Media"),gramps_id,name],(5,handle))
|
||||
|
||||
if any:
|
||||
Utils.bold_label(self.refs_label)
|
||||
if self.any_refs:
|
||||
Utils.bold_label(self.refs_label,self.top)
|
||||
else:
|
||||
Utils.unbold_label(self.refs_label)
|
||||
Utils.unbold_label(self.refs_label,self.top)
|
||||
|
||||
self.ref_not_loaded = 0
|
||||
self.cursor_type = None
|
||||
return False
|
||||
|
||||
def on_source_apply_clicked(self,obj):
|
||||
|
||||
@@ -348,8 +458,10 @@ class EditSource:
|
||||
author = unicode(self.author.get_text())
|
||||
pubinfo = unicode(self.pubinfo.get_text())
|
||||
abbrev = unicode(self.abbrev.get_text())
|
||||
note = unicode(self.notes_buffer.get_text(self.notes_buffer.get_start_iter(),
|
||||
self.notes_buffer.get_end_iter(),False))
|
||||
note = unicode(
|
||||
self.notes_buffer.get_text(self.notes_buffer.get_start_iter(),
|
||||
self.notes_buffer.get_end_iter(),
|
||||
False))
|
||||
format = self.preform.get_active()
|
||||
|
||||
if author != self.source.get_author():
|
||||
@@ -396,9 +508,13 @@ class EditSource:
|
||||
self.gallery.load_images()
|
||||
elif page == 3 and self.ref_not_loaded:
|
||||
self.ref_not_loaded = 0
|
||||
self.display_references()
|
||||
text = unicode(self.notes_buffer.get_text(self.notes_buffer.get_start_iter(),
|
||||
self.notes_buffer.get_end_iter(),False))
|
||||
Utils.temp_label(self.refs_label,self.top)
|
||||
self.idle = gobject.idle_add(self.display_references)
|
||||
text = unicode(
|
||||
self.notes_buffer.get_text(self.notes_buffer.get_start_iter(),
|
||||
self.notes_buffer.get_end_iter(),
|
||||
False)
|
||||
)
|
||||
if text:
|
||||
Utils.bold_label(self.notes_label)
|
||||
else:
|
||||
@@ -413,6 +529,7 @@ class DelSrcQuery:
|
||||
|
||||
def query_response(self):
|
||||
trans = self.db.transaction_begin()
|
||||
self.db.disable_signals()
|
||||
|
||||
(person_list,family_list,event_list,
|
||||
place_list,source_list,media_list) = self.the_lists
|
||||
@@ -449,6 +566,7 @@ class DelSrcQuery:
|
||||
media.remove_source_references(src_handle_list)
|
||||
self.db.commit_media_object(media,trans)
|
||||
|
||||
self.db.enable_signals()
|
||||
self.db.remove_source(self.source.get_handle(),trans)
|
||||
self.db.transaction_commit(
|
||||
trans,_("Delete Source (%s)") % self.source.get_title())
|
||||
@@ -42,6 +42,15 @@ class DateError(Exception):
|
||||
def __str__(self):
|
||||
return self.value
|
||||
|
||||
class DatabaseError(Exception):
|
||||
"""Error used to report Date errors"""
|
||||
def __init__(self,value=""):
|
||||
Exception.__init__(self)
|
||||
self.value = value
|
||||
|
||||
def __str__(self):
|
||||
return self.value
|
||||
|
||||
class ReportError(Exception):
|
||||
"""Error used to report Report errors"""
|
||||
def __init__(self,value,value2=""):
|
||||
@@ -90,3 +99,15 @@ class GConfSchemaError(Exception):
|
||||
|
||||
def __str__(self):
|
||||
return self.value
|
||||
|
||||
class FileVersionError(Exception):
|
||||
"""
|
||||
Error used to report that a file could not be read because
|
||||
it is written in an unsupported version of the file format.
|
||||
"""
|
||||
def __init__(self,value):
|
||||
Exception.__init__(self)
|
||||
self.value = value
|
||||
|
||||
def __str__(self):
|
||||
return self.value
|
||||
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2000-2005 Donald N. Allingham
|
||||
# Copyright (C) 2000-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
|
||||
@@ -26,6 +26,9 @@
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from gettext import gettext as _
|
||||
import sets
|
||||
import gc
|
||||
from cgi import escape
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -34,7 +37,6 @@ from gettext import gettext as _
|
||||
#-------------------------------------------------------------------------
|
||||
import gtk
|
||||
import gtk.glade
|
||||
import gnome
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -51,7 +53,11 @@ import Date
|
||||
import DateHandler
|
||||
import ImageSelect
|
||||
import DateEdit
|
||||
import Spell
|
||||
import GrampsDisplay
|
||||
|
||||
from QuestionDialog import WarningDialog, ErrorDialog
|
||||
from WindowUtils import GladeIf
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -83,15 +89,10 @@ class EventEditor:
|
||||
self.dp = DateHandler.parser
|
||||
self.dd = DateHandler.displayer
|
||||
|
||||
values = {}
|
||||
for v in elist:
|
||||
values[v] = 1
|
||||
for vv in self.db.get_person_event_type_list():
|
||||
if vv not in ("Birth","Death"):
|
||||
v = _(vv)
|
||||
values[v] = 1
|
||||
|
||||
self.elist = values.keys()
|
||||
# build list for menu
|
||||
values = sets.Set(elist)
|
||||
values.union(self.get_event_names())
|
||||
self.elist = list(values)
|
||||
self.elist.sort()
|
||||
|
||||
for key in self.parent.db.get_place_handles():
|
||||
@@ -105,17 +106,13 @@ class EventEditor:
|
||||
self.witnesslist = []
|
||||
self.date = Date.Date(self.event.get_date_object())
|
||||
transname = const.display_event(event.get_name())
|
||||
# add the name to the list if it is not already there. This
|
||||
# tends to occur in translated languages with the 'Death'
|
||||
# event, which is a partial match to other events
|
||||
#if not transname in elist:
|
||||
# elist.append(transname)
|
||||
else:
|
||||
self.srcreflist = []
|
||||
self.witnesslist = []
|
||||
self.date = Date.Date(None)
|
||||
|
||||
self.top = gtk.glade.XML(const.dialogFile, "event_edit","gramps")
|
||||
self.gladeif = GladeIf(self.top)
|
||||
|
||||
self.window = self.top.get_widget("event_edit")
|
||||
title_label = self.top.get_widget('title')
|
||||
@@ -123,7 +120,7 @@ class EventEditor:
|
||||
if name == ", ":
|
||||
etitle = _('Event Editor')
|
||||
else:
|
||||
etitle = _('Event Editor for %s') % name
|
||||
etitle = _('Event Editor for %s') % escape(name)
|
||||
|
||||
Utils.set_titles(self.window,title_label, etitle,
|
||||
_('Event Editor'))
|
||||
@@ -141,6 +138,7 @@ class EventEditor:
|
||||
self.descr_field.set_editable(not noedit)
|
||||
self.note_field = self.top.get_widget("eventNote")
|
||||
self.note_field.set_editable(not noedit)
|
||||
self.spell = Spell.Spell(self.note_field)
|
||||
self.event_menu = self.top.get_widget("personal_events")
|
||||
self.priv = self.top.get_widget("priv")
|
||||
self.priv.set_sensitive(not noedit)
|
||||
@@ -206,8 +204,10 @@ class EventEditor:
|
||||
Utils.bold_label(self.notes_label)
|
||||
if event.get_note_format() == 1:
|
||||
self.preform.set_active(1)
|
||||
self.note_field.set_wrap_mode(gtk.WRAP_NONE)
|
||||
else:
|
||||
self.flowed.set_active(1)
|
||||
self.note_field.set_wrap_mode(gtk.WRAP_WORD)
|
||||
if event.get_media_list():
|
||||
Utils.bold_label(self.gallery_label)
|
||||
else:
|
||||
@@ -215,9 +215,11 @@ class EventEditor:
|
||||
self.event_menu.child.set_text(def_event)
|
||||
if def_placename:
|
||||
self.place_field.set_text(def_placename)
|
||||
date_stat = self.top.get_widget("date_stat")
|
||||
date_stat.set_sensitive(not self.db.readonly)
|
||||
self.date_check = DateEdit.DateEdit(self.date,
|
||||
self.date_field,
|
||||
self.top.get_widget("date_stat"),
|
||||
date_stat,
|
||||
self.window)
|
||||
|
||||
if not event:
|
||||
@@ -227,18 +229,16 @@ class EventEditor:
|
||||
self.path, self.icon_list,
|
||||
self.db,self,self.window)
|
||||
|
||||
self.top.signal_autoconnect({
|
||||
"on_switch_page" : self.on_switch_page,
|
||||
"on_help_event_clicked" : self.on_help_clicked,
|
||||
"on_ok_event_clicked" : self.on_event_edit_ok_clicked,
|
||||
"on_cancel_event_clicked" : self.close,
|
||||
"on_event_edit_delete_event": self.on_delete_event,
|
||||
"on_addphoto_clicked" : self.gallery.on_add_media_clicked,
|
||||
"on_selectphoto_clicked" : self.gallery.on_select_media_clicked,
|
||||
"on_deletephoto_clicked" : self.gallery.on_delete_media_clicked,
|
||||
"on_edit_properties_clicked": self.gallery.popup_change_description,
|
||||
"on_editphoto_clicked" : self.gallery.on_edit_media_clicked,
|
||||
})
|
||||
self.gladeif.connect('event_edit','delete_event',self.on_delete_event)
|
||||
self.gladeif.connect('button111','clicked',self.close)
|
||||
self.gladeif.connect('ok','clicked',self.on_event_edit_ok_clicked)
|
||||
self.gladeif.connect('button126','clicked',self.on_help_clicked)
|
||||
self.gladeif.connect('notebook','switch_page',self.on_switch_page)
|
||||
self.gladeif.connect('add_obj','clicked',self.gallery.on_add_media_clicked)
|
||||
self.gladeif.connect('sel_obj','clicked',self.gallery.on_select_media_clicked)
|
||||
self.gladeif.connect('button172','clicked',self.gallery.on_edit_media_clicked)
|
||||
self.gladeif.connect('del_obj','clicked',self.gallery.on_delete_media_clicked)
|
||||
self.gladeif.connect('eventpreform','toggled',self.format_toggled)
|
||||
|
||||
self.top.get_widget('del_obj').set_sensitive(not noedit)
|
||||
self.top.get_widget('sel_obj').set_sensitive(not noedit)
|
||||
@@ -251,16 +251,26 @@ class EventEditor:
|
||||
self.add_itself_to_menu()
|
||||
self.window.show()
|
||||
|
||||
def format_toggled(self,junk):
|
||||
if self.preform.get_active():
|
||||
self.note_field.set_wrap_mode(gtk.WRAP_NONE)
|
||||
else:
|
||||
self.note_field.set_wrap_mode(gtk.WRAP_WORD)
|
||||
|
||||
def on_delete_event(self,obj,b):
|
||||
self.gladeif.close()
|
||||
self.gallery.close()
|
||||
self.close_child_windows()
|
||||
self.remove_itself_from_menu()
|
||||
gc.collect()
|
||||
|
||||
def close(self,obj):
|
||||
self.gladeif.close()
|
||||
self.gallery.close()
|
||||
self.close_child_windows()
|
||||
self.remove_itself_from_menu()
|
||||
self.window.destroy()
|
||||
gc.collect()
|
||||
|
||||
def close_child_windows(self):
|
||||
for child_window in self.child_windows.values():
|
||||
@@ -298,7 +308,7 @@ class EventEditor:
|
||||
|
||||
def on_help_clicked(self,obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
gnome.help_display('gramps-manual','adv-ev')
|
||||
GrampsDisplay.help('adv-ev')
|
||||
|
||||
def get_place(self,field,trans):
|
||||
text = unicode(field.get_text().strip())
|
||||
@@ -336,13 +346,13 @@ class EventEditor:
|
||||
edesc = unicode(self.descr_field.get_text())
|
||||
epriv = self.priv.get_active()
|
||||
|
||||
if ename not in self.elist + [_("Birth") , _("Death")]:
|
||||
WarningDialog(
|
||||
_('New event type created'),
|
||||
_('The "%s" event type has been added to this database.\n'
|
||||
'It will now appear in the event menus for this database') % ename)
|
||||
self.elist.append(ename)
|
||||
self.elist.sort()
|
||||
# if ename not in self.elist + [_("Birth") , _("Death")]:
|
||||
# WarningDialog(
|
||||
# _('New event type created'),
|
||||
# _('The "%s" event type has been added to this database.\n'
|
||||
# 'It will now appear in the event menus for this database') % ename)
|
||||
# self.elist.append(ename)
|
||||
# self.elist.sort()
|
||||
|
||||
if self.event == None:
|
||||
self.event = RelLib.Event()
|
||||
@@ -402,7 +412,7 @@ class EventEditor:
|
||||
if self.event.get_privacy() != priv:
|
||||
self.event.set_privacy(priv)
|
||||
self.parent.lists_changed = 1
|
||||
self.db.commit_event(self.event,trans)
|
||||
self.commit(self.event,trans)
|
||||
|
||||
def on_switch_page(self,obj,a,page):
|
||||
buf = self.note_field.get_buffer()
|
||||
@@ -411,3 +421,41 @@ class EventEditor:
|
||||
Utils.bold_label(self.notes_label)
|
||||
else:
|
||||
Utils.unbold_label(self.notes_label)
|
||||
|
||||
def commit(self,event,trans):
|
||||
self.db.commit_event(event,trans)
|
||||
|
||||
def get_event_names(self):
|
||||
data = sets.Set(self.db.get_family_event_types())
|
||||
data.union(self.db.get_person_event_types())
|
||||
return list(data)
|
||||
|
||||
class FamilyEventEditor(EventEditor):
|
||||
|
||||
def __init__(self,parent,name,event,def_placename,
|
||||
read_only, cb, def_event=None, noedit=False):
|
||||
|
||||
EventEditor.__init__(self, parent, name, const.marriageEvents,
|
||||
const.family_events, event, def_placename,
|
||||
read_only, cb, def_event, noedit)
|
||||
|
||||
def commit(self,event,trans):
|
||||
self.db.commit_family_event(event,trans)
|
||||
|
||||
def get_event_names(self):
|
||||
return self.db.get_family_event_types()
|
||||
|
||||
class PersonEventEditor(EventEditor):
|
||||
|
||||
def __init__(self,parent,name,event,def_placename,
|
||||
read_only, cb, def_event=None, noedit=False):
|
||||
|
||||
EventEditor.__init__(self, parent, name, const.personalEvents,
|
||||
const.personal_events, event, def_placename,
|
||||
read_only, cb, def_event, noedit)
|
||||
|
||||
def commit(self,event,trans):
|
||||
self.db.commit_personal_event(event,trans)
|
||||
|
||||
def get_event_names(self):
|
||||
return self.db.get_person_event_types()
|
||||
@@ -28,7 +28,6 @@
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import os
|
||||
import shutil
|
||||
from gettext import gettext as _
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@@ -37,7 +36,6 @@ from gettext import gettext as _
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import gtk
|
||||
import gnome
|
||||
from gnome.ui import Druid, DruidPageEdge, DruidPageStandard
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@@ -50,6 +48,7 @@ import Utils
|
||||
import PluginMgr
|
||||
import QuestionDialog
|
||||
import GrampsKeys
|
||||
import GrampsDisplay
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -120,7 +119,7 @@ class Exporter:
|
||||
"""
|
||||
Help handler.
|
||||
"""
|
||||
gnome.help_display('gramps-manual','export-data')
|
||||
GrampsDisplay.help('export-data')
|
||||
|
||||
def build_info_page(self):
|
||||
"""
|
||||
|
||||
@@ -67,7 +67,6 @@ from DdTargets import DdTargets
|
||||
_BORN = _('b.')
|
||||
_DIED = _('d.')
|
||||
|
||||
|
||||
column_names = [
|
||||
(_('#'),0) ,
|
||||
(_('ID'),1) ,
|
||||
@@ -207,7 +206,8 @@ class FamilyView:
|
||||
ACTION_COPY)
|
||||
self.spouse_list.connect('drag_data_get',
|
||||
self.sp_drag_data_get)
|
||||
self.spouse_list.connect('drag_data_received',
|
||||
if not self.parent.db.readonly:
|
||||
self.spouse_list.connect('drag_data_received',
|
||||
self.sp_drag_data_received)
|
||||
|
||||
def init_interface(self):
|
||||
@@ -260,11 +260,11 @@ class FamilyView:
|
||||
DdTargets.PERSON_LINK.target()],
|
||||
ACTION_COPY)
|
||||
self.child_list.drag_source_set(BUTTON1_MASK,
|
||||
[DdTargets.CHILD.target(),
|
||||
DdTargets.PERSON_LINK.target()],
|
||||
[DdTargets.CHILD.target()],
|
||||
ACTION_COPY)
|
||||
self.child_list.connect('drag_data_get', self.drag_data_get)
|
||||
self.child_list.connect('drag_data_received',self.drag_data_received)
|
||||
if not self.parent.db.readonly:
|
||||
self.child_list.connect('drag_data_received',self.drag_data_received)
|
||||
|
||||
if not already_init:
|
||||
self.child_list.connect('button-press-event',
|
||||
@@ -710,6 +710,9 @@ class FamilyView:
|
||||
family.set_handle(fhandle)
|
||||
family.set_gramps_id(self.parent.db.find_next_family_gramps_id())
|
||||
|
||||
if fhandle in old_person.get_family_handle_list():
|
||||
return
|
||||
|
||||
old_person.add_family_handle(fhandle)
|
||||
new_person.add_family_handle(fhandle)
|
||||
|
||||
@@ -791,6 +794,7 @@ class FamilyView:
|
||||
self.parent.db.commit_family(family,trans)
|
||||
self.parent.db.commit_person(person,trans)
|
||||
|
||||
# TODO: Add child ordered by birth day
|
||||
family.add_child_handle(new_person.get_handle())
|
||||
new_person.add_parent_family_handle(family.get_handle(),
|
||||
RelLib.Person.CHILD_REL_BIRTH,
|
||||
@@ -815,28 +819,46 @@ class FamilyView:
|
||||
|
||||
family = self.family
|
||||
|
||||
# determine the child
|
||||
model, node = self.child_selection.get_selected()
|
||||
if not node:
|
||||
return
|
||||
|
||||
handle = self.child_model.get_value(node,_HANDLE_COL)
|
||||
child = self.parent.db.get_person_from_handle(handle)
|
||||
|
||||
trans = self.parent.db.transaction_begin()
|
||||
|
||||
# remove the child from the family and the family from the child
|
||||
family.remove_child_handle(child.get_handle())
|
||||
child.remove_parent_family_handle(family.get_handle())
|
||||
|
||||
if len(family.get_child_handle_list()) == 0:
|
||||
if family.get_father_handle() == None:
|
||||
self.delete_family_from(family.get_mother_handle(),trans)
|
||||
elif family.get_mother_handle() == None:
|
||||
self.delete_family_from(family.get_father_handle(),trans)
|
||||
# begin transaction
|
||||
trans = self.parent.db.transaction_begin()
|
||||
|
||||
# if there are no children left, and the spouse is empty, delete the
|
||||
# family
|
||||
mother_handle = family.get_mother_handle()
|
||||
father_handle = family.get_father_handle()
|
||||
no_of_kids = len(family.get_child_handle_list())
|
||||
|
||||
self.parent.db.disable_all_signals()
|
||||
|
||||
if no_of_kids == 0 and (mother_handle == None or father_handle == None):
|
||||
if family.get_father_handle() == None:
|
||||
temp = self.parent.db.get_person_from_handle(family.get_mother_handle())
|
||||
temp.get_family_handle_list().remove(family.get_handle())
|
||||
elif family.get_mother_handle() == None:
|
||||
temp = self.parent.db.get_person_from_handle(family.get_father_handle())
|
||||
temp.get_family_handle_list().remove(family.get_handle())
|
||||
self.parent.db.remove_family(family.get_handle(),trans)
|
||||
self.parent.db.commit_person(temp,trans)
|
||||
else:
|
||||
self.parent.db.commit_family(family,trans)
|
||||
|
||||
# commit the transaction
|
||||
self.parent.db.commit_person(child,trans)
|
||||
self.parent.db.commit_family(family,trans)
|
||||
n = child.get_primary_name().get_regular_name()
|
||||
n = NameDisplay.displayer.display(child)
|
||||
self.parent.db.transaction_commit(trans,_("Remove Child (%s)") % n)
|
||||
self.parent.db.enable_all_signals()
|
||||
self.parent.db.emit('family-update',([family.get_handle()],))
|
||||
|
||||
def remove_spouse(self,obj):
|
||||
if self.selected_spouse:
|
||||
@@ -860,36 +882,31 @@ class FamilyView:
|
||||
cur_spouse = self.selected_spouse
|
||||
cur_family = self.family
|
||||
|
||||
# Remove spouse from the family
|
||||
if cur_spouse.get_handle() == cur_family.get_father_handle():
|
||||
cur_family.set_father_handle(None)
|
||||
else:
|
||||
cur_family.set_mother_handle(None)
|
||||
|
||||
trans = self.parent.db.transaction_begin()
|
||||
|
||||
|
||||
#If the spouse is defined, remove the family from the spouse
|
||||
if cur_spouse:
|
||||
cur_spouse.remove_family_handle(cur_family.get_handle())
|
||||
self.parent.db.commit_person(cur_spouse,trans)
|
||||
|
||||
self.parent.db.commit_family(cur_family,trans)
|
||||
|
||||
# if there are no children, remove it from the current person
|
||||
# and delete the family
|
||||
if len(cur_family.get_child_handle_list()) == 0:
|
||||
mother_id = cur_family.get_mother_handle()
|
||||
father_id = cur_family.get_father_handle()
|
||||
|
||||
for handle in [father_id, mother_id]:
|
||||
if handle:
|
||||
p = self.parent.db.get_person_from_handle(handle)
|
||||
p.remove_family_handle(cur_family.get_handle())
|
||||
self.parent.db.commit_person(p,trans)
|
||||
|
||||
# if len(cur_person.get_family_handle_list()) > 0:
|
||||
# handle = cur_person.get_family_handle_list()[0]
|
||||
# family = self.parent.db.find_family_from_handle(handle,trans)
|
||||
cur_person.remove_family_handle(cur_family.get_handle())
|
||||
self.parent.db.commit_person(cur_person,trans)
|
||||
self.parent.db.remove_family(cur_family.get_handle(),trans)
|
||||
else:
|
||||
self.parent.db.commit_family(cur_family,trans)
|
||||
|
||||
person_id = cur_person.get_handle()
|
||||
self.person = self.parent.db.get_person_from_handle(person_id)
|
||||
n = self.person.get_primary_name().get_regular_name()
|
||||
n = NameDisplay.displayer.display(self.person)
|
||||
self.parent.db.transaction_commit(trans,_("Remove Spouse (%s)") % n)
|
||||
|
||||
if len(self.person.get_family_handle_list()) <= 1:
|
||||
@@ -923,8 +940,11 @@ class FamilyView:
|
||||
|
||||
if family.get_father_handle():
|
||||
person_handle = family.get_father_handle()
|
||||
else:
|
||||
elif family.get_mother_handle():
|
||||
person_handle = family.get_mother_handle()
|
||||
else:
|
||||
#family does not contain parants
|
||||
return
|
||||
person = self.parent.db.get_person_from_handle(person_handle)
|
||||
self.parent.change_active_person(person)
|
||||
|
||||
@@ -1062,7 +1082,7 @@ class FamilyView:
|
||||
self.spouse_selection.select_iter(node)
|
||||
else:
|
||||
self.display_marriage(None)
|
||||
except KeyError:
|
||||
except KeyError,msg:
|
||||
WarningDialog(_('Database corruption detected'),
|
||||
_('A problem was detected with the database. Please '
|
||||
'run the Check and Repair Database tool to fix the '
|
||||
@@ -1119,16 +1139,6 @@ class FamilyView:
|
||||
else:
|
||||
return _("%s: unknown") % (l)
|
||||
|
||||
def delete_family_from(self,person_handle,trans):
|
||||
person = self.parent.db.get_person_from_handle(person_handle)
|
||||
person.remove_family_handle(self.family.get_handle())
|
||||
self.parent.db.remove_family(self.family.get_handle(),trans)
|
||||
flist = self.person.get_family_handle_list()
|
||||
if len(flist) > 0:
|
||||
self.family = self.parent.db.get_family_from_handle(flist[0])
|
||||
else:
|
||||
self.family = None
|
||||
|
||||
def display_marriage(self,family):
|
||||
if not family:
|
||||
self.family = None
|
||||
@@ -1137,6 +1147,7 @@ class FamilyView:
|
||||
return
|
||||
|
||||
hlist = family.get_child_handle_list()
|
||||
|
||||
self.child_model = DisplayModels.ChildModel(hlist,self.parent.db)
|
||||
self.child_list.set_model(self.child_model)
|
||||
self.family = self.parent.db.get_family_from_handle(family.get_handle())
|
||||
@@ -1404,12 +1415,14 @@ class FamilyView:
|
||||
self.parent.db.remove_family(fam,trans)
|
||||
|
||||
self.parent.db.commit_person(person,trans)
|
||||
n = person.get_primary_name().get_regular_name()
|
||||
n = NameDisplay.displayer.display(person)
|
||||
self.parent.db.transaction_commit(trans,_("Remove Parents (%s)") % n)
|
||||
|
||||
self.load_family()
|
||||
|
||||
def drag_data_received(self,widget,context,x,y,sel_data,info,time):
|
||||
if self.parent.db.readonly: # no DnD on readonly database
|
||||
return
|
||||
|
||||
if DdTargets.PERSON_LINK.drag_type in context.targets:
|
||||
drop_person_handle = sel_data.data
|
||||
@@ -1468,11 +1481,15 @@ class FamilyView:
|
||||
src = spath[0]
|
||||
child_list = self.family.get_child_handle_list()
|
||||
|
||||
# Check if the children were in order before the attempt to reorder
|
||||
was_ordered = self.birth_dates_in_order(child_list)
|
||||
|
||||
obj = child_list[src]
|
||||
child_list.remove(obj)
|
||||
child_list.insert(row,obj)
|
||||
|
||||
if self.birth_dates_in_order(child_list) == 0:
|
||||
# abort if a valid order was attempt to destroy
|
||||
if was_ordered and self.birth_dates_in_order(child_list) == False:
|
||||
WarningDialog(_("Attempt to Reorder Children Failed"),
|
||||
_("Children must be ordered by their birth dates."))
|
||||
return
|
||||
@@ -1483,6 +1500,8 @@ class FamilyView:
|
||||
self.load_family(self.family)
|
||||
|
||||
def sp_drag_data_received(self,widget,context,x,y,sel_data,info,time):
|
||||
if self.parent.db.readonly: # no DnD on readonly database
|
||||
return
|
||||
self.in_drag = True
|
||||
path = self.spouse_list.get_path_at_pos(x,y)
|
||||
if path == None:
|
||||
@@ -1523,6 +1542,8 @@ class FamilyView:
|
||||
if not node:
|
||||
return
|
||||
handle = self.child_model.get_value(node,_HANDLE_COL)
|
||||
if not handle:
|
||||
return
|
||||
bits_per = 8; # we're going to pass a string
|
||||
|
||||
if sel_data.target == DdTargets.PERSON_LINK.drag_type:
|
||||
@@ -1545,10 +1566,10 @@ class FamilyView:
|
||||
pname = self.person.get_primary_name()
|
||||
return (pname.get_surname_prefix(),pname.get_surname())
|
||||
elif self.family:
|
||||
fid = self.family.get_father_handle()
|
||||
f = self.parent.db.get_family_from_handle(fid)
|
||||
if f:
|
||||
pname = f.get_primary_name()
|
||||
father_handle = self.family.get_father_handle()
|
||||
if father_handle:
|
||||
father = self.parent.db.get_person_from_handle(father_handle)
|
||||
pname = father.get_primary_name()
|
||||
return (pname.get_surname_prefix(),pname.get_surname())
|
||||
return ("","")
|
||||
|
||||
@@ -1557,10 +1578,12 @@ class FamilyView:
|
||||
|
||||
def latin_american(self,val):
|
||||
if self.family:
|
||||
father = self.family.get_father_handle()
|
||||
mother = self.family.get_mother_handle()
|
||||
if not father or not mother:
|
||||
father_handle = self.family.get_father_handle()
|
||||
mother_handle = self.family.get_mother_handle()
|
||||
if not father_handle or not mother_handle:
|
||||
return ("","")
|
||||
father = self.parent.db.get_person_from_handle(father_handle)
|
||||
mother = self.parent.db.get_person_from_handle(mother_handle)
|
||||
fsn = father.get_primary_name().get_surname()
|
||||
msn = mother.get_primary_name().get_surname()
|
||||
if not father or not mother:
|
||||
@@ -1577,9 +1600,10 @@ class FamilyView:
|
||||
if self.person.get_gender() == RelLib.Person.MALE:
|
||||
fname = self.person.get_primary_name().get_first_name()
|
||||
elif self.family:
|
||||
f = self.family.get_father_handle()
|
||||
if f:
|
||||
fname = f.get_primary_name().get_first_name()
|
||||
father_handle = self.family.get_father_handle()
|
||||
if father_handle:
|
||||
father = self.parent.db.get_person_from_handle(father_handle)
|
||||
fname = father.get_primary_name().get_first_name()
|
||||
if fname:
|
||||
fname = fname.split()[0]
|
||||
if val == 0:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2000-2005 Donald N. Allingham
|
||||
# Copyright (C) 2000-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
|
||||
@@ -32,6 +32,7 @@ Provides the Berkeley DB (BSDDB) database backend for GRAMPS
|
||||
import os
|
||||
import time
|
||||
import locale
|
||||
import sets
|
||||
from gettext import gettext as _
|
||||
from bsddb import dbshelve, db
|
||||
|
||||
@@ -43,7 +44,7 @@ from bsddb import dbshelve, db
|
||||
from RelLib import *
|
||||
from GrampsDbBase import *
|
||||
|
||||
_DBVERSION = 5
|
||||
_DBVERSION = 8
|
||||
|
||||
def find_surname(key,data):
|
||||
return str(data[3].get_surname())
|
||||
@@ -54,9 +55,6 @@ def find_idmap(key,data):
|
||||
def find_fidmap(key,data):
|
||||
return str(data[1])
|
||||
|
||||
def find_eventname(key,data):
|
||||
return str(data[2])
|
||||
|
||||
class GrampsBSDDBCursor(GrampsCursor):
|
||||
|
||||
def __init__(self,source):
|
||||
@@ -71,6 +69,18 @@ class GrampsBSDDBCursor(GrampsCursor):
|
||||
def close(self):
|
||||
self.cursor.close()
|
||||
|
||||
def delete(self):
|
||||
self.cursor.delete()
|
||||
|
||||
class GrampsBSDDBDupCursor(GrampsBSDDBCursor):
|
||||
"""Cursor that includes handling for duplicate keys"""
|
||||
|
||||
def set(self,key):
|
||||
return self.cursor.set(str(key))
|
||||
|
||||
def next_dup(self):
|
||||
return self.cursor.next_dup()
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# GrampsBSDDB
|
||||
@@ -111,6 +121,9 @@ class GrampsBSDDB(GrampsDbBase):
|
||||
def get_media_cursor(self):
|
||||
return GrampsBSDDBCursor(self.media_map)
|
||||
|
||||
def version_supported(self):
|
||||
return self.metadata.get('version',0) <= _DBVERSION
|
||||
|
||||
def need_upgrade(self):
|
||||
return not self.readonly and self.metadata.get('version',0) < _DBVERSION
|
||||
|
||||
@@ -128,6 +141,7 @@ class GrampsBSDDB(GrampsDbBase):
|
||||
self.env.open(os.path.dirname(name), flags)
|
||||
|
||||
name = os.path.basename(name)
|
||||
self.save_name = name
|
||||
|
||||
self.family_map = self.dbopen(name, "family")
|
||||
self.place_map = self.dbopen(name, "places")
|
||||
@@ -170,10 +184,6 @@ class GrampsBSDDB(GrampsDbBase):
|
||||
self.oid_trans.set_flags(db.DB_DUP)
|
||||
self.oid_trans.open(name, "oidtrans", db.DB_HASH, flags=openflags)
|
||||
|
||||
self.eventnames = db.DB(self.env)
|
||||
self.eventnames.set_flags(db.DB_DUP)
|
||||
self.eventnames.open(name, "eventnames", db.DB_HASH, flags=openflags)
|
||||
|
||||
if not self.readonly:
|
||||
self.person_map.associate(self.surnames, find_surname, openflags)
|
||||
self.person_map.associate(self.id_trans, find_idmap, openflags)
|
||||
@@ -181,12 +191,15 @@ class GrampsBSDDB(GrampsDbBase):
|
||||
self.place_map.associate(self.pid_trans, find_idmap, openflags)
|
||||
self.media_map.associate(self.oid_trans, find_idmap, openflags)
|
||||
self.source_map.associate(self.sid_trans, find_idmap, openflags)
|
||||
self.event_map.associate(self.eventnames, find_eventname, openflags)
|
||||
self.undodb = db.DB()
|
||||
self.undodb.open(self.undolog, db.DB_RECNO, db.DB_CREATE)
|
||||
|
||||
self.metadata = self.dbopen(name, "meta")
|
||||
self.bookmarks = self.metadata.get('bookmarks')
|
||||
self.family_event_names = sets.Set(self.metadata.get('fevent_names',[]))
|
||||
self.individual_event_names = sets.Set(self.metadata.get('pevent_names',[]))
|
||||
self.family_attributes = sets.Set(self.metadata.get('fattr_names',[]))
|
||||
self.individual_attributes = sets.Set(self.metadata.get('pattr_names',[]))
|
||||
|
||||
gstats = self.metadata.get('gender_stats')
|
||||
|
||||
@@ -202,6 +215,90 @@ class GrampsBSDDB(GrampsDbBase):
|
||||
self.genderStats = GenderStats(gstats)
|
||||
return 1
|
||||
|
||||
def rebuild_secondary(self,callback=None):
|
||||
openflags = db.DB_CREATE
|
||||
|
||||
|
||||
# Repair secondary indices related to person_map
|
||||
self.id_trans.close()
|
||||
junk = db.DB(self.env)
|
||||
junk.remove(self.save_name,"idtrans")
|
||||
|
||||
self.surnames.close()
|
||||
junk = db.DB(self.env)
|
||||
junk.remove(self.save_name,"surnames")
|
||||
|
||||
# Repair secondary indices related to place_map
|
||||
self.pid_trans.close()
|
||||
junk = db.DB(self.env)
|
||||
junk.remove(self.save_name,"pidtrans")
|
||||
|
||||
# Repair secondary indices related to media_map
|
||||
self.oid_trans.close()
|
||||
junk = db.DB(self.env)
|
||||
junk.remove(self.save_name,"oidtrans")
|
||||
|
||||
# Repair secondary indices related to source_map
|
||||
self.sid_trans.close()
|
||||
junk = db.DB(self.env)
|
||||
junk.remove(self.save_name,"sidtrans")
|
||||
if callback:
|
||||
callback()
|
||||
|
||||
self.id_trans = db.DB(self.env)
|
||||
self.id_trans.set_flags(db.DB_DUP)
|
||||
self.id_trans.open(self.save_name, "idtrans",
|
||||
db.DB_HASH, flags=openflags)
|
||||
self.person_map.associate(self.id_trans, find_idmap, openflags)
|
||||
self.id_trans.sync()
|
||||
if callback:
|
||||
callback()
|
||||
|
||||
self.surnames = db.DB(self.env)
|
||||
self.surnames.set_flags(db.DB_DUP)
|
||||
self.surnames.open(self.save_name, "surnames",
|
||||
db.DB_HASH, flags=openflags)
|
||||
self.person_map.associate(self.surnames, find_surname, openflags)
|
||||
self.surnames.sync()
|
||||
if callback:
|
||||
callback()
|
||||
|
||||
self.fid_trans = db.DB(self.env)
|
||||
self.fid_trans.set_flags(db.DB_DUP)
|
||||
self.fid_trans.open(self.save_name, "fidtrans",
|
||||
db.DB_HASH, flags=openflags)
|
||||
self.family_map.associate(self.fid_trans, find_idmap, openflags)
|
||||
self.fid_trans.sync()
|
||||
if callback:
|
||||
callback()
|
||||
|
||||
self.pid_trans = db.DB(self.env)
|
||||
self.pid_trans.set_flags(db.DB_DUP)
|
||||
self.pid_trans.open(self.save_name, "pidtrans",
|
||||
db.DB_HASH, flags=openflags)
|
||||
self.place_map.associate(self.pid_trans, find_idmap, openflags)
|
||||
self.pid_trans.sync()
|
||||
if callback:
|
||||
callback()
|
||||
|
||||
self.sid_trans = db.DB(self.env)
|
||||
self.sid_trans.set_flags(db.DB_DUP)
|
||||
self.sid_trans.open(self.save_name, "sidtrans",
|
||||
db.DB_HASH, flags=openflags)
|
||||
self.source_map.associate(self.sid_trans, find_idmap, openflags)
|
||||
self.sid_trans.sync()
|
||||
if callback:
|
||||
callback()
|
||||
|
||||
self.oid_trans = db.DB(self.env)
|
||||
self.oid_trans.set_flags(db.DB_DUP)
|
||||
self.oid_trans.open(self.save_name, "oidtrans",
|
||||
db.DB_HASH, flags=openflags)
|
||||
self.media_map.associate(self.oid_trans, find_idmap, openflags)
|
||||
self.oid_trans.sync()
|
||||
if callback:
|
||||
callback()
|
||||
|
||||
def abort_changes(self):
|
||||
while self.undo():
|
||||
pass
|
||||
@@ -220,9 +317,12 @@ class GrampsBSDDB(GrampsDbBase):
|
||||
if not self.readonly:
|
||||
self.metadata['bookmarks'] = self.bookmarks
|
||||
self.metadata['gender_stats'] = self.genderStats.save_stats()
|
||||
self.metadata['fevent_names'] = list(self.family_event_names)
|
||||
self.metadata['pevent_names'] = list(self.individual_event_names)
|
||||
self.metadata['fattr_names'] = list(self.family_attributes)
|
||||
self.metadata['pattr_names'] = list(self.individual_attributes)
|
||||
self.metadata.close()
|
||||
self.surnames.close()
|
||||
self.eventnames.close()
|
||||
self.id_trans.close()
|
||||
self.fid_trans.close()
|
||||
self.oid_trans.close()
|
||||
@@ -254,6 +354,7 @@ class GrampsBSDDB(GrampsDbBase):
|
||||
self.name_group.delete(name)
|
||||
else:
|
||||
self.name_group[name] = group
|
||||
self.emit('person-rebuild')
|
||||
|
||||
def get_surname_list(self):
|
||||
names = self.surnames.keys()
|
||||
@@ -264,18 +365,8 @@ class GrampsBSDDB(GrampsDbBase):
|
||||
vals.sort(locale.strcoll)
|
||||
return vals
|
||||
|
||||
def get_person_event_type_list(self):
|
||||
names = self.eventnames.keys()
|
||||
a = {}
|
||||
for name in names:
|
||||
|
||||
a[unicode(name)] = 1
|
||||
vals = a.keys()
|
||||
vals.sort()
|
||||
return vals
|
||||
|
||||
def remove_person(self,handle,transaction):
|
||||
if not self.readonly:
|
||||
if not self.readonly and handle and str(handle) in self.person_map:
|
||||
person = self.get_person_from_handle(handle)
|
||||
self.genderStats.uncount_person (person)
|
||||
if transaction != None:
|
||||
@@ -284,7 +375,7 @@ class GrampsBSDDB(GrampsDbBase):
|
||||
self.person_map.delete(str(handle))
|
||||
|
||||
def remove_source(self,handle,transaction):
|
||||
if not self.readonly:
|
||||
if not self.readonly and handle and str(handle) in self.source_map:
|
||||
if transaction != None:
|
||||
old_data = self.source_map.get(str(handle))
|
||||
transaction.add(SOURCE_KEY,handle,old_data)
|
||||
@@ -292,7 +383,7 @@ class GrampsBSDDB(GrampsDbBase):
|
||||
self.source_map.delete(str(handle))
|
||||
|
||||
def remove_family(self,handle,transaction):
|
||||
if not self.readonly:
|
||||
if not self.readonly and handle and str(handle) in self.family_map:
|
||||
if transaction != None:
|
||||
old_data = self.family_map.get(str(handle))
|
||||
transaction.add(FAMILY_KEY,handle,old_data)
|
||||
@@ -300,25 +391,25 @@ class GrampsBSDDB(GrampsDbBase):
|
||||
self.family_map.delete(str(handle))
|
||||
|
||||
def remove_event(self,handle,transaction):
|
||||
if not self.readonly:
|
||||
if not self.readonly and handle and str(handle) in self.event_map:
|
||||
if transaction != None:
|
||||
old_data = self.event_map.get(str(handle))
|
||||
transaction.add(EVENT_KEY,handle,old_data)
|
||||
self.event_map.delete(str(handle))
|
||||
|
||||
def remove_place(self,handle,transaction):
|
||||
if not self.readonly:
|
||||
if not self.readonly and handle and str(handle) in self.place_map:
|
||||
if transaction != None:
|
||||
old_data = self.place_map.get(handle)
|
||||
old_data = self.place_map.get(str(handle))
|
||||
transaction.add(PLACE_KEY,handle,old_data)
|
||||
self.emit('place-delete',([handle],))
|
||||
self.place_map.delete(str(handle))
|
||||
|
||||
def remove_object(self,handle,transaction):
|
||||
if not self.readonly:
|
||||
if not self.readonly and handle and str(handle) in self.media_map:
|
||||
if transaction != None:
|
||||
old_data = self.media_map.get(handle)
|
||||
transaction.add(PLACE_KEY,handle,old_data)
|
||||
old_data = self.media_map.get(str(handle))
|
||||
transaction.add(MEDIA_KEY,handle,old_data)
|
||||
self.emit('media-delete',([handle],))
|
||||
self.media_map.delete(str(handle))
|
||||
|
||||
@@ -382,12 +473,31 @@ class GrampsBSDDB(GrampsDbBase):
|
||||
else:
|
||||
return None
|
||||
|
||||
def transaction_commit(self,transaction,msg):
|
||||
GrampsDbBase.transaction_commit(self,transaction,msg)
|
||||
self.family_map.sync()
|
||||
self.place_map.sync()
|
||||
self.source_map.sync()
|
||||
self.media_map.sync()
|
||||
self.event_map.sync()
|
||||
self.metadata.sync()
|
||||
self.person_map.sync()
|
||||
self.surnames.sync()
|
||||
self.name_group.sync()
|
||||
self.id_trans.sync()
|
||||
self.fid_trans.sync()
|
||||
self.pid_trans.sync()
|
||||
self.sid_trans.sync()
|
||||
self.oid_trans.sync()
|
||||
self.undodb.sync()
|
||||
|
||||
def upgrade(self):
|
||||
child_rel_notrans = [
|
||||
"None", "Birth", "Adopted", "Stepchild",
|
||||
"Sponsored", "Foster", "Unknown", "Other", ]
|
||||
|
||||
version = self.metadata.get('version',0)
|
||||
|
||||
if version < 2:
|
||||
self.upgrade_2(child_rel_notrans)
|
||||
if version < 3:
|
||||
@@ -396,6 +506,12 @@ class GrampsBSDDB(GrampsDbBase):
|
||||
self.upgrade_4(child_rel_notrans)
|
||||
if version < 5:
|
||||
self.upgrade_5()
|
||||
if version < 6:
|
||||
self.upgrade_6()
|
||||
if version < 7:
|
||||
self.upgrade_7()
|
||||
if version < 8:
|
||||
self.upgrade_8()
|
||||
self.metadata['version'] = _DBVERSION
|
||||
print 'Successfully finished all upgrades'
|
||||
|
||||
@@ -704,3 +820,76 @@ class GrampsBSDDB(GrampsDbBase):
|
||||
self.commit_source(source,None)
|
||||
data = cursor.next()
|
||||
cursor.close()
|
||||
|
||||
def upgrade_6(self):
|
||||
print "Upgrading to DB version 6"
|
||||
order = []
|
||||
for val in self.get_media_column_order():
|
||||
if val[1] != 6:
|
||||
order.append(val)
|
||||
self.set_media_column_order(order)
|
||||
|
||||
def upgrade_7(self):
|
||||
print "Upgrading to DB version 7"
|
||||
|
||||
self.genderStats = GenderStats()
|
||||
cursor = self.get_person_cursor()
|
||||
data = cursor.first()
|
||||
while data:
|
||||
handle,val = data
|
||||
p = Person(val)
|
||||
self.genderStats.count_person(p,self)
|
||||
data = cursor.next()
|
||||
cursor.close()
|
||||
|
||||
def upgrade_8(self):
|
||||
print "Upgrading to DB version 8"
|
||||
|
||||
cursor = self.get_person_cursor()
|
||||
data = cursor.first()
|
||||
while data:
|
||||
handle,val = data
|
||||
handle_list = val[8]
|
||||
if type(handle_list) == list:
|
||||
# Check to prevent crash on corrupted data (event_list=None)
|
||||
for handle in handle_list:
|
||||
event = self.get_event_from_handle(handle)
|
||||
self.individual_event_names.add(event.name)
|
||||
try:
|
||||
data = cursor.next()
|
||||
except:
|
||||
data = None
|
||||
cursor.close()
|
||||
|
||||
cursor = self.get_family_cursor()
|
||||
data = cursor.first()
|
||||
while data:
|
||||
handle,val = data
|
||||
handle_list = val[6]
|
||||
if type(handle_list) == list:
|
||||
# Check to prevent crash on corrupted data (event_list=None)
|
||||
for handle in handle_list:
|
||||
event = self.get_event_from_handle(handle)
|
||||
if event:
|
||||
self.family_event_names.add(event.name)
|
||||
data = cursor.next()
|
||||
cursor.close()
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
import sys
|
||||
|
||||
d = GrampsBSDDB()
|
||||
d.load(sys.argv[1],lambda x: x)
|
||||
|
||||
|
||||
## c = d.get_person_cursor()
|
||||
## data = c.first()
|
||||
## while data:
|
||||
## person = Person(data[1])
|
||||
## print data[0], person.get_primary_name().get_name(),
|
||||
## data = c.next()
|
||||
## c.close()
|
||||
|
||||
## print d.surnames.keys()
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import os
|
||||
import sets
|
||||
from gettext import gettext as _
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@@ -36,7 +37,6 @@ from gettext import gettext as _
|
||||
import gobject
|
||||
import gtk
|
||||
import gtk.glade
|
||||
import gnome
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -48,6 +48,9 @@ import RelLib
|
||||
import const
|
||||
import Utils
|
||||
import DateHandler
|
||||
import GrampsDisplay
|
||||
import QuestionDialog
|
||||
from WindowUtils import GladeIf
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -143,13 +146,13 @@ class GrampsPreferences:
|
||||
self.built = 0
|
||||
self.db = db
|
||||
self.top = gtk.glade.XML(const.prefsFile,"preferences","gramps")
|
||||
self.top.signal_autoconnect({
|
||||
"on_close_clicked" : self.on_close_clicked,
|
||||
"on_help_clicked" : self.on_propertybox_help,
|
||||
"on_tree_select_row" : self.select
|
||||
})
|
||||
self.gladeif = GladeIf(self.top)
|
||||
|
||||
self.gladeif.connect('button6','clicked',self.on_close_clicked)
|
||||
self.gladeif.connect('button7','clicked',self.on_propertybox_help)
|
||||
|
||||
self.window = self.top.get_widget("preferences")
|
||||
self.window.connect('delete_event',self.on_close_clicked)
|
||||
self.tree = self.top.get_widget("tree")
|
||||
self.store = gtk.TreeStore(gobject.TYPE_STRING)
|
||||
self.selection = self.tree.get_selection()
|
||||
@@ -187,31 +190,26 @@ class GrampsPreferences:
|
||||
auto.connect('toggled',
|
||||
lambda obj: GrampsKeys.save_autoload(obj.get_active()))
|
||||
|
||||
spell = self.top.get_widget("spellcheck")
|
||||
spell.set_active(GrampsKeys.get_spellcheck())
|
||||
spell.connect('toggled',
|
||||
lambda obj: GrampsKeys.save_spellcheck(obj.get_active()))
|
||||
|
||||
lds = self.top.get_widget("uselds")
|
||||
lds.set_active(GrampsKeys.get_uselds())
|
||||
lds.connect('toggled',
|
||||
lambda obj: GrampsKeys.save_uselds(obj.get_active()))
|
||||
|
||||
ipr = self.top.get_widget("iprefix")
|
||||
ipr.set_text(GrampsKeys.get_person_id_prefix())
|
||||
ipr.connect('changed',
|
||||
lambda obj: GrampsKeys.save_iprefix(obj.get_text()))
|
||||
opr = self.top.get_widget("oprefix")
|
||||
opr.set_text(GrampsKeys.get_object_id_prefix())
|
||||
opr.connect('changed',
|
||||
lambda obj: GrampsKeys.save_oprefix(obj.get_text()))
|
||||
fpr = self.top.get_widget("fprefix")
|
||||
fpr.set_text(GrampsKeys.get_family_id_prefix())
|
||||
fpr.connect('changed',
|
||||
lambda obj: GrampsKeys.save_fprefix(obj.get_text()))
|
||||
spr = self.top.get_widget("sprefix")
|
||||
spr.set_text(GrampsKeys.get_source_id_prefix())
|
||||
spr.connect('changed',
|
||||
lambda obj: GrampsKeys.save_sprefix(obj.get_text()))
|
||||
ppr = self.top.get_widget("pprefix")
|
||||
ppr.set_text(GrampsKeys.get_place_id_prefix())
|
||||
ppr.connect('changed',
|
||||
lambda obj: GrampsKeys.save_pprefix(obj.get_text()))
|
||||
self.ipr = self.top.get_widget("iprefix")
|
||||
self.ipr.set_text(GrampsKeys.get_person_id_prefix())
|
||||
self.opr = self.top.get_widget("oprefix")
|
||||
self.opr.set_text(GrampsKeys.get_object_id_prefix())
|
||||
self.fpr = self.top.get_widget("fprefix")
|
||||
self.fpr.set_text(GrampsKeys.get_family_id_prefix())
|
||||
self.spr = self.top.get_widget("sprefix")
|
||||
self.spr.set_text(GrampsKeys.get_source_id_prefix())
|
||||
self.ppr = self.top.get_widget("pprefix")
|
||||
self.ppr.set_text(GrampsKeys.get_place_id_prefix())
|
||||
|
||||
sb2 = self.top.get_widget("stat2")
|
||||
sb3 = self.top.get_widget("stat3")
|
||||
@@ -319,7 +317,61 @@ class GrampsPreferences:
|
||||
resemail.set_text(GrampsKeys.get_researcher_email())
|
||||
resemail.connect('changed',
|
||||
lambda obj: GrampsKeys.save_researcher_email(obj.get_text()))
|
||||
|
||||
def save_prefix(self):
|
||||
""" Validate the GRAMPS ID definitions to be usable"""
|
||||
ip = self.ipr.get_text()
|
||||
op = self.opr.get_text()
|
||||
fp = self.fpr.get_text()
|
||||
sp = self.spr.get_text()
|
||||
pp = self.ppr.get_text()
|
||||
|
||||
# Do validation to the GRAMPS-ID format strings
|
||||
invalid_chars = sets.Set("# \t\n\r")
|
||||
prefixes = [ip,op,fp,sp,pp]
|
||||
testnums = [1,234,567890]
|
||||
testresult = {} # used to test that IDs for different objects will be different
|
||||
formaterror = False # true if formatstring is invalid
|
||||
incompatible = False # true if ID string is possibly not GEDCOM compatible
|
||||
for p in prefixes:
|
||||
if invalid_chars & sets.Set(p):
|
||||
incompatible = True
|
||||
for n in testnums:
|
||||
try:
|
||||
testresult[p % n] = 1
|
||||
except:
|
||||
formaterror = True
|
||||
|
||||
idexampletext = _('Example for valid IDs are:\n'+
|
||||
'I%d which will be displayed as I123 or\n'+
|
||||
'S%06d which will be displayed as S000123.')
|
||||
if formaterror:
|
||||
QuestionDialog.ErrorDialog( _("Invalid GRAMPS ID prefix"),
|
||||
_("The GRAMPS ID prefix is invalid.\n")+
|
||||
idexampletext,
|
||||
self.window)
|
||||
return False
|
||||
elif incompatible:
|
||||
QuestionDialog.OkDialog( _("Incompatible GRAMPS ID prefix"),
|
||||
_("The GRAMPS ID prefix is in an unusual format and may"+
|
||||
" cause problems when exporting the database to GEDCOM format.\n")+
|
||||
idexampletext,
|
||||
self.window)
|
||||
elif len(testresult) != len(prefixes)*len(testnums):
|
||||
QuestionDialog.ErrorDialog( _("Unsuited GRAMPS ID prefix"),
|
||||
_("The GRAMPS ID prefix is unsuited because it does not"+
|
||||
" distinguish between different objects.\n")+
|
||||
idexampletext,
|
||||
self.window)
|
||||
return False
|
||||
|
||||
GrampsKeys.save_iprefix(ip)
|
||||
GrampsKeys.save_oprefix(op)
|
||||
GrampsKeys.save_fprefix(fp)
|
||||
GrampsKeys.save_sprefix(sp)
|
||||
GrampsKeys.save_pprefix(pp)
|
||||
return True
|
||||
|
||||
def select(self,obj):
|
||||
store,node = self.selection.get_selected()
|
||||
if node:
|
||||
@@ -328,10 +380,13 @@ class GrampsPreferences:
|
||||
self.panel.set_current_page(self.imap[path])
|
||||
|
||||
def on_propertybox_help(self,obj):
|
||||
gnome.help_display('gramps-manual','gramps-prefs')
|
||||
GrampsDisplay.help('gramps-prefs')
|
||||
|
||||
def on_close_clicked(self,obj):
|
||||
Utils.destroy_passed_object(self.window)
|
||||
def on_close_clicked(self,obj=None,dummy=None):
|
||||
if not self.save_prefix():
|
||||
return False
|
||||
self.gladeif.close()
|
||||
self.window.destroy()
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
or the UI code.
|
||||
"""
|
||||
import sys
|
||||
import os
|
||||
import types
|
||||
import traceback
|
||||
import inspect
|
||||
@@ -58,9 +59,8 @@ class GrampsDBCallback(object):
|
||||
Classes that want to emit signals need to inherit from the
|
||||
GrampsDBCallback class and ensure that its __init__ method
|
||||
is called. They then need to declare the signals that they
|
||||
can emit and the types of each callbacks arguments.
|
||||
|
||||
e.g.
|
||||
can emit and the types of each callbacks arguments. For
|
||||
example::
|
||||
|
||||
class TestSignals(GrampsDBCallback):
|
||||
|
||||
@@ -87,27 +87,23 @@ class GrampsDBCallback(object):
|
||||
Emitting signals
|
||||
================
|
||||
|
||||
Signals are emitted using the emit method.
|
||||
Signals are emitted using the emit method. e.g.::
|
||||
|
||||
e.g.
|
||||
|
||||
def emit_signal(self):
|
||||
self.emit('test-signal',(1,))
|
||||
|
||||
The parameters are passed as a tuple so a single parameter
|
||||
must be passed as a 1 element tuple.
|
||||
|
||||
|
||||
|
||||
Connecting callbacks to signals
|
||||
==============================
|
||||
===============================
|
||||
|
||||
Attaching a callback to the signals is similar to the gtk
|
||||
connect methods. e.g.
|
||||
connect methods. e.g.::
|
||||
|
||||
# connect to a function.
|
||||
def fn(i):
|
||||
print "got signal value = ", i
|
||||
print 'got signal value = ', i
|
||||
|
||||
t = TestSignals()
|
||||
t.connect('test-signal', fn)
|
||||
@@ -116,7 +112,7 @@ class GrampsDBCallback(object):
|
||||
class C(object):
|
||||
|
||||
def cb_func(self, i):
|
||||
print "got class signal = ", 1
|
||||
print 'got class signal = ', 1
|
||||
|
||||
r = R()
|
||||
t.connect('test-signal', r.cb_func)
|
||||
@@ -129,7 +125,7 @@ class GrampsDBCallback(object):
|
||||
key returned from the connect call. This key can be passed to the disconnect
|
||||
method to remove the callback from the signals callback list.
|
||||
|
||||
e.g.
|
||||
e.g.::
|
||||
|
||||
t = TestSignals()
|
||||
|
||||
@@ -137,7 +133,7 @@ class GrampsDBCallback(object):
|
||||
class C(object):
|
||||
|
||||
def cb_func(self, i):
|
||||
print "got class signal = ", 1
|
||||
print 'got class signal = ', 1
|
||||
|
||||
r = R()
|
||||
key = t.connect('test-signal', r.cb_func)
|
||||
@@ -155,7 +151,7 @@ class GrampsDBCallback(object):
|
||||
be used to block the signals for a single instance and disable_all_signals()
|
||||
can be used to block signals for the class:
|
||||
|
||||
e.g.
|
||||
e.g.::
|
||||
|
||||
|
||||
class TestSignals(GrampsDBCallback):
|
||||
@@ -213,7 +209,10 @@ class GrampsDBCallback(object):
|
||||
|
||||
# If this is True logging will be turned on for all instances
|
||||
# whether or not instance based logging is enabled.
|
||||
__LOG_ALL = False
|
||||
try:
|
||||
__LOG_ALL = int(os.environ.get('GRAMPS_SIGNAL',"0")) == 1
|
||||
except:
|
||||
__LOG_ALL = False
|
||||
|
||||
def __init__(self):
|
||||
self.__enable_logging = False # controls whether lots of debug
|
||||
|
||||