Compare commits
749
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fe0f125ad6 | ||
|
|
e8b63987ac | ||
|
|
461ee4fe5c | ||
|
|
d571516212 | ||
|
|
9208b8a3a8 | ||
|
|
9e013f6781 | ||
|
|
c460506e4f | ||
|
|
3fcb9411dc | ||
|
|
f7a50a0e74 | ||
|
|
6709d37526 | ||
|
|
fc9e5c2a4a | ||
|
|
e3eedb2219 | ||
|
|
b7487330a7 | ||
|
|
1025a38caa | ||
|
|
2054c467db | ||
|
|
789b72289c | ||
|
|
2e1132bec0 | ||
|
|
8ccfa43e56 | ||
|
|
40140859af | ||
|
|
e69e6ca338 | ||
|
|
fb29a77f83 | ||
|
|
06cca96ad0 | ||
|
|
2c49461529 | ||
|
|
73d19851ef | ||
|
|
16c8e61944 | ||
|
|
2fbf945309 | ||
|
|
cf184e72e8 | ||
|
|
1c27b785f4 | ||
|
|
da7e4cc763 | ||
|
|
5d2fd8cbda | ||
|
|
005beac33f | ||
|
|
ae53b401ce | ||
|
|
79c54aaedc | ||
|
|
4360976d73 | ||
|
|
5e9d79ac6f | ||
|
|
ee1d9be898 | ||
|
|
75b0b66269 | ||
|
|
c54f381737 | ||
|
|
2aa6b54de4 | ||
|
|
49bad564ae | ||
|
|
03ab64c4d5 | ||
|
|
f7bd062bdb | ||
|
|
c312c96987 | ||
|
|
6b2066c797 | ||
|
|
5d15ccb2a2 | ||
|
|
0095a07f12 | ||
|
|
bb5b03dd78 | ||
|
|
26351c18c9 | ||
|
|
f5861169fe | ||
|
|
4e2f98da02 | ||
|
|
95a0216287 | ||
|
|
03fb2ff1c2 | ||
|
|
17141a0536 | ||
|
|
528852b9b3 | ||
|
|
0de286e7a8 | ||
|
|
7979bf79fd | ||
|
|
7100c51a31 | ||
|
|
57f7502105 | ||
|
|
0f925a86f5 | ||
|
|
17f4d93363 | ||
|
|
cea48b618f | ||
|
|
290d6f7287 | ||
|
|
4d0e86a2e8 | ||
|
|
831c7f9c66 | ||
|
|
702e51dd47 | ||
|
|
f3555d0168 | ||
|
|
ecd6da40dd | ||
|
|
bedc4b8e74 | ||
|
|
8a8a21f85d | ||
|
|
c7350c53e2 | ||
|
|
52e76b506a | ||
|
|
ab52d0988e | ||
|
|
5935a315b2 | ||
|
|
793b13be67 | ||
|
|
48dfca57e2 | ||
|
|
a07aae2e30 | ||
|
|
8f5daac4a7 | ||
|
|
0cd6394b72 | ||
|
|
57d8dcd574 | ||
|
|
d5bb4da5a1 | ||
|
|
5c44d925e1 | ||
|
|
c7e2e09b42 | ||
|
|
669e4af0b7 | ||
|
|
88f7a701a3 | ||
|
|
52c087154f | ||
|
|
1eaa609058 | ||
|
|
5f0c2c1c54 | ||
|
|
6d39920e6f | ||
|
|
2b62729f52 | ||
|
|
1c856bb93b | ||
|
|
710e40425f | ||
|
|
bb3eecb365 | ||
|
|
8de8c69686 | ||
|
|
4379a09fd3 | ||
|
|
0dc2be6dd5 | ||
|
|
daa845492d | ||
|
|
cc28935b15 | ||
|
|
3d1ef5e595 | ||
|
|
44bdd14609 | ||
|
|
bec5a41829 | ||
|
|
c3206121df | ||
|
|
1e52204d94 | ||
|
|
82cd211d29 | ||
|
|
4244d70312 | ||
|
|
98cc9b3740 | ||
|
|
efcf0d1b83 | ||
|
|
c1024aa61d | ||
|
|
fe3efc57ab | ||
|
|
52f2d7b4ba | ||
|
|
9e0e256fd2 | ||
|
|
50625c654b | ||
|
|
1e10eabb15 | ||
|
|
a7b934003b | ||
|
|
1b2e91d365 | ||
|
|
ff17f57ba3 | ||
|
|
a206503a9b | ||
|
|
846a4d1a32 | ||
|
|
d75d9797c0 | ||
|
|
5767b9c3c8 | ||
|
|
d397b83dc8 | ||
|
|
7617891faf | ||
|
|
d096d269c7 | ||
|
|
e983578fff | ||
|
|
e10df9eb6d | ||
|
|
14acaca0b5 | ||
|
|
6ba958cc41 | ||
|
|
efbec440fd | ||
|
|
578daa825d | ||
|
|
29994242c7 | ||
|
|
69261509ee | ||
|
|
d3d51677f9 | ||
|
|
6602843f5a | ||
|
|
7ec4a429a4 | ||
|
|
16d40189c6 | ||
|
|
4b9dba0c53 | ||
|
|
dd80e4b80e | ||
|
|
e39e59c795 | ||
|
|
590a5cf59a | ||
|
|
f5b6389042 | ||
|
|
a06478f8ed | ||
|
|
a88ae843e3 | ||
|
|
71931e2e2e | ||
|
|
e817b3cc4e | ||
|
|
7519561027 | ||
|
|
54944968cc | ||
|
|
6689ebd133 | ||
|
|
e92a89e90f | ||
|
|
9d167aa0e4 | ||
|
|
3e54390047 | ||
|
|
40a81ae8eb | ||
|
|
ff6d9a0936 | ||
|
|
6d4e4bd12d | ||
|
|
77d533f930 | ||
|
|
90dcc9b9ea | ||
|
|
f823e4f126 | ||
|
|
a833dfb3ac | ||
|
|
f6a5c9166e | ||
|
|
ee5f2fa600 | ||
|
|
ba6254ca3f | ||
|
|
7258bd9fd6 | ||
|
|
49632d8789 | ||
|
|
5f101300af | ||
|
|
4859c14aaa | ||
|
|
d89557acf4 | ||
|
|
cdd3177b19 | ||
|
|
bb8ce0cce6 | ||
|
|
f4a8f21032 | ||
|
|
e894c4478f | ||
|
|
bb255c8529 | ||
|
|
fe87150c14 | ||
|
|
f6b81c9da8 | ||
|
|
e59aa58c63 | ||
|
|
3e2e8a837f | ||
|
|
c0ff650748 | ||
|
|
44104671b9 | ||
|
|
afa8e73486 | ||
|
|
27c38018fa | ||
|
|
56afb5bca9 | ||
|
|
96fcef2a84 | ||
|
|
7e7dd68b58 | ||
|
|
ab5a810990 | ||
|
|
f7d58f4c28 | ||
|
|
17dc7f7d23 | ||
|
|
5c6a0ebff3 | ||
|
|
949296a801 | ||
|
|
15e033c02c | ||
|
|
ede3707b51 | ||
|
|
0b6911f0da | ||
|
|
3fccf5a9cb | ||
|
|
80749afd09 | ||
|
|
cce5a26a9b | ||
|
|
83957ecdf0 | ||
|
|
9da8f705f6 | ||
|
|
ce4cd33139 | ||
|
|
804c03b286 | ||
|
|
bb3a1d3609 | ||
|
|
a9b4e22fb0 | ||
|
|
72d8d2d3cf | ||
|
|
b039a199d7 | ||
|
|
dda257bcd6 | ||
|
|
ce30c874d1 | ||
|
|
2f97ec7acd | ||
|
|
d2bad63603 | ||
|
|
9a699aef81 | ||
|
|
3a505745f3 | ||
|
|
2da2166004 | ||
|
|
6d67dff94c | ||
|
|
1f778e8ce1 | ||
|
|
81a1b675af | ||
|
|
1b7b20756f | ||
|
|
f24e29998d | ||
|
|
eff15c1ce3 | ||
|
|
2c15e382bd | ||
|
|
b3715efea9 | ||
|
|
cfe8c42d28 | ||
|
|
1ef467c9e3 | ||
|
|
7b3c86a4f5 | ||
|
|
7dc532c743 | ||
|
|
2951a0acf0 | ||
|
|
6d53c3a91c | ||
|
|
73705b08cd | ||
|
|
7ca19214d6 | ||
|
|
f123cac308 | ||
|
|
87955ed2e9 | ||
|
|
c61e79be76 | ||
|
|
135acff4e8 | ||
|
|
0910bebe56 | ||
|
|
805e07d09a | ||
|
|
e6324fe3d8 | ||
|
|
75d2f3dd00 | ||
|
|
9d3f17e377 | ||
|
|
aefa262cd1 | ||
|
|
a6ef08d4d3 | ||
|
|
9eb04593f5 | ||
|
|
45c06cac54 | ||
|
|
77124496e8 | ||
|
|
6bca4083cb | ||
|
|
3ba2253ac0 | ||
|
|
eb36980715 | ||
|
|
8366ceb896 | ||
|
|
5311cc7744 | ||
|
|
0213e65ff0 | ||
|
|
c82ec4c65b | ||
|
|
63cd18ebfb | ||
|
|
52b9fe8276 | ||
|
|
cd092897bc | ||
|
|
735e17a8cb | ||
|
|
08a4aeff7b | ||
|
|
0fb1742362 | ||
|
|
e4564ec86e | ||
|
|
76961fd675 | ||
|
|
2f9704c680 | ||
|
|
98a38cde57 | ||
|
|
b5e9795ccf | ||
|
|
4f14cbc12c | ||
|
|
b765d7eae0 | ||
|
|
3f28b5fcb5 | ||
|
|
903069fd34 | ||
|
|
03d0baa2bf | ||
|
|
3096c2b09a | ||
|
|
976edfbf1d | ||
|
|
2a5fee85c5 | ||
|
|
1b1452c7b7 | ||
|
|
021ea6baab | ||
|
|
50ed9268f9 | ||
|
|
f4832dd785 | ||
|
|
a94fc04890 | ||
|
|
488eaced8c | ||
|
|
9442c1ef7e | ||
|
|
67c8fd18cb | ||
|
|
1a0390f623 | ||
|
|
e9412a2479 | ||
|
|
c615b4dc32 | ||
|
|
450217a636 | ||
|
|
9a398cbcfd | ||
|
|
aff888a0b5 | ||
|
|
71ad5ffb04 | ||
|
|
100d6d0672 | ||
|
|
d96b6d19b8 | ||
|
|
bf4b3962bc | ||
|
|
51f44c2fd7 | ||
|
|
00c74d139a | ||
|
|
54c3b29793 | ||
|
|
d1ee70a0d2 | ||
|
|
c4f89c4034 | ||
|
|
8615021d37 | ||
|
|
c3c006c465 | ||
|
|
b389842af1 | ||
|
|
aba0303260 | ||
|
|
3bba6f57e4 | ||
|
|
f84c2ecf11 | ||
|
|
7a82b78ff9 | ||
|
|
39a0d8c648 | ||
|
|
62f8049d6a | ||
|
|
d65ad470d6 | ||
|
|
be98b673df | ||
|
|
f088d940a6 | ||
|
|
92328d4332 | ||
|
|
b4e4dbbcf2 | ||
|
|
4c6c052729 | ||
|
|
257b091cac | ||
|
|
abcf304ea7 | ||
|
|
dba752c328 | ||
|
|
0dd2b9d0fd | ||
|
|
520c81a355 | ||
|
|
807eab7cd9 | ||
|
|
2bc5f63406 | ||
|
|
344dd69a9d | ||
|
|
29b0e824a2 | ||
|
|
fb886c5954 | ||
|
|
06aa83e263 | ||
|
|
051311bbbd | ||
|
|
f4c94c48b4 | ||
|
|
c04b6f6fdf | ||
|
|
455cd151b7 | ||
|
|
4dd6abfe85 | ||
|
|
73402dfb05 | ||
|
|
a1c02bda9b | ||
|
|
67cf51bbf3 | ||
|
|
77cc12a42e | ||
|
|
290815cba8 | ||
|
|
979a477773 | ||
|
|
2e17c65a2c | ||
|
|
757854e566 | ||
|
|
a592f7b2fd | ||
|
|
03a89c73e3 | ||
|
|
45d3c43680 | ||
|
|
732f9fae16 | ||
|
|
c7f2b19784 | ||
|
|
30628cf6c7 | ||
|
|
36e43562e7 | ||
|
|
80b99925bd | ||
|
|
d78aa8cd8d | ||
|
|
4087ae800c | ||
|
|
fcfecef459 | ||
|
|
7131eec356 | ||
|
|
3ada5081b5 | ||
|
|
e4450cb34b | ||
|
|
97aedaae99 | ||
|
|
285fbf2c97 | ||
|
|
6e7e233155 | ||
|
|
436ca0df98 | ||
|
|
b17c230f56 | ||
|
|
3cb57426b1 | ||
|
|
acfbb0a763 | ||
|
|
255caf1ab7 | ||
|
|
1b824c410b | ||
|
|
7b8666e454 | ||
|
|
9e9d4e6369 | ||
|
|
508df3048d | ||
|
|
cb8bf0d00a | ||
|
|
44180b45e2 | ||
|
|
03b151b472 | ||
|
|
ec075e360b | ||
|
|
e4cbca4b73 | ||
|
|
4eda6d1afa | ||
|
|
496d4e1703 | ||
|
|
8d5f2bd050 | ||
|
|
96e4707c89 | ||
|
|
8fc03f85a1 | ||
|
|
b4b7911405 | ||
|
|
88373c0eb6 | ||
|
|
e8679a1eed | ||
|
|
b77378d2a1 | ||
|
|
f921bba612 | ||
|
|
58ffea1537 | ||
|
|
1ae319ef2a | ||
|
|
0340337107 | ||
|
|
bb1d59a29d | ||
|
|
d01afb3000 | ||
|
|
a99c02d9a7 | ||
|
|
dd43cde20e | ||
|
|
e356573605 | ||
|
|
6f7699480d | ||
|
|
3798175b50 | ||
|
|
6672230f23 | ||
|
|
8c35277267 | ||
|
|
38bfb760a3 | ||
|
|
df48f37a46 | ||
|
|
a02d7d0176 | ||
|
|
999a3937d1 | ||
|
|
a7e683d909 | ||
|
|
8e09235351 | ||
|
|
b934b0d424 | ||
|
|
9cc6e3a05e | ||
|
|
6cdc88e6f8 | ||
|
|
d6dd1dc221 | ||
|
|
21206af12b | ||
|
|
6506e85ea9 | ||
|
|
1d3202710a | ||
|
|
7078ca18ee | ||
|
|
b1fc676a55 | ||
|
|
5ef7739c60 | ||
|
|
a9748571f3 | ||
|
|
b4e5bd9eb2 | ||
|
|
e0e19492cd | ||
|
|
817f4b7205 | ||
|
|
4c7b24ba30 | ||
|
|
c7d552c238 | ||
|
|
b32e9d812e | ||
|
|
8da22fcbbf | ||
|
|
582d61e67e | ||
|
|
c110d9bc23 | ||
|
|
f4966ca793 | ||
|
|
2d0a5ed03c | ||
|
|
79074587f3 | ||
|
|
c660ed1728 | ||
|
|
e926934a49 | ||
|
|
b175b5cb60 | ||
|
|
8fe9069cbb | ||
|
|
63610d0651 | ||
|
|
754ac7966c | ||
|
|
51810ca973 | ||
|
|
b43b0fa77f | ||
|
|
f20dce51e8 | ||
|
|
254e196b2b | ||
|
|
edc214221e | ||
|
|
adfc1b8aee | ||
|
|
49f56bcc46 | ||
|
|
01efa725ce | ||
|
|
22b7f28edc | ||
|
|
780d83518d | ||
|
|
7247073a03 | ||
|
|
e5fedef66a | ||
|
|
8be3a475d1 | ||
|
|
c167cfa921 | ||
|
|
9eec554d4a | ||
|
|
c81b3596ec | ||
|
|
6c2179dc2e | ||
|
|
de1a4fec22 | ||
|
|
f0ebaa3bc1 | ||
|
|
263a082afe | ||
|
|
f2bc982c3d | ||
|
|
dd9ddab849 | ||
|
|
3046b0586c | ||
|
|
cfa278886b | ||
|
|
1c430a6b91 | ||
|
|
b0eb712933 | ||
|
|
51a7ad9483 | ||
|
|
d6e9d62fad | ||
|
|
3bac4a1036 | ||
|
|
1995a7068c | ||
|
|
5dc06d023d | ||
|
|
d98a1857dc | ||
|
|
7da8811327 | ||
|
|
375773d657 | ||
|
|
01060f0b0d | ||
|
|
36779c1229 | ||
|
|
5b7f5164db | ||
|
|
15db2dd603 | ||
|
|
97b15322d4 | ||
|
|
824bf7e40f | ||
|
|
56fa261ef2 | ||
|
|
1e9a3841cd | ||
|
|
e6ddedf6c6 | ||
|
|
325c3f22cc | ||
|
|
54be8d62f3 | ||
|
|
a40eca36d9 | ||
|
|
4b17ca4724 | ||
|
|
69aaec11a5 | ||
|
|
896b77a165 | ||
|
|
1b60193f77 | ||
|
|
1efab19f1e | ||
|
|
e667431dd5 | ||
|
|
cc7e4fda85 | ||
|
|
2490e2d07d | ||
|
|
e5c5a210b4 | ||
|
|
04a40c7a50 | ||
|
|
44c8e3c0f0 | ||
|
|
6f7242a773 | ||
|
|
358c3fc967 | ||
|
|
f1ca280441 | ||
|
|
482cecaa7e | ||
|
|
b6c57ab3c3 | ||
|
|
f3b5f75e37 | ||
|
|
7d9f4dcc80 | ||
|
|
224748eb96 | ||
|
|
2aec83f057 | ||
|
|
fd399323a6 | ||
|
|
bb6b3edee2 | ||
|
|
3f7ea4418c | ||
|
|
efcc115aa7 | ||
|
|
893c715a61 | ||
|
|
6bab78df21 | ||
|
|
29019eed98 | ||
|
|
d8c006e0f7 | ||
|
|
b8438dddeb | ||
|
|
4ba28c637e | ||
|
|
ae84040bc7 | ||
|
|
51e294f748 | ||
|
|
cb65fd93ca | ||
|
|
5b9600d835 | ||
|
|
cf80d17040 | ||
|
|
d4f906f22d | ||
|
|
d189e334d8 | ||
|
|
a48a94d872 | ||
|
|
8e5dc220dc | ||
|
|
dca2f610dc | ||
|
|
3d1833e307 | ||
|
|
aa221cc3c7 | ||
|
|
51b7d1c420 | ||
|
|
674d286f87 | ||
|
|
0161c4b917 | ||
|
|
de31a42fc8 | ||
|
|
9c508de5fd | ||
|
|
1b00d95ce4 | ||
|
|
78870decb8 | ||
|
|
1a5696eb2c | ||
|
|
269d38da2c | ||
|
|
99f77b0a88 | ||
|
|
264fdda4d0 | ||
|
|
8092b88ad4 | ||
|
|
3251e2ae88 | ||
|
|
f718c5f8b4 | ||
|
|
a96a446b47 | ||
|
|
5658411acf | ||
|
|
a4403d719e | ||
|
|
8597a10c40 | ||
|
|
d0c0045dc1 | ||
|
|
868abdc0d9 | ||
|
|
ebf88bf5c5 | ||
|
|
c3814a4e42 | ||
|
|
2a0b3afa4b | ||
|
|
52fe365919 | ||
|
|
414aac4c7e | ||
|
|
037e26a5a3 | ||
|
|
158d3a993b | ||
|
|
2ef35174d1 | ||
|
|
3249938b88 | ||
|
|
9b18083e48 | ||
|
|
04bdeb8321 | ||
|
|
67061d58e2 | ||
|
|
0a66bad41a | ||
|
|
e79535fe23 | ||
|
|
3c5c34d0c5 | ||
|
|
c9abe49d1e | ||
|
|
ca20641cb9 | ||
|
|
c558b8530b | ||
|
|
efb2a63492 | ||
|
|
1642757eb8 | ||
|
|
b0ee4684a1 | ||
|
|
4a561f44c7 | ||
|
|
4211dbf9f5 | ||
|
|
23c62de0d0 | ||
|
|
4179cf4792 | ||
|
|
4c20cbd48a | ||
|
|
5a98236239 | ||
|
|
792caf73b7 | ||
|
|
cfb9a4f664 | ||
|
|
59021550e2 | ||
|
|
acf775ea90 | ||
|
|
f4199b494c | ||
|
|
6fc7f4e0af | ||
|
|
d508ce7fb9 | ||
|
|
a4aa8f90c3 | ||
|
|
b33d7af284 | ||
|
|
e4e1f4ca05 | ||
|
|
72bedf0af7 | ||
|
|
bc39dda9e7 | ||
|
|
257275f169 | ||
|
|
60ba912100 | ||
|
|
2a8240b26d | ||
|
|
c33fc7b240 | ||
|
|
404647be05 | ||
|
|
0af818b0c1 | ||
|
|
8da84aaf23 | ||
|
|
d15a1376d3 | ||
|
|
57bbe542b5 | ||
|
|
cbdb0d5431 | ||
|
|
ff129e2f64 | ||
|
|
663745c7e8 | ||
|
|
5df6ad564b | ||
|
|
1f3e516780 | ||
|
|
25841f9540 | ||
|
|
94bd8470d7 | ||
|
|
21408ab9d2 | ||
|
|
31eecac590 | ||
|
|
58c6da3fb5 | ||
|
|
9c21b98601 | ||
|
|
8735f8a014 | ||
|
|
9acf512663 | ||
|
|
50e8161984 | ||
|
|
69be94843c | ||
|
|
ac5ed9fde0 | ||
|
|
2869e4d8a3 | ||
|
|
f2392f910d | ||
|
|
9e61809b17 | ||
|
|
9e2b935db1 | ||
|
|
aa47410902 | ||
|
|
c72af598b1 | ||
|
|
9a386574d8 | ||
|
|
90bdb0a840 | ||
|
|
4daf7a9c29 | ||
|
|
0452848f57 | ||
|
|
db92ab7d5a | ||
|
|
4dc67910fd | ||
|
|
ebc0f25bc7 | ||
|
|
67dcffee20 | ||
|
|
ae322dbdc8 | ||
|
|
208feceb03 | ||
|
|
b4946dee9c | ||
|
|
8f33163510 | ||
|
|
a3d43fdc32 | ||
|
|
befebe8b0c | ||
|
|
9ee777274c | ||
|
|
d3892c0e82 | ||
|
|
17ffc5460c | ||
|
|
09ca223f1b | ||
|
|
1223cbda1f | ||
|
|
01ce73fc04 | ||
|
|
e53603a1fc | ||
|
|
04d6ca3a49 | ||
|
|
9e668a528d | ||
|
|
96a903c57f | ||
|
|
75921ceaf4 | ||
|
|
310bece2bc | ||
|
|
565e570a71 | ||
|
|
29735eef7d | ||
|
|
cb0bd32aa3 | ||
|
|
469739633c | ||
|
|
495c7f310a | ||
|
|
353fc50770 | ||
|
|
ca9df38b11 | ||
|
|
fd55f0abff | ||
|
|
e1ca8303e5 | ||
|
|
a2879f1717 | ||
|
|
89ad092ac1 | ||
|
|
6c8de19fc5 | ||
|
|
dcf3caf946 | ||
|
|
f1e28c1e28 | ||
|
|
0d1aef889e | ||
|
|
cec9f55769 | ||
|
|
32dd3a2e14 | ||
|
|
23f69f5bc2 | ||
|
|
ec6e9d7ef8 | ||
|
|
6f52d7371e | ||
|
|
e5a5f212bc | ||
|
|
2a297623f2 | ||
|
|
ae11eceef7 | ||
|
|
babe13f811 | ||
|
|
a668f0d04f | ||
|
|
8c1a244b1e | ||
|
|
7aa4258046 | ||
|
|
1c5ae89d86 | ||
|
|
75bf103429 | ||
|
|
cf42e5a4b8 | ||
|
|
433677c905 | ||
|
|
6cbd6ed8d3 | ||
|
|
51df2c188d | ||
|
|
7180806afd | ||
|
|
8fc8668921 | ||
|
|
5dfcf2266f | ||
|
|
0ae51c9522 | ||
|
|
59bd9f040d | ||
|
|
1687616519 | ||
|
|
6bf33ab899 | ||
|
|
41a2a46713 | ||
|
|
fd4344bc07 | ||
|
|
ef395f49fe | ||
|
|
f0719c9eff | ||
|
|
9c5951a9e9 | ||
|
|
05dd44cfe2 | ||
|
|
df00dd1f32 | ||
|
|
7b6f46d595 | ||
|
|
fbcbdfa991 | ||
|
|
8335bbf20f | ||
|
|
2084bb5d0e | ||
|
|
dfe530fdd1 | ||
|
|
910d7199a2 | ||
|
|
b208b7a240 | ||
|
|
ee470deaca | ||
|
|
c149c5f2fa | ||
|
|
fd5433363e | ||
|
|
1ca875a2be | ||
|
|
43646e592b | ||
|
|
ca49b56774 | ||
|
|
c4bc2d6823 | ||
|
|
854ff911a3 | ||
|
|
965f7f7554 | ||
|
|
6c279945e0 | ||
|
|
6ca3821f81 | ||
|
|
caf47940c7 | ||
|
|
6a78d5196d | ||
|
|
fc0fdec25c | ||
|
|
2adcc7d5a3 | ||
|
|
fcaea3e1bb | ||
|
|
fc99f12568 | ||
|
|
1e5a6e1f87 | ||
|
|
db263ff905 | ||
|
|
e202f5cd19 | ||
|
|
2fbb9878c2 | ||
|
|
ba4453213a | ||
|
|
5f133ffaf2 | ||
|
|
cbac98894b | ||
|
|
3f368b2e02 | ||
|
|
1e73ab5be7 | ||
|
|
f428069ac6 | ||
|
|
adf3772b7a | ||
|
|
46cd191e49 | ||
|
|
9afe0cc181 | ||
|
|
19f8c3561c | ||
|
|
d3ed320636 | ||
|
|
6f4a114fdc | ||
|
|
5bec86c1f4 | ||
|
|
5b48691c3a | ||
|
|
be11466b35 | ||
|
|
0445004e7d | ||
|
|
f688d376f5 | ||
|
|
0a38a6352f | ||
|
|
2410435d8c | ||
|
|
6f1d6fa6b4 | ||
|
|
b1db542cb9 | ||
|
|
3d7479969f | ||
|
|
8f4dffa1df | ||
|
|
ffe9f31b0b | ||
|
|
b1af1c5435 | ||
|
|
94b6fcb93f | ||
|
|
4b25dde6e2 | ||
|
|
f83c077a7e | ||
|
|
323d775541 | ||
|
|
4448234281 | ||
|
|
d31ced9ca5 | ||
|
|
9706af03b4 | ||
|
|
b3ca17a90f | ||
|
|
4b13c95467 | ||
|
|
7864af3626 | ||
|
|
028f9582f5 | ||
|
|
cd32559282 | ||
|
|
3980fca903 | ||
|
|
462b0ea20b | ||
|
|
ba4b3eaef6 | ||
|
|
bf826637ab | ||
|
|
316ff4454a | ||
|
|
3266625669 | ||
|
|
90378f19c5 | ||
|
|
78fb08aa12 | ||
|
|
d081b75993 | ||
|
|
10e0e64ff4 | ||
|
|
3615e75d16 | ||
|
|
3c8cba0301 | ||
|
|
dde9ea8a90 | ||
|
|
b7c39e51c7 | ||
|
|
a216441029 | ||
|
|
89592545f3 | ||
|
|
70fff6253d | ||
|
|
84e76de2b1 | ||
|
|
fe289da983 | ||
|
|
371a8a8f89 | ||
|
|
1777cd4b29 |
No files matched your search
@@ -126,10 +126,10 @@ class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
|
||||
class-attribute-name-hint=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
|
||||
|
||||
# Regular expression matching correct function names
|
||||
function-rgx=[a-z_][a-z0-9_]{2,30}$
|
||||
function-rgx=(([a-z_][a-z0-9_]{2,30})|(_T_))$
|
||||
|
||||
# Naming hint for function names
|
||||
function-name-hint=[a-z_][a-z0-9_]{2,30}$
|
||||
function-name-hint=(([a-z_][a-z0-9_]{2,30})|(_T_))$
|
||||
|
||||
# Regular expression matching correct inline iteration names
|
||||
inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$
|
||||
|
||||
@@ -64,6 +64,8 @@ Martin Hawlisch martin.hawlisch@gmx.de
|
||||
|
||||
Nick Hall nick__hall@hotmail.com
|
||||
|
||||
Paul Culley paulr2787@gmail.com
|
||||
|
||||
Peter Landgren peter.talken@telia.com
|
||||
|
||||
Raphael Ackermann raphael.ackermann@gmail.com
|
||||
|
||||
@@ -0,0 +1,277 @@
|
||||
2019-09-14 SNoiraud <Serge.Noiraud@free.fr>
|
||||
|
||||
* gramps/gen/filters/rules/place/_withinarea.py: Fix deprecation
|
||||
warning in withinarea rule
|
||||
|
||||
2019-09-14 Nick Hall <nick-h@gramps-project.org>
|
||||
|
||||
* gramps/gui/grampsgui.py: Disable development warning message
|
||||
|
||||
2019-09-13 Jonas Hahnfeld <hahnjo@hahnjo.de>
|
||||
|
||||
* gramps/gen/plug/docgen/treedoc.py: Add options to sandclock in
|
||||
tree document generator This works and is actually needed to style the root node.
|
||||
|
||||
2019-09-11 SNoiraud <Serge.Noiraud@free.fr>
|
||||
|
||||
* gramps/gui/filters/sidebar/_personsidebarfilter.py: Using regex in
|
||||
the sidebar gives different result from previous gramps release. Fixes #11321
|
||||
|
||||
2019-09-12 Jérôme Rapinat <romjerome@yahoo.fr>
|
||||
|
||||
* po/fr.po: Add missing French translation strings
|
||||
|
||||
2019-09-10 Gil da Costa <gdacosta@sommier-colas.fr>
|
||||
|
||||
* po/fr.po: Update French translation
|
||||
|
||||
2019-09-09 prculley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/plugins/docgen/odfdoc.py: Fix odt output when db owner has
|
||||
XML unfriendly chars ('&') Fixes #11327
|
||||
|
||||
2019-09-11 John Bickmore <johnbickmore@users.noreply.github.com>
|
||||
|
||||
* README.md: Bump required Python version to 3.3 on Readme As mentioned on the release announcement
|
||||
|
||||
https://gramps-project.org/introduction-WP/2019/08/gramps-5-1-0-released/
|
||||
|
||||
2019-09-08 SNoiraud <Serge.Noiraud@free.fr>
|
||||
|
||||
* gramps/plugins/webreport/narrativeweb.py: Remove
|
||||
reload_custom_filters to conform to PR894
|
||||
|
||||
2019-09-07 prculley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/cli/grampscli.py: Fix CLI crash when generating reports Fixes #11318, #11213
|
||||
|
||||
2019-09-06 prculley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/gui/views/listview.py: Fix Statusbar HandleError on merge
|
||||
families Fixes #11320, #11294, #11279
|
||||
|
||||
2019-09-12 Avi Markovitz <avi.markovitz@gmail.com>
|
||||
|
||||
* po/he.po: Update Hebrew translation
|
||||
|
||||
2019-09-12 Matti Niemelä <matti.u.niemela@gmail.com>
|
||||
|
||||
* po/fi.po: Fix translation in Finnish
|
||||
|
||||
2019-09-12 Matti Niemelä <matti.u.niemela@gmail.com>
|
||||
|
||||
* po/fi.po: Update finnish translation
|
||||
|
||||
2019-09-11 vantu5z <vantu5z@mail.ru>
|
||||
|
||||
* po/ru.po: update Russian translation
|
||||
|
||||
2019-09-10 pehlm <par.ekholm@pekholm.org>
|
||||
|
||||
* po/sv.po: Update Swedish translation
|
||||
|
||||
2019-09-10 Mirko Leonhaeuser <mirko@leonhaeuser.de>
|
||||
|
||||
* po/de.po: Update German translation
|
||||
|
||||
2019-09-10 Nick Hall <nick-h@gramps-project.org>
|
||||
|
||||
* po/ar.po, po/bg.po, po/br.po, po/ca.po, po/cs.po, po/da.po,
|
||||
po/de.po, po/el.po, po/en_GB.po, po/eo.po, po/es.po, po/fi.po,
|
||||
po/fr.po, po/ga.po, po/he.po, po/hr.po, po/hu.po, po/is.po,
|
||||
po/it.po, po/ja.po, po/lt.po, po/mk.po, po/nb.po, po/nl.po,
|
||||
po/nn.po, po/pl.po, po/pt_BR.po, po/pt_PT.po, po/ro.po, po/ru.po,
|
||||
po/sk.po, po/sl.po, po/sq.po, po/sr.po, po/sr_Latn.po, po/sv.po,
|
||||
po/ta.po, po/tr.po, po/uk.po, po/vi.po, po/zh_CN.po, po/zh_HK.po,
|
||||
po/zh_TW.po: Merge po files and new template
|
||||
|
||||
2019-09-10 Nick Hall <nick-h@gramps-project.org>
|
||||
|
||||
* po/gramps.pot: Update translation template for new release
|
||||
|
||||
2019-08-27 Avi Markovitz <avi.markovitz@gmail.com>
|
||||
|
||||
* po/he.po: Update Hebrew translation
|
||||
|
||||
2019-07-11 Pedro Albuquerque <palbuquerque73@gmail.com>
|
||||
|
||||
* po/pt_PT.po: Update Portuguese (Europe) translation
|
||||
|
||||
2019-06-24 Milo Ivir <mail@milotype.de>
|
||||
|
||||
* po/hr.po: Update croatian translation - update with newest/current .pot file - translation is complete - corrections in wording and some missing accelerators
|
||||
|
||||
2019-09-02 prculley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/gui/widgets/styledtexteditor.py: Fix missing tooltip
|
||||
translations in the Note editor toolbar Fixes #11289
|
||||
|
||||
2019-09-01 SNoiraud <Serge.Noiraud@free.fr>
|
||||
|
||||
* gramps/gen/filters/rules/place/_withinarea.py: Avoid bad
|
||||
coordinates in the ref place
|
||||
|
||||
2019-08-28 SNoiraud <Serge.Noiraud@free.fr>
|
||||
|
||||
* gramps/gen/filters/rules/place/_withinarea.py: Avoid alphabetic
|
||||
characters in filter rules
|
||||
|
||||
2019-08-23 SNoiraud <Serge.Noiraud@free.fr>
|
||||
|
||||
* gramps/gen/filters/rules/place/_withinarea.py: Could not convert
|
||||
string to float by using withinarea filter rule + difference between sidebar filter
|
||||
and filter rule + some pylint improvements
|
||||
|
||||
2019-08-31 prculley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/gen/plug/docgen/graphdoc.py: Fix Graph outputs for multiple
|
||||
page PDF Postscript Fixes #11305
|
||||
|
||||
2019-08-31 prculley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/gen/plug/_pluginreg.py, gramps/gui/managedwindow.py,
|
||||
gramps/gui/plug/quick/_quickreports.py, gramps/gui/uimanager.py,
|
||||
gramps/gui/viewmanager.py, gramps/gui/views/tags.py,
|
||||
gramps/gui/widgets/grampletpane.py: Fix to make Gtk 'action names'
|
||||
always valid Fixes #11291
|
||||
|
||||
2019-08-31 prculley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/gui/uimanager.py, gramps/gui/views/tags.py: Fix missing
|
||||
menus/buttons when operating in non-English languages Fixes #11292
|
||||
|
||||
2019-08-31 SNoiraud <Serge.Noiraud@free.fr>
|
||||
|
||||
* gramps/gui/widgets/validatedmaskedentry.py: Cursor position error
|
||||
in lat and long fields Fixes #11310
|
||||
|
||||
2019-08-30 SNoiraud <Serge.Noiraud@free.fr>
|
||||
|
||||
* gramps/plugins/tool/removespaces.py: Avoid all characters looking
|
||||
like a dash hyphen non breaking hyphen figure dash em dash horizontal bar Fixes #11308
|
||||
|
||||
2019-08-30 SNoiraud <Serge.Noiraud@free.fr>
|
||||
|
||||
* data/css/Web_Mainz.css: Narrative web: Mainz Style sheet weird
|
||||
looking Fixes #11282
|
||||
|
||||
2019-09-02 SNoiraud <Serge.Noiraud@free.fr>
|
||||
|
||||
* gramps/plugins/view/relview.py: Set symbols for the active person
|
||||
|
||||
2019-08-28 SNoiraud <Serge.Noiraud@free.fr>
|
||||
|
||||
* gramps/plugins/view/relview.py: Set good symbols for marriage,
|
||||
baptism, cremation and burial
|
||||
|
||||
2019-08-28 SNoiraud <Serge.Noiraud@free.fr>
|
||||
|
||||
* gramps/plugins/view/relview.py: Reduce the size of the sexuality
|
||||
symbol in relview Fixes #11295
|
||||
|
||||
2019-08-28 prculley <paulr2787@gmail.com>
|
||||
|
||||
* gramps/gui/widgets/styledtexteditor.py: Fix exception when editing
|
||||
Note with italics/bold etc. in non English Fixes #11284
|
||||
|
||||
2019-08-27 Nick Hall <nick-h@gramps-project.org>
|
||||
|
||||
* gramps/gui/views/pageview.py: Restore keybindings for gramplet
|
||||
bars Resolves #11297.
|
||||
|
||||
2019-08-27 Nick Hall <nick-h@gramps-project.org>
|
||||
|
||||
* gramps/gui/plug/quick/_quickreports.py: Fix bug in web connection
|
||||
menu launching incorrect web site Resolves #11280.
|
||||
|
||||
2019-08-26 SNoiraud <Serge.Noiraud@free.fr>
|
||||
|
||||
* gramps/gui/autocomp.py: Translation problem when creating event
|
||||
filter If you create a filter with the rule name: "Events with a particular type" or "Events with <data>" The menu "Travel", "Academic"... are not
|
||||
translated Fixes #11293
|
||||
|
||||
2019-08-26 SNoiraud <Serge.Noiraud@free.fr>
|
||||
|
||||
* gramps/gui/configure.py, gramps/gui/widgets/grampletbar.py: Error
|
||||
when checking option to add Quit to Taskbar Fixes #11290
|
||||
|
||||
2019-08-25 SNoiraud <Serge.Noiraud@free.fr>
|
||||
|
||||
* gramps/plugins/webreport/narrativeweb.py,
|
||||
gramps/plugins/webreport/person.py: Make the narratives notes
|
||||
placement an option From 5.1 the narrative notes are placed just after the name, gender
|
||||
and age at death. This follow the feature request #6772. Some
|
||||
people want to have this placement an option to have the same
|
||||
functionality as before Fixes #11283
|
||||
|
||||
2019-08-24 Ross Gammon <rossgammon@mail.dk>
|
||||
|
||||
* debian/changelog: Finalise Debian changelog for 5.1.0 release
|
||||
|
||||
2019-08-24 Ross Gammon <rossgammon@mail.dk>
|
||||
|
||||
* debian/control: Bump gtk+ version to 3.12 & add
|
||||
gir1.2-geocodeglib-1.0 dependency
|
||||
|
||||
2019-08-24 Ross Gammon <rossgammon@mail.dk>
|
||||
|
||||
* debian/copyright: Update copyrights
|
||||
|
||||
2019-08-24 Ross Gammon <rossgammon@mail.dk>
|
||||
|
||||
* debian/changelog, debian/control: Merge last 5.0.2 debian release
|
||||
information into 51 maintenance branch
|
||||
|
||||
2019-08-23 Sebastian Schubert <schubert.seb@gmail.com>
|
||||
|
||||
* README.md: Add optional fontconfig package to README.md
|
||||
|
||||
2019-08-23 Sebastian Schubert <schubert.seb@gmail.com>
|
||||
|
||||
* NEWS: Fix typo in NEWS
|
||||
|
||||
2019-08-30 Zdeněk Hataš <zdenek.hatas@gmail.com>
|
||||
|
||||
* po/cs.po: Update Czech translation
|
||||
|
||||
2019-08-29 Zdeněk Hataš <zdenek.hatas@gmail.com>
|
||||
|
||||
* po/cs.po: Update Czech translation
|
||||
|
||||
2019-08-25 Mirko Leonhaeuser <mirko@leonhaeuser.de>
|
||||
|
||||
* po/de.po: German translation updated
|
||||
|
||||
2019-08-24 John Ralls <jralls@ceridwen.us>
|
||||
|
||||
* mac/Info.plist, mac/gramps.modules: Release Gramps-5.1.0 on Mac.
|
||||
|
||||
2019-08-16 John Ralls <jralls@ceridwen.us>
|
||||
|
||||
* mac/release.entitlements.plist: An entitlements plist for
|
||||
codesigning Gramps. Python is an interpreter and therefore needs to create executable
|
||||
memory. Since it doesn't know how to sign that memory it requires
|
||||
the allow-unsigned-executable-memory entitlement to run in a
|
||||
hardened runtime. One must apply this entitlement to both Gramps.app
|
||||
and Gramps.app/Contents/MacOS/dot when codesigning them.
|
||||
|
||||
2019-06-11 John Ralls <jralls@ceridwen.us>
|
||||
|
||||
* mac/gramps.modules: Fix graphviz and exiv2 download URLs.
|
||||
|
||||
2019-06-11 John Ralls <jralls@ceridwen.us>
|
||||
|
||||
* mac/gramps.modules: Update dependency versions and download paths.
|
||||
|
||||
2019-08-22 vantu5z <vantu5z@mail.ru>
|
||||
|
||||
* po/ru.po: update Russian translation
|
||||
|
||||
2019-08-22 pehlm <par.ekholm@pekholm.org>
|
||||
|
||||
* po/sv.po: Update Swedish translation with the new gramps.pot
|
||||
|
||||
2019-08-21 prculley <paulr2787@gmail.com>
|
||||
|
||||
* Bump to 5.1.1
|
||||
|
||||
@@ -133,7 +133,7 @@ Gramps is a [http://en.wikipedia.org/wiki/Gtk GTK] application. Gramps needs to
|
||||
|
||||
The Linux Genealogy CD can function as a live CD that you boot directly from. You can then run Linux and Gramps off the CD, even if your computer is entirely Windows.
|
||||
|
||||
An experimental Windows installer is available, however we do not have the manpower to offer support for Windows. A windows mailing list is available however and we do do our best to solve windows related problems.
|
||||
An Windows installer is available for 32 and 64 bit versions of windows from Windows versions 7 through 10. As with all other support, we do do our best to solve windows related problems.
|
||||
|
||||
|
||||
8. Does it work with the Mac?
|
||||
@@ -145,7 +145,7 @@ This present version of Gramps (2.2.x) does not appear to have been ported by th
|
||||
|
||||
9. What are the Minimum Specs to run Gramps?
|
||||
|
||||
We would recommend at least an 800x600 video display. For Gramps 2.0, the memory requirements have been reduced, and Gramps can run quite efficiently on a 256MB system, holding considerably more people. A system with 512MB should be able to hold around 200,000 people. Disk space requirements for databases are however considerably larger, with a typical database being several megabytes in size. For 120.000 people you must consider already 530Mb for the database. Pictures are stored on disk separately, so a large harddisk is necessary.
|
||||
We would recommend at least an 800x600 video display. For Gramps 5.x, Gramps can run quite efficiently on a 3GB memory system. A system with that much RAM should be able to hold more than 200,000 people. Disk space requirements for databases are however considerably larger, with a typical database being several megabytes in size. For 120.000 people you must consider already 530Mb for the database. Pictures are stored on disk separately, so a large harddisk is necessary.
|
||||
|
||||
|
||||
==Preferences==
|
||||
@@ -181,7 +181,7 @@ The nice thing about standards is that there never is a shortage of them. Gramps
|
||||
|
||||
15. How do I import data from another genealogy program into Gramps?
|
||||
|
||||
The best way is to create a new gramps database file (.grdb), and select the import option in the file menu. Here you select the GEDCOM you generated with the other program, and import it.
|
||||
The best way is to create a new gramps database file, and select the import option in the file menu. Here you select the GEDCOM you generated with the other program, and import it.
|
||||
|
||||
|
||||
16. Can I install Gramps on a Linux Web Server and use it via a web browser? This would enable my relations worldwide to access and update it.
|
||||
@@ -315,7 +315,7 @@ gramps-devel@lists.sf.net :-)
|
||||
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 gramps-bugs@lists.sf.net
|
||||
or (2) file your report with the bug tracker system at
|
||||
http://bugs.gramps-project.org (this function is also
|
||||
https://gramps-project.org/bugs/ (this function is also
|
||||
available by selecting "Help->Report a bug" from gramps main menu).
|
||||
|
||||
A good bug report would include:
|
||||
|
||||
@@ -1,3 +1,533 @@
|
||||
2019-09-14
|
||||
Version 5.1.1
|
||||
* Update translations: cs, de, fi, fr, he, hr, pt_PT, ru, sv
|
||||
* Disable development warning message
|
||||
* Add options to sandclock in tree document generator
|
||||
* Using regex in the sidebar gives different result from previous gramps release
|
||||
* Fix odt output when db owner has XML unfriendly chars
|
||||
* Update README
|
||||
- Bump required Python version to 3.3
|
||||
- Add optional fontconfig package
|
||||
* Fix CLI crash when generating reports
|
||||
* Fix Statusbar HandleError on merge families
|
||||
* Fix missing tooltip translations in the Note editor toolbar
|
||||
* Fix bugs in withinarea filter rule
|
||||
- Avoid bad coordinates in the ref place
|
||||
- Avoid alphabetic characters in filter rules
|
||||
- Could not convert string to float by using withinarea filter rule
|
||||
- Difference between sidebar filter and filter rule
|
||||
* Fix Graph outputs for multiple page PDF Postscript
|
||||
* Fix to make Gtk 'action names' always valid
|
||||
* Fix missing menus/buttons when operating in non-English languages
|
||||
* Fix ursor position error in lat and long fields
|
||||
* Avoid all characters looking like a dash in 'Clean input data' tool
|
||||
* Mainz Style sheet weird looking
|
||||
* Fix bugs in relationship view
|
||||
- Set symbols for the active person
|
||||
- Set good symbols for marriage, baptism, cremation and burial
|
||||
- Reduce the size of the sexuality symbol
|
||||
* Fix exception when editing Note with italics/bold etc. in non English
|
||||
* Restore keybindings for gramplet bars
|
||||
* Fix bug in web connection menu launching incorrect web site
|
||||
* Fix translation problem when creating event filter
|
||||
* Error when checking option to add Quit to Taskbar
|
||||
* Make the narratives notes placement an option
|
||||
|
||||
2019-08-21
|
||||
Version 5.1.0
|
||||
* Bump required Python version to 3.3, Gtk version 3.12
|
||||
* Update translations: ca, cs, da, de, en_GB, eo, fi, fr, hr, hu, is, it,
|
||||
nb, nn, pl, po, pt_BR, ru, sl, sv, uk, vi
|
||||
* Change default database backend to SQLite
|
||||
* New feature to allow Filter Rules to be added via addons.
|
||||
* New feature to use Genealogical symbols. Includes support for views and
|
||||
reports. Edit/Preferences/Genealogical Symbols to enable.
|
||||
* New: On restart after crash, offer to run Check & Repair
|
||||
* New CLI commands; 'safe' mode and 'default' to help user with debugging
|
||||
Gramps
|
||||
* Narrative web fix:
|
||||
- some strings not translated
|
||||
- The confidence and the date are not translated in the family map page.
|
||||
- The date doesn't use the specified date format.
|
||||
- Markers incorrectly placed. In the map pages, the markers are not placed
|
||||
where it should be. Reproducible when zoom in/zoom out.
|
||||
- Background not correctly set. If you use the Web_Basic-Cypress.css,
|
||||
the foreground and background use the same color, so you see nothing.
|
||||
You must hover the fields to see the text
|
||||
- Places list is not sorted depending on the selected language. If you
|
||||
start gramps in english or another language then try to generate a
|
||||
narrative web report in another language, the navigation alphabet is
|
||||
incorrect. This is true for the place list and the person list.
|
||||
- OSM forward all http resquest to https.
|
||||
- When we are on a mobile phone or a small device, we suppress the
|
||||
navigation tab. In place, we have a new icon on the upper left
|
||||
which is used to show the dropdown menu.
|
||||
- For Home, Introduction and Contact, If we have an image and this image
|
||||
contains regions, show the regions. We can go directly to the person page
|
||||
associated to this region. If we click on the image, we go directly to
|
||||
the associated media page. This will be true only if we selected
|
||||
"include images and media objects" and "create and only use thumbnail"
|
||||
is unselected
|
||||
- The first line identifying a family will be more legible.
|
||||
The link is not useful in the parents and pedigree section for the
|
||||
current person.
|
||||
- Adapt some css files.
|
||||
- sort the place references either by date or by name.
|
||||
- Add extra page to narrativeweb.
|
||||
- extrapage can now point to joomla, drupal, ...
|
||||
- add enclosed by and encloses (place)
|
||||
- Add compact Ancestry trees using Buchheim/Walker algorithm
|
||||
This enhancement adds a new 'compact' field to the Narrated Web Report.
|
||||
A compact tree is one that is not a simple binary layout but uses the
|
||||
algorithm of Buchheim/Walker to create a layout that is sensible but also
|
||||
compact. Creating a compact layout is slower than a simple binary tree
|
||||
but the results are significantly improved and do not leave large areas
|
||||
of whitespace where there are no nodes to be shown.
|
||||
- Make relationships optional in narrative web
|
||||
- Option to have Places and Sources pages
|
||||
- Narrative should come first right after the name, gender and parent
|
||||
information in individual page
|
||||
- References section at the bottom of each place with people related to this
|
||||
place have birth year behind it in parenthesis
|
||||
- Sort "Surname" web page by given name and birth date.
|
||||
- Surname list doesn't use default name format
|
||||
- Display Lat/Lon optionally on places list page
|
||||
* Update the uimanager to avoid deprecated Gtk warnings (changes things not
|
||||
visible to the user):
|
||||
- Add config option to use Toolbar Text
|
||||
- Fix duplicated accelerators in charts <ctrl>P for print is now
|
||||
<ctrl><shift>P
|
||||
* Geography:
|
||||
- fix pins very big when related to 2 places
|
||||
- add color for custom places name
|
||||
* fan charts view: Add option to show the Gramps ID in parenthesis in the fan
|
||||
chart.
|
||||
* Gramps 'Views' are now named in the window header
|
||||
* Allow Home person to be set in Relationship and Charts/Pedigree view
|
||||
* Filter Rule editor, save pane position
|
||||
* Person Sidebarfilter:
|
||||
- Fix Person Sidebarfilter when using 'Event' and Reg expressions
|
||||
- In personsidebarfilter, search on each part of name Instead of requiring
|
||||
that the entire search string matches a single one of the Person's names,
|
||||
the function will require that each word in the search string matches any
|
||||
of the Person's name fields.
|
||||
* filters rule has attribute: Check all values of an attribute type and not
|
||||
only the first one.
|
||||
* filters rule have children person filter: Check all families of a person
|
||||
for children and not only the first
|
||||
* Graph reports:
|
||||
- Better typography in graph reports Replace hyphen with en-dash.
|
||||
- enable Graphviz node port selection, optionable. This enables the
|
||||
headport and tailport attributes for all edges in the Graphviz file.
|
||||
The default (off) value makes the arrows between persons and/or family
|
||||
nodes attach their ends to the respective node at any position. When this
|
||||
option is selected, the position facing the node on the other side of the
|
||||
arrow is always chosen.
|
||||
- Fix graphs on Windows for font selection not working
|
||||
* relationship graph:
|
||||
- Allow an option to not use hexagons for those of unknown gender
|
||||
- Father and Mother are connected by an invisible line.
|
||||
- Add an option to omit "irrelevant" family nodes
|
||||
* Family lines graph: Replace rounded corners checkbox by dropdown
|
||||
It now allows rounded corners to be set more explicitly for different
|
||||
genders (None/Male/Female/Both).
|
||||
* Hourglass graph:
|
||||
- Add Ahnentafel option on hourglass
|
||||
- Do not use hyphen for living persons in hourglass graph
|
||||
* edit link: Add a mailto choice to Internet Address
|
||||
* New Clean input data tool: New tool to suppress leading and trailing spaces.
|
||||
This tool is looking for people and place names with leading or/and trailing
|
||||
spaces. For each entry which contains leading or trailing spaces, a row is
|
||||
added in a table. You can see where the spaces are for each row as the name
|
||||
is underlined. If you double click on the row, you can edit the Place or
|
||||
the Person.
|
||||
* CSV import: Add occupation and residence events and attributes in the import
|
||||
User can now add the following columns in the csv import file for a person:
|
||||
- Occupation description
|
||||
- Occupation date
|
||||
- Occupation place
|
||||
- Occupation source
|
||||
- Residence date
|
||||
- Residence place
|
||||
- Residence source
|
||||
- Attribute type
|
||||
- Attribute value
|
||||
- Attribute source
|
||||
the corresponding events will be added to the person. The user can put
|
||||
several lines for the same person if two occupations are known, one event
|
||||
per line will be created.
|
||||
- Fix CSV import for multiple place enclosed by on multiple imports
|
||||
* Pro-Gen import: expanded functionality and fixed minor bugs.
|
||||
* Enhance layout of the preferences dialog
|
||||
* Webcal:
|
||||
- better help msg for the after year option.
|
||||
- Include only events after year
|
||||
- add death event
|
||||
* Edit Person/Family/etc. Gallery Tab: Add buttons for arrangement of
|
||||
GalleryTab media order
|
||||
* Add tooltip for Gramplet Bar To improve discoverability of the Gramplet Bar
|
||||
Menu (Currently a nameless down arrow at end of each Gramplet bar title tab)
|
||||
* Use theme settings for the error state of entry widgets. This avoids
|
||||
problems with dark themes.
|
||||
* vCalendar export: Convenient display on mobile devices.
|
||||
* Add first class support for Occupation attribute
|
||||
* Statistics chart:
|
||||
- Add option to hide empty information on statistics chart
|
||||
- the Statistics Chart report will show a year as an ordinal number in
|
||||
Croatian.
|
||||
* Detailed descendant report: Show death/burial information only if person
|
||||
is probably dead
|
||||
* Birthday report:
|
||||
- Include death anniversaries as an option in the birthdays and anniversary
|
||||
reports.
|
||||
- Added an option to the birthday report that allows for the year of birth
|
||||
(or in the case of a wedding it's year) to be printed in the report.
|
||||
- Added symbols to the birthdays report showing the type of event
|
||||
- Fixed the birthday report so the dead icon is able to be set within the
|
||||
options window
|
||||
- Added a text option to have a string that will show after a persons name
|
||||
in the birthday and anniversary report. This works for both birthdays and
|
||||
anniversaries.
|
||||
* Selection Dialogs: fix to avoid long delay before display on large trees
|
||||
* Geography Maps:
|
||||
- Changed behavior of "Look up with Map Services" Removed the section that
|
||||
looked up by city, and country from the Map Services lookup for Google and
|
||||
Open Street Map.
|
||||
- Geocoding: associate a lat/lon to a place name
|
||||
* End of Line Report: sort generation during output
|
||||
* update the German date handler: added some missing Latin month names and
|
||||
some old German month names
|
||||
* Relative Gramplet: Person Relatives Tab should use the type from the
|
||||
relationship
|
||||
* Fix crash when addon/plugin contains an id with space
|
||||
* Fix Delete dialogs: to support canceling the multiple deletes operation
|
||||
more easily
|
||||
* Fix Find Duplicate People; exception when deleting someone shown outside
|
||||
of the tool
|
||||
* Fix CLI import so that different db types can be used
|
||||
* MetaData Viewer Gramplet: Fix so that metadata is actually detected and
|
||||
displayed
|
||||
* Fix exception when merging with active sidebar filter
|
||||
* Fix GEDCOM importer for SOUR/REFN combinations
|
||||
* Add support for GEDCOM import _FREL/_MREL tags in INDI/FAMC
|
||||
* Improve support for GEDCOM export of _FREL/_MREL in INDI/FAMC
|
||||
|
||||
2019-08-08
|
||||
Version 5.0.2
|
||||
Update translations: cs, da, de, fi, fr, hr, it, ru, sl, sv
|
||||
* Fix some Gramplets not updating during tree changes after db change.
|
||||
* Fix Events Grampslet for bad sort order on dates/ages
|
||||
* Fix References Tab to update on Deletes of items when editor is open
|
||||
* Fix GEDCOM import for better support of TMG
|
||||
* Fix Edit Link 'New' button to work
|
||||
* Fix GEDCOM importer to properly handle multiple surnames per 5.5.1
|
||||
* Narrative web: Sort problem with places.
|
||||
* Fix Navigator sidebar so can change view type with proper resize
|
||||
* Fix crash when using sidebar filter and merging in another view
|
||||
* Fix AncestorTree so add siblings to center person works
|
||||
* Fix graphs on Windows for font selection not working
|
||||
* Fix dbapi reindex_reference_maps tool to properly close transaction
|
||||
* Fix zoom via mouse wheel in media event editor selectionwidget, also fixes
|
||||
zooming with scroll bars always present
|
||||
* Fix metadata viewer so that metadata is actually detected and displayed
|
||||
* Avoid comma in a lat/lon entry field.
|
||||
* Avoid invalid characters and leading or trailing spaces in the entry field
|
||||
* Fix crash for multiple deletes in one transaction
|
||||
* Adjust translation strings for unmarried partners to give correct text in English
|
||||
* Fix failure after Gedcom import if missing objects were found
|
||||
* Mac: Fix none type has no len() error.
|
||||
Set correct font resolution when drawing text directly to cairo.
|
||||
* Fix Gedcom import so it doesn't create completely empty Birth events
|
||||
* Fix Relationship view so ages are according to Preferences
|
||||
* Fix Person Editor Events to properly update during external changes like
|
||||
Event delete or update.
|
||||
* Gedcom import/export fixes for mime and finding media
|
||||
* Fix Unhandled exception in Geography editor
|
||||
* Fix relationship path between filter rule when parent is missing
|
||||
* Fix Graphs that use graphdoc pdf via Ghostscript with multi-page for poor
|
||||
font rendering of some characters
|
||||
* Fix finddupes tool when run from Match Threshold screen again after merge.
|
||||
* Fix Gedcom import for multiple notes on OBJE (MULTIMEDIA_LINK)
|
||||
* Deal with SQLite db corrupted by None name mapping
|
||||
* Fix XML import to add tags to Events, Sources, Places, Repos, Cits when
|
||||
requested.
|
||||
* Fix for delete of a referenced primary obj while editing an added obj.
|
||||
Also fixed to update the referenced obj on changes from outside the editor.
|
||||
* Fix Place Tree view when using enclosed by sidebar filter
|
||||
* Fix EditFamily for adding a child to single parent family with Surname
|
||||
guessing set to combination.
|
||||
* Fix Descendent Tree report for crash when person has multiple families
|
||||
and one of them doesn't have a spouse.
|
||||
* Fix Name editor crash after clearing a group_as name on dbapi dbs
|
||||
* When we merge two objects:
|
||||
We should stay on the selected row in list views.
|
||||
In case we select the first family and select the gramps_id of the second
|
||||
family, the new gramps_id is ignored
|
||||
* Fix Relationship Graph; extra people when using filters & subgraphs
|
||||
* Fix Place Format Editor file save/load for difficult names
|
||||
* Fix Not all place types appears on family lines Graph
|
||||
* Remember location of Sort Events Tool
|
||||
* Fix Media editor when using double click the preview of added media
|
||||
* Avoid leading and trailing spaces when copy/paste coordinates from a
|
||||
map provider.
|
||||
|
||||
2018-12-20
|
||||
Version 5.0.1
|
||||
* Media Manager: add help button and remove '...'
|
||||
* Edit/Preferences: add Help button
|
||||
* Style Editor, Document Styles dialog: add help buttons
|
||||
* Fix Select Person dialog Help button URL
|
||||
* Fix Select Repository dialog Help button URL
|
||||
* Relationship Calculator: Add help button
|
||||
* Reorder Relationships dialog; add Help button
|
||||
* Generate Book Dialog; Fix Help URL
|
||||
* Manage Book dialog; add help button
|
||||
* Fix Detached Gramplets Help button URL when 'help_url' not in .gpr
|
||||
* Fix help URLs when they contain illegal characters and to match
|
||||
wiki section targetID algorithm Issue
|
||||
* Update translations: hu, hr, de, ru, fi, pt_PT, fr, sv, sl
|
||||
* Fix contents of enclosed_by secondary dbapi column
|
||||
(fixes scrambled places in tree view)
|
||||
* Google maps URL problem
|
||||
* Fix ODT reports with links when run in non-English languages
|
||||
* Allow addon Reports to specify a help button URL for options dialog
|
||||
* Fix Rebuild Secondary Indexes tool for dbapi backends.
|
||||
For dbapi backends, this tool will update the secondary columns that
|
||||
are used for indexing.
|
||||
* Fix dbapi set_name_group_mapping to properly close transaction
|
||||
* Fix Russian date handler crash when Russian language isn't installed
|
||||
* Fix Quickview for missing table data on some Gtk Versions
|
||||
* Fix startup messages when command line contains a bad filename
|
||||
* Restrict Place view Name col to the primary name while allowing searchbar
|
||||
to find alt and primary names
|
||||
* Fix Person Sidebarfilter when using 'Event' and Reg expressions
|
||||
* Fix Find Duplicate People; exception when deleting someone shown outside
|
||||
of the tool
|
||||
* Gedcom export, upgrade OBJE handling to Gedcom 5.5.1 style
|
||||
* Fix CSV import to set marriage event role to family
|
||||
* Update gramps bugtracker URL in all po files
|
||||
* Narrative Web:
|
||||
- thumbnails bad alignment.
|
||||
- thumbnails problems in some cases.
|
||||
- use latest version from openlayers.
|
||||
- fixes Space between place, description and the event note
|
||||
when there are many sources.
|
||||
- Change the css order between print and screen. The chosen theme can erase
|
||||
prior values.
|
||||
- Add a width for the source column in all themes.
|
||||
- Events difficult to read (screen and mobile)
|
||||
* Fix typo in CitationListModel for sort change
|
||||
* Fix Adding "ToDo" note crash when no active object
|
||||
* Fix Citation List view Source Last Changed Column to sort properly
|
||||
* Fix for re-entrant main window close when user hits 'x' again
|
||||
* Fix exception when closing early editor in tree of editors
|
||||
* Fix 'Generate Book' dialog for crash on 'x' close
|
||||
* Fix ToDo Gramplet for multiple attempts to edit a note
|
||||
* Fix Dashboard for multiple copies of a Gramplet
|
||||
* Fix Dashboard to recall minimized or undocked Gramplets
|
||||
* Fix Statusbar update to avoid intermittent exception on closed db
|
||||
* Fix FilterParser for much older 3.x custom_filters.xml files
|
||||
* Fix IsDuplicatedAncestorOf filter rule to avoid crash on tree loop
|
||||
* Fix StyledTextEditor EditLink for root text changed to zero length
|
||||
in the background Fixes
|
||||
* Fix AgeOnDate and some reports using SimpleAccess for missing surname
|
||||
* Fix crash when a filter with loop in definition is defined
|
||||
* Fix HandleErrors related to LDS
|
||||
* Fix ReferencedBySelection proxy for 'None' LDS Parents
|
||||
* Fix HandleError in Citations Gramplet for lds place missing
|
||||
* Change PlaceView drag from whole row to just icon during drag
|
||||
* Add drag Icon to drags from DisplayTabs Gramplet lists
|
||||
* Fix dialogs for 'Help' button closes the dialog, and non-functional 'Help'
|
||||
* Fix Family Tree manager for 'Help' button closes dialog
|
||||
* Fix selectors for 'Help' button closes dialog
|
||||
* Fix 'Generate Book' dialog for 'Help' button closes dialog
|
||||
* Fix TestcaseGenerator for 'Help' button closes dialog
|
||||
* Fix Selectors to enable the 'Help' buttons to actually work
|
||||
* Avoid HandleError when dragging an Added Family from EditFamily
|
||||
* Avoid HandleError when dragging an Added Person from EditPerson
|
||||
* Fix Clipboard rows cannot be sorted via drag/drop
|
||||
* Better default directory choices for import/export file dialogs
|
||||
* Records Report: call name not underlined in HTML
|
||||
* Fix InteractiveSearch for find before model is populated
|
||||
* Fix Gedcom export for incorrect escaping with @#DFRENCH R@
|
||||
* Fix reports for shared event attribute and note errors
|
||||
* Fix Fan and Descendant Fan charts in Quadrant and Half Circle modes
|
||||
The Descendant Fan chart had several bugs:
|
||||
1) a bug that affected the centering of the chart for these modes
|
||||
2) the chart was drawn in the wrong quadrant
|
||||
3) the centering of the chart for printing was incorrect
|
||||
(the legend was off the page some of the time).
|
||||
4) the sizing of the chart for printing was incorrect
|
||||
(for very small charts of one generation, the legend would overwrite the
|
||||
chart).
|
||||
The Fan Chart for the quadrant view:
|
||||
1) the centering of the chart for printing was incorrect
|
||||
(the legend was off the page some of the time).
|
||||
* Fixed issues in the Dutch relationship calculator
|
||||
- extended the ordinal and removed lists till 50, like the English lists.
|
||||
- Fixed bug in which uncles/aunts, nephews/nieces (niblings), siblings and
|
||||
cousins with an unknown gender show up as female.
|
||||
- Fixed some misspellings
|
||||
* Setting the year as an ordinal number in Croatian; two more reports now show
|
||||
a year as an ordinal number in Croatian
|
||||
* fix name-note is not being cleared in Complete Individual report
|
||||
* Fix View Column sizing so last column size setting is maintained
|
||||
* Fix view so column widths are preserved when using filters
|
||||
* fix the place-format option in Detailed Descendant and Detailed Ancestor text
|
||||
reports
|
||||
* Fix bsddb for person sort with empty Surname list
|
||||
* Webcal: link problems in some cases Year 2016 is highlighted by default
|
||||
instead of current year.
|
||||
* Webcal: Missing links when muliyear unselected
|
||||
* Geoclose: exception when a family has no father
|
||||
* Family Descendant Tree; fix HandleError
|
||||
* fix unhandled exception parsing "future dates" in some locales
|
||||
* fix Julian/Gregorian calendar issue when entering only year as date when
|
||||
running gramps in Norwegian
|
||||
* Fix and restore Statistics Gramplet to 4.2.x status
|
||||
* Fix Check and Repair to deal with bad references empty handle string
|
||||
* Speed up Check and Repair, backlinks check stage.
|
||||
* Fix strings containing deprecated (Python 3.6+) illegal escape sequences
|
||||
* Whatsnext: check if db is open, fixes error if not.
|
||||
* Fix usage of posixpath; should be os.path for os independence
|
||||
* Fix generate_checksum routine to avoid MemoryError crash
|
||||
* Fix corrupted Bookmarks that can happen after Gramps crash
|
||||
* Fix Merge Family when same parent is missing from both families
|
||||
* Fix <ctrl>c in view to get selected item to clipboard
|
||||
* Fix Quickview Gramplet so updates work when changing active
|
||||
* Fix place reference editor for bad cut/paste on set_latlongitude
|
||||
* Fix Find Database Loop Tool (bad import of _collections)
|
||||
* mac/gramps.modules: Switch included moduleset to gitlab.gnome.org.
|
||||
* mac/gramps.bundle: File copy doesn't work if the glob can match directories.
|
||||
* mac/gramps.bundle: Install the docs/gramps directory in the bundle.
|
||||
* debian/changelog: Update the Debian changelog after the 5.0.0 release
|
||||
* mac/Info.plist, mac/gramps.modules: Release Gramps-5.0.0 on Mac.
|
||||
|
||||
2018-07-24
|
||||
Version 5.0.0
|
||||
* Correct binary test logic for primary mask.
|
||||
* Fix BaseSelector to avoid long delay before display on large trees.
|
||||
* Export options > Gui alignment issue.
|
||||
* Fix dialog button order on non-Mac systems.
|
||||
* Update Debian directory after Gramps 5.0.0-rc1 release.
|
||||
* Fix Custom filter update when created via sidebar.
|
||||
* Fix Gramplet configure (View/Configure) for large options.
|
||||
* Fix IndexError crash in Statistics Charts.
|
||||
* [Mac] Change accel for Undo History. So that it doesn't conflict with a
|
||||
system binding for hiding the window.
|
||||
* Fix Family Lines/Family Colors picker for bad transient parent.
|
||||
* Fix import_as_dict to utilize user gramps_id prefixes.
|
||||
* Fix error when opening bsddb db in read-only mode.
|
||||
* Fix dbapi dbs for closeing read-only db crash.
|
||||
* Fix menus when operating with read-only db.
|
||||
* Fix Name formats to show all parts.
|
||||
* Fix dialogs for crash when canceling via 'x'.
|
||||
* Remove obsolete omeat-python-modules dependencies.
|
||||
* Update translations: cs, da, de, en_GB, eo, fi, hu, is, it, nb, pt_BR, ru, sk, uk, vi
|
||||
|
||||
2018-05-20
|
||||
Version 5.0.0-rc1
|
||||
* po/fi.po: Update Finnish translation
|
||||
* po/ru.po: Update Russian translation
|
||||
* po/de.po: update German translation
|
||||
* po/cs.po: Update Czech translation
|
||||
* po/ca.po: Update Catalan translation
|
||||
* Fix merge persons when removed person was the Home (default) person
|
||||
* Fix FanChartDesc for typo (copy/paste error). Bug occurs when selected
|
||||
person has more than 4 parents.
|
||||
* Fix Tag editor for multiple tag removes
|
||||
* In Narweb, Relationship to Center person reversed
|
||||
* Fix Citation Tree view for crash after plugin reload
|
||||
* Fix 'References' Gramplet for issue when activated during an import
|
||||
* disable Application Menu during import
|
||||
* Fix Person/Family/Event view updates on various associated changes
|
||||
* Fix Event view for changes in Main Participants
|
||||
* Fix Person/Event/Place views for update to a Place or enclosing place
|
||||
* Fix Person views to update on changes in birth/death event/place
|
||||
* Allow unicode characters in json export
|
||||
* Filtering problems in the geography view
|
||||
* Crash when looking for a place within an area
|
||||
* use same box margin for SVG and PDF.
|
||||
* Webcal crashes after Narrative Web site exists
|
||||
multiyear select option problem
|
||||
* Catch exceptions when loading recent files
|
||||
* Check that backend exists before loading database
|
||||
* Disable family tree manager features when a backend is unavailable
|
||||
If the default backend is unavailable, then reset it to bsddb.
|
||||
* Enclose tree report image path and file name in braces
|
||||
* Crash when selecting an old note, event, media, ...
|
||||
Try to sort on another column.
|
||||
* [NewRepositoryEditor]Fix help link
|
||||
* [ReorderGrampsID]Fix broken help link
|
||||
* Fix FTM for delete tree, followed by close; Title etc. shows old tree
|
||||
* Fix Relationship path between filter for silent fail
|
||||
* setup: Add configuration flag --no-compress-manpages.
|
||||
* glade: Don't strip newlines from builder files.
|
||||
* List sort by number for citation confidence level
|
||||
* Fix confidence level sort in list views -based on the date-sort code.
|
||||
* Fix confidence level tooltip -Stop run on text.
|
||||
* Fix error in place displayer when offset is outside valid range
|
||||
* Fix places in example.gramps
|
||||
- Moved Greek places into top level Greece entry & added English names.
|
||||
- Removed Puerto Rico as a country as part of USA
|
||||
* Use sgettext for Name Format dialog
|
||||
* Enable copying the birth & death fields for relationship view
|
||||
* Allow Copying of text fields for Details tabs in selected views with
|
||||
Details gramplets.
|
||||
- Person Details
|
||||
- Place Details
|
||||
- Repository Details
|
||||
* Geography: KML media objects not shown on map. Geography doesn't conform to the
|
||||
relative paths If a place has no coordinates, KML files are not displayed.
|
||||
* Fix Fan charts for scrolling/resizing of window; bad rendering
|
||||
* Fix Clipboard for HandleErrors during db changes
|
||||
* Fix Clipboard for Drop/Edit of Surname group in People Tree view
|
||||
* Fix Relationship Graph for extraneous families when using filter
|
||||
* Fix export gpkg when media files have fractional timestamps.
|
||||
* Remove reference to postgresql in core code
|
||||
* Move dbapi-specific code out of DbGeneric
|
||||
* Create db _schema_exists method
|
||||
* Fix place format option in place report
|
||||
* Use -1 instead of None for default place format
|
||||
* adds New [Place format:] option on the [Report Options (2)] tab
|
||||
* [Narrative Web Report] Incorrect heading for stepmother or stepfather
|
||||
* Cairodoc: Fix Book TOC and Index numbering and placement
|
||||
* Fix Fan Chart(s) so they don't crash when opened as last view
|
||||
* Fix Organize Tag editor for exception on 'x' close
|
||||
* selectors: Change BaseSelector so that selection is kept during Find/Clear
|
||||
* Fix multi-page Graph output to pdf with filenames containg spaces
|
||||
* Fix Clipboard for right-click on empty clipboard
|
||||
* docs/conf.py, docs/gen/gen_db.rst: Fix ImportError & update API docs year 2018
|
||||
- Fixes ImportError: No module named 'gramps.plugins.db.dummydb'
|
||||
- Update Copyright to 2018
|
||||
* Webreport: Privacy problem with the relation to the center person.
|
||||
* Fix Report Options when used with empty db
|
||||
* debian/changelog: Finalise debian/changelog for beta1 release.
|
||||
Also fix old syntax & trailing whitespace issues
|
||||
* debian/rules: Enable extra tests that were failing for alpha3
|
||||
* debian/patches: Patch person_rules_test.py To remove hard coded build path
|
||||
from import. Fixes FTBFS due to test failure.
|
||||
* debian/NEWS: Delete debian/NEWS file, only really applies in Debian
|
||||
* debian/changelog: First beta release of gramps 5.0
|
||||
* Sync debian directory with Debian experimental branch on salsa
|
||||
* Point Vcs URLs at the Gramps Project on Github
|
||||
* Correct spelling in debian/rules, node > nose
|
||||
* Delete gbp.conf, not required as gbp not used to build package
|
||||
* debian/gbp.conf: Remove gbp.conf, will not be using gbp to build
|
||||
deb package Avoids updating it for every branch used to build it
|
||||
* debian/rules: Fix spelling in d/rules node > nose
|
||||
* debian/control: Update Vcs URLs to point at Gramps Github repo
|
||||
* debian/NEWS, debian/README.Debian, debian/README.test,
|
||||
debian/compat, debian/control, debian/copyright, debian/gbp.conf,
|
||||
debian/gramps.docs, debian/rules, debian/source/format,
|
||||
debian/source/local-options, debian/tests/control,
|
||||
debian/tests/gramps-import-export, debian/upstream/metadata,
|
||||
debian/watch: Resync debian dir from Debian 5.0 experimental branch
|
||||
* debian/changelog: Update debian/changelog with releases since 4.0.3
|
||||
* Fix testsuite failure when build happens out of the source tree.
|
||||
Build path was hardcoded in an import in: person_rules_test.py
|
||||
* mac/Info.plist, mac/gramps.modules: Release Gramps 5.0.0-beta1 on MacOS.
|
||||
|
||||
2017-08-01
|
||||
Version 4.2.6
|
||||
* Fix HasCitation rule in citation filter sidebar
|
||||
@@ -675,8 +1205,8 @@ Version 3.4.4 of Gramps! "The Ministry of Silly Names", a maintenance release.
|
||||
* fix annoying errors on navigation related to citations gramplet and tag object.
|
||||
* listing the Family Trees can corrupt them.
|
||||
* various fix around handling Gedcom file format
|
||||
* fix citations and sources import on ProGen format
|
||||
* better date handling and better alternate translation support on some textual reports according to locale under windows
|
||||
* fix citations and sources import on ProGen format
|
||||
* better date handling and better alternate translation support on some textual reports according to locale under windows
|
||||
* avoid Errors when setting wrong value as markup for invalid dates (Preferences)
|
||||
* fix paragraph layout on PDF format or print output
|
||||
* New: New-Zealand holidays
|
||||
@@ -694,7 +1224,7 @@ Version 3.4.3 of Gramps! "Whenever life gets you down, Mrs. Brown", a maintenanc
|
||||
* Sorting (both in the main display window, and particularly in Narrative Web output) now uses PyICU (if that module is available). Inclusion of PyICU is 'strongly recommended'. This resolves a number of bugs particularly related to sorting of non-Latin characters, and sorting on MS Windows and Mac OS X. Some changes have been made in Narrative Web to support contractions for alphabetic indices.
|
||||
* The automatic Addon checking and download now works once again (the location used in Gramps 3.4.2 and before had been changed, so the the automatic process was no longer working).
|
||||
* Import from Pro-Gen has been updated (at last) to take account of the change to Citations (in 3.4.0)
|
||||
* Import and Export of address fields in GEDCOM has been improved so that the round-trip works properly.
|
||||
* Import and Export of address fields in GEDCOM has been improved so that the round-trip works properly.
|
||||
* GEDCOM Repositories not imported correctly from FTM for Windows and Heredis.
|
||||
* Fixes to a number of errors in filtering notes.
|
||||
* Fix some errors in determining whether someone is alive (e.g. for filtering out alive people).
|
||||
@@ -703,7 +1233,7 @@ Version 3.4.3 of Gramps! "Whenever life gets you down, Mrs. Brown", a maintenanc
|
||||
* Fixed update problems with citation bottombar gramplet (bug #6336)
|
||||
* Fixed Open Document Text output in Book report (bug #6457)
|
||||
* A number of changes to Narrative Web:
|
||||
** Media objects attached to Marriage events and Sources are not included in Narrative Web Site
|
||||
** Media objects attached to Marriage events and Sources are not included in Narrative Web Site
|
||||
** restructure the families index so families are indexed under both spouses, and the family name is normalised
|
||||
** separate out Families section in individual and families pages so individual page links to the family page and family page links to both people
|
||||
** normalise links to families so the link is only displayed if the family page is present, and the gid is included when appropriate
|
||||
@@ -721,7 +1251,7 @@ Version 3.4.3 of Gramps! "Whenever life gets you down, Mrs. Brown", a maintenanc
|
||||
** Implemented a generalised back reference function to display the 'References' section of all pages. This recursively displays references till one is found for which a page exists.
|
||||
** Removed list of people and families from heading of the event pages as these are now in the 'References' section.
|
||||
** Fixed bug "0005968: Narrated Web Site not copying Source Citations files such as jpg or pdf docs to web site
|
||||
** Fixed bug "0005946 GRAMPS failed to insert jpeg image into proper place for an event" by displaying a thumbnail for citation media in the 'Source References' section (with a link to the media page)
|
||||
** Fixed bug "0005946 GRAMPS failed to insert jpeg image into proper place for an event" by displaying a thumbnail for citation media in the 'Source References' section (with a link to the media page)
|
||||
** Tidy up media pages - remove unused parameters, use list of media items generated in first pass. Should fix bugs 2365, 5905 and 6009.
|
||||
** Tidy up sources pages - fix numbering of repositories, remove unused parameters, fix title of individual source pages
|
||||
** Bug: reset NarrWeb navigation menu layout when style sheet doesn't support it
|
||||
@@ -729,7 +1259,7 @@ Version 3.4.3 of Gramps! "Whenever life gets you down, Mrs. Brown", a maintenanc
|
||||
** Fix option to suppress Gramps ID (bug #6237)
|
||||
* a number of technical changes to Narrative Web
|
||||
** Removed a lot of redundant code and parameters (mainly connected with the old way of determining the objects to be included in the report).
|
||||
** Movement of some large chunks of code within the source file and some initial work towards GEPS 022: Narrative Website Refactor. Functionality should be unchanged.
|
||||
** Movement of some large chunks of code within the source file and some initial work towards GEPS 022: Narrative Website Refactor. Functionality should be unchanged.
|
||||
** Moved routines for calculating objects to be output so they can be part of default list building classes.
|
||||
* Various updated translations: da, de, es, fr, it, nb, nl, pt_BR, pt_PT, sv, uk
|
||||
|
||||
@@ -921,7 +1451,7 @@ Version 3.1.3 -- the "What name?" release.
|
||||
2009-06-06
|
||||
Version 3.1.2 -- the "Skip the impersonations" release.
|
||||
* Contains translation updates and small bug fixes. No new features.
|
||||
* ca, cs, de, fr, he, it, nb, nl, pl, pt_br, ru, sk, sv,
|
||||
* ca, cs, de, fr, he, it, nb, nl, pl, pt_br, ru, sk, sv,
|
||||
* fixes a failure in 'Check & Repair Database'
|
||||
* fixes to Gramplets
|
||||
* fixes to CLI regressions
|
||||
@@ -1034,7 +1564,7 @@ Version 2.2.5 -- the "Now go away or I shall taunt you a second time" release
|
||||
|
||||
Version 2.2.4 -- the "When you're chewing on life's gristle, Don't grumble, give a whistle" release
|
||||
* Improved handling of readonly files
|
||||
* Enhanced parsing of longitute and latitude and mapping
|
||||
* Enhanced parsing of longitute and latitude and mapping
|
||||
(Benny Malengier/Zsolt Foldvari)
|
||||
* Check and repair improvements
|
||||
* Reference map rebuild tool
|
||||
|
||||
@@ -10,20 +10,21 @@ Requirements
|
||||
============
|
||||
The following packages **MUST** be installed in order for Gramps to work:
|
||||
|
||||
* **Python** 3.2 or greater - The programming language used by Gramps. https://www.python.org/
|
||||
* **GTK** 3.10 or greater - A cross-platform widget toolkit for creating graphical user interfaces. http://www.gtk.org/
|
||||
* **Python** 3.3 or greater - The programming language used by Gramps. https://www.python.org/
|
||||
* **GTK** 3.12 or greater - A cross-platform widget toolkit for creating graphical user interfaces. http://www.gtk.org/
|
||||
* **pygobject** 3.12 or greater - Python Bindings for GLib/GObject/GIO/GTK+ https://wiki.gnome.org/Projects/PyGObject
|
||||
|
||||
The following three packages with GObject Introspection bindings (the gi packages)
|
||||
|
||||
* **cairo** - a 2D graphics library with support for multiple output devices. http://cairographics.org/
|
||||
* **cairo** 1.13.1 or greater - a 2D graphics library with support for multiple output devices. http://cairographics.org/
|
||||
* **Pycairo** 1.13.3 or greater - GObject Introspection bindings for cairo. https://github.com/pygobject/pycairo
|
||||
* **pango** - a library for laying out and rendering of text, with an emphasis on internationalization. http://www.pango.org/
|
||||
* **pangocairo** - Allows you to use Pango with Cairo http://www.pango.org/
|
||||
|
||||
* **librsvg2** - (SVG icon view) a library to render SVG files using cairo. http://live.gnome.org/LibRsvg
|
||||
* **xdg-utils** - Desktop integration utilities from freedesktop.org
|
||||
* **bsddb3** - Python bindings for Oracle Berkeley DB https://pypi.python.org/pypi/bsddb3/
|
||||
|
||||
* **sqlite3** - Python bindings for SQLite Database library
|
||||
|
||||
The following package is needed for full translation of the interface
|
||||
to your language:
|
||||
@@ -44,7 +45,7 @@ The following packages are **STRONGLY RECOMMENDED** to be installed:
|
||||
It may be osmgpsmap, osm-gps-map, or python-osmgpsmap,
|
||||
but the Python bindings for this must also be present, so gir1.2-osmgpsmap-1.0.
|
||||
Without this the GeoView will not be active, see
|
||||
https://gramps-project.org/wiki/index.php?title=Gramps_4.2_Wiki_Manual_-_Categories#Geography_Category
|
||||
https://gramps-project.org/wiki/index.php?title=Gramps_5.0_Wiki_Manual_-_Categories#Geography_Category
|
||||
|
||||
* **Graphviz**
|
||||
|
||||
@@ -65,6 +66,10 @@ The following packages are **STRONGLY RECOMMENDED** to be installed:
|
||||
(These are Python bindings for the ICU package.
|
||||
https://pypi.python.org/pypi/PyICU/)
|
||||
|
||||
* **Ghostscript**
|
||||
|
||||
Used by Graphviz reports to help create PDF's
|
||||
|
||||
The following packages are optional:
|
||||
------------------------------------
|
||||
* **gtkspell**
|
||||
@@ -77,12 +82,12 @@ The following packages are optional:
|
||||
|
||||
The GNU Revision Control System (RCS) can be used to manage
|
||||
multiple revisions of your family trees. See info at
|
||||
https://gramps-project.org/wiki/index.php?title=Gramps_4.2_Wiki_Manual_-_Manage_Family_Trees#Archiving_a_Family_Tree
|
||||
https://gramps-project.org/wiki/index.php?title=Gramps_5.0_Wiki_Manual_-_Manage_Family_Trees#Archiving_a_Family_Tree
|
||||
Only rcs is needed, NO python bindings are required
|
||||
|
||||
* **PIL**
|
||||
|
||||
Python Image Library is needed to crop
|
||||
Python Image Library (PILLOW) is needed to crop
|
||||
images and also to convert non-JPG images to
|
||||
JPG so as to include them in LaTeX output.
|
||||
(For Python3 a different source may be needed,
|
||||
@@ -110,6 +115,11 @@ The following packages are optional:
|
||||
ArchLinux : geocode-glib
|
||||
...
|
||||
|
||||
* **fontconfig**
|
||||
|
||||
Python bindings of fontconfig are required for displaying
|
||||
genealogical symbols
|
||||
|
||||
Optional packages required by Third-party Addons
|
||||
------------------------------------------------
|
||||
|
||||
@@ -124,6 +134,9 @@ Prerequistes required for the following Addons to work:
|
||||
* **Graph View** - Requires: PyGoocanvas and Goocanvas (python-pygoocanvas, gir1.2-goocanvas-2.0).
|
||||
( https://gramps-project.org/wiki/index.php?title=Graph_View )
|
||||
|
||||
* **Network Chart** - Requires: networkx and pygraphviz
|
||||
( https://gramps-project.org/wiki/index.php?title=NetworkChart )
|
||||
|
||||
* **PedigreeChart** - Can optionally use - numpy if installed
|
||||
( https://gramps-project.org/wiki/index.php?title=PedigreeChart )
|
||||
|
||||
|
||||
+201
-12
@@ -21,6 +21,8 @@ Copyright 2008 Jason M. Simanek
|
||||
Copyright 2009 Stephane Charette
|
||||
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
||||
Copyright 2011 Michiel D. Nauta
|
||||
Copyright 2018 Theo van Rijn
|
||||
Copyright (C) 2019 Serge Noiraud
|
||||
|
||||
This file is part of the GRAMPS program.
|
||||
|
||||
@@ -59,7 +61,7 @@ the page.
|
||||
|
||||
body {
|
||||
font-family: sans-serif;
|
||||
font-size: 90%;
|
||||
font-size: 100%;
|
||||
color: black;
|
||||
margin: 0px;
|
||||
background-color: #EEE;
|
||||
@@ -67,6 +69,13 @@ body {
|
||||
body > div {
|
||||
clear: both;
|
||||
}
|
||||
#outerwrapper {
|
||||
margin: 5px auto;
|
||||
width: 98%;
|
||||
}
|
||||
#outerwrapper > div {
|
||||
clear: both;
|
||||
}
|
||||
.content {
|
||||
background-color: white;
|
||||
border-top: solid 1px #999;
|
||||
@@ -75,9 +84,19 @@ body > div {
|
||||
float: right;
|
||||
margin: 2em;
|
||||
}
|
||||
#ThumbnailPreview div.snapshot {
|
||||
float: right;
|
||||
margin: 0;
|
||||
}
|
||||
.fullclear {
|
||||
clear: both;
|
||||
}
|
||||
/* Less whitespace on smaller real estate. */
|
||||
@media only screen and (max-width: 1080px) {
|
||||
.content {
|
||||
padding: 0em 0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
/* General Text
|
||||
----------------------------------------------------- */
|
||||
@@ -109,6 +128,7 @@ p#description {
|
||||
a {
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
a[href]:hover, a[href]:active {
|
||||
text-decoration: underline;
|
||||
@@ -204,6 +224,93 @@ div#alphanav ul li a:hover {
|
||||
color: white;
|
||||
}
|
||||
|
||||
/* Responsive navigation */
|
||||
a.navIcon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div#header::after {
|
||||
content: "";
|
||||
clear: both;
|
||||
display: table;
|
||||
}
|
||||
|
||||
div#nav::after {
|
||||
content: "";
|
||||
clear: both;
|
||||
display: table;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1080px) {
|
||||
|
||||
/* Use less & all realestate on mobiles. */
|
||||
div#outerwrapper {
|
||||
margin: 5px auto;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.nav {
|
||||
background: none; /* Works in IE too. */
|
||||
/*
|
||||
width: 200px;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
*/
|
||||
}
|
||||
|
||||
/* Undo some of the #nav styles - to enable the class .nav */
|
||||
.nav ul, #subnavigation ul {
|
||||
list-style: none;
|
||||
min-width: unset;
|
||||
width: 200px;
|
||||
height: 32px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.nav ul li, #subnavigation ul li {
|
||||
float: unset;
|
||||
display: unset
|
||||
}
|
||||
|
||||
/* Start with hidden menu options */
|
||||
/* .nav li:not(:first-child) {display: none;} */
|
||||
.nav li {display: none;}
|
||||
.nav ul {display: none;}
|
||||
|
||||
a.navIcon {
|
||||
font-size:1.3em;
|
||||
display: block;
|
||||
margin: 0.1em 0.4em 0.4em 0.4em;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
||||
.nav.responsive a.icon {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
margin-right: 10px;
|
||||
}
|
||||
.nav.responsive li {
|
||||
/* float: left; */
|
||||
display: block;
|
||||
text-align: left;
|
||||
background-color: #EEE;
|
||||
/* required by IE */
|
||||
float: left;
|
||||
clear: both;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
div#nav ul, #subnavigation ul {
|
||||
padding-left: 0px;
|
||||
}
|
||||
|
||||
.content {
|
||||
padding: 0em 0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
/* Main Table
|
||||
----------------------------------------------------- */
|
||||
table {
|
||||
@@ -330,6 +437,10 @@ table.IndividualList td.ColumnSurname {
|
||||
content: "";
|
||||
}
|
||||
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
#GalleryNav {
|
||||
@@ -362,7 +473,15 @@ table.IndividualList td.ColumnSurname {
|
||||
margin: 0px auto;
|
||||
display: block;
|
||||
border: solid 1px #999;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1600px) {
|
||||
#GalleryDisplay img {
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
#GalleryDetail h3 {
|
||||
text-align: center;
|
||||
}
|
||||
@@ -379,13 +498,10 @@ div#SourceDetail {
|
||||
overflow: hidden;
|
||||
}
|
||||
#Contact #summaryarea {
|
||||
width: 50em;
|
||||
margin: 2em auto;
|
||||
padding: 3em;
|
||||
background-color: #EEE;
|
||||
border: solid 1px #999;
|
||||
}
|
||||
#Contact img {
|
||||
#Contact #GalleryDisplay img {
|
||||
float: right;
|
||||
border: solid 1px #999;
|
||||
}
|
||||
@@ -399,6 +515,12 @@ div#SourceDetail {
|
||||
#Contact #city:after {
|
||||
content: ",";
|
||||
}
|
||||
@media only screen and (max-width: 1080px) {
|
||||
#Contact,
|
||||
#Contact #GalleryDisplay img {
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
/* Download
|
||||
----------------------------------------------------- */
|
||||
@@ -408,20 +530,29 @@ div#SourceDetail {
|
||||
|
||||
/* Subsection
|
||||
----------------------------------------------------- */
|
||||
#Home, #Introduction {
|
||||
overflow: hidden;
|
||||
}
|
||||
#Home img, #Introduction img {
|
||||
#Home #GalleryDisplay, #Introduction #GalleryDisplay {
|
||||
float: right;
|
||||
margin: 1em;
|
||||
}
|
||||
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img {
|
||||
display: block;
|
||||
max-width: 950px;
|
||||
height: auto;
|
||||
float: right;
|
||||
}
|
||||
@media only screen and (max-width: 1080px) {
|
||||
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
|
||||
#Contact #GalleryDisplay img {
|
||||
margin: 0 auto;
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
#Home p, #Introduction p {
|
||||
padding-left: 15px;
|
||||
}
|
||||
.subsection {
|
||||
clear: both;
|
||||
overflow: visible;
|
||||
overflow: hidden;
|
||||
}
|
||||
.subsection p {
|
||||
margin: 0px;
|
||||
@@ -444,13 +575,33 @@ div#families table.attrlist td.ColumnType {
|
||||
|
||||
/* Subsection : Gallery
|
||||
----------------------------------------------------- */
|
||||
#gallery {
|
||||
background-color: green;
|
||||
}
|
||||
#indivgallery {
|
||||
background-color: white;
|
||||
}
|
||||
#gallery .gallerycell {
|
||||
float: left;
|
||||
width: 130px;
|
||||
height: 150px;
|
||||
text-align: center;
|
||||
margin: 0;
|
||||
background-color: white;
|
||||
border-top: solid 1px #999;
|
||||
border-right: solid 1px #999;
|
||||
}
|
||||
#gallery .thumbnail {
|
||||
font-size: smaller;
|
||||
margin: 3em auto;
|
||||
}
|
||||
#indivgallery .thumbnail {
|
||||
float: left;
|
||||
max-width: 130px;
|
||||
max-height: 150px;
|
||||
width: 130px;
|
||||
font-size: smaller;
|
||||
text-align: center;
|
||||
margin: 0.8em 0.5em;
|
||||
background-color: white;
|
||||
}
|
||||
#indivgallery h4 + .thumbnail {
|
||||
margin-left: 15px;
|
||||
@@ -458,6 +609,40 @@ div#families table.attrlist td.ColumnType {
|
||||
* first thumnail on each next row should also have a margin-left
|
||||
* of 15 px. */
|
||||
}
|
||||
#gallery div.indexno {
|
||||
float: right;
|
||||
width: 1.8em;
|
||||
font-size: large;
|
||||
text-align: center;
|
||||
background-color: #CCC;
|
||||
color: #555;
|
||||
margin: 0;
|
||||
}
|
||||
#indivgallery div.date {
|
||||
float: right;
|
||||
width: 1.8em;
|
||||
font-size: large;
|
||||
text-align: center;
|
||||
background-color: #CCC;
|
||||
color: #555;
|
||||
}
|
||||
#indivgallery .thumbnail ul {
|
||||
font-size: smaller;
|
||||
list-style: none;
|
||||
padding: 0px;
|
||||
}
|
||||
#indivgallery .thumbnail ul li:first-child {
|
||||
border-style: none;
|
||||
}
|
||||
#indivgallery .thumbnail ul li {
|
||||
border-top: dashed 1px #CCC;
|
||||
border-top-style: dashed;
|
||||
padding-top: 0.5em;
|
||||
padding-bottom: 0.5em;
|
||||
}
|
||||
#gallery img {
|
||||
border: solid 1px #999;
|
||||
}
|
||||
#indivgallery img {
|
||||
border: solid 1px #999;
|
||||
}
|
||||
@@ -465,6 +650,9 @@ div#families table.attrlist td.ColumnType {
|
||||
/* ## remove this line and the comment markers from the line below to hide description in Indivifual Gallery
|
||||
display: none; */
|
||||
}
|
||||
div.snapshot div.thumbnail {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Subsection : Narrative
|
||||
----------------------------------------------------- */
|
||||
@@ -528,6 +716,7 @@ a.familymap {
|
||||
}
|
||||
#footer > * {
|
||||
background-color: #EEE;
|
||||
font-size: 80%;
|
||||
}
|
||||
#footer p#createdate {
|
||||
float: left;
|
||||
|
||||
+312
-34
@@ -3,6 +3,8 @@
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
||||
# Copyright (C) 2018 Theo van Rijn
|
||||
# Copyright (C) 2019 Serge Noiraud
|
||||
#
|
||||
# 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
|
||||
@@ -72,6 +74,13 @@ img {
|
||||
.thumbnail a:hover {
|
||||
background: none;
|
||||
}
|
||||
#outerwrapper {
|
||||
margin: 5px auto;
|
||||
width: 98%;
|
||||
}
|
||||
#outerwrapper > div {
|
||||
clear: both;
|
||||
}
|
||||
.content {
|
||||
background-color: #FFF;
|
||||
color: #000;
|
||||
@@ -94,6 +103,10 @@ img {
|
||||
width: 96px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
#ThumbnailPreview div.snapshot {
|
||||
float: right;
|
||||
margin: 0;
|
||||
}
|
||||
.fullclear {
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
@@ -101,6 +114,12 @@ img {
|
||||
padding: 0;
|
||||
clear: both;
|
||||
}
|
||||
/* Less whitespace on smaller real estate. */
|
||||
@media only screen and (max-width: 1080px) {
|
||||
.content {
|
||||
padding: 0em 0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
/* General Text
|
||||
----------------------------------------------------- */
|
||||
@@ -221,6 +240,55 @@ p#user_header {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
/* Navigation
|
||||
----------------------------------------------------- */
|
||||
div#nav, #subnavigation {
|
||||
border: solid 1px #EEE; /* needed by IE7 */
|
||||
background-color: #13A926;
|
||||
}
|
||||
#subnavigation ul {
|
||||
overflow: hidden;
|
||||
}
|
||||
div#nav ul, #subnavigation ul {
|
||||
list-style: none;
|
||||
margin: 0px;
|
||||
padding-left: 15px;
|
||||
}
|
||||
#subnavigation ul {
|
||||
border-bottom: solid 1px #999;
|
||||
}
|
||||
div#nav ul li, #subnavigation ul li {
|
||||
float: left;
|
||||
}
|
||||
div#nav ul li a, #subnavigation ul li a {
|
||||
display: block;
|
||||
font-size: smaller;
|
||||
font-weight: bold;
|
||||
padding: 5px;
|
||||
border-bottom: solid 1px #EEE;
|
||||
}
|
||||
div#nav ul li a:hover, #subnavigation ul li a:hover {
|
||||
text-decoration: none;
|
||||
background-color: #CCC;
|
||||
border-bottom: solid 1px black;
|
||||
}
|
||||
div#nav ul li.CurrentSection a {
|
||||
position: relative;
|
||||
top: 1px;
|
||||
border: solid 1px #999;
|
||||
border-bottom-style: none;
|
||||
background-color: white;
|
||||
}
|
||||
#nav ul li.CurrentSection a:hover {
|
||||
background-color: #903;
|
||||
}
|
||||
|
||||
/* Webcal
|
||||
----------------------------------------------------- */
|
||||
#subnavigation ul li.CurrentSection a {
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
/* Footer
|
||||
----------------------------------------------------- */
|
||||
div#footer {
|
||||
@@ -270,6 +338,129 @@ div#footer p#copyright img {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/* Responsive navigation */
|
||||
a.navIcon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div#header::after {
|
||||
content: "";
|
||||
clear: both;
|
||||
display: table;
|
||||
}
|
||||
|
||||
/* Alphabet Navigation
|
||||
----------------------------------------------------- */
|
||||
div#alphanav {
|
||||
background-color: #EEE;
|
||||
}
|
||||
div#alphanav ul {
|
||||
list-style: none;
|
||||
border-width: 2px 0px 4px 0px;
|
||||
border-style: solid;
|
||||
border-color: black;
|
||||
margin: 0px;
|
||||
padding-left: 15px;
|
||||
/* float container stretch, see www.quirksmode.org/css/clearing.html */
|
||||
overflow: hidden;
|
||||
}
|
||||
div#alphanav ul li {
|
||||
float: left;
|
||||
font-size: larger;
|
||||
font-weight: bold;
|
||||
}
|
||||
div#alphanav ul li:after {
|
||||
content: " |";
|
||||
}
|
||||
div#alphanav ul li a {
|
||||
display: block;
|
||||
padding: 4px 8px;
|
||||
line-height: 100%;
|
||||
float: left;
|
||||
|
||||
}
|
||||
div#alphanav ul li a:hover {
|
||||
text-decoration: none;
|
||||
background-color: black;
|
||||
color: white;
|
||||
}
|
||||
|
||||
div#nav::after {
|
||||
content: "";
|
||||
clear: both;
|
||||
display: table;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1080px) {
|
||||
|
||||
/* Use less & all realestate on mobiles. */
|
||||
div#outerwrapper {
|
||||
margin: 5px auto;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.nav {
|
||||
background: none; /* Works in IE too. */
|
||||
/*
|
||||
width: 200px;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
*/
|
||||
}
|
||||
|
||||
/* Undo some of the #nav styles - to enable the class .nav */
|
||||
.nav ul, #subnavigation ul {
|
||||
list-style: none;
|
||||
min-width: unset;
|
||||
width: 200px;
|
||||
height: 32px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.nav ul li, #subnavigation ul li {
|
||||
float: unset;
|
||||
display: unset
|
||||
}
|
||||
|
||||
/* Start with hidden menu options */
|
||||
/* .nav li:not(:first-child) {display: none;} */
|
||||
.nav li {display: none;}
|
||||
.nav ul {display: none;}
|
||||
|
||||
a.navIcon {
|
||||
font-size:1.3em;
|
||||
display: block;
|
||||
margin: 0.1em 0.4em 0.4em 0.4em;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
||||
.nav.responsive a.icon {
|
||||
/* position: absolute; */
|
||||
right: 0;
|
||||
top: 0;
|
||||
margin-right: 10px;
|
||||
}
|
||||
.nav.responsive li {
|
||||
/* float: left; */
|
||||
display: block;
|
||||
text-align: left;
|
||||
background-color: #13A926;
|
||||
/* required by IE */
|
||||
float: left;
|
||||
clear: both;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
div#nav ul, #subnavigation ul {
|
||||
padding-left: 0px;
|
||||
}
|
||||
|
||||
.content {
|
||||
padding: 0em 0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
/* Main Table
|
||||
----------------------------------------------------- */
|
||||
table.infolist {
|
||||
@@ -288,10 +479,6 @@ table.infolist thead tr th {
|
||||
table.infolist tr td {
|
||||
border-bottom: dashed 1px #000;
|
||||
vertical-align: middle;
|
||||
padding: 6px 0 6px 10px;
|
||||
}
|
||||
table.infolist tr td a {
|
||||
display: block;
|
||||
}
|
||||
table.infolist tr.BeginLetter td, table.infolist tr.BeginSurname td {
|
||||
border-top: solid 1px #000;
|
||||
@@ -351,15 +538,15 @@ div#Individuals {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
div#Individuals table.individuallist {
|
||||
div#Individuals table.IndividualList {
|
||||
border-bottom: solid 1px #000;
|
||||
}
|
||||
div#Individuals table.individuallist tbody tr td.ColumnSurname a:hover,
|
||||
div#Individuals table.individuallist tbody tr td.ColumnSurname a:active {
|
||||
div#Individuals table.IndividualList tbody tr td.ColumnSurname a:hover,
|
||||
div#Individuals table.IndividualList tbody tr td.ColumnSurname a:active {
|
||||
cursor: default;
|
||||
background: none;
|
||||
}
|
||||
div#Individuals table.individuallist tbody tr td.ColumnName a {
|
||||
div#Individuals table.IndividualList tbody tr td.ColumnName a {
|
||||
vertical-align: middle;
|
||||
}
|
||||
div#Individuals div table.infolist tr td p {
|
||||
@@ -493,7 +680,7 @@ table.eventlist tbody tr td.ColumnNotes {
|
||||
width: 20%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 17%;
|
||||
width: 5%;
|
||||
}
|
||||
table.eventlist tbody tr td.ColumnPerson {
|
||||
width: 35%;
|
||||
@@ -582,6 +769,26 @@ div#EventDetail table.eventlist tbody tr td.ColumnDate {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
#gallery {
|
||||
background-color: green;
|
||||
}
|
||||
#indivgallery {
|
||||
background-color: white;
|
||||
}
|
||||
#gallery .gallerycell {
|
||||
float: left;
|
||||
width: 130px;
|
||||
height: 150px;
|
||||
text-align: center;
|
||||
margin: 0;
|
||||
background-color: white;
|
||||
border-top: solid 1px #999;
|
||||
border-right: solid 1px #999;
|
||||
}
|
||||
#gallery .thumbnail {
|
||||
font-size: smaller;
|
||||
margin: 3em auto;
|
||||
}
|
||||
#Gallery table.infolist tbody tr td {
|
||||
border-bottom: dashed 1px #000;
|
||||
}
|
||||
@@ -631,7 +838,15 @@ div#EventDetail table.eventlist tbody tr td.ColumnDate {
|
||||
}
|
||||
#GalleryDisplay img {
|
||||
margin: 0 auto;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1600px) {
|
||||
#GalleryDisplay img {
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
#GalleryDetail div#summaryarea{
|
||||
margin: 0;
|
||||
padding: 2em 0 0 0;
|
||||
@@ -683,48 +898,51 @@ body#ThumbnailPreview div#references table.infolist tbody tr td.ColumnName {
|
||||
/* Contact
|
||||
------------------------------------------------- */
|
||||
#Contact #summaryarea {
|
||||
width: 500px;
|
||||
margin: 0 auto;
|
||||
padding: 3em;
|
||||
border: double 4px #000;
|
||||
background-color: #BCEAF6;
|
||||
}
|
||||
#Contact #summaryarea img {
|
||||
#Contact #summaryarea #GalleryDisplay img {
|
||||
float: right;
|
||||
margin: 0;
|
||||
}
|
||||
#researcher {
|
||||
@media only screen and (max-width: 1080px) {
|
||||
#Contact, #Contact #summaryarea #researcher,
|
||||
#Contact #summaryarea #GalleryDisplay img {
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
#Contact #summaryarea #researcher {
|
||||
font: normal 1.5em/1.4em serif;
|
||||
margin-top: .3em;
|
||||
}
|
||||
#researcher h3 {
|
||||
#Contact #summaryarea #researcher h3 {
|
||||
font: normal 1.2em/1.4em serif;
|
||||
padding: 0;
|
||||
text-align: left;
|
||||
}
|
||||
#researcher span {
|
||||
float: left;
|
||||
#Contact #summaryarea #researcher span {
|
||||
display: block;
|
||||
font: normal .9em/1.4em serif;
|
||||
margin-right: .4em;
|
||||
}
|
||||
#streetaddress {
|
||||
#Contact #summaryarea #streetaddress {
|
||||
width: 100%;
|
||||
}
|
||||
#locality, .locality {
|
||||
#Contact #summaryarea #locality, .locality {
|
||||
display: block;
|
||||
width: 100%;
|
||||
}
|
||||
#city:after {
|
||||
#Contact #summaryarea #city:after {
|
||||
content: ",";
|
||||
}
|
||||
#country {
|
||||
#Contact #summaryarea #country {
|
||||
clear: left;
|
||||
}
|
||||
#email {
|
||||
#Contact #summaryarea #email {
|
||||
clear: left;
|
||||
}
|
||||
#email a {
|
||||
#Contact #summaryarea #email a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
@@ -817,17 +1035,29 @@ div#AddressBookList table.addressbook tbody tr td.ColumnWebLinks {
|
||||
|
||||
/* Subsections
|
||||
----------------------------------------------------- */
|
||||
#Home, #Introduction, #Contact {
|
||||
padding: 2em 0 3em 0;
|
||||
#Home #GalleryDisplay, #Introduction #GalleryDisplay,
|
||||
#Contact #GalleryDisplay {
|
||||
float: right;
|
||||
margin: 0;
|
||||
border: 0px;
|
||||
}
|
||||
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
|
||||
#Contact #GalleryDisplay img {
|
||||
display: block;
|
||||
max-width: 950px;
|
||||
height: auto;
|
||||
float: right;
|
||||
}
|
||||
@media only screen and (max-width: 1080px) {
|
||||
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
|
||||
#Contact #GalleryDisplay img {
|
||||
margin: 0 auto;
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
#Home p, #Introduction p {
|
||||
margin: 0 20px 1em 20px;
|
||||
}
|
||||
#Home img, #Introduction img {
|
||||
float: right;
|
||||
margin: 0;
|
||||
padding: 0 20px 3em 2em;
|
||||
}
|
||||
#Home a, #Introduction a, #Contact a {
|
||||
color: #000;
|
||||
text-decoration: none;
|
||||
@@ -931,6 +1161,15 @@ div#families {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
div#families .infolist h4 {
|
||||
font: bold 1.2em sans-serif;
|
||||
color: #FFF;
|
||||
padding: 0px 0px 0px 20px;
|
||||
border-width: 4px 0px 4px 0px;
|
||||
border-style: solid;
|
||||
border-color: #00029D;
|
||||
background-color: #13A926;
|
||||
}
|
||||
div#families table.infolist tbody tr.BeginFamily {
|
||||
border-top: solid 1px #000;
|
||||
}
|
||||
@@ -1097,8 +1336,8 @@ div.Residence table.infolist tr td {
|
||||
margin: 0;
|
||||
float: left;
|
||||
width: 130px;
|
||||
height: 150px;
|
||||
text-align: center;
|
||||
background-color: white;
|
||||
}
|
||||
#indivgallery div.thumbnail a {
|
||||
display: block;
|
||||
@@ -1106,6 +1345,7 @@ div.Residence table.infolist tr td {
|
||||
padding: 0;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
#indivgallery div.thumbnail a img {
|
||||
padding: 0;
|
||||
@@ -1121,6 +1361,43 @@ div.Residence table.infolist tr td {
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
}
|
||||
#gallery div.indexno {
|
||||
float: right;
|
||||
width: 1.8em;
|
||||
font-size: large;
|
||||
text-align: center;
|
||||
background-color: #CCC;
|
||||
color: #555;
|
||||
margin: 0;
|
||||
}
|
||||
#indivgallery div.date {
|
||||
float: right;
|
||||
width: 1.8em;
|
||||
font-size: large;
|
||||
text-align: center;
|
||||
background-color: #CCC;
|
||||
color: #555;
|
||||
}
|
||||
#indivgallery .thumbnail ul {
|
||||
font-size: smaller;
|
||||
list-style: none;
|
||||
padding: 0px;
|
||||
}
|
||||
#indivgallery .thumbnail ul li:first-child {
|
||||
border-style: none;
|
||||
}
|
||||
#indivgallery .thumbnail ul li {
|
||||
border-top: dashed 1px #CCC;
|
||||
border-top-style: dashed;
|
||||
padding-top: 0.5em;
|
||||
padding-bottom: 0.5em;
|
||||
}
|
||||
#gallery img {
|
||||
border: solid 1px #999;
|
||||
}
|
||||
div.snapshot div.thumbnail {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Subsections : Narrative
|
||||
----------------------------------------------------- */
|
||||
@@ -1129,9 +1406,10 @@ div.narrative {
|
||||
}
|
||||
.narrative p {
|
||||
font: normal .9em/1.4em sans-serif;
|
||||
margin-top: .5em;
|
||||
margin-bottom: 0;
|
||||
padding: 0 20px 1em 20px;
|
||||
margin: 0.1em 0 0.2em 0;
|
||||
}
|
||||
i + div.grampsstylednote p {
|
||||
margin: 0.1em 0 0.2em 0;
|
||||
}
|
||||
|
||||
/* Subsections : References
|
||||
|
||||
+204
-14
@@ -21,6 +21,8 @@ Copyright 2008 Jason M. Simanek
|
||||
Copyright 2009 Stephane Charette
|
||||
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
||||
Copyright 2011 Michiel D. Nauta
|
||||
Copyright 2018 Theo van Rijn
|
||||
Copyright (C) 2019 Serge Noiraud
|
||||
|
||||
This file is part of the GRAMPS program.
|
||||
|
||||
@@ -59,7 +61,7 @@ the page.
|
||||
|
||||
body {
|
||||
font-family: sans-serif;
|
||||
font-size: 90%;
|
||||
font-size: 100%;
|
||||
color: black;
|
||||
margin: 0px;
|
||||
background-color: #454;
|
||||
@@ -67,6 +69,13 @@ body {
|
||||
body > div {
|
||||
clear: both;
|
||||
}
|
||||
#outerwrapper {
|
||||
margin: 5px auto;
|
||||
width: 98%;
|
||||
}
|
||||
#outerwrapper > div {
|
||||
clear: both;
|
||||
}
|
||||
.content {
|
||||
background-color: white;
|
||||
border-top: solid 1px #7C8F7C;
|
||||
@@ -75,9 +84,19 @@ body > div {
|
||||
float: right;
|
||||
margin: 2em;
|
||||
}
|
||||
#ThumbnailPreview div.snapshot {
|
||||
float: right;
|
||||
margin: 0;
|
||||
}
|
||||
.fullclear {
|
||||
clear: both;
|
||||
}
|
||||
/* Less whitespace on smaller real estate. */
|
||||
@media only screen and (max-width: 1080px) {
|
||||
.content {
|
||||
padding: 0em 0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
/* General Text
|
||||
----------------------------------------------------- */
|
||||
@@ -109,6 +128,7 @@ p#description {
|
||||
a {
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
a[href]:hover, a[href]:active {
|
||||
background-color: #9DBF9D;
|
||||
@@ -208,6 +228,98 @@ div#alphanav ul li a:hover {
|
||||
color: white;
|
||||
}
|
||||
|
||||
/* Responsive navigation */
|
||||
a.navIcon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div#header::after {
|
||||
content: "";
|
||||
clear: both;
|
||||
display: table;
|
||||
}
|
||||
|
||||
div#nav::after {
|
||||
content: "";
|
||||
clear: both;
|
||||
display: table;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1080px) {
|
||||
|
||||
/* Use less & all realestate on mobiles. */
|
||||
div#outerwrapper {
|
||||
margin: 5px auto;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.nav {
|
||||
background: none; /* Works in IE too. */
|
||||
/*
|
||||
width: 200px;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
*/
|
||||
}
|
||||
|
||||
/* Undo some of the #nav styles - to enable the class .nav */
|
||||
.nav ul, #subnavigation ul {
|
||||
list-style: none;
|
||||
min-width: unset;
|
||||
width: 200px;
|
||||
height: 32px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.nav ul li, #subnavigation ul li {
|
||||
float: unset;
|
||||
display: unset
|
||||
}
|
||||
|
||||
/* Start with hidden menu options */
|
||||
/* .nav li:not(:first-child) {display: none;} */
|
||||
.nav li {display: none;}
|
||||
.nav ul {display: none;}
|
||||
|
||||
a.navIcon {
|
||||
font-size:1.3em;
|
||||
display: block;
|
||||
margin: 0.1em 0.4em 0.4em 0.4em;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
||||
.nav.responsive a.icon {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
margin-right: 10px;
|
||||
}
|
||||
.nav.responsive li {
|
||||
/* float: left; */
|
||||
display: block;
|
||||
text-align: left;
|
||||
color: #454;
|
||||
background-color: #E0E6E0;
|
||||
/* required by IE */
|
||||
float: left;
|
||||
clear: both;
|
||||
width: 200px;
|
||||
}
|
||||
.nav.responsive li#CurrentSection a {
|
||||
color: #454;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
div#nav ul, #subnavigation ul {
|
||||
padding-left: 0px;
|
||||
}
|
||||
|
||||
.content {
|
||||
padding: 0em 0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
/* Main Table
|
||||
----------------------------------------------------- */
|
||||
table {
|
||||
@@ -373,6 +485,10 @@ table.IndividualList td.ColumnSurname {
|
||||
content: "";
|
||||
}
|
||||
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
#GalleryNav {
|
||||
@@ -408,7 +524,15 @@ table.IndividualList td.ColumnSurname {
|
||||
margin: 0px auto;
|
||||
display: block;
|
||||
border: solid 1px #7C8F7C;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1600px) {
|
||||
#GalleryDisplay img {
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
#GalleryDetail h3 {
|
||||
text-align: center;
|
||||
}
|
||||
@@ -425,13 +549,10 @@ div#SourceDetail {
|
||||
overflow: hidden;
|
||||
}
|
||||
#Contact #summaryarea {
|
||||
width: 40em;
|
||||
margin: 2em auto;
|
||||
padding: 3em;
|
||||
background-color: #E0E6E0;
|
||||
border: solid 1px #7C8F7C;
|
||||
}
|
||||
#Contact img {
|
||||
#Contact #summaryarea #GalleryDisplay img {
|
||||
float: right;
|
||||
border: solid 1px #7C8F7C;
|
||||
}
|
||||
@@ -458,20 +579,31 @@ div#SourceDetail {
|
||||
|
||||
/* Subsection
|
||||
----------------------------------------------------- */
|
||||
#Home, #Introduction {
|
||||
overflow: hidden;
|
||||
}
|
||||
#Home img, #Introduction img {
|
||||
#Home #GalleryDisplay, #Introduction #GalleryDisplay, #Contact #GalleryDisplay {
|
||||
float: right;
|
||||
margin: 1em;
|
||||
margin: 0;
|
||||
border: 0px;
|
||||
}
|
||||
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
|
||||
#Contact #GalleryDisplay img {
|
||||
display: block;
|
||||
max-width: 950px;
|
||||
height: auto;
|
||||
float: right;
|
||||
}
|
||||
@media only screen and (max-width: 1080px) {
|
||||
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
|
||||
#Contact #GalleryDisplay img {
|
||||
margin: 0 auto;
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
#Home p, #Introduction p {
|
||||
padding-left: 15px;
|
||||
}
|
||||
.subsection {
|
||||
clear: both;
|
||||
overflow: visible;
|
||||
overflow: hidden;
|
||||
}
|
||||
.subsection p {
|
||||
margin: 0px;
|
||||
@@ -494,13 +626,33 @@ div#families table.attrlist td.ColumnType {
|
||||
|
||||
/* Subsection : Gallery
|
||||
----------------------------------------------------- */
|
||||
#gallery {
|
||||
background-color: green;
|
||||
}
|
||||
#indivgallery {
|
||||
background-color: white;
|
||||
}
|
||||
#gallery .gallerycell {
|
||||
float: left;
|
||||
width: 130px;
|
||||
height: 150px;
|
||||
text-align: center;
|
||||
margin: 0;
|
||||
background-color: white;
|
||||
border-top: solid 1px #999;
|
||||
border-right: solid 1px #999;
|
||||
}
|
||||
#gallery .thumbnail {
|
||||
font-size: smaller;
|
||||
margin: 3em auto;
|
||||
}
|
||||
#indivgallery .thumbnail {
|
||||
float: left;
|
||||
max-width: 130px;
|
||||
max-height: 150px;
|
||||
width: 130px;
|
||||
font-size: smaller;
|
||||
text-align: center;
|
||||
margin: 0.8em 0.5em;
|
||||
background-color: white;
|
||||
}
|
||||
#indivgallery h4 + .thumbnail {
|
||||
margin-left: 15px;
|
||||
@@ -508,6 +660,40 @@ div#families table.attrlist td.ColumnType {
|
||||
* first thumnail on each next row should also have a margin-left
|
||||
* of 15 px. */
|
||||
}
|
||||
#gallery div.indexno {
|
||||
float: right;
|
||||
width: 1.8em;
|
||||
font-size: large;
|
||||
text-align: center;
|
||||
background-color: #CCC;
|
||||
color: #555;
|
||||
margin: 0;
|
||||
}
|
||||
#indivgallery div.date {
|
||||
float: right;
|
||||
width: 1.8em;
|
||||
font-size: large;
|
||||
text-align: center;
|
||||
background-color: #CCC;
|
||||
color: #555;
|
||||
}
|
||||
#indivgallery .thumbnail ul {
|
||||
font-size: smaller;
|
||||
list-style: none;
|
||||
padding: 0px;
|
||||
}
|
||||
#indivgallery .thumbnail ul li:first-child {
|
||||
border-style: none;
|
||||
}
|
||||
#indivgallery .thumbnail ul li {
|
||||
border-top: dashed 1px #CCC;
|
||||
border-top-style: dashed;
|
||||
padding-top: 0.5em;
|
||||
padding-bottom: 0.5em;
|
||||
}
|
||||
#gallery img {
|
||||
border: solid 1px #999;
|
||||
}
|
||||
#indivgallery img {
|
||||
border: solid 1px #7C8F7C;
|
||||
}
|
||||
@@ -515,6 +701,9 @@ div#families table.attrlist td.ColumnType {
|
||||
/* ## remove this line and the comment markers from the line below to hide description in Indivifual Gallery
|
||||
display: none; */
|
||||
}
|
||||
div.snapshot div.thumbnail {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Subsection : Narrative
|
||||
----------------------------------------------------- */
|
||||
@@ -573,6 +762,7 @@ a.familymap {
|
||||
#footer {
|
||||
clear: both;
|
||||
color: #E0E6E0;
|
||||
font-size: 80%;
|
||||
padding-top: 1em;
|
||||
background-color: #9DBF9D;
|
||||
border-top: solid 1px #454;
|
||||
@@ -600,7 +790,7 @@ a.familymap {
|
||||
/* Overwritten
|
||||
----------------------------------------------------- */
|
||||
body#FamilyMap {
|
||||
background-color: #E0E6E0 ! important;
|
||||
background-color: #454 ! important;
|
||||
}
|
||||
|
||||
/* Calendar Styles
|
||||
|
||||
+197
-12
@@ -21,6 +21,8 @@ Copyright 2008 Jason M. Simanek
|
||||
Copyright 2009 Stephane Charette
|
||||
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
||||
Copyright 2011 Michiel D. Nauta
|
||||
Copyright 2018 Theo van Rijn
|
||||
Copyright (C) 2019 Serge Noiraud
|
||||
|
||||
This file is part of the GRAMPS program.
|
||||
|
||||
@@ -67,6 +69,13 @@ body {
|
||||
body > div {
|
||||
clear: both;
|
||||
}
|
||||
#outerwrapper {
|
||||
margin: 5px auto;
|
||||
width: 98%;
|
||||
}
|
||||
#outerwrapper > div {
|
||||
clear: both;
|
||||
}
|
||||
.content {
|
||||
background-color: #FAFAFF;
|
||||
border-top: solid 1px #669;
|
||||
@@ -75,9 +84,19 @@ body > div {
|
||||
float: right;
|
||||
margin: 2em;
|
||||
}
|
||||
#ThumbnailPreview div.snapshot {
|
||||
float: right;
|
||||
margin: 0;
|
||||
}
|
||||
.fullclear {
|
||||
clear: both;
|
||||
}
|
||||
/* Less whitespace on smaller real estate. */
|
||||
@media only screen and (max-width: 1080px) {
|
||||
.content {
|
||||
padding: 0em 0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
/* General Text
|
||||
----------------------------------------------------- */
|
||||
@@ -110,6 +129,7 @@ p#description {
|
||||
a {
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
a[href]:hover, a[href]:active {
|
||||
background-color: #E0E0E9
|
||||
@@ -206,6 +226,93 @@ div#alphanav ul li a:hover {
|
||||
color: #FAFAFF;
|
||||
}
|
||||
|
||||
/* Responsive navigation */
|
||||
a.navIcon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div#header::after {
|
||||
content: "";
|
||||
clear: both;
|
||||
display: table;
|
||||
}
|
||||
|
||||
div#nav::after {
|
||||
content: "";
|
||||
clear: both;
|
||||
display: table;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1080px) {
|
||||
|
||||
/* Use less & all realestate on mobiles. */
|
||||
div#outerwrapper {
|
||||
margin: 5px auto;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.nav {
|
||||
background: none; /* Works in IE too. */
|
||||
/*
|
||||
width: 200px;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
*/
|
||||
}
|
||||
|
||||
/* Undo some of the #nav styles - to enable the class .nav */
|
||||
.nav ul, #subnavigation ul {
|
||||
list-style: none;
|
||||
min-width: unset;
|
||||
width: 200px;
|
||||
height: 32px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.nav ul li, #subnavigation ul li {
|
||||
float: unset;
|
||||
display: unset
|
||||
}
|
||||
|
||||
/* Start with hidden menu options */
|
||||
/* .nav li:not(:first-child) {display: none;} */
|
||||
.nav li {display: none;}
|
||||
.nav ul {display: none;}
|
||||
|
||||
a.navIcon {
|
||||
font-size:1.3em;
|
||||
display: block;
|
||||
margin: 0.1em 0.4em 0.4em 0.4em;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
||||
.nav.responsive a.icon {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
margin-right: 10px;
|
||||
}
|
||||
.nav.responsive li {
|
||||
/* float: left; */
|
||||
display: block;
|
||||
text-align: left;
|
||||
background-color: #669;
|
||||
/* required by IE */
|
||||
float: left;
|
||||
clear: both;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
div#nav ul, #subnavigation ul {
|
||||
padding-left: 0px;
|
||||
}
|
||||
|
||||
.content {
|
||||
padding: 0em 0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
/* Main Table
|
||||
----------------------------------------------------- */
|
||||
table {
|
||||
@@ -366,6 +473,10 @@ table.IndividualList td.ColumnSurname {
|
||||
content: "";
|
||||
}
|
||||
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
#GalleryNav {
|
||||
@@ -401,7 +512,15 @@ table.IndividualList td.ColumnSurname {
|
||||
margin: 0px auto;
|
||||
display: block;
|
||||
border: solid 1px #669;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1600px) {
|
||||
#GalleryDisplay img {
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
#GalleryDetail h3 {
|
||||
text-align: center;
|
||||
}
|
||||
@@ -418,13 +537,10 @@ div#SourceDetail {
|
||||
overflow: hidden;
|
||||
}
|
||||
#Contact #summaryarea {
|
||||
width: 40em;
|
||||
margin: 2em auto;
|
||||
padding: 3em;
|
||||
background-color: #E0E0E9;
|
||||
border: solid 1px #669;
|
||||
}
|
||||
#Contact img {
|
||||
#Contact #summaryarea #GalleryDisplay img {
|
||||
float: right;
|
||||
border: solid 1px #669;
|
||||
}
|
||||
@@ -451,20 +567,31 @@ div#SourceDetail {
|
||||
|
||||
/* Subsection
|
||||
----------------------------------------------------- */
|
||||
#Home, #Introduction {
|
||||
overflow: hidden;
|
||||
}
|
||||
#Home img, #Introduction img {
|
||||
#Home #GalleryDisplay, #Introduction #GalleryDisplay, #Contact #GalleryDisplay {
|
||||
float: right;
|
||||
margin: 1em;
|
||||
margin: 0;
|
||||
border: 0px;
|
||||
}
|
||||
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
|
||||
#Contact #GalleryDisplay img {
|
||||
display: block;
|
||||
max-width: 950px;
|
||||
height: auto;
|
||||
float: right;
|
||||
}
|
||||
@media only screen and (max-width: 1080px) {
|
||||
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
|
||||
#Contact #GalleryDisplay img {
|
||||
margin: 0 auto;
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
#Home p, #Introduction p {
|
||||
padding-left: 15px;
|
||||
}
|
||||
.subsection {
|
||||
clear: both;
|
||||
overflow: visible;
|
||||
overflow: hidden;
|
||||
}
|
||||
.subsection p {
|
||||
margin: 0px;
|
||||
@@ -487,13 +614,33 @@ div#families table.attrlist td.ColumnType {
|
||||
|
||||
/* Subsection : Gallery
|
||||
----------------------------------------------------- */
|
||||
#gallery {
|
||||
background-color: green;
|
||||
}
|
||||
#indivgallery {
|
||||
background-color: white;
|
||||
}
|
||||
#gallery .gallerycell {
|
||||
float: left;
|
||||
width: 130px;
|
||||
height: 150px;
|
||||
text-align: center;
|
||||
margin: 0;
|
||||
background-color: white;
|
||||
border-top: solid 1px #999;
|
||||
border-right: solid 1px #999;
|
||||
}
|
||||
#gallery .thumbnail {
|
||||
font-size: smaller;
|
||||
margin: 3em auto;
|
||||
}
|
||||
#indivgallery .thumbnail {
|
||||
float: left;
|
||||
max-width: 130px;
|
||||
max-height: 150px;
|
||||
width: 130px;
|
||||
font-size: smaller;
|
||||
text-align: center;
|
||||
margin: 0.8em 0.5em;
|
||||
background-color: white;
|
||||
}
|
||||
#indivgallery h4 + .thumbnail {
|
||||
margin-left: 15px;
|
||||
@@ -501,6 +648,40 @@ div#families table.attrlist td.ColumnType {
|
||||
* first thumnail on each next row should also have a margin-left
|
||||
* of 15 px. */
|
||||
}
|
||||
#gallery div.indexno {
|
||||
float: right;
|
||||
width: 1.8em;
|
||||
font-size: large;
|
||||
text-align: center;
|
||||
background-color: #CCC;
|
||||
color: #555;
|
||||
margin: 0;
|
||||
}
|
||||
#indivgallery div.date {
|
||||
float: right;
|
||||
width: 1.8em;
|
||||
font-size: large;
|
||||
text-align: center;
|
||||
background-color: #CCC;
|
||||
color: #555;
|
||||
}
|
||||
#indivgallery .thumbnail ul {
|
||||
font-size: smaller;
|
||||
list-style: none;
|
||||
padding: 0px;
|
||||
}
|
||||
#indivgallery .thumbnail ul li:first-child {
|
||||
border-style: none;
|
||||
}
|
||||
#indivgallery .thumbnail ul li {
|
||||
border-top: dashed 1px #CCC;
|
||||
border-top-style: dashed;
|
||||
padding-top: 0.5em;
|
||||
padding-bottom: 0.5em;
|
||||
}
|
||||
#gallery img {
|
||||
border: solid 1px #999;
|
||||
}
|
||||
#indivgallery img {
|
||||
border: solid 1px #669;
|
||||
}
|
||||
@@ -508,6 +689,9 @@ div#families table.attrlist td.ColumnType {
|
||||
/* ## remove this line and the comment markers from the line below to hide description in Indivifual Gallery
|
||||
display: none; */
|
||||
}
|
||||
div.snapshot div.thumbnail {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Subsection : Narrative
|
||||
----------------------------------------------------- */
|
||||
@@ -571,6 +755,7 @@ a.familymap {
|
||||
}
|
||||
#footer > * {
|
||||
background-color: #E0E0E9;
|
||||
font-size: 80%;
|
||||
}
|
||||
#footer p#createdate {
|
||||
float: left;
|
||||
|
||||
+196
-12
@@ -21,6 +21,8 @@ Copyright 2008 Jason M. Simanek
|
||||
Copyright 2009 Stephane Charette
|
||||
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
||||
Copyright 2011 Michiel D. Nauta
|
||||
Copyright 2018 Theo van Rijn
|
||||
Copyright (C) 2019 Serge Noiraud
|
||||
|
||||
This file is part of the GRAMPS program.
|
||||
|
||||
@@ -59,7 +61,7 @@ the page.
|
||||
|
||||
body {
|
||||
font-family: sans-serif;
|
||||
font-size: 90%;
|
||||
font-size: 100%;
|
||||
color: #36220B;
|
||||
margin: 0px;
|
||||
background-color: #FFE09F;
|
||||
@@ -67,6 +69,13 @@ body {
|
||||
body > div {
|
||||
clear: both;
|
||||
}
|
||||
#outerwrapper {
|
||||
margin: 5px auto;
|
||||
width: 98%;
|
||||
}
|
||||
#outerwrapper > div {
|
||||
clear: both;
|
||||
}
|
||||
.content {
|
||||
background-color: #FFFBE7;
|
||||
border-top: solid 1px #8C581C;
|
||||
@@ -75,9 +84,19 @@ body > div {
|
||||
float: right;
|
||||
margin: 2em;
|
||||
}
|
||||
#ThumbnailPreview div.snapshot {
|
||||
float: right;
|
||||
margin: 0;
|
||||
}
|
||||
.fullclear {
|
||||
clear: both;
|
||||
}
|
||||
/* Less whitespace on smaller real estate. */
|
||||
@media only screen and (max-width: 1080px) {
|
||||
.content {
|
||||
padding: 0em 0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
/* General Text
|
||||
----------------------------------------------------- */
|
||||
@@ -110,6 +129,7 @@ p#description {
|
||||
a {
|
||||
color: #36220B;
|
||||
text-decoration: none;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
a[href]:hover, a[href]:active {
|
||||
background-color: #FFE09F
|
||||
@@ -206,6 +226,93 @@ div#alphanav ul li a:hover {
|
||||
color: #FFFBE7;
|
||||
}
|
||||
|
||||
/* Responsive navigation */
|
||||
a.navIcon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div#header::after {
|
||||
content: "";
|
||||
clear: both;
|
||||
display: table;
|
||||
}
|
||||
|
||||
div#nav::after {
|
||||
content: "";
|
||||
clear: both;
|
||||
display: table;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1080px) {
|
||||
|
||||
/* Use less & all realestate on mobiles. */
|
||||
div#outerwrapper {
|
||||
margin: 5px auto;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.nav {
|
||||
background: none; /* Works in IE too. */
|
||||
/*
|
||||
width: 200px;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
*/
|
||||
}
|
||||
|
||||
/* Undo some of the #nav styles - to enable the class .nav */
|
||||
.nav ul, #subnavigation ul {
|
||||
list-style: none;
|
||||
min-width: unset;
|
||||
width: 200px;
|
||||
height: 32px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.nav ul li, #subnavigation ul li {
|
||||
float: unset;
|
||||
display: unset
|
||||
}
|
||||
|
||||
/* Start with hidden menu options */
|
||||
/* .nav li:not(:first-child) {display: none;} */
|
||||
.nav li {display: none;}
|
||||
.nav ul {display: none;}
|
||||
|
||||
a.navIcon {
|
||||
font-size:1.3em;
|
||||
display: block;
|
||||
margin: 0.1em 0.4em 0.4em 0.4em;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
||||
.nav.responsive a.icon {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
margin-right: 10px;
|
||||
}
|
||||
.nav.responsive li {
|
||||
/* float: left; */
|
||||
display: block;
|
||||
text-align: left;
|
||||
background-color: #FFC35E;
|
||||
/* required by IE */
|
||||
float: left;
|
||||
clear: both;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
div#nav ul, #subnavigation ul {
|
||||
padding-left: 0px;
|
||||
}
|
||||
|
||||
.content {
|
||||
padding: 0em 0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
/* Main Table
|
||||
----------------------------------------------------- */
|
||||
table {
|
||||
@@ -366,6 +473,10 @@ table.IndividualList td.ColumnSurname {
|
||||
content: "";
|
||||
}
|
||||
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
#GalleryNav {
|
||||
@@ -401,6 +512,13 @@ table.IndividualList td.ColumnSurname {
|
||||
margin: 0px auto;
|
||||
display: block;
|
||||
border: solid 1px #EA8414;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1600px) {
|
||||
#GalleryDisplay img {
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
#GalleryDetail h3 {
|
||||
text-align: center;
|
||||
@@ -418,13 +536,10 @@ div#SourceDetail {
|
||||
overflow: hidden;
|
||||
}
|
||||
#Contact #summaryarea {
|
||||
width: 40em;
|
||||
margin: 2em auto;
|
||||
padding: 3em;
|
||||
background-color: #FFE09F;
|
||||
border: solid 1px #EA8414;
|
||||
}
|
||||
#Contact img {
|
||||
#Contact #summaryarea #GalleryDisplay img {
|
||||
float: right;
|
||||
border: solid 1px #EA8414;
|
||||
}
|
||||
@@ -451,13 +566,24 @@ div#SourceDetail {
|
||||
|
||||
/* Subsection
|
||||
----------------------------------------------------- */
|
||||
#Home, #Introduction {
|
||||
overflow: hidden;
|
||||
}
|
||||
#Home img, #Introduction img {
|
||||
#Home #GalleryDisplay, #Introduction #GalleryDisplay, #Contact #GalleryDisplay {
|
||||
float: right;
|
||||
margin: 1em;
|
||||
margin: 0;
|
||||
border: 0px;
|
||||
}
|
||||
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
|
||||
#Contact #GalleryDisplay img {
|
||||
display: block;
|
||||
max-width: 950px;
|
||||
height: auto;
|
||||
float: right;
|
||||
}
|
||||
@media only screen and (max-width: 1080px) {
|
||||
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
|
||||
#Contact #GalleryDisplay img {
|
||||
margin: 0 auto;
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
#Home p, #Introduction p {
|
||||
padding-left: 15px;
|
||||
@@ -487,13 +613,33 @@ div#families table.attrlist td.ColumnType {
|
||||
|
||||
/* Subsection : Gallery
|
||||
----------------------------------------------------- */
|
||||
#gallery {
|
||||
background-color: green;
|
||||
}
|
||||
#indivgallery {
|
||||
background-color: white;
|
||||
}
|
||||
#gallery .gallerycell {
|
||||
float: left;
|
||||
width: 130px;
|
||||
height: 150px;
|
||||
text-align: center;
|
||||
margin: 0;
|
||||
background-color: white;
|
||||
border-top: solid 1px #999;
|
||||
border-right: solid 1px #999;
|
||||
}
|
||||
#gallery .thumbnail {
|
||||
font-size: smaller;
|
||||
margin: 3em auto;
|
||||
}
|
||||
#indivgallery .thumbnail {
|
||||
float: left;
|
||||
max-width: 130px;
|
||||
max-height: 150px;
|
||||
width: 130px;
|
||||
font-size: smaller;
|
||||
text-align: center;
|
||||
margin: 0.8em 0.5em;
|
||||
background-color: white;
|
||||
}
|
||||
#indivgallery h4 + .thumbnail {
|
||||
margin-left: 15px;
|
||||
@@ -501,6 +647,40 @@ div#families table.attrlist td.ColumnType {
|
||||
* first thumnail on each next row should also have a margin-left
|
||||
* of 15 px. */
|
||||
}
|
||||
#gallery div.indexno {
|
||||
float: right;
|
||||
width: 1.8em;
|
||||
font-size: large;
|
||||
text-align: center;
|
||||
background-color: #CCC;
|
||||
color: #555;
|
||||
margin: 0;
|
||||
}
|
||||
#indivgallery div.date {
|
||||
float: right;
|
||||
width: 1.8em;
|
||||
font-size: large;
|
||||
text-align: center;
|
||||
background-color: #CCC;
|
||||
color: #555;
|
||||
}
|
||||
#indivgallery .thumbnail ul {
|
||||
font-size: smaller;
|
||||
list-style: none;
|
||||
padding: 0px;
|
||||
}
|
||||
#indivgallery .thumbnail ul li:first-child {
|
||||
border-style: none;
|
||||
}
|
||||
#indivgallery .thumbnail ul li {
|
||||
border-top: dashed 1px #CCC;
|
||||
border-top-style: dashed;
|
||||
padding-top: 0.5em;
|
||||
padding-bottom: 0.5em;
|
||||
}
|
||||
#gallery img {
|
||||
border: solid 1px #999;
|
||||
}
|
||||
#indivgallery img {
|
||||
border: solid 1px #8C581C;
|
||||
}
|
||||
@@ -508,6 +688,9 @@ div#families table.attrlist td.ColumnType {
|
||||
/* ## remove this line and the comment markers from the line below to hide description in Indivifual Gallery
|
||||
display: none; */
|
||||
}
|
||||
div.snapshot div.thumbnail {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Subsection : Narrative
|
||||
----------------------------------------------------- */
|
||||
@@ -571,6 +754,7 @@ a.familymap {
|
||||
}
|
||||
#footer > * {
|
||||
background-color: #FFE09F;
|
||||
font-size: 80%;
|
||||
}
|
||||
#footer p#createdate {
|
||||
float: left;
|
||||
|
||||
+198
-13
@@ -21,6 +21,9 @@ Copyright 2008 Jason M. Simanek
|
||||
Copyright 2009 Stephane Charette
|
||||
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
||||
Copyright 2011 Michiel D. Nauta
|
||||
Copyright 2018 Theo van Rijn
|
||||
Copyright (C) 2019 Serge Noiraud
|
||||
|
||||
|
||||
This file is part of the GRAMPS program.
|
||||
|
||||
@@ -59,7 +62,7 @@ the page.
|
||||
|
||||
body {
|
||||
font-family: sans-serif;
|
||||
font-size: 90%;
|
||||
font-size: 100%;
|
||||
color: black;
|
||||
margin: 0px;
|
||||
background-color: #EAEEF4;
|
||||
@@ -67,6 +70,13 @@ body {
|
||||
body > div {
|
||||
clear: both;
|
||||
}
|
||||
#outerwrapper {
|
||||
margin: 5px auto;
|
||||
width: 98%;
|
||||
}
|
||||
#outerwrapper > div {
|
||||
clear: both;
|
||||
}
|
||||
.content {
|
||||
background-color: #FFF;
|
||||
border-top: solid 1px #7CA3DD;
|
||||
@@ -75,9 +85,19 @@ body > div {
|
||||
float: right;
|
||||
margin: 2em;
|
||||
}
|
||||
#ThumbnailPreview div.snapshot {
|
||||
float: right;
|
||||
margin: 0;
|
||||
}
|
||||
.fullclear {
|
||||
clear: both;
|
||||
}
|
||||
/* Less whitespace on smaller real estate. */
|
||||
@media only screen and (max-width: 1080px) {
|
||||
.content {
|
||||
padding: 0em 0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
/* General Text
|
||||
----------------------------------------------------- */
|
||||
@@ -110,6 +130,7 @@ p#description {
|
||||
a {
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
a[href]:hover, a[href]:active {
|
||||
background-color: #EAEEF4
|
||||
@@ -206,6 +227,93 @@ div#alphanav ul li a:hover {
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
/* Responsive navigation */
|
||||
a.navIcon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div#header::after {
|
||||
content: "";
|
||||
clear: both;
|
||||
display: table;
|
||||
}
|
||||
|
||||
div#nav::after {
|
||||
content: "";
|
||||
clear: both;
|
||||
display: table;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1080px) {
|
||||
|
||||
/* Use less & all realestate on mobiles. */
|
||||
div#outerwrapper {
|
||||
margin: 5px auto;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.nav {
|
||||
background: none; /* Works in IE too. */
|
||||
/*
|
||||
width: 200px;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
*/
|
||||
}
|
||||
|
||||
/* Undo some of the #nav styles - to enable the class .nav */
|
||||
.nav ul, #subnavigation ul {
|
||||
list-style: none;
|
||||
min-width: unset;
|
||||
width: 200px;
|
||||
height: 32px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.nav ul li, #subnavigation ul li {
|
||||
float: unset;
|
||||
display: unset
|
||||
}
|
||||
|
||||
/* Start with hidden menu options */
|
||||
/* .nav li:not(:first-child) {display: none;} */
|
||||
.nav li {display: none;}
|
||||
.nav ul {display: none;}
|
||||
|
||||
a.navIcon {
|
||||
font-size:1.3em;
|
||||
display: block;
|
||||
margin: 0.1em 0.4em 0.4em 0.4em;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
||||
.nav.responsive a.icon {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
margin-right: 10px;
|
||||
}
|
||||
.nav.responsive li {
|
||||
/* float: left; */
|
||||
display: block;
|
||||
text-align: left;
|
||||
background-color: #EEE;
|
||||
/* required by IE */
|
||||
float: left;
|
||||
clear: both;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
div#nav ul, #subnavigation ul {
|
||||
padding-left: 0px;
|
||||
}
|
||||
|
||||
.content {
|
||||
padding: 0em 0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
/* Main Table
|
||||
----------------------------------------------------- */
|
||||
table {
|
||||
@@ -366,6 +474,10 @@ table.IndividualList td.ColumnSurname {
|
||||
content: "";
|
||||
}
|
||||
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
#GalleryNav {
|
||||
@@ -401,6 +513,13 @@ table.IndividualList td.ColumnSurname {
|
||||
margin: 0px auto;
|
||||
display: block;
|
||||
border: solid 1px #7CA3DD;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1600px) {
|
||||
#GalleryDisplay img {
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
#GalleryDetail h3 {
|
||||
text-align: center;
|
||||
@@ -418,13 +537,10 @@ div#SourceDetail {
|
||||
overflow: hidden;
|
||||
}
|
||||
#Contact #summaryarea {
|
||||
width: 40em;
|
||||
margin: 2em auto;
|
||||
padding: 3em;
|
||||
background-color: #EAEEF4;
|
||||
border: solid 1px #7CA3DD;
|
||||
}
|
||||
#Contact img {
|
||||
#Contact #summaryarea #GalleryDisplay img {
|
||||
float: right;
|
||||
border: solid 1px #7CA3DD;
|
||||
}
|
||||
@@ -451,20 +567,31 @@ div#SourceDetail {
|
||||
|
||||
/* Subsection
|
||||
----------------------------------------------------- */
|
||||
#Home, #Introduction {
|
||||
overflow: hidden;
|
||||
}
|
||||
#Home img, #Introduction img {
|
||||
#Home #GalleryDisplay, #Introduction #GalleryDisplay, #Contact #GalleryDisplay {
|
||||
float: right;
|
||||
margin: 1em;
|
||||
margin: 0;
|
||||
border: 0px;
|
||||
}
|
||||
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
|
||||
#Contact #GalleryDisplay img {
|
||||
display: block;
|
||||
max-width: 950px;
|
||||
height: auto;
|
||||
float: right;
|
||||
}
|
||||
@media only screen and (max-width: 1080px) {
|
||||
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
|
||||
#Contact #GalleryDisplay img {
|
||||
margin: 0 auto;
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
#Home p, #Introduction p {
|
||||
padding-left: 15px;
|
||||
}
|
||||
.subsection {
|
||||
clear: both;
|
||||
overflow: visible;
|
||||
overflow: hidden;
|
||||
}
|
||||
.subsection p {
|
||||
margin: 0px;
|
||||
@@ -487,13 +614,33 @@ div#families table.attrlist td.ColumnType {
|
||||
|
||||
/* Subsection : Gallery
|
||||
----------------------------------------------------- */
|
||||
#gallery {
|
||||
background-color: green;
|
||||
}
|
||||
#indivgallery {
|
||||
background-color: white;
|
||||
}
|
||||
#gallery .gallerycell {
|
||||
float: left;
|
||||
width: 130px;
|
||||
height: 150px;
|
||||
text-align: center;
|
||||
margin: 0;
|
||||
background-color: white;
|
||||
border-top: solid 1px #999;
|
||||
border-right: solid 1px #999;
|
||||
}
|
||||
#gallery .thumbnail {
|
||||
font-size: smaller;
|
||||
margin: 3em auto;
|
||||
}
|
||||
#indivgallery .thumbnail {
|
||||
float: left;
|
||||
max-width: 130px;
|
||||
max-height: 150px;
|
||||
width: 130px;
|
||||
font-size: smaller;
|
||||
text-align: center;
|
||||
margin: 0.8em 0.5em;
|
||||
background-color: white;
|
||||
}
|
||||
#indivgallery h4 + .thumbnail {
|
||||
margin-left: 15px;
|
||||
@@ -501,6 +648,40 @@ div#families table.attrlist td.ColumnType {
|
||||
* first thumnail on each next row should also have a margin-left
|
||||
* of 15 px. */
|
||||
}
|
||||
#gallery div.indexno {
|
||||
float: right;
|
||||
width: 1.8em;
|
||||
font-size: large;
|
||||
text-align: center;
|
||||
background-color: #CCC;
|
||||
color: #555;
|
||||
margin: 0;
|
||||
}
|
||||
#indivgallery div.date {
|
||||
float: right;
|
||||
width: 1.8em;
|
||||
font-size: large;
|
||||
text-align: center;
|
||||
background-color: #CCC;
|
||||
color: #555;
|
||||
}
|
||||
#indivgallery .thumbnail ul {
|
||||
font-size: smaller;
|
||||
list-style: none;
|
||||
padding: 0px;
|
||||
}
|
||||
#indivgallery .thumbnail ul li:first-child {
|
||||
border-style: none;
|
||||
}
|
||||
#indivgallery .thumbnail ul li {
|
||||
border-top: dashed 1px #CCC;
|
||||
border-top-style: dashed;
|
||||
padding-top: 0.5em;
|
||||
padding-bottom: 0.5em;
|
||||
}
|
||||
#gallery img {
|
||||
border: solid 1px #999;
|
||||
}
|
||||
#indivgallery img {
|
||||
border: solid 1px #7CA3DD;
|
||||
}
|
||||
@@ -508,6 +689,9 @@ div#families table.attrlist td.ColumnType {
|
||||
/* ## remove this line and the comment markers from the line below to hide description in Indivifual Gallery
|
||||
display: none; */
|
||||
}
|
||||
div.snapshot div.thumbnail {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Subsection : Narrative
|
||||
----------------------------------------------------- */
|
||||
@@ -571,6 +755,7 @@ a.familymap {
|
||||
}
|
||||
#footer > * {
|
||||
background-color: #EAEEF4;
|
||||
font-size: 80%;
|
||||
}
|
||||
#footer p#createdate {
|
||||
float: left;
|
||||
|
||||
@@ -32,7 +32,6 @@ body {
|
||||
background-color: #00029D;
|
||||
color: #00029D;
|
||||
width: 100%;
|
||||
padding: 0px 14px;
|
||||
}
|
||||
|
||||
/* Navigation Menus
|
||||
|
||||
+215
-10
@@ -19,6 +19,8 @@ Copyright 2008 Jason M. Simanek
|
||||
Copyright 2009 Stephane Charette
|
||||
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
||||
Copyright 2011 Michiel D. Nauta
|
||||
Copyright 2018 Theo van Rijn
|
||||
Copyright (C) 2019 Serge Noiraud
|
||||
|
||||
This file is part of the GRAMPS program.
|
||||
|
||||
@@ -62,19 +64,30 @@ General Elements
|
||||
-----------------------------------------------------------------*/
|
||||
body {
|
||||
font-family: Georgia, serif;
|
||||
font-size: 90%;
|
||||
font-size: 100%;
|
||||
color: #7D5925;
|
||||
background: url(../images/Web_Mainz_Bkgd.png) black repeat;
|
||||
}
|
||||
body > div {
|
||||
width: 85%;
|
||||
margin: 0px auto;
|
||||
background: url(../images/Web_Mainz_Mid.png) #FFF2C6 repeat;
|
||||
overflow: hidden;
|
||||
padding: 0px 1.5em;
|
||||
}
|
||||
#outerwrapper {
|
||||
margin: 5px auto;
|
||||
width: 98%;
|
||||
}
|
||||
#outerwrapper > div {
|
||||
clear: both;
|
||||
}
|
||||
.content {
|
||||
padding: 1.5em 1.5em;
|
||||
overflow: auto;
|
||||
background: url(../images/Web_Mainz_Mid.png) #FFF2C6 repeat;
|
||||
}
|
||||
#ThumbnailPreview div.snapshot {
|
||||
float: right;
|
||||
margin: 0;
|
||||
}
|
||||
div.snapshot div.thumbnail {
|
||||
text-align: center;
|
||||
@@ -82,6 +95,13 @@ div.snapshot div.thumbnail {
|
||||
div.snapshot a {
|
||||
display: inline;
|
||||
}
|
||||
/* Less whitespace on smaller real estate. */
|
||||
@media only screen and (max-width: 1080px) {
|
||||
.content {
|
||||
padding: 0em 0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* General Text
|
||||
-----------------------------------------------------------------*/
|
||||
@@ -119,6 +139,7 @@ h4 {
|
||||
a {
|
||||
color: #7D5925;
|
||||
text-decoration: none;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
a[href]:hover, a[href]:active {
|
||||
background-color: #FFFFE7;
|
||||
@@ -203,6 +224,93 @@ div#alphanav ul li a:hover {
|
||||
color: white;
|
||||
}
|
||||
|
||||
/* Responsive navigation */
|
||||
a.navIcon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div#header::after {
|
||||
content: "";
|
||||
clear: both;
|
||||
display: table;
|
||||
}
|
||||
|
||||
div#nav::after {
|
||||
content: "";
|
||||
clear: both;
|
||||
display: table;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1080px) {
|
||||
|
||||
/* Use less & all realestate on mobiles. */
|
||||
div#outerwrapper {
|
||||
margin: 5px auto;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.nav {
|
||||
background: none; /* Works in IE too. */
|
||||
/*
|
||||
width: 200px;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
*/
|
||||
}
|
||||
|
||||
/* Undo some of the #nav styles - to enable the class .nav */
|
||||
.nav ul, #subnavigation ul {
|
||||
list-style: none;
|
||||
min-width: unset;
|
||||
width: 200px;
|
||||
height: 32px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.nav ul li, #subnavigation ul li {
|
||||
float: unset;
|
||||
display: unset
|
||||
}
|
||||
|
||||
/* Start with hidden menu options */
|
||||
/* .nav li:not(:first-child) {display: none;} */
|
||||
.nav li {display: none;}
|
||||
.nav ul {display: none;}
|
||||
|
||||
a.navIcon {
|
||||
font-size:1.3em;
|
||||
display: block;
|
||||
margin: 0.1em 0.4em 0.4em 0.4em;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
||||
.nav.responsive a.icon {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
margin-right: 10px;
|
||||
}
|
||||
.nav.responsive li {
|
||||
/* float: left; */
|
||||
display: block;
|
||||
text-align: left;
|
||||
background-color: #D8C19F;
|
||||
/* required by IE */
|
||||
float: left;
|
||||
clear: both;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
div#nav ul, #subnavigation ul {
|
||||
padding-left: 0px;
|
||||
}
|
||||
|
||||
.content {
|
||||
padding: 0em 0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
/* Main Table
|
||||
-----------------------------------------------------------------*/
|
||||
table {
|
||||
@@ -312,6 +420,10 @@ table#SortByCount thead th.ColumnQuantity a:after {
|
||||
content: "";
|
||||
}
|
||||
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
-----------------------------------------------------------------*/
|
||||
#GalleryNav {
|
||||
@@ -356,6 +468,13 @@ table#SortByCount thead th.ColumnQuantity a:after {
|
||||
margin: 0px auto;
|
||||
display:block;
|
||||
border: solid 1px #7D5925;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1600px) {
|
||||
#GalleryDisplay img {
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
/* Sources
|
||||
@@ -371,7 +490,7 @@ div#SourceDetail {
|
||||
padding-bottom: 0px;
|
||||
margin: 0px;
|
||||
}
|
||||
#Contact img {
|
||||
#Contact #summaryarea #GalleryDisplay img {
|
||||
display: block;
|
||||
margin: 0px auto 1em auto;
|
||||
border: solid 1px #7D5925;
|
||||
@@ -397,16 +516,31 @@ div#SourceDetail {
|
||||
|
||||
/* SubSection
|
||||
-----------------------------------------------------------------*/
|
||||
#Home img, #Introduction img {
|
||||
#Home #GalleryDisplay, #Introduction #GalleryDisplay, #Contact #GalleryDisplay {
|
||||
float: right;
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
|
||||
#Contact #GalleryDisplay {
|
||||
display: block;
|
||||
margin: 1em auto;
|
||||
max-width: 950px;
|
||||
height: auto;
|
||||
float: right;
|
||||
}
|
||||
@media only screen and (max-width: 1080px) {
|
||||
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
|
||||
#Contact #GalleryDisplay {
|
||||
margin: 0 auto;
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
#Home a, #Introduction a, #Contact a {
|
||||
color: black;
|
||||
}
|
||||
.subsection {
|
||||
clear: both;
|
||||
overflow: hidden;
|
||||
}
|
||||
.subsection p {
|
||||
margin: 0px;
|
||||
@@ -423,20 +557,43 @@ div#families table.fixed_subtables table.eventlist th:first-child {
|
||||
div#families table.fixed_subtables table.eventlist th:last-child {
|
||||
width: 5em;
|
||||
}
|
||||
div#families .infolist h4 {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
/* SubSection : Gallery
|
||||
-----------------------------------------------------------------*/
|
||||
#gallery {
|
||||
background-color: green;
|
||||
}
|
||||
#indivgallery {
|
||||
background-color: white;
|
||||
}
|
||||
#gallery .gallerycell {
|
||||
float: left;
|
||||
width: 130px;
|
||||
height: 150px;
|
||||
text-align: center;
|
||||
margin: 0;
|
||||
background-color: white;
|
||||
border-top: solid 1px #999;
|
||||
border-right: solid 1px #999;
|
||||
}
|
||||
#gallery .thumbnail {
|
||||
font-size: smaller;
|
||||
margin: 3em auto;
|
||||
}
|
||||
#indivgallery {
|
||||
/* float container stretch, see www.quirksmode.org/css/clearing.html */
|
||||
overflow: hidden;
|
||||
}
|
||||
#indivgallery .thumbnail {
|
||||
float: left;
|
||||
max-width: 130px;
|
||||
max-height: 150px;
|
||||
width: 130px;
|
||||
font-size: smaller;
|
||||
text-align: center;
|
||||
margin: 0.5em;
|
||||
background-color: white;
|
||||
}
|
||||
#indivgallery img {
|
||||
border: solid 1px #7D5925;
|
||||
@@ -445,6 +602,43 @@ div#families table.fixed_subtables table.eventlist th:last-child {
|
||||
/* ## remove this line and the comment markers from the line below to hide the description in Individual Gallery
|
||||
display: none; */
|
||||
}
|
||||
#gallery div.indexno {
|
||||
float: right;
|
||||
width: 1.8em;
|
||||
font-size: large;
|
||||
text-align: center;
|
||||
background-color: #CCC;
|
||||
color: #555;
|
||||
margin: 0;
|
||||
}
|
||||
#indivgallery div.date {
|
||||
float: right;
|
||||
width: 1.8em;
|
||||
font-size: large;
|
||||
text-align: center;
|
||||
background-color: #CCC;
|
||||
color: #555;
|
||||
}
|
||||
#indivgallery .thumbnail ul {
|
||||
font-size: smaller;
|
||||
list-style: none;
|
||||
padding: 0px;
|
||||
}
|
||||
#indivgallery .thumbnail ul li:first-child {
|
||||
border-style: none;
|
||||
}
|
||||
#indivgallery .thumbnail ul li {
|
||||
border-top: dashed 1px #CCC;
|
||||
border-top-style: dashed;
|
||||
padding-top: 0.5em;
|
||||
padding-bottom: 0.5em;
|
||||
}
|
||||
#gallery img {
|
||||
border: solid 1px #999;
|
||||
}
|
||||
div.snapshot div.thumbnail {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* SubSection : Narrative
|
||||
-----------------------------------------------------------------*/
|
||||
@@ -497,20 +691,32 @@ div.grampsstylednote p {
|
||||
-----------------------------------------------------------------*/
|
||||
#footer {
|
||||
clear: both;
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
background: url(../images/Web_Mainz_MidLight.png) #FFF2C6;
|
||||
border-top: dashed 1px #7D5925;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
#footer p#createdate {
|
||||
float: left;
|
||||
width: 50%;
|
||||
text-align: left;
|
||||
margin-left: 10px;
|
||||
}
|
||||
#footer p#copyright {
|
||||
float: right;
|
||||
width: 40%;
|
||||
text-align: right;
|
||||
}
|
||||
#footer p#copyright img {
|
||||
float: right;
|
||||
margin-right: 10px;
|
||||
margin-bottom: 10px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
#footer > * {
|
||||
font-size: 80%;
|
||||
background: url(../images/Web_Mainz_MidLight.png) #FFF2C6;
|
||||
}
|
||||
|
||||
/* Overwritten
|
||||
-----------------------------------------------------------------*/
|
||||
@@ -529,7 +735,6 @@ div#map_canvas {
|
||||
table.calendar {
|
||||
table-layout: fixed;
|
||||
empty-cells: show;
|
||||
width: 950px;
|
||||
margin: 0px auto;
|
||||
background: url(../images/Web_Mainz_Mid.png) #FFF2C6 repeat;
|
||||
}
|
||||
|
||||
+219
-24
@@ -19,6 +19,8 @@ Go to <http://gramps-project.org/> to learn more!
|
||||
Copyright 2008 Jason M. Simanek
|
||||
Copyright 2009 Stephane Charette
|
||||
Copyright (C) 2008-2011 Rob G. Healey <robhealey1@gmail.com>
|
||||
Copyright 2018 Theo van Rijn
|
||||
Copyright (C) 2019 Serge Noiraud
|
||||
|
||||
This file is part of the GRAMPS program.
|
||||
|
||||
@@ -82,10 +84,21 @@ img {
|
||||
.thumbnail a:hover {
|
||||
background:none;
|
||||
}
|
||||
#outerwrapper {
|
||||
margin: 5px auto;
|
||||
width: 98%;
|
||||
}
|
||||
#outerwrapper > div {
|
||||
clear: both;
|
||||
}
|
||||
.content {
|
||||
padding-top: 1cm;
|
||||
background-color:#FFF;
|
||||
}
|
||||
#ThumbnailPreview div.snapshot {
|
||||
float: right;
|
||||
margin: 0;
|
||||
}
|
||||
.content div.snapshot {
|
||||
float:right;
|
||||
margin:1.6em;
|
||||
@@ -100,6 +113,12 @@ img {
|
||||
.content div.snapshot div.thumbnail span {
|
||||
display:none;
|
||||
}
|
||||
/* Less whitespace on smaller real estate. */
|
||||
@media only screen and (max-width: 1080px) {
|
||||
.content {
|
||||
padding: 0em 0.5em;
|
||||
}
|
||||
}
|
||||
.fullclear {
|
||||
width:100%;
|
||||
height:1px;
|
||||
@@ -254,6 +273,100 @@ div#subnavigation ul li.CurrentSection a {
|
||||
border-width: 0 0 1px 0;
|
||||
}
|
||||
|
||||
/* Responsive navigation */
|
||||
a.navIcon {
|
||||
display: none;
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
div#header::after {
|
||||
content: "";
|
||||
clear: both;
|
||||
display: table;
|
||||
}
|
||||
|
||||
div#nav::after {
|
||||
content: "";
|
||||
clear: both;
|
||||
display: table;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1080px) {
|
||||
|
||||
/* Use less & all realestate on mobiles. */
|
||||
div#outerwrapper {
|
||||
margin: 5px auto;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.nav {
|
||||
background: none; /* Works in IE too. */
|
||||
/*
|
||||
width: 200px;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
*/
|
||||
}
|
||||
|
||||
/* Undo some of the #nav styles - to enable the class .nav */
|
||||
.nav ul, #subnavigation ul {
|
||||
list-style: none;
|
||||
min-width: unset;
|
||||
width: 200px;
|
||||
height: 32px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.nav ul li, #subnavigation ul li {
|
||||
float: unset;
|
||||
display: unset
|
||||
}
|
||||
|
||||
/* Start with hidden menu options */
|
||||
/* .nav li:not(:first-child) {display: none;} */
|
||||
.nav li {display: none;}
|
||||
.nav ul {display: none;}
|
||||
|
||||
a.navIcon {
|
||||
font-size:1.3em;
|
||||
display: block;
|
||||
margin: 0.1em 0.4em 0.4em 0.4em;
|
||||
float: left;
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
.nav.responsive {position: absolute; display: block; z-index: 100;}
|
||||
.nav.responsive a.icon {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
margin-right: 10px;
|
||||
}
|
||||
.nav.responsive ::after {
|
||||
/* need to remove the "|" when we are in the dropdown menu. */
|
||||
color: #A97;
|
||||
background-color: #A97;
|
||||
}
|
||||
.nav.responsive li {
|
||||
/* float: left; */
|
||||
display: block;
|
||||
text-align: left;
|
||||
background-color: #A97;
|
||||
/* required by IE */
|
||||
float: left;
|
||||
clear: both;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
div#nav ul, #subnavigation ul {
|
||||
padding-left: 0px;
|
||||
}
|
||||
|
||||
.content {
|
||||
padding: 0em 0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
/* Main Table
|
||||
----------------------------------------------------- */
|
||||
table.infolist {
|
||||
@@ -276,7 +389,6 @@ table.infolist tr th a:hover {
|
||||
table.infolist tr td {
|
||||
font:normal 1.1em/1.4em serif;
|
||||
vertical-align:middle;
|
||||
padding:.1em 10px;
|
||||
}
|
||||
table.infolist tr td a {
|
||||
display:block;
|
||||
@@ -396,30 +508,30 @@ table.surname thead tr th.ColumnParents, table.surname tbody tr td.ColumnParents
|
||||
/* Individuals
|
||||
----------------------------------------------------- */
|
||||
#Individuals { }
|
||||
#Individuals table.individuallist {
|
||||
#Individuals table.IndividualList {
|
||||
border-bottom:solid 1px #A97;
|
||||
}
|
||||
#Individuals table.individuallist tbody tr td {
|
||||
#Individuals table.IndividualList tbody tr td {
|
||||
border-bottom:dashed 1px #C1B398;
|
||||
}
|
||||
#Individuals table.individuallist tbody tr td a:hover {
|
||||
#Individuals table.IndividualList tbody tr td a:hover {
|
||||
text-decoration:none;
|
||||
}
|
||||
table.individuallist tbody tr td.ColumnSurname a:hover, table.individuallist tbody tr td.ColumnSurname a:active {
|
||||
table.IndividualList tbody tr td.ColumnSurname a:hover, table.IndividualList tbody tr td.ColumnSurname a:active {
|
||||
cursor:default;
|
||||
color:black;
|
||||
background:none;
|
||||
}
|
||||
table.individuallist tbody tr td.ColumnName {
|
||||
table.IndividualList tbody tr td.ColumnName {
|
||||
padding:0;
|
||||
background-color:#FFF;
|
||||
}
|
||||
table.individuallist tbody tr td.ColumnName a {
|
||||
table.IndividualList tbody tr td.ColumnName a {
|
||||
display:block;
|
||||
padding:.6em 10px;
|
||||
padding:.1em .1em;
|
||||
vertical-align:middle;
|
||||
}
|
||||
table.individuallist tbody tr td.ColumnName a:hover {
|
||||
table.IndividualList tbody tr td.ColumnName a:hover {
|
||||
background-color:#C1B398;
|
||||
}
|
||||
#Individuals div table.infolist tr td p {
|
||||
@@ -577,6 +689,10 @@ table.relationships tbody tr td.ColumnPartner a:hover {
|
||||
content: "";
|
||||
}
|
||||
|
||||
table.eventlist tbody tr td.ColumnSources {
|
||||
width: 5%;
|
||||
}
|
||||
|
||||
/* Gallery
|
||||
----------------------------------------------------- */
|
||||
#Gallery { }
|
||||
@@ -631,6 +747,13 @@ table.relationships tbody tr td.ColumnPartner a:hover {
|
||||
}
|
||||
#GalleryDisplay img {
|
||||
margin:0 auto;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 1600px) {
|
||||
#GalleryDisplay img {
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
#GalleryDetail div#summaryarea{
|
||||
margin:0;
|
||||
@@ -676,7 +799,6 @@ body#ThumbnailPreview div#references table.infolist tbody tr td.ColumnName {
|
||||
/* Contact
|
||||
----------------------------------------------------- */
|
||||
#Contact #summaryarea {
|
||||
width:500px;
|
||||
margin:0 auto;
|
||||
padding:3em;
|
||||
background-color:#F1ECE2;
|
||||
@@ -694,7 +816,6 @@ body#ThumbnailPreview div#references table.infolist tbody tr td.ColumnName {
|
||||
padding:0;
|
||||
}
|
||||
#researcher span {
|
||||
float:left;
|
||||
display:block;
|
||||
font:normal .9em/1.4em serif;
|
||||
margin-right:.4em;
|
||||
@@ -733,7 +854,7 @@ table.download {
|
||||
width:100%;
|
||||
}
|
||||
table.download img {
|
||||
float:center;
|
||||
float:none;
|
||||
}
|
||||
table.download thead tr th {
|
||||
text-align:center;
|
||||
@@ -776,20 +897,32 @@ table.download td.Modified {
|
||||
|
||||
/* Subsections
|
||||
----------------------------------------------------- */
|
||||
#Home, #Introduction, #Contact {
|
||||
padding:2em 0 3em 0;
|
||||
#Home #GalleryDisplay, #Introduction #GalleryDisplay, #Contact #GalleryDisplay {
|
||||
float: right;
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
|
||||
#Contact #GalleryDisplay img {
|
||||
display: block;
|
||||
max-width: 950px;
|
||||
height: auto;
|
||||
float: right;
|
||||
}
|
||||
@media only screen and (max-width: 1080px) {
|
||||
#Home #GalleryDisplay img, #Introduction #GalleryDisplay img,
|
||||
#Contact #GalleryDisplay img {
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
#Home p, #Introduction p {
|
||||
margin:0 20px 1em 20px;
|
||||
}
|
||||
#Home img, #Introduction img {
|
||||
float:right;
|
||||
margin:0;
|
||||
padding:0 20px 3em 2em;
|
||||
}
|
||||
#Home a, #Introduction a, #Contact a {
|
||||
color: #000;
|
||||
text-decoration: none;
|
||||
overflow: hidden;
|
||||
}
|
||||
div.subsection{
|
||||
padding-bottom:.5em;
|
||||
@@ -923,6 +1056,26 @@ div#Addresses table.infolist tr td a, div#Addresses table.infolist tr td p a {
|
||||
|
||||
/* Subsections : Gallery
|
||||
----------------------------------------------------- */
|
||||
#gallery {
|
||||
background-color: green;
|
||||
}
|
||||
#indivgallery {
|
||||
background-color: white;
|
||||
}
|
||||
#gallery .gallerycell {
|
||||
float: left;
|
||||
width: 130px;
|
||||
height: 150px;
|
||||
text-align: center;
|
||||
margin: 0;
|
||||
background-color: white;
|
||||
border-top: solid 1px #999;
|
||||
border-right: solid 1px #999;
|
||||
}
|
||||
#gallery .thumbnail {
|
||||
font-size: smaller;
|
||||
margin: 3em auto;
|
||||
}
|
||||
#indivgallery h4 {
|
||||
margin-bottom:1em;
|
||||
}
|
||||
@@ -930,14 +1083,49 @@ div#Addresses table.infolist tr td a, div#Addresses table.infolist tr td p a {
|
||||
margin:0;
|
||||
float:left;
|
||||
width:130px;
|
||||
height:150px;
|
||||
text-align:center;
|
||||
background-color: white;
|
||||
}
|
||||
#gallery div.indexno {
|
||||
float: right;
|
||||
width: 1.8em;
|
||||
font-size: large;
|
||||
text-align: center;
|
||||
background-color: #CCC;
|
||||
color: #555;
|
||||
margin: 0;
|
||||
}
|
||||
#indivgallery div.date {
|
||||
float: right;
|
||||
width: 1.8em;
|
||||
font-size: large;
|
||||
text-align: center;
|
||||
background-color: #CCC;
|
||||
color: #555;
|
||||
}
|
||||
#indivgallery .thumbnail ul {
|
||||
font-size: smaller;
|
||||
list-style: none;
|
||||
padding: 0px;
|
||||
}
|
||||
#indivgallery .thumbnail ul li:first-child {
|
||||
border-style: none;
|
||||
}
|
||||
#indivgallery .thumbnail ul li {
|
||||
border-top: dashed 1px #CCC;
|
||||
border-top-style: dashed;
|
||||
padding-top: 0.5em;
|
||||
padding-bottom: 0.5em;
|
||||
}
|
||||
#gallery img {
|
||||
border: solid 1px #999;
|
||||
}
|
||||
#indivgallery .thumbnail a {
|
||||
display:block;
|
||||
margin:0;
|
||||
padding:0;
|
||||
background:none;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
#indivgallery .thumbnail a img {
|
||||
margin:0;
|
||||
@@ -954,17 +1142,21 @@ div#Addresses table.infolist tr td a, div#Addresses table.infolist tr td p a {
|
||||
margin:0 auto;
|
||||
padding:0;
|
||||
}
|
||||
div.snapshot div.thumbnail {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Subsections : Narrative
|
||||
----------------------------------------------------- */
|
||||
div.narrative {
|
||||
padding-bottom:0;
|
||||
}
|
||||
i + div.grampsstylednote p {
|
||||
margin: 0.1em 0 0.2em 0;
|
||||
}
|
||||
.narrative p {
|
||||
margin: 0.1em 0 0.2em 0;
|
||||
font:normal .9em/1.4em sans-serif;
|
||||
margin-top:.5em;
|
||||
margin-bottom:0;
|
||||
padding:0 20px 1em 20px;
|
||||
}
|
||||
|
||||
/* Subsections : References
|
||||
@@ -1066,6 +1258,9 @@ div#pedigree {
|
||||
background-color: #542;
|
||||
border-top: solid 8px #A97;
|
||||
}
|
||||
#footer > * {
|
||||
font-size: 80%;
|
||||
}
|
||||
#footer a, #footer a:visited {
|
||||
text-decoration: none;
|
||||
color: #C1B398;
|
||||
@@ -1093,7 +1288,7 @@ div#pedigree {
|
||||
margin-right: 10px;
|
||||
}
|
||||
#footer p#copyright img {
|
||||
margin-right: 10px[
|
||||
margin-right: 10px;
|
||||
}
|
||||
#user_footer {
|
||||
width: 70%;
|
||||
|
||||
@@ -454,30 +454,30 @@ div#Individuals {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
div#Individuals table.individuallist {
|
||||
div#Individuals table.IndividualList {
|
||||
border-bottom: solid 1px #5D835F;
|
||||
}
|
||||
div#Individuals table.individuallist tbody tr td {
|
||||
div#Individuals table.IndividualList tbody tr td {
|
||||
border-bottom: dashed 1px #5D835F;
|
||||
background-color: #D8F3D6;
|
||||
}
|
||||
div#Individuals table.individuallist tbody tr td a {
|
||||
div#Individuals table.IndividualList tbody tr td a {
|
||||
display: block;
|
||||
padding: .6em 10px;
|
||||
}
|
||||
div#Individuals table.individuallist tbody tr td.ColumnSurname a:hover,
|
||||
div#Individuals table.individuallist tbody tr td.ColumnSurname a:active {
|
||||
div#Individuals table.IndividualList tbody tr td.ColumnSurname a:hover,
|
||||
div#Individuals table.IndividualList tbody tr td.ColumnSurname a:active {
|
||||
cursor:default;
|
||||
color: #000;
|
||||
background:none;
|
||||
}
|
||||
div#Individuals table.individuallist tbody tr td.ColumnName {
|
||||
div#Individuals table.IndividualList tbody tr td.ColumnName {
|
||||
background-color: #FFF;
|
||||
}
|
||||
div#Individuals table.individuallist tbody tr td.ColumnName a {
|
||||
div#Individuals table.IndividualList tbody tr td.ColumnName a {
|
||||
vertical-align:middle;
|
||||
}
|
||||
div#Individuals table.individuallist tbody tr td.ColumnPartner {
|
||||
div#Individuals table.IndividualList tbody tr td.ColumnPartner {
|
||||
background-color: #FFF;
|
||||
}
|
||||
div#Individuals div table.infolist tr td p {
|
||||
|
||||
+66
-41
@@ -9,7 +9,7 @@
|
||||
# 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,
|
||||
# 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.
|
||||
@@ -20,10 +20,10 @@
|
||||
#
|
||||
# $Id: $
|
||||
#
|
||||
**************************************************************************************************
|
||||
*******************************************************************************
|
||||
GRAMPS Cascading Style Sheet
|
||||
Style Name: Combined Ancestor Tree Style Sheet
|
||||
***************************************************************************************************
|
||||
*******************************************************************************
|
||||
#
|
||||
===== Ancestor Graph Color Scheme =====
|
||||
Males #BCEAF6
|
||||
@@ -33,10 +33,8 @@ Unknown #000
|
||||
===== Web Graphics =====
|
||||
Males Web_Gender_Male.png
|
||||
Females Web_Gender_Female.png
|
||||
# ------------------------------------------------------------------------------------------------- */
|
||||
|
||||
/* Subsections : Ancestors Tree
|
||||
----------------------------------------------------- */
|
||||
# -------------------------------------------------------------------------- #
|
||||
/* Subsections : Ancestors Tree -------------------------------------------- */
|
||||
#tree {
|
||||
page-break-before:always;
|
||||
margin:0;
|
||||
@@ -52,8 +50,8 @@ Females Web_Gender_Female.png
|
||||
}
|
||||
#treeContainer div.boxbg {
|
||||
position:absolute;
|
||||
margin:0;
|
||||
padding:0;
|
||||
margin:0px;
|
||||
padding:0px;
|
||||
background:none;
|
||||
}
|
||||
#treeContainer div.boxbg a,
|
||||
@@ -61,41 +59,43 @@ Females Web_Gender_Female.png
|
||||
position:relative;
|
||||
z-index:10;
|
||||
display:block;
|
||||
font:normal .7em/1.4em sans-serif;
|
||||
font:normal 1.1em/1.4em sans-serif;
|
||||
text-align:center;
|
||||
word-break:break-word;
|
||||
word-wrap:break-word;
|
||||
text-decoration:none;
|
||||
color: #00029D;
|
||||
width:118px;
|
||||
padding:5px 20px 7px 20px;
|
||||
width:280px;
|
||||
min-height: 70px;
|
||||
margin-left:16px;
|
||||
background-color: #FFF;
|
||||
border: solid 1px #000;
|
||||
border: solid 2px #000;
|
||||
border-radius: 10px;
|
||||
}
|
||||
#treeContainer div.boxbg a.noThumb,
|
||||
#treeContainer div.AncCol3 a,
|
||||
#treeContainer div.AncCol4 a,
|
||||
#treeContainer div.AncCol3 span.unlinked,
|
||||
#treeContainer div.AncCol4 a,
|
||||
#treeContainer div.AncCol4 span.unlinked {
|
||||
margin-top:10px;
|
||||
float: right;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover {
|
||||
position:relative;
|
||||
z-index:999;
|
||||
font-size:1em;
|
||||
font-size:1.3em;
|
||||
word-break:break-word;
|
||||
word-wrap:break-word;
|
||||
text-decoration:none;
|
||||
color: #00029D;
|
||||
width:190px;
|
||||
width:400px;
|
||||
margin-left:-20px;
|
||||
padding:10px 25px 12px 25px;
|
||||
border: solid 2px #000;
|
||||
padding: 0px 0px 0px 40px;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover,
|
||||
#treeContainer div.AncCol3 a:hover,
|
||||
#treeContainer div.boxbg a:hover,
|
||||
#treeContainer div.AncCol4 a:hover {
|
||||
margin-top:-44px;
|
||||
}
|
||||
#treeContainer div.boxbg a.noThumb:hover {
|
||||
margin-top:0;
|
||||
padding-left: 10px;
|
||||
}
|
||||
#treeContainer div.AncCol0 a:hover {
|
||||
margin-left:12px;
|
||||
@@ -105,48 +105,73 @@ Females Web_Gender_Female.png
|
||||
}
|
||||
#treeContainer div.boxbg span.thumbnail {
|
||||
display:block;
|
||||
max-width:80px;
|
||||
max-height:65px;
|
||||
margin:0 auto;
|
||||
padding:4px 0;
|
||||
position: absolute;
|
||||
max-width:85px;
|
||||
max-height:75px;
|
||||
left: 3px;
|
||||
top: 3px;
|
||||
}
|
||||
#treeContainer div.boxbg span.thumbnail img {
|
||||
max-width:80px;
|
||||
max-height:65px;
|
||||
margin:0 auto;
|
||||
#treeContainer div.boxbg a.thumbnail table td.img {
|
||||
padding-right: 5px;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover span.thumbnail, #treeContainer div.boxbg a:hover span.thumbnail img {
|
||||
height:80px;
|
||||
#treeContainer div.boxbg a.thumbnail:hover table td.img {
|
||||
padding-right: 9px;
|
||||
}
|
||||
#treeContainer div.AncCol3 span.thumbnail, #treeContainer div.AncCol4 span.thumbnail {
|
||||
#treeContainer div.boxbg a.thumbnail table td.name {
|
||||
padding-top:3px;
|
||||
padding-left: 2px;
|
||||
padding-right: 23px;
|
||||
width: 90%;
|
||||
}
|
||||
#treeContainer div.boxbg a.thumbnail img {
|
||||
margin-left:0px;
|
||||
padding-left: 0px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
#treeContainer div.boxbg a.thumbnail:hover img {
|
||||
max-height:90%;
|
||||
margin-left:5px;
|
||||
position: absolute;
|
||||
left: 0px;
|
||||
top: 4px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
#treeContainer div.boxbg table td:first-child, table th:first-child {
|
||||
padding-left: 5px;
|
||||
padding-top: 5px;
|
||||
}
|
||||
#IndividualDetail div.subsection table tr td:first-child {
|
||||
padding-left: 5px;
|
||||
padding-top: 5px;
|
||||
}
|
||||
#treeContainer #treeContainer div.AncCol4 span.thumbnail {
|
||||
display:none;
|
||||
}
|
||||
#treeContainer div.boxbg a:hover span.thumbnail {
|
||||
display:block;
|
||||
}
|
||||
|
||||
#treeContainer div.boxbg span.fullname {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#treeContainer div.boxbg span.shortname {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
#treeContainer div.boxbg a:hover span.fullname {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
#treeContainer div.boxbg a:hover span.shortname {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
#treeContainer div.boxbg a:hover {
|
||||
float: right;
|
||||
margin-top: 10px;
|
||||
border: solid 4px #000;
|
||||
}
|
||||
#treeContainer div.male a,
|
||||
#treeContainer div.male span.unlinked {
|
||||
background:url(../images/Web_Gender_Male.png) #BCEAF6 no-repeat top right;
|
||||
}
|
||||
#treeContainer div.female a,
|
||||
#treeContainer div.female a,
|
||||
#treeContainer div.female span.unlinked {
|
||||
background:url(../images/Web_Gender_Female.png) #FFC0CB no-repeat top right;
|
||||
}
|
||||
|
||||
@@ -33,7 +33,9 @@ body#FamilyMap {
|
||||
border: solid 4px #000;
|
||||
margin: 0px auto;
|
||||
width: 800px;
|
||||
height: 800px;
|
||||
height: 400px;
|
||||
max-width: 90%;
|
||||
max-height: 90%;
|
||||
}
|
||||
|
||||
/* Place Maps
|
||||
@@ -43,6 +45,8 @@ div#place_canvas {
|
||||
border: solid 4px #000;
|
||||
width: 500px;
|
||||
height: 400px;
|
||||
max-width: 90%;
|
||||
max-height: 90%;
|
||||
}
|
||||
button#drop {
|
||||
background-color: purple;
|
||||
@@ -62,3 +66,48 @@ div#FamilyMapDetail div#references table.infolist {
|
||||
div#FamilyMapDetail div#references table.infolist tbody tr td.ColumnPlace {
|
||||
width: 40%;
|
||||
}
|
||||
|
||||
|
||||
/* Subsection: popup
|
||||
------------------------------------------------------ */
|
||||
.ol-popup {
|
||||
position: absolute;
|
||||
background-color: white;
|
||||
-webkit-filter: drop-shadow(0 1px 4px rgba(0,0,0,0.2));
|
||||
filter: drop-shadow(0 1px 4px rgba(0,0,0,0.2));
|
||||
padding: 15px;
|
||||
border-radius: 10px;
|
||||
border: 2px solid #111111;
|
||||
bottom: 12px;
|
||||
left: -50px;
|
||||
min-width: 450px;
|
||||
}
|
||||
.ol-popup:after, .ol-popup:before {
|
||||
top: 100%;
|
||||
border: solid transparent;
|
||||
height: 0;
|
||||
width: 0;
|
||||
position: absolute;
|
||||
pointer-events: none;
|
||||
}
|
||||
.ol-popup:after {
|
||||
border-top-color: white;
|
||||
border-width: 10px;
|
||||
left: 48px;
|
||||
margin-left: -10px;
|
||||
}
|
||||
.ol-popup:before {
|
||||
border-top-color: #cccccc;
|
||||
border-width: 11px;
|
||||
left: 48px;
|
||||
margin-left: -11px;
|
||||
}
|
||||
.ol-popup-closer {
|
||||
text-decoration: none;
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
right: 8px;
|
||||
}
|
||||
.ol-popup-closer:after {
|
||||
content: "✖";
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<component type="desktop">
|
||||
<id>gramps.desktop</id>
|
||||
<metadata_license>CC0</metadata_license>
|
||||
<component type="desktop-application">
|
||||
<id>org.gramps.gramps</id>
|
||||
<metadata_license>CC0-1.0</metadata_license>
|
||||
<name>Gramps</name>
|
||||
<summary>Genealogical research program</summary>
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
<_p>All of your research is kept organized, searchable and as precise as you need it to be.</_p>
|
||||
</description>
|
||||
|
||||
<launchable type="desktop-id">gramps.desktop</launchable>
|
||||
<url type="homepage">https://gramps-project.org/</url>
|
||||
<url type="bugtracker">https://gramps-project.org/bugs/</url>
|
||||
<url type="help">https://gramps-project.org/wiki/index.php?title=Main_page</url>
|
||||
@@ -18,11 +19,21 @@
|
||||
<developer_name>Gramps Development Team</developer_name>
|
||||
|
||||
<screenshots>
|
||||
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/5/5f/AppData1.png</screenshot>
|
||||
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/6/68/AppData2.png</screenshot>
|
||||
<screenshot type="default" width="1226" height="740">http://www.gramps-project.org/wiki/images/e/e9/AppData3.png</screenshot>
|
||||
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/6/68/AppData4.png</screenshot>
|
||||
<screenshot width="1226" height="740">http://www.gramps-project.org/wiki/images/5/50/AppData5.png</screenshot>
|
||||
<screenshot>
|
||||
<image width="1226" height="740">https://www.gramps-project.org/wiki/images/5/5f/AppData1.png</image>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image width="1226" height="740">https://www.gramps-project.org/wiki/images/6/68/AppData2.png</image>
|
||||
</screenshot>
|
||||
<screenshot type="default">
|
||||
<image width="1226" height="740">https://www.gramps-project.org/wiki/images/e/e9/AppData3.png</image>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image width="1226" height="740">https://www.gramps-project.org/wiki/images/6/68/AppData4.png</image>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image width="1226" height="740">https://www.gramps-project.org/wiki/images/5/50/AppData5.png</image>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
|
||||
<provides>
|
||||
|
||||
@@ -201,12 +201,12 @@
|
||||
<date name="Pääsiäispäivä" type="religious" value="> easter(y)" />
|
||||
<date name="2. Pääsiäispäivä" type="religious" value="> easter(y)" offset="1" />
|
||||
<date name="Helatorstai" type="religious" value="> easter(y)" offset="39" if="not(y>=1973)" />
|
||||
<date name="Kristuksen taivaaseenastumisen päivä." type="religious" value="> easter(y)" offset="34" if="(y>=1973) and not(y>=1992)" />
|
||||
<date name="Kristuksen taivaaseenastumisen päivä" type="religious" value="> easter(y)" offset="34" if="(y>=1973) and not(y>=1992)" />
|
||||
<date name="Helatorstai" type="religious" value="> easter(y)" offset="39" if="(y>=1992)" />
|
||||
<date name="Helluntaipäivä" value="easter(y)" offset="49" type="religious" />
|
||||
<date name="Pyhän Kolminaisuuden päivä" value="easter(y)" offset="56" type="religious" />
|
||||
<date name="Apostolienpäivä" value="easter(y)" offset="91" type="religious" />
|
||||
<date name="Kirkastussunnuntai." value="easter(y)" offset="105" type="religious" />
|
||||
<date name="Kirkastussunnuntai" value="easter(y)" offset="105" type="religious" />
|
||||
<date name="Juhannusaatto" value="*/jun/19" offset="fri" type="religious" if="(y>=1955)" />
|
||||
<date name="Juhannusaatto" value="*/jun/23" type="religious" if="not(y>=1955)" />
|
||||
<date name="Juhannuspäivä" value="*/jun/20" offset="sat" type="religious" if="(y>=1955)" />
|
||||
@@ -224,12 +224,12 @@
|
||||
<date name="Joulupäivä" value="*/12/25" type="religious" />
|
||||
<date name="Tapaninpäivä" value="*/12/26" type="religious" />
|
||||
<date name="Johannes Evankelistan päivä" value="*/dec/27" type="religious" if="not(y>=1774)" />
|
||||
<date name="Apostoli Johanneksen päivä." value="*/dec/27" type="religious" if="dow(y, m, d) == 7 and (y>=2000)" />
|
||||
<date name="Apostoli Johanneksen päivä" value="*/dec/27" type="religious" if="dow(y, m, d) == 7 and (y>=2000)" />
|
||||
<date name="Viattomien lasten päivä" value="*/12/28" type="religious" />
|
||||
<date name="Uudenvuodenpäivä" value="*/1/1" type="national" />
|
||||
<date name="Vainojen uhrien muistopäivä" value="*/1/27" type="national" if="(y>=2002)" />
|
||||
<date name="J.L. Runebergin päivä" value="*/2/5" type="national" if="(y>=1854)" />
|
||||
<date name="Saamelaisten kansallis päivä" value="*/2/6" type="religious" if="(y>=2004)" />
|
||||
<date name="Saamelaisten kansallispäivä" value="*/2/6" type="religious" if="(y>=2004)" />
|
||||
<date name="Ystävänpäivä" value="*/2/14" type="national" if="(y>=1987)" />
|
||||
<date name="Kalevalan päivä" value="*/2/28" type="national" if="(y>=1978)" />
|
||||
<date name="Naistenpäivä" value="*/3/8" type="national" if="(y>=1975)" />
|
||||
|
||||
@@ -1278,7 +1278,7 @@
|
||||
<rel type="Unknown"/>
|
||||
<father hlink="_0000000b0000000b"/>
|
||||
<mother hlink="_0000002600000026"/>
|
||||
<childref hlink="_0000006f0000006f"/>
|
||||
<childref hlink="_0000006f0000006f" frel="Adopted" mrel="Foster"/>
|
||||
</family>
|
||||
<family handle="_0000001000000010" change="1198222526" id="F0014">
|
||||
<rel type="Unknown"/>
|
||||
|
||||
@@ -9,6 +9,12 @@ beg
|
||||
- h Hans_Peter.8 17/4/1904 #bp Rønne,_Bornholm,_Denmark 29/1/1977 #dp San_Francisco,_San_Francisco_Co.,_CA
|
||||
end
|
||||
|
||||
notes Hansdotter Anna.1
|
||||
beg
|
||||
******************************************************************890123456789
|
||||
******************************************************************89 123456789
|
||||
end notes
|
||||
|
||||
notes Smith Hjalmar.5
|
||||
beg
|
||||
BIOGRAPHY
|
||||
@@ -61,7 +67,7 @@ Some Bold Unicode Characters: ࣶǼЀج⿄㑝㵋
|
||||
Some Italic Unicode Characters: ࣶǼЀج⿄㑝㵋圛墉幵聟聦𐅉🚶🛈
|
||||
end notes
|
||||
|
||||
fam Smith Gus.6 +~1920 Michaels Evelyn.25 ~1897
|
||||
fam Smith Gus.6 +~1920 Michaels Evelyn.25 ~1897 0
|
||||
|
||||
fam Smith Hjalmar.5 +31/10/1927 #mp Reno,_Washoe_Co.,_NV Ohman Marjorie.26 3/6/1903 #bp Denver,_Denver_Co.,_CO,_Denver_Co.,_Colorado,_USA 22/6/1980 #dp Reno,_Washoe_Co.,_NV
|
||||
beg
|
||||
@@ -98,13 +104,18 @@ beg
|
||||
- h Martin.17 1794..1796 #bp Tommarp,_Kristianstad_Län,_Sweden #dp Sweden
|
||||
end
|
||||
|
||||
fam Willard Edwin.42 ~1886 +~1910 Smith Kirsti_Marie.2
|
||||
fam Willard Edwin.42 ~1886 0 +~1910 Smith Kirsti_Marie.2
|
||||
|
||||
fam Smith Magnes.38 +24/8/1884 #mp Rønne,_Bornholm,_Denmark Streiffert Anna.43 23/9/1860 #bp Hoya/Jona/Hoia,_Sweden 2/2/1927 #dp Rønne,_Bornholm,_Denmark
|
||||
|
||||
fam Tester The.14 + Tester Mrs.44 0
|
||||
beg
|
||||
- h Tom.45 0
|
||||
- h Tom.45 Von_Tester_y_tested 0
|
||||
- Fake.46 von_Person 1954 #bp Fremont,_Alameda_Co.,_CA
|
||||
- f Mary.47 0
|
||||
- f Martha.48 0
|
||||
- h John.49 0
|
||||
- h Mark.50 0
|
||||
end
|
||||
|
||||
notes Tester Mrs.44
|
||||
|
||||
+315
-655
File diff suppressed because it is too large.
Load diff
+52
-47
@@ -1,47 +1,52 @@
|
||||
Anna Hansdotter;;;;;2/10/1864-29/9/1945
|
||||
Keith Lloyd Smith;Lloyd Smith;Janis Green;;;11/8/1966
|
||||
Hans Peter Smith;Gustaf Smith;Anna Hansdotter;;;17/4/1904-29/1/1977
|
||||
Hanna Smith;Martin Smith0;Elna Jefferson;;;29/1/1821
|
||||
Herman Julius Nielsen;;;;;31/8/1889-1945
|
||||
Evelyn Michaels;;;;;1897
|
||||
Marjorie Lee Smith;Hjalmar Smith0;Marjorie Ohman;;;4/11/1934
|
||||
Gus Smith;Gustaf Smith;Anna Hansdotter;;;11/9/1897-21/10/1963
|
||||
Jennifer Anderson;;;;;5/11/1907-29/5/1985
|
||||
Lillie Harriet Jones;;;;;2/5/1910-26/6/1990
|
||||
John Hjalmar Smith;Hjalmar Smith0;Marjorie Ohman;;;30/1/1932
|
||||
Eric Lloyd Smith;Lloyd Smith;Janis Green;;;28/8/1963
|
||||
Amber Marie Smith;Edwin Smith;Janice Adams;;;12/4/1998
|
||||
Carl Emil Smith;Gustaf Smith;Anna Hansdotter;;;20/12/1899-28/1/1959
|
||||
Hjalmar Smith;Gustaf Smith;Anna Hansdotter;;;31/1/1893-25/9/1894
|
||||
Martin Smith;Martin Smith0;Elna Jefferson;;;19/11/1830-1899
|
||||
Astrid Shermanna Augusta Smith;Gustaf Smith;Anna Hansdotter;;;31/1/1889-21/12/1963
|
||||
Gustaf Smith, Sr.;Martin Smith;Kerstina Hansdotter;;;28/11/1862-23/7/1930
|
||||
Marta Ericsdotter;;;;;1775
|
||||
Kirsti Marie Smith;Gustaf Smith;Anna Hansdotter;;;15/12/1886-18/7/1966
|
||||
Ingeman Smith;;;;;1770
|
||||
Anna Streiffert;;;;;23/9/1860-2/2/1927
|
||||
Craig Peter Smith;Lloyd Smith;Janis Green;;;1966
|
||||
Magnes Smith;Martin Smith;Kerstina Hansdotter;;;6/10/1858-20/2/1910
|
||||
Janice Ann Adams;;;;;26/8/1965
|
||||
Marjorie Ohman;;;;;3/6/1903-22/6/1980
|
||||
Darcy Horne;;;;;2/7/1966
|
||||
Alice Paula Perkins;;;;;22/11/1933
|
||||
Lars Peter Smith;Eric Smith;Darcy Horne;;;16/9/1991
|
||||
Ingeman Smith0;Martin Smith0;Elna Jefferson;;;29/1/1826
|
||||
Lloyd Smith;Hans Smith;Lillie Jones;;;13/3/1935
|
||||
Elna Jefferson;;;;;14/9/1800-
|
||||
Edwin Michael Smith;John Smith;Alice Perkins;;;24/5/1961
|
||||
Kerstina Hansdotter;;;;;29/11/1832-1908
|
||||
Martin Smith0;Ingeman Smith;Marta Ericsdotter;;;1794-
|
||||
Marjorie Alice Smith0;John Smith;Alice Perkins;;;5/2/1960
|
||||
Janis Elaine Green;;;;;2/12/1935
|
||||
Mason Michael Smith;Edwin Smith;Janice Adams;;;26/6/1996
|
||||
Edwin Willard;;;;;1886
|
||||
Ingar Smith;Martin Smith0;Elna Jefferson;;;1823
|
||||
Hjalmar Smith0;Gustaf Smith;Anna Hansdotter;;;7/4/1895-26/6/1975
|
||||
Emil Smith;Martin Smith;Kerstina Hansdotter;;;27/9/1860
|
||||
雪 Ke 柯;Herman Nielsen;Astrid Smith;;;
|
||||
The Tester;Lloyd Smith;Janis Green;;;29/12/1954
|
||||
Mrs Tester;;;;;
|
||||
ピーター リチミシキスイミ;;;;;
|
||||
Tom Tester;The Tester;Mrs Tester;;;
|
||||
Anna Hansdotter;;;;;2/10/1864-29/9/1945
|
||||
Keith Lloyd Smith;Lloyd Smith;Janis Green;;;11/8/1966
|
||||
Hans Peter Smith;Gustaf Smith;Anna Hansdotter;;;17/4/1904-29/1/1977
|
||||
Hanna Smith;Martin Smith0;Elna Jefferson;;;29/1/1821
|
||||
Herman Julius Nielsen;;;;;31/8/1889-1945
|
||||
Evelyn Michaels;;;;;1897
|
||||
Marjorie Lee Smith;Hjalmar Smith0;Marjorie Ohman;;;4/11/1934
|
||||
Gus Smith;Gustaf Smith;Anna Hansdotter;;;11/9/1897-21/10/1963
|
||||
Jennifer Anderson;;;;;5/11/1907-29/5/1985
|
||||
Lillie Harriet Jones;;;;;2/5/1910-26/6/1990
|
||||
John Hjalmar Smith;Hjalmar Smith0;Marjorie Ohman;;;30/1/1932
|
||||
Eric Lloyd Smith;Lloyd Smith;Janis Green;;;28/8/1963
|
||||
Amber Marie Smith;Edwin Smith;Janice Adams;;;12/4/1998
|
||||
Carl Emil Smith;Gustaf Smith;Anna Hansdotter;;;20/12/1899-28/1/1959
|
||||
Hjalmar Smith;Gustaf Smith;Anna Hansdotter;;;31/1/1893-25/9/1894
|
||||
Martin Smith;Martin Smith0;Elna Jefferson;;;19/11/1830-1899
|
||||
Astrid Shermanna Augusta Smith;Gustaf Smith;Anna Hansdotter;;;31/1/1889-21/12/1963
|
||||
Gustaf Smith, Sr.;Martin Smith;Kerstina Hansdotter;;;28/11/1862-23/7/1930
|
||||
Marta Ericsdotter;;;;;1775
|
||||
Kirsti Marie Smith;Gustaf Smith;Anna Hansdotter;;;15/12/1886-18/7/1966
|
||||
Ingeman Smith;;;;;1770
|
||||
Anna Streiffert;;;;;23/9/1860-2/2/1927
|
||||
Craig Peter Smith;Lloyd Smith;Janis Green;;;1966
|
||||
Magnes Smith;Martin Smith;Kerstina Hansdotter;;;6/10/1858-20/2/1910
|
||||
Janice Ann Adams;;;;;26/8/1965
|
||||
Marjorie Ohman;;;;;3/6/1903-22/6/1980
|
||||
Darcy Horne;;;;;2/7/1966
|
||||
Lloyd Smith;Hans Smith;Lillie Jones;;;13/3/1935
|
||||
Alice Paula Perkins;;;;;22/11/1933
|
||||
Lars Peter Smith;Eric Smith;Darcy Horne;;;16/9/1991
|
||||
Elna Jefferson;;;;;14/9/1800-
|
||||
Edwin Michael Smith;John Smith;Alice Perkins;;;24/5/1961
|
||||
Kerstina Hansdotter;;;;;29/11/1832-1908
|
||||
Martin Smith0;Ingeman Smith;Marta Ericsdotter;;;1794-
|
||||
Ingeman Smith0;Martin Smith0;Elna Jefferson;;;29/1/1826
|
||||
Marjorie Alice Smith0;John Smith;Alice Perkins;;;5/2/1960
|
||||
Janis Elaine Green;;;;;2/12/1935
|
||||
Mason Michael Smith;Edwin Smith;Janice Adams;;;26/6/1996
|
||||
Edwin Willard;;;;;1886
|
||||
Ingar Smith;Martin Smith0;Elna Jefferson;;;1823
|
||||
Hjalmar Smith0;Gustaf Smith;Anna Hansdotter;;;7/4/1895-26/6/1975
|
||||
Emil Smith;Martin Smith;Kerstina Hansdotter;;;27/9/1860
|
||||
雪 Ke 柯;Herman Nielsen;Astrid Smith;;;
|
||||
ピーター リチミシキスイミ;;;;;
|
||||
The Tester;Lloyd Smith;Janis Green;;;29/12/1954
|
||||
Mrs Tester;;;;;
|
||||
Tom Von Tester y tested;The Tester;Mrs Tester;;;
|
||||
Fake von Person, I;The Tester;Mrs Tester;;;1954-
|
||||
Mary Tester;The Tester;Mrs Tester;;;
|
||||
Martha Tester;The Tester;Mrs Tester;;;
|
||||
John Tester;The Tester;Mrs Tester;;;
|
||||
Mark Tester;The Tester;Mrs Tester;;;
|
||||
@@ -30,66 +30,65 @@
|
||||
[P0014],"Denver, Denver Co., CO","Denver, Denver Co., CO",City,39.7392,104.9903 W,,[P0024],
|
||||
|
||||
Person,Surname,Given,Call,Suffix,Prefix,Title,Gender,Birth date,Birth place,Birth source,Baptism date,Baptism place,Baptism source,Death date,Death place,Death source,Burial date,Burial place,Burial source,Note
|
||||
[I0030],Adams,Janice Ann,,,,,female,26 Aug 1965,"Fremont, Alameda Co., CA",,,,,,,,,,,
|
||||
[I0016],Anderson,Jennifer,,,,,female,5 Nov 1907,"Rønne, Bornholm, Denmark",,,,,29 May 1985,"San Francisco, San Francisco Co., CA",,,,,
|
||||
[I0025],Ericsdotter,Marta,,,,,female,about 1775,Sweden,,,,,,,,,,,
|
||||
[I0041],Green,Janis Elaine,,,,,female,2 Dec 1935,,,,,,,,,,,,
|
||||
[I0000],Hansdotter,Anna,,,,,female,2 Oct 1864,"Löderup, Malmöhus Län, Sweden",,,,,29 Sep 1945,"Sparks, Washoe Co., NV",,,,,
|
||||
[I0038],Hansdotter,Kerstina,,,,,female,29 Nov 1832,"Smestorp, Kristianstad Län, Sweden",,,,,before 1908,Sweden,,,,,
|
||||
[I0032],Horne,Darcy,,,,,female,2 Jul 1966,"Sacramento, Sacramento Co., CA",,,,,,,,,,,
|
||||
[I0036],Jefferson,Elna,,,,,female,14 Sep 1800,"Gladsax, Kristianstad Län, Sweden",,,,,,Sweden,,,,,
|
||||
[I0017],Jones,Lillie Harriet,,,,,female,2 May 1910,"Rønne, Bornholm, Denmark",,,,,26 Jun 1990,,,,,,
|
||||
[I0030],Adams,Janice Ann,,,,,female,1965-08-26,[P0013],,,,,,,,,,,
|
||||
[I0016],Anderson,Jennifer,,,,,female,1907-11-05,[P0003],,,,,1985-05-29,[P0002],,,,,
|
||||
[I0025],Ericsdotter,Marta,,,,,female,about 1775,[P0008],,,,,,,,,,,
|
||||
[I0041],Green,Janis Elaine,,,,,female,1935-12-02,,,,,,,,,,,,
|
||||
[I0000],Hansdotter,Anna,,,,,female,1864-10-02,[P0000],,,,,1945-09-29,[P0001],,,,,
|
||||
[I0038],Hansdotter,Kerstina,,,,,female,1832-11-29,[P0019],,,,,before 1908,[P0008],,,,,
|
||||
[I0032],Horne,Darcy,,,,,female,1966-07-02,[P0015],,,,,,,,,,,
|
||||
[I0036],Jefferson,Elna,,,,,female,1800-09-14,[P0004],,,,,,[P0008],,,,,
|
||||
[I0017],Jones,Lillie Harriet,,,,,female,1910-05-02,[P0003],,,,,1990-06-26,,,,,,
|
||||
[I0042],Ke 柯,雪,,,,,male,,,,,,,,,,,,,
|
||||
[I0013],Michaels,Evelyn,,,,,female,about 1897,,,,,,,,,,,,
|
||||
[I0012],Nielsen,Herman Julius,,,,,male,31 Aug 1889,"Rønne, Bornholm, Denmark",,,,,1945,,,,,,
|
||||
[I0031],Ohman,Marjorie,,,,,female,3 Jun 1903,"Denver, Denver Co., CO, Denver Co., Colorado, USA",,,,,22 Jun 1980,"Reno, Washoe Co., NV",,,,,
|
||||
[I0034],Perkins,Alice Paula,,,,,female,22 Nov 1933,"Sparks, Washoe Co., NV",,,,,,,,,,,
|
||||
[I0002],Smith,Amber Marie,,,,,female,12 Apr 1998,"Hayward, Alameda Co., CA",,,,,,,,,,,
|
||||
[I0023],Smith,Astrid Shermanna Augusta,,,,,female,31 Jan 1889,"Rønne, Bornholm, Denmark",,,,,21 Dec 1963,"San Francisco, San Francisco Co., CA",,,,,
|
||||
[I0020],Smith,Carl Emil,,,,,male,20 Dec 1899,"Rønne, Bornholm, Denmark",,,,,28 Jan 1959,"Reno, Washoe Co., NV",,,,,
|
||||
[I0029],Smith,Craig Peter,,,,,male,after 1966,"San Francisco, San Francisco Co., CA",,,,,,,,,,,
|
||||
[I0037],Smith,Edwin Michael,,,,,male,24 May 1961,"San Jose, Santa Clara Co., CA","Birth, Death and Marriage Records",,,,,,,,,,
|
||||
[I0009],Smith,Emil,,,,,male,27 Sep 1860,"Simrishamn, Kristianstad Län, Sweden",,,,,,,,,,,
|
||||
[I0019],Smith,Eric Lloyd,,,,Dr.,male,28 Aug 1963,"San Francisco, San Francisco Co., CA",,,,,,,,,,,
|
||||
[I0015],Smith,Gus,,,,,male,11 Sep 1897,"Rønne, Bornholm, Denmark",,,,,21 Oct 1963,"San Francisco, San Francisco Co., CA",,,,,
|
||||
[I0024],Smith,Gustaf,,Sr.,,,male,28 Nov 1862,"Grostorp, Kristianstad Län, Sweden",,,,,before 23 Jul 1930,"Sparks, Washoe Co., NV",,,,,
|
||||
[I0011],Smith,Hanna,,,,,female,29 Jan 1821,"Gladsax, Kristianstad Län, Sweden",,,,,,,,,,,
|
||||
[I0010],Smith,Hans Peter,,,,,male,17 Apr 1904,"Rønne, Bornholm, Denmark",Birth Records,,,,29 Jan 1977,"San Francisco, San Francisco Co., CA",,5 Feb 1977,"San Francisco, San Francisco Co., CA",findagrave.com,
|
||||
[I0021],Smith,Hjalmar,,,,,male,31 Jan 1893,"Rønne, Bornholm, Denmark",,,,,25 Sep 1894,"Rønne, Bornholm, Denmark",,,,,
|
||||
[I0008],Smith,Hjalmar,,,,,male,7 Apr 1895,"Rønne, Bornholm, Denmark",,3 Jun 1895,"Rønne Bornholm, Denmark",,26 Jun 1975,"Reno, Washoe Co., NV",,,,,
|
||||
[I0007],Smith,Ingar,,,,,female,after 1823,"Gladsax, Kristianstad Län, Sweden",,,,,,,,,,,
|
||||
[I0027],Smith,Ingeman,,,,,male,about 1770,Sweden,,,,,,,,,,,
|
||||
[I0004],Smith,Ingeman,,,,,male,29 Jan 1826,"Gladsax, Kristianstad Län, Sweden",,,,,,,,,,,
|
||||
[I0018],Smith,John Hjalmar,,,,,male,30 Jan 1932,"San Francisco, San Francisco Co., CA",,,,,,,,,,,
|
||||
[I0001],Smith,Keith Lloyd,,,,,male,11 Aug 1966,"San Francisco, San Francisco Co., CA",,,,,,,,,,,
|
||||
[I0026],Smith,Kirsti Marie,,,,,female,15 Dec 1886,"Rønne, Bornholm, Denmark",,,,,18 Jul 1966,"San Francisco, San Francisco Co., CA",,,,,
|
||||
[I0035],Smith,Lars Peter,,,,,male,16 Sep 1991,"Santa Rosa, Sonoma Co., CA",,,,,,,,,,,
|
||||
[I0033],Smith,Lloyd,,,,,male,13 Mar 1935,"San Francisco, San Francisco Co., CA",,,,,,,,,,,
|
||||
[I0003],Smith,Magnes,,,,,male,6 Oct 1858,"Simrishamn, Kristianstad Län, Sweden",,,,,20 Feb 1910,"Rønne, Bornholm, Denmark",,,,,
|
||||
[I0040],Smith,Marjorie Alice,,,,,female,5 Feb 1960,"San Jose, Santa Clara Co., CA",,,,,,,,,,,
|
||||
[I0014],Smith,Marjorie Lee,,,,,female,4 Nov 1934,"Reno, Washoe Co., NV",,,,,,,,,,,
|
||||
[I0022],Smith,Martin,,,,,male,19 Nov 1830,"Gladsax, Kristianstad Län, Sweden",,23 Nov 1830,"Gladsax, Kristianstad Län, Sweden",,between 1899 and 1905,Sweden,,,,,
|
||||
[I0039],Smith,Martin,,,,,male,between 1794 and 1796,"Tommarp, Kristianstad Län, Sweden",,,,,,Sweden,,,,,
|
||||
[I0005],Smith,Mason Michael,,,,,male,26 Jun 1996,"Hayward, Alameda Co., CA",,,,,,,,,,,
|
||||
[I0028],Streiffert,Anna,,,,,female,23 Sep 1860,"Hoya/Jona/Hoia, Sweden",,,,,2 Feb 1927,"Rønne, Bornholm, Denmark",,,,,
|
||||
[I0012],Nielsen,Herman Julius,,,,,male,1889-08-31,[P0003],,,,,1945,,,,,,
|
||||
[I0031],Ohman,Marjorie,,,,,female,1903-06-03,[P0014],,,,,1980-06-22,[P0005],,,,,
|
||||
[I0034],Perkins,Alice Paula,,,,,female,1933-11-22,[P0001],,,,,,,,,,,
|
||||
[I0002],Smith,Amber Marie,,,,,female,1998-04-12,[P0006],,,,,,,,,,,
|
||||
[I0023],Smith,Astrid Shermanna Augusta,,,,,female,1889-01-31,[P0003],,,,,1963-12-21,[P0002],,,,,
|
||||
[I0020],Smith,Carl Emil,,,,,male,1899-12-20,[P0003],,,,,1959-01-28,[P0005],,,,,
|
||||
[I0029],Smith,Craig Peter,,,,,male,after 1966,[P0002],,,,,,,,,,,
|
||||
[I0037],Smith,Edwin Michael,,,,,male,1961-05-24,[P0017],"Birth, Death and Marriage Records",,,,,,,,,,
|
||||
[I0009],Smith,Emil,,,,,male,1860-09-27,[P0012],,,,,,,,,,,
|
||||
[I0019],Smith,Eric Lloyd,,,,Dr.,male,1963-08-28,[P0002],,,,,,,,,,,
|
||||
[I0015],Smith,Gus,,,,,male,1897-09-11,[P0003],,,,,1963-10-21,[P0002],,,,,
|
||||
[I0024],Smith,Gustaf,,Sr.,,,male,1862-11-28,[P0009],,,,,before 1930-07-23,[P0001],,,,,
|
||||
[I0011],Smith,Hanna,,,,,female,1821-01-29,[P0004],,,,,,,,,,,
|
||||
[I0010],Smith,Hans Peter,,,,,male,1904-04-17,[P0003],Birth Records,,,,1977-01-29,[P0002],,1977-02-05,[P0002],findagrave.com,
|
||||
[I0021],Smith,Hjalmar,,,,,male,1893-01-31,[P0003],,,,,1894-09-25,[P0003],,,,,
|
||||
[I0008],Smith,Hjalmar,,,,,male,1895-04-07,[P0003],,1895-06-03,[P0021],,1975-06-26,[P0005],,,,,
|
||||
[I0007],Smith,Ingar,,,,,female,after 1823,[P0004],,,,,,,,,,,
|
||||
[I0027],Smith,Ingeman,,,,,male,about 1770,[P0008],,,,,,,,,,,
|
||||
[I0004],Smith,Ingeman,,,,,male,1826-01-29,[P0004],,,,,,,,,,,
|
||||
[I0018],Smith,John Hjalmar,,,,,male,1932-01-30,[P0002],,,,,,,,,,,
|
||||
[I0001],Smith,Keith Lloyd,,,,,male,1966-08-11,[P0002],,,,,,,,,,,
|
||||
[I0026],Smith,Kirsti Marie,,,,,female,1886-12-15,[P0003],,,,,1966-07-18,[P0002],,,,,
|
||||
[I0035],Smith,Lars Peter,,,,,male,1991-09-16,[P0016],,,,,,,,,,,
|
||||
[I0033],Smith,Lloyd,,,,,male,1935-03-13,[P0002],,,,,,,,,,,
|
||||
[I0003],Smith,Magnes,,,,,male,1858-10-06,[P0012],,,,,1910-02-20,[P0003],,,,,
|
||||
[I0040],Smith,Marjorie Alice,,,,,female,1960-02-05,[P0017],,,,,,,,,,,
|
||||
[I0014],Smith,Marjorie Lee,,,,,female,1934-11-04,[P0005],,,,,,,,,,,
|
||||
[I0022],Smith,Martin,,,,,male,1830-11-19,[P0004],,1830-11-23,[P0004],,between 1899 and 1905,[P0008],,,,,
|
||||
[I0039],Smith,Martin,,,,,male,between 1794 and 1796,[P0020],,,,,,[P0008],,,,,
|
||||
[I0005],Smith,Mason Michael,,,,,male,1996-06-26,[P0006],,,,,,,,,,,
|
||||
[I0028],Streiffert,Anna,,,,,female,1860-09-23,[P0011],,,,,1927-02-02,[P0003],,,,,
|
||||
[I0006],Willard,Edwin,,,,,male,about 1886,,,,,,,,,,,,
|
||||
[I0043],リチミシキスイミ,ピーター,,,,,male,,,,,,,,,,,,,
|
||||
|
||||
Marriage,Husband,Wife,Date,Place,Source,Note
|
||||
[F0000],[I0039],[I0036],about 1816,"Gladsax, Kristianstad Län, Sweden",,
|
||||
[F0001],[I0027],[I0025],about 1790,Sweden,,
|
||||
[F0000],[I0039],[I0036],about 1816,[P0004],,
|
||||
[F0001],[I0027],[I0025],about 1790,[P0008],,
|
||||
[F0002],[I0022],[I0038],about 1856,,,
|
||||
[F0003],[I0024],[I0000],27 Nov 1885,"Rønne, Bornholm, Denmark",,
|
||||
[F0003],[I0024],[I0000],1885-11-27,[P0003],,
|
||||
[F0004],[I0006],[I0026],about 1910,,,
|
||||
[F0005],[I0012],[I0023],30 Nov 1912,"Rønne, Bornholm, Denmark",,
|
||||
[F0006],[I0008],[I0031],31 Oct 1927,"Reno, Washoe Co., NV",,
|
||||
[F0005],[I0012],[I0023],1912-11-30,[P0003],,
|
||||
[F0006],[I0008],[I0031],1927-10-31,[P0005],,
|
||||
[F0007],[I0015],[I0013],about 1920,,,
|
||||
[F0008],[I0033],[I0041],10 Aug 1958,"San Francisco, San Francisco Co., CA",,
|
||||
[F0008],[I0033],[I0041],1958-08-10,[P0002],,
|
||||
[F0009],[I0010],[I0017],,,,
|
||||
[F0010],[I0019],[I0032],12 Jul 1986,"Woodland, Yolo Co., CA",,
|
||||
[F0011],[I0003],[I0028],24 Aug 1884,"Rønne, Bornholm, Denmark",,
|
||||
[F0012],[I0018],[I0034],4 Jun 1954,"Sparks, Washoe Co., NV",Marriage Certificae,
|
||||
[F0013],[I0037],[I0030],27 May 1995,"San Ramon, Conta Costa Co., CA",,
|
||||
[F0010],[I0019],[I0032],1986-07-12,[P0022],,
|
||||
[F0011],[I0003],[I0028],1884-08-24,[P0003],,
|
||||
[F0012],[I0018],[I0034],1954-06-04,[P0001],Marriage Certificae,
|
||||
[F0013],[I0037],[I0030],1995-05-27,[P0023],,
|
||||
[F0014],[I0010],[I0016],,,,
|
||||
|
||||
Family,Child
|
||||
|
||||
|
@@ -1,12 +1,12 @@
|
||||
0 HEAD
|
||||
1 SOUR Gramps
|
||||
2 VERS 5.0.0-alpha2
|
||||
2 VERS 5.0.2
|
||||
2 NAME Gramps
|
||||
1 DATE 1 SEP 2017
|
||||
2 TIME 12:10:38
|
||||
1 DATE 4 AUG 2019
|
||||
2 TIME 15:26:44
|
||||
1 SUBM @SUBM@
|
||||
1 FILE C:\Users\prc\AppData\Roaming\gramps\temp\exp_sample_ged.ged
|
||||
1 COPR Copyright (c) 2017 Alex Roitman,,,.
|
||||
1 COPR Copyright (c) 2019 Alex Roitman,,,.
|
||||
1 GEDC
|
||||
2 VERS 5.5.1
|
||||
2 FORM LINEAGE-LINKED
|
||||
@@ -629,8 +629,12 @@
|
||||
2 TYPE Birth of Lloyd Smith
|
||||
2 DATE 13 MAR 1935
|
||||
2 PLAC San Francisco, San Francisco Co., CA
|
||||
1 ADOP Y
|
||||
2 FAMC @F0009@
|
||||
3 ADOP HUSB
|
||||
1 FAMC @F0009@
|
||||
2 PEDI birth
|
||||
2 _FREL Adopted
|
||||
2 _MREL Foster
|
||||
1 FAMS @F0008@
|
||||
1 CHAN
|
||||
2 DATE 4 SEP 2016
|
||||
@@ -786,11 +790,7 @@
|
||||
3 ADOP BOTH
|
||||
1 FAMC @F0005@
|
||||
2 PEDI adopted
|
||||
1 OBJE
|
||||
2 FORM jpeg
|
||||
2 TITL Michael O'Toole 2015-11
|
||||
2 FILE c:\grampsaio64-5.0.0\share\gramps\tests\O0.jpg
|
||||
2 NOTE @N0019@
|
||||
1 OBJE @O0000@
|
||||
1 NOTE @N0007@
|
||||
1 CHAN
|
||||
2 DATE 18 JUN 2016
|
||||
@@ -889,7 +889,7 @@
|
||||
0 @I0046@ INDI
|
||||
1 NAME Tom /Von Tester y tested/
|
||||
2 GIVN Tom
|
||||
2 SPFX Von,
|
||||
2 SPFX Von
|
||||
2 SURN Tester y, tested
|
||||
2 NICK TesterNickname
|
||||
1 SEX M
|
||||
@@ -1044,7 +1044,7 @@
|
||||
2 SURN Tester
|
||||
1 SEX M
|
||||
1 FAMC @F0016@
|
||||
2 PEDI Unknown
|
||||
2 PEDI Sponsored
|
||||
1 CHAN
|
||||
2 DATE 29 OCT 2016
|
||||
3 TIME 16:27:59
|
||||
@@ -1423,4 +1423,12 @@
|
||||
0 @N0017@ NOTE A citation Note Source text
|
||||
0 @N0018@ NOTE Another Citation Note
|
||||
0 @N0019@ NOTE A bad photo for sure
|
||||
0 @O0000@ OBJE
|
||||
1 FILE c:\users\prc\workspace\grampsm\main\data\tests\O0.jpg
|
||||
2 FORM jpg
|
||||
2 TITL Michael O'Toole 2015-11
|
||||
1 NOTE @N0019@
|
||||
1 CHAN
|
||||
2 DATE 29 OCT 2016
|
||||
3 TIME 15:23:37
|
||||
0 TRLR
|
||||
@@ -3,41 +3,41 @@
|
||||
"http://gramps-project.org/xml/1.7.1/grampsxml.dtd">
|
||||
<database xmlns="http://gramps-project.org/xml/1.7.1/">
|
||||
<header>
|
||||
<created date="2016-08-29" version="5.0.0-alpha1"/>
|
||||
<created date="2019-03-13" version="5.0.2"/>
|
||||
<researcher>
|
||||
</researcher>
|
||||
</header>
|
||||
<events>
|
||||
<event handle="_0000000500000005" change="1472500305" id="E0000">
|
||||
<event handle="_0000000500000005" change="1" id="E0000">
|
||||
<type>Birth</type>
|
||||
<dateval val="1816"/>
|
||||
<place hlink="_0000000700000007"/>
|
||||
<citationref hlink="_0000000600000006"/>
|
||||
</event>
|
||||
<event handle="_0000000800000008" change="1472500305" id="E0001">
|
||||
<event handle="_0000000800000008" change="1" id="E0001">
|
||||
<type>Residence</type>
|
||||
<dateval val="1850"/>
|
||||
<place hlink="_0000000a0000000a"/>
|
||||
<citationref hlink="_0000000900000009"/>
|
||||
</event>
|
||||
<event handle="_0000000b0000000b" change="1472500305" id="E0002">
|
||||
<event handle="_0000000b0000000b" change="1" id="E0002">
|
||||
<type>Death</type>
|
||||
<datestr val="1850/1860"/>
|
||||
<place hlink="_0000000c0000000c"/>
|
||||
</event>
|
||||
<event handle="_0000000f0000000f" change="1472500305" id="E0003">
|
||||
<event handle="_0000000f0000000f" change="1" id="E0003">
|
||||
<type>Marriage</type>
|
||||
<dateval val="1841" type="about"/>
|
||||
<place hlink="_0000001000000010"/>
|
||||
</event>
|
||||
<event handle="_0000001100000011" change="1472500305" id="E0004">
|
||||
<event handle="_0000001100000011" change="1" id="E0004">
|
||||
<type>Marriage</type>
|
||||
<dateval val="1847-08"/>
|
||||
<place hlink="_0000001200000012"/>
|
||||
</event>
|
||||
</events>
|
||||
<people>
|
||||
<person handle="_0000000100000001" change="1472500305" id="I0278">
|
||||
<person handle="_0000000100000001" change="1" id="I0278">
|
||||
<gender>M</gender>
|
||||
<name type="Birth Name">
|
||||
<first>Andrew</first>
|
||||
@@ -54,13 +54,13 @@
|
||||
</person>
|
||||
</people>
|
||||
<families>
|
||||
<family handle="_0000000d0000000d" change="1472500305" id="F0073">
|
||||
<family handle="_0000000d0000000d" change="1" id="F0073">
|
||||
<rel type="Married"/>
|
||||
<father hlink="_0000000100000001"/>
|
||||
<eventref hlink="_0000000f0000000f" role="Family"/>
|
||||
<childref hlink="_0000000100000001"/>
|
||||
</family>
|
||||
<family handle="_0000000e0000000e" change="1472500305" id="F0074">
|
||||
<family handle="_0000000e0000000e" change="1" id="F0074">
|
||||
<rel type="Married"/>
|
||||
<father hlink="_0000000100000001"/>
|
||||
<eventref hlink="_0000001100000011" role="Family"/>
|
||||
@@ -68,19 +68,19 @@
|
||||
</family>
|
||||
</families>
|
||||
<citations>
|
||||
<citation handle="_0000000400000004" change="1472500305" id="C0000">
|
||||
<citation handle="_0000000400000004" change="1" id="C0000">
|
||||
<page>Year: 1850; Census Place: District 14, Cape Girardeau, Missouri; Roll: M432_394; Page: 435B; Image: 248</page>
|
||||
<confidence>2</confidence>
|
||||
<objref hlink="_0000000300000003"/>
|
||||
<sourceref hlink="_0000000200000002"/>
|
||||
</citation>
|
||||
<citation handle="_0000000600000006" change="1472500305" id="C0001">
|
||||
<citation handle="_0000000600000006" change="1" id="C0001">
|
||||
<page>Year: 1850; Census Place: District 14, Cape Girardeau, Missouri; Roll: M432_394; Page: 435B; Image: 248</page>
|
||||
<confidence>2</confidence>
|
||||
<objref hlink="_0000000300000003"/>
|
||||
<sourceref hlink="_0000000200000002"/>
|
||||
</citation>
|
||||
<citation handle="_0000000900000009" change="1472500305" id="C0002">
|
||||
<citation handle="_0000000900000009" change="1" id="C0002">
|
||||
<page>Year: 1850; Census Place: District 14, Cape Girardeau, Missouri; Roll: M432_394; Page: 435B; Image: 248</page>
|
||||
<confidence>2</confidence>
|
||||
<objref hlink="_0000000300000003"/>
|
||||
@@ -88,7 +88,7 @@
|
||||
</citation>
|
||||
</citations>
|
||||
<sources>
|
||||
<source handle="_0000000200000002" change="1472500305" id="S0029">
|
||||
<source handle="_0000000200000002" change="1" id="S0029">
|
||||
<stitle>1850 United States Federal Census</stitle>
|
||||
<sauthor>Ancestry.com</sauthor>
|
||||
<spubinfo>Name: Ancestry.com Operations, Inc.; Location: Provo, UT, USA; Date: 2009;</spubinfo>
|
||||
@@ -96,42 +96,43 @@
|
||||
</source>
|
||||
</sources>
|
||||
<places>
|
||||
<placeobj handle="_0000000700000007" change="1472500305" id="P0000" type="Unknown">
|
||||
<placeobj handle="_0000000700000007" change="1" id="P0000" type="Unknown">
|
||||
<ptitle>Tennessee, USA</ptitle>
|
||||
<pname value="Tennessee, USA"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_0000000a0000000a" change="1472500305" id="P0001" type="Unknown">
|
||||
<placeobj handle="_0000000a0000000a" change="1" id="P0001" type="Unknown">
|
||||
<ptitle>District 14, Cape Girardeau, Missouri, USA</ptitle>
|
||||
<pname value="District 14, Cape Girardeau, Missouri, USA"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_0000000c0000000c" change="1472500305" id="P0002" type="Unknown">
|
||||
<placeobj handle="_0000000c0000000c" change="1" id="P0002" type="Unknown">
|
||||
<ptitle>Bollinger Co. MO</ptitle>
|
||||
<pname value="Bollinger Co. MO"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_0000001000000010" change="1472500305" id="P0003" type="Unknown">
|
||||
<placeobj handle="_0000001000000010" change="1" id="P0003" type="Unknown">
|
||||
<ptitle>Union Co.?, IL</ptitle>
|
||||
<pname value="Union Co.?, IL"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_0000001200000012" change="1472500305" id="P0004" type="Unknown">
|
||||
<placeobj handle="_0000001200000012" change="1" id="P0004" type="Unknown">
|
||||
<ptitle>Wayne, Missouri, United States</ptitle>
|
||||
<pname value="Wayne, Missouri, United States"/>
|
||||
</placeobj>
|
||||
</places>
|
||||
<objects>
|
||||
<object handle="_0000000300000003" change="1472500305" id="M159">
|
||||
<object handle="_0000000300000003" change="1" id="M159">
|
||||
<file src="1850 United States Federal Census(11)-1.jpg" mime="image/jpeg" description="1850 United States Federal Census"/>
|
||||
<noteref hlink="_0000001400000014"/>
|
||||
<noteref hlink="_0000001500000015"/>
|
||||
</object>
|
||||
<object handle="_0000001600000016" change="1472500305" id="M158">
|
||||
<file src="D:/Users/PRC/Downloads/1850 United States Federal Census(11)-1.jpg" mime="image/jpeg" description="D:\Users\PRC\Downloads\1850 United States Federal Census(11)-1.jpg"/>
|
||||
<object handle="_0000001600000016" change="1" id="M158">
|
||||
<file src="/Users/PRC/Downloads/1850 United States Federal Census(11)-1.jpg" mime="image/jpeg" description="/Users/PRC/Downloads/1850 United States Federal Census(11)-1.jpg"/>
|
||||
<noteref hlink="_0000001700000017"/>
|
||||
</object>
|
||||
<object handle="_0000001700000017" change="1472500305" id="M157">
|
||||
<object handle="_0000001800000018" change="1" id="M157">
|
||||
<file src="http://1.gravatar.com/avatar/77e02a3c8c665155ad1acaac8c2742e0?s=120&d=mm&r=pg" mime="unknown" description="http://1.gravatar.com/avatar/77e02a3c8c665155ad1acaac8c2742e0?s=120&d=mm&r=pg"/>
|
||||
</object>
|
||||
</objects>
|
||||
<repositories>
|
||||
<repository handle="_0000001300000013" change="1472500305" id="R0001">
|
||||
<repository handle="_0000001300000013" change="1" id="R0001">
|
||||
<rname>Ancestry.com</rname>
|
||||
<type>Library</type>
|
||||
<address>
|
||||
@@ -140,16 +141,26 @@
|
||||
</repository>
|
||||
</repositories>
|
||||
<notes>
|
||||
<note handle="_0000001400000014" change="1472500305" id="N0000" type="Media Note">
|
||||
<text>Year: 1850; Census Place: District 14, Cape Girardeau, Missouri; Roll: M432_394; Page: 435B; Image: 248</text>
|
||||
<note handle="_0000001400000014" change="1" id="N0000" type="Media Note">
|
||||
<text>Year: 1850; Census Place: District 14, Cape Girardeau, Missouri; Roll: M432_394; Page: 435B; Image: 248 </text>
|
||||
</note>
|
||||
<note handle="_0000001500000015" change="1472500305" id="N0001" type="GEDCOM import">
|
||||
<note handle="_0000001500000015" change="1" id="N0001" type="GEDCOM import">
|
||||
<text>Records not imported into OBJE (multi-media object) Gramps ID M159:
|
||||
|
||||
Could not import 1850 United States Federal Census(11)-1.jpg Line 70: 1 FILE 1850 United States Federal Census(11)-1.jpg</text>
|
||||
Could not import 1850 United States Federal Census(11)-1.jpg Line 70: 1 FILE 1850 United States Federal Census(11)-1.jpg
|
||||
</text>
|
||||
<style name="fontface" value="Monospace">
|
||||
<range start="0" end="200"/>
|
||||
</style>
|
||||
</note>
|
||||
<note handle="_0000001700000017" change="1" id="N0002" type="GEDCOM import">
|
||||
<text>Records not imported into OBJE (multi-media object) Gramps ID M158:
|
||||
|
||||
Could not import D:\Users\PRC\Downloads\1850 United States Federa Line 75: 1 FILE D:\Users\PRC\Downloads\1850 United States Federal Census(11)-1.jpg
|
||||
</text>
|
||||
<style name="fontface" value="Monospace">
|
||||
<range start="0" end="223"/>
|
||||
</style>
|
||||
</note>
|
||||
</notes>
|
||||
</database>
|
||||
@@ -3,7 +3,7 @@
|
||||
"http://gramps-project.org/xml/1.7.1/grampsxml.dtd">
|
||||
<database xmlns="http://gramps-project.org/xml/1.7.1/">
|
||||
<header>
|
||||
<created date="2017-05-30" version="5.0.0-alpha1"/>
|
||||
<created date="2019-03-05" version="5.0.2"/>
|
||||
<researcher>
|
||||
</researcher>
|
||||
</header>
|
||||
@@ -66,9 +66,10 @@
|
||||
<object handle="_0000000300000003" change="1" id="O0000">
|
||||
<file src="test_emb_55.jpg" mime="image/jpeg" description="Multimedia link embedded form v5.5"/>
|
||||
<noteref hlink="_0000000200000002"/>
|
||||
<noteref hlink="_0000000b0000000b"/>
|
||||
</object>
|
||||
<object handle="_0000000400000004" change="548708291" id="M1">
|
||||
<file src="" mime="" description="Multimedia link to linked form v5.5 blob"/>
|
||||
<file src="" mime="image/jpeg" description="Multimedia link to linked form v5.5 blob"/>
|
||||
<attribute type="REFN" value="Ref12345M1">
|
||||
<noteref hlink="_0000001200000012"/>
|
||||
</attribute>
|
||||
@@ -117,7 +118,7 @@
|
||||
<citationref hlink="_0000002700000027"/>
|
||||
</object>
|
||||
<object handle="_0000000c0000000c" change="1" id="O0002">
|
||||
<file src="http://www.geni.com/photo/view?photo_id=6000000001341319061" mime="unknown" description="Multimedia link embedded form v5.5 URL"/>
|
||||
<file src="http://www.geni.com/photo/view?photo_id=6000000001341319061" mime="text/html" description="Multimedia link embedded form v5.5 URL"/>
|
||||
<noteref hlink="_0000000b0000000b"/>
|
||||
</object>
|
||||
<object handle="_0000000d0000000d" change="1" id="M7">
|
||||
@@ -129,7 +130,7 @@
|
||||
<noteref hlink="_0000002900000029"/>
|
||||
</object>
|
||||
<object handle="_0000001500000015" change="1" id="M2">
|
||||
<file src="" mime="" description="2nd blob Multimedia link to linked form v5.5 blob"/>
|
||||
<file src="" mime="image/jpeg" description="2nd blob Multimedia link to linked form v5.5 blob"/>
|
||||
<noteref hlink="_0000001600000016"/>
|
||||
</object>
|
||||
</objects>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"http://gramps-project.org/xml/1.7.1/grampsxml.dtd">
|
||||
<database xmlns="http://gramps-project.org/xml/1.7.1/">
|
||||
<header>
|
||||
<created date="2016-10-23" version="5.0.0-alpha1"/>
|
||||
<created date="2019-07-30" version="5.0.2"/>
|
||||
<researcher>
|
||||
<resname>John A. Tester</resname>
|
||||
</researcher>
|
||||
@@ -26,27 +26,23 @@
|
||||
<type>Death</type>
|
||||
<noteref hlink="_0000001600000016"/>
|
||||
</event>
|
||||
<event handle="_0000001e0000001e" change="1" id="E0003">
|
||||
<type>Who knows OBJE REFN TYPE</type>
|
||||
<description>REFN</description>
|
||||
</event>
|
||||
<event handle="_0000002700000027" change="1" id="E0004">
|
||||
<event handle="_0000002700000027" change="1" id="E0003">
|
||||
<type>Birth</type>
|
||||
<dateval val="1901-06-15"/>
|
||||
</event>
|
||||
<event handle="_0000002800000028" change="1" id="E0005">
|
||||
<event handle="_0000002800000028" change="1" id="E0004">
|
||||
<type>Death</type>
|
||||
<dateval val="1975-07-05"/>
|
||||
</event>
|
||||
<event handle="_0000002e0000002e" change="1" id="E0006">
|
||||
<event handle="_0000002e0000002e" change="1" id="E0005">
|
||||
<type>Birth</type>
|
||||
<dateval val="1922-06-15"/>
|
||||
</event>
|
||||
<event handle="_0000002f0000002f" change="1" id="E0007">
|
||||
<event handle="_0000002f0000002f" change="1" id="E0006">
|
||||
<type>Death</type>
|
||||
<dateval val="1994-07-05"/>
|
||||
</event>
|
||||
<event handle="_0000003b0000003b" change="1" id="E0008">
|
||||
<event handle="_0000003b0000003b" change="1" id="E0007">
|
||||
<type>TEST</type>
|
||||
<description>family</description>
|
||||
</event>
|
||||
@@ -61,10 +57,11 @@
|
||||
<eventref hlink="_0000000f0000000f" role="Primary"/>
|
||||
<eventref hlink="_0000001000000010" role="Primary"/>
|
||||
<eventref hlink="_0000001500000015" role="Primary"/>
|
||||
<eventref hlink="_0000001e0000001e" role="Primary"/>
|
||||
<objref hlink="_0000001f0000001f"/>
|
||||
<attribute type="RIN" value="123456 Person"/>
|
||||
<attribute type="REFN" value="98765 for PERSON"/>
|
||||
<attribute type="REFN" value="98765 for PERSON">
|
||||
<noteref hlink="_0000001e0000001e"/>
|
||||
</attribute>
|
||||
<url href="http://homepages.rootsweb.com/~pmcbride/gedcom/55gctoc.htm" type="Web Home" description="GEDCOM 5.5 documentation web site"/>
|
||||
<parentin hlink="_0000001700000017"/>
|
||||
<noteref hlink="_0000001800000018"/>
|
||||
@@ -270,7 +267,8 @@
|
||||
|
||||
Line ignored as not understood Line 18: 2 TEST Header Note
|
||||
Empty note ignored Line 19: 1 NOTE
|
||||
Skipped subordinate line Line 20: 2 TEST Empty Note</text>
|
||||
Skipped subordinate line Line 20: 2 TEST Empty Note
|
||||
</text>
|
||||
<style name="fontface" value="Monospace">
|
||||
<range start="0" end="327"/>
|
||||
</style>
|
||||
@@ -288,7 +286,8 @@ Skipped subordinate line Line 20:
|
||||
Line ignored as not understood Line 26: 2 TEST Submission Note
|
||||
Empty note ignored Line 27: 1 NOTE
|
||||
Skipped subordinate line Line 28: 2 TEST Empty Note
|
||||
Line ignored as not understood Line 29: 1 TEST submission</text>
|
||||
Line ignored as not understood Line 29: 1 TEST submission
|
||||
</text>
|
||||
<style name="fontface" value="Monospace">
|
||||
<range start="0" end="425"/>
|
||||
</style>
|
||||
@@ -300,7 +299,8 @@ Tag recognized but not supported Line 32:
|
||||
Tag recognized but not supported Line 33: 1 REFN Submission Note REFN
|
||||
Skipped subordinate line Line 34: 2 TYPE Submission Note REFN TYPE
|
||||
Tag recognized but not supported Line 35: 1 SOUR Submission note source
|
||||
Line ignored as not understood Line 39: 1 TEST on XREF Note</text>
|
||||
Line ignored as not understood Line 39: 1 TEST on XREF Note
|
||||
</text>
|
||||
<style name="fontface" value="Monospace">
|
||||
<range start="0" end="586"/>
|
||||
</style>
|
||||
@@ -318,7 +318,8 @@ Line ignored as not understood Line 39:
|
||||
Line ignored as not understood Line 43: 2 TEST Submitter Note
|
||||
Empty note ignored Line 44: 1 NOTE
|
||||
Skipped subordinate line Line 45: 2 TEST Empty Note
|
||||
Line ignored as not understood Line 46: 1 TEST Submitter</text>
|
||||
Line ignored as not understood Line 46: 1 TEST Submitter
|
||||
</text>
|
||||
<style name="fontface" value="Monospace">
|
||||
<range start="0" end="460"/>
|
||||
</style>
|
||||
@@ -360,7 +361,10 @@ Line ignored as not understood Line 46:
|
||||
<note handle="_0000001d0000001d" change="979250406" id="N0018" type="Media Note">
|
||||
<text>Media xref note</text>
|
||||
</note>
|
||||
<note handle="_0000002100000021" change="1" id="N0019" type="GEDCOM import">
|
||||
<note handle="_0000001e0000001e" change="1" id="N0019" type="REFN-TYPE">
|
||||
<text>Who knows OBJE REFN TYPE</text>
|
||||
</note>
|
||||
<note handle="_0000002100000021" change="1" id="N0020" type="GEDCOM import">
|
||||
<text>Records not imported into INDI (individual) Gramps ID I0001:
|
||||
|
||||
Empty note ignored Line 54: 2 NOTE
|
||||
@@ -382,12 +386,14 @@ Empty note ignored Line 85:
|
||||
Skipped subordinate line Line 86: 3 TEST Empty Note
|
||||
Line ignored as not understood Line 88: 3 TEST 123456 Note
|
||||
Empty note ignored Line 90: 2 NOTE
|
||||
Skipped subordinate line Line 91: 3 TEST Empty Note</text>
|
||||
Skipped subordinate line Line 91: 3 TEST Empty Note
|
||||
Line ignored as not understood Line 94: 2 TEST REFN
|
||||
</text>
|
||||
<style name="fontface" value="Monospace">
|
||||
<range start="0" end="2009"/>
|
||||
<range start="0" end="2101"/>
|
||||
</style>
|
||||
</note>
|
||||
<note handle="_0000002200000022" change="1" id="N0020" type="GEDCOM import">
|
||||
<note handle="_0000002200000022" change="1" id="N0021" type="GEDCOM import">
|
||||
<text>Records not imported into NOTE Gramps ID N0018:
|
||||
|
||||
Tag recognized but not supported Line 103: 1 RIN 123456
|
||||
@@ -396,85 +402,89 @@ Skipped subordinate line Line 105:
|
||||
Tag recognized but not supported Line 109: 2 NOTE Note on a change on a note!!!
|
||||
Skipped subordinate line Line 110: 3 CHAN
|
||||
Skipped subordinate line Line 111: 4 DATE 2001-01-11
|
||||
Skipped subordinate line Line 112: 5 TIME 16:00:06</text>
|
||||
Skipped subordinate line Line 112: 5 TIME 16:00:06
|
||||
</text>
|
||||
<style name="fontface" value="Monospace">
|
||||
<range start="0" end="741"/>
|
||||
</style>
|
||||
</note>
|
||||
<note handle="_0000002300000023" change="1" id="N0021" type="REFN-TYPE">
|
||||
<note handle="_0000002300000023" change="1" id="N0022" type="REFN-TYPE">
|
||||
<text>Who knows REFN TYPE</text>
|
||||
</note>
|
||||
<note handle="_0000002500000025" change="1" id="N0022" type="GEDCOM import">
|
||||
<note handle="_0000002500000025" change="1" id="N0023" type="GEDCOM import">
|
||||
<text>Records not imported into OBJE (multi-media object) Gramps ID M1:
|
||||
|
||||
Could not import photo.jpg Line 114: 1 FILE photo.jpg</text>
|
||||
Could not import photo.jpg Line 114: 1 FILE photo.jpg
|
||||
</text>
|
||||
<style name="fontface" value="Monospace">
|
||||
<range start="0" end="164"/>
|
||||
</style>
|
||||
</note>
|
||||
<note handle="_0000002900000029" change="979250406" id="N0023" type="Person Note">
|
||||
<note handle="_0000002900000029" change="979250406" id="N0024" type="Person Note">
|
||||
<text>Family Spouse reference Note</text>
|
||||
<tagref hlink="_0000000500000005"/>
|
||||
</note>
|
||||
<note handle="_0000002b0000002b" change="1" id="N0024" type="GEDCOM import">
|
||||
<note handle="_0000002b0000002b" change="1" id="N0025" type="GEDCOM import">
|
||||
<text>Records not imported into INDI (individual) Gramps ID I0002:
|
||||
|
||||
Empty note ignored Line 132: 2 NOTE
|
||||
Skipped subordinate line Line 133: 3 TEST Empty Note</text>
|
||||
Skipped subordinate line Line 133: 3 TEST Empty Note
|
||||
</text>
|
||||
<style name="fontface" value="Monospace">
|
||||
<range start="0" end="248"/>
|
||||
</style>
|
||||
</note>
|
||||
<note handle="_0000002d0000002d" change="979250406" id="N0025" type="General">
|
||||
<note handle="_0000002d0000002d" change="979250406" id="N0026" type="General">
|
||||
<text>Name note</text>
|
||||
<tagref hlink="_0000000500000005"/>
|
||||
</note>
|
||||
<note handle="_0000003100000031" change="1" id="N0026" type="LDS Note">
|
||||
<note handle="_0000003100000031" change="1" id="N0027" type="LDS Note">
|
||||
<text>Place note</text>
|
||||
<tagref hlink="_0000000500000005"/>
|
||||
</note>
|
||||
<note handle="_0000003400000034" change="1" id="N0027" type="LDS Note">
|
||||
<note handle="_0000003400000034" change="1" id="N0028" type="LDS Note">
|
||||
<text>LDS xref note</text>
|
||||
</note>
|
||||
<note handle="_0000003600000036" change="979250406" id="N0028" type="Association Note">
|
||||
<note handle="_0000003600000036" change="979250406" id="N0029" type="Association Note">
|
||||
<text>Association link note</text>
|
||||
<tagref hlink="_0000000500000005"/>
|
||||
</note>
|
||||
<note handle="_0000003800000038" change="1" id="N0029" type="GEDCOM import">
|
||||
<note handle="_0000003800000038" change="1" id="N0030" type="GEDCOM import">
|
||||
<text>Records not imported into INDI (individual) Gramps ID I0003:
|
||||
|
||||
Empty note ignored Line 141: 2 NOTE
|
||||
Skipped subordinate line Line 142: 3 TEST Empty Note
|
||||
Line ignored as not understood Line 163: 3 TEST Accociation note
|
||||
Empty note ignored Line 167: 2 NOTE
|
||||
Skipped subordinate line Line 168: 3 TEST Empty Note</text>
|
||||
Skipped subordinate line Line 168: 3 TEST Empty Note
|
||||
</text>
|
||||
<style name="fontface" value="Monospace">
|
||||
<range start="0" end="538"/>
|
||||
</style>
|
||||
</note>
|
||||
<note handle="_0000003900000039" change="979250406" id="N0030" type="General">
|
||||
<note handle="_0000003900000039" change="979250406" id="N0031" type="General">
|
||||
<text>Just for association</text>
|
||||
<tagref hlink="_0000000500000005"/>
|
||||
</note>
|
||||
<note handle="_0000003e0000003e" change="1" id="N0031" type="Family Note">
|
||||
<note handle="_0000003e0000003e" change="1" id="N0032" type="Family Note">
|
||||
<text>Family xref note</text>
|
||||
</note>
|
||||
<note handle="_0000003f0000003f" change="979250406" id="N0032" type="Family Note">
|
||||
<note handle="_0000003f0000003f" change="979250406" id="N0033" type="Family Note">
|
||||
<text>Family note</text>
|
||||
<tagref hlink="_0000000500000005"/>
|
||||
</note>
|
||||
<note handle="_0000004000000040" change="1" id="N0033" type="Citation">
|
||||
<note handle="_0000004000000040" change="1" id="N0034" type="Citation">
|
||||
<text>Citation Data Note</text>
|
||||
<tagref hlink="_0000000500000005"/>
|
||||
</note>
|
||||
<note handle="_0000004100000041" change="1" id="N0034" type="Source text">
|
||||
<note handle="_0000004100000041" change="1" id="N0035" type="Source text">
|
||||
<text>A sample text from a source of this family</text>
|
||||
</note>
|
||||
<note handle="_0000004200000042" change="979250406" id="N0035" type="Citation">
|
||||
<note handle="_0000004200000042" change="979250406" id="N0036" type="Citation">
|
||||
<text>A note this citation is on the FAMILY record.</text>
|
||||
<tagref hlink="_0000000500000005"/>
|
||||
</note>
|
||||
<note handle="_0000004400000044" change="1" id="N0036" type="GEDCOM import">
|
||||
<note handle="_0000004400000044" change="1" id="N0037" type="GEDCOM import">
|
||||
<text>Records not imported into FAM (family) Gramps ID F0001:
|
||||
|
||||
Line ignored as not understood Line 183: 2 TEST Family Note
|
||||
@@ -482,41 +492,44 @@ Empty note ignored Line 187:
|
||||
Skipped subordinate line Line 188: 2 TEST Empty Note
|
||||
Line ignored as not understood Line 190: 2 TEST citation
|
||||
Line ignored as not understood Line 194: 3 TEST Citation Data
|
||||
Line ignored as not understood Line 196: 4 TEST Citation Data Note</text>
|
||||
Line ignored as not understood Line 196: 4 TEST Citation Data Note
|
||||
</text>
|
||||
<style name="fontface" value="Monospace">
|
||||
<range start="0" end="645"/>
|
||||
</style>
|
||||
</note>
|
||||
<note handle="_0000004600000046" change="979250406" id="N0037" type="Repository Reference Note">
|
||||
<note handle="_0000004600000046" change="979250406" id="N0038" type="Repository Reference Note">
|
||||
<text>A short note about the repository link.</text>
|
||||
<tagref hlink="_0000000500000005"/>
|
||||
</note>
|
||||
<note handle="_0000004700000047" change="979250406" id="N0038" type="Source Note">
|
||||
<note handle="_0000004700000047" change="979250406" id="N0039" type="Source Note">
|
||||
<text>note embedded in the SOURCE Record</text>
|
||||
<tagref hlink="_0000000500000005"/>
|
||||
</note>
|
||||
<note handle="_0000004800000048" change="1" id="N0039" type="GEDCOM import">
|
||||
<note handle="_0000004800000048" change="1" id="N0040" type="GEDCOM import">
|
||||
<text>Records not imported into SOUR (source) Gramps ID S0001:
|
||||
|
||||
Line ignored as not understood Line 206: 1 TEST source
|
||||
Empty note ignored Line 208: 2 NOTE
|
||||
Skipped subordinate line Line 209: 3 TEST Empty Note
|
||||
Empty note ignored Line 214: 1 NOTE
|
||||
Skipped subordinate line Line 215: 2 TEST Empty Note</text>
|
||||
Skipped subordinate line Line 215: 2 TEST Empty Note
|
||||
</text>
|
||||
<style name="fontface" value="Monospace">
|
||||
<range start="0" end="524"/>
|
||||
</style>
|
||||
</note>
|
||||
<note handle="_0000004900000049" change="1" id="N0040" type="Repository Note">
|
||||
<note handle="_0000004900000049" change="1" id="N0041" type="Repository Note">
|
||||
<text>Repository Note</text>
|
||||
<tagref hlink="_0000000500000005"/>
|
||||
</note>
|
||||
<note handle="_0000004a0000004a" change="1" id="N0041" type="GEDCOM import">
|
||||
<note handle="_0000004a0000004a" change="1" id="N0042" type="GEDCOM import">
|
||||
<text>Records not imported into REPO (repository) Gramps ID R0002:
|
||||
|
||||
Line ignored as not understood Line 223: 1 TEST Repo
|
||||
Empty note ignored Line 224: 1 NOTE
|
||||
Skipped subordinate line Line 225: 2 TEST Empty Note</text>
|
||||
Skipped subordinate line Line 225: 2 TEST Empty Note
|
||||
</text>
|
||||
<style name="fontface" value="Monospace">
|
||||
<range start="0" end="340"/>
|
||||
</style>
|
||||
|
||||
@@ -50,9 +50,9 @@
|
||||
0 @I0@ INDI
|
||||
1 NAME Anna /Hansdotter/
|
||||
2 GIVN Anna
|
||||
2 SURN Hansdotter, Smith
|
||||
2 SPFX Vrow, huh
|
||||
2 SURN Hansdotter
|
||||
2 SPFX Vrow
|
||||
2 SURN Smith
|
||||
2 _AKA Anna Smith
|
||||
2 _AKA Hanna
|
||||
2 NOTE Hans daughter? N0000
|
||||
@@ -83,6 +83,8 @@
|
||||
2 DATE 11 AUG 1966
|
||||
2 PLAC San Francisco, San Francisco Co., CA
|
||||
1 FAMC @F8@
|
||||
2 _FREL Adopted
|
||||
2 _MREL Foster
|
||||
1 CHAN
|
||||
2 DATE 21 DEC 2007
|
||||
3 TIME 01:35:26
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"http://gramps-project.org/xml/1.7.1/grampsxml.dtd">
|
||||
<database xmlns="http://gramps-project.org/xml/1.7.1/">
|
||||
<header>
|
||||
<created date="2016-10-24" version="5.0.0-alpha1"/>
|
||||
<created date="2019-08-04" version="5.0.2"/>
|
||||
<researcher>
|
||||
<resname>Alex Roitman,,,</resname>
|
||||
<resaddr>Not Provided</resaddr>
|
||||
@@ -163,6 +163,7 @@
|
||||
</event>
|
||||
<event handle="_0000005500000055" change="1" id="E0026">
|
||||
<type>Birth</type>
|
||||
<description>No Date Information</description>
|
||||
</event>
|
||||
<event handle="_0000005600000056" change="1" id="E0027">
|
||||
<type>Death</type>
|
||||
@@ -616,7 +617,8 @@
|
||||
<gender>F</gender>
|
||||
<name type="Birth Name">
|
||||
<first>Anna</first>
|
||||
<surname prefix="Vrow">Smith</surname>
|
||||
<surname prefix="Vrow">Hansdotter</surname>
|
||||
<surname prim="0">Smith</surname>
|
||||
<noteref hlink="_0000001100000011"/>
|
||||
</name>
|
||||
<name alt="1" type="Also Known As">
|
||||
@@ -1132,7 +1134,7 @@
|
||||
<mother hlink="_000000b6000000b6"/>
|
||||
<eventref hlink="_000000e3000000e3" role="Family"/>
|
||||
<childref hlink="_0000004800000048" mrel="Adopted" frel="Adopted"/>
|
||||
<childref hlink="_0000001900000019"/>
|
||||
<childref hlink="_0000001900000019" mrel="Foster" frel="Adopted"/>
|
||||
<childref hlink="_0000007b0000007b" mrel="Adopted" frel="Adopted"/>
|
||||
<noteref hlink="_000000e4000000e4"/>
|
||||
</family>
|
||||
@@ -1456,13 +1458,13 @@
|
||||
<noteref hlink="_000000f9000000f9"/>
|
||||
</object>
|
||||
<object handle="_000000d1000000d1" change="1" id="O0001">
|
||||
<file src="Magnes&Anna_smiths_marr_cert.jpg" mime="unknown" description="Magnes&Anna_smiths_marr_cert.jpg"/>
|
||||
<file src="Magnes&Anna_smiths_marr_cert.jpg" mime="image/jpeg" description="Magnes&Anna_smiths_marr_cert.jpg"/>
|
||||
</object>
|
||||
<object handle="_000000d8000000d8" change="1" id="O0002">
|
||||
<file src="John&Alice_smiths_marr_cert.jpg" mime="unknown" description="John&Alice_smiths_marr_cert.jpg"/>
|
||||
<file src="John&Alice_smiths_marr_cert.jpg" mime="image/jpeg" description="John&Alice_smiths_marr_cert.jpg"/>
|
||||
</object>
|
||||
<object handle="_000000f1000000f1" change="1" id="O0003">
|
||||
<file src="Attic_photo.jpg" mime="unknown" description="Attic_photo.jpg"/>
|
||||
<file src="Attic_photo.jpg" mime="image/jpeg" description="Attic_photo.jpg"/>
|
||||
</object>
|
||||
</objects>
|
||||
<repositories>
|
||||
@@ -1506,7 +1508,8 @@
|
||||
<note handle="_0000000100000001" change="1" id="N0000" type="GEDCOM import">
|
||||
<text>Records not imported into HEAD (header):
|
||||
|
||||
GEDCOM FORM not supported Line 14: 2 FORM NOT LINEAGE-LINKED</text>
|
||||
GEDCOM FORM not supported Line 14: 2 FORM NOT LINEAGE-LINKED
|
||||
</text>
|
||||
<style name="fontface" value="Monospace">
|
||||
<range start="0" end="148"/>
|
||||
</style>
|
||||
@@ -1514,7 +1517,8 @@ GEDCOM FORM not supported Line 14:
|
||||
<note handle="_0000000200000002" change="1" id="N0001" type="GEDCOM import">
|
||||
<text>Records not imported into SUBM (Submitter): (@SUBM@) Alex Roitman,,,:
|
||||
|
||||
Line ignored as not understood Line 23: 2 NOTE No address provided (note not supported)</text>
|
||||
Line ignored as not understood Line 23: 2 NOTE No address provided (note not supported)
|
||||
</text>
|
||||
<style name="fontface" value="Monospace">
|
||||
<range start="0" end="199"/>
|
||||
</style>
|
||||
@@ -1523,7 +1527,8 @@ Line ignored as not understood Line 23:
|
||||
<text>Records not imported into FAM (family) Gramps ID F0003:
|
||||
|
||||
Line ignored as not understood Line 46: 2 SOUR Not really allowed here
|
||||
Filename omitted Line 48: 1 OBJE</text>
|
||||
Filename omitted Line 48: 1 OBJE
|
||||
</text>
|
||||
<style name="fontface" value="Monospace">
|
||||
<range start="0" end="256"/>
|
||||
</style>
|
||||
@@ -1561,8 +1566,9 @@ Filename omitted Line 48:
|
||||
<note handle="_0000003d0000003d" change="1" id="N0012" type="GEDCOM import">
|
||||
<text>Records not imported into INDI (individual) Gramps ID I0016:
|
||||
|
||||
Warn: ADDR overwritten Line 204: 3 ADR1 456 Main St again
|
||||
ADDR element ignored '459 Main St.' Line 202: 2 ADDR 459 Main St., The Village, San Francisco, CA, USA</text>
|
||||
Warn: ADDR overwritten Line 206: 3 ADR1 456 Main St again
|
||||
ADDR element ignored '459 Main St.' Line 204: 2 ADDR 459 Main St., The Village, San Francisco, CA, USA
|
||||
</text>
|
||||
<style name="fontface" value="Monospace">
|
||||
<range start="0" end="304"/>
|
||||
</style>
|
||||
@@ -1573,7 +1579,8 @@ ADDR element ignored '459 Main St.' Line 202:
|
||||
<note handle="_0000004700000047" change="1" id="N0014" type="GEDCOM import">
|
||||
<text>Records not imported into INDI (individual) Gramps ID I0018:
|
||||
|
||||
Tag recognized but not supported Line 245: 2 TYPE first generaton</text>
|
||||
Tag recognized but not supported Line 247: 2 TYPE first generaton
|
||||
</text>
|
||||
<style name="fontface" value="Monospace">
|
||||
<range start="0" end="165"/>
|
||||
</style>
|
||||
@@ -1604,7 +1611,8 @@ Company. He enlisted in the army at Sparks 7 December 1917 and served as a Corpo
|
||||
<note handle="_000000cf000000cf" change="1" id="N0021" type="GEDCOM import">
|
||||
<text>Records not imported into FAM (family) Gramps ID F0010:
|
||||
|
||||
Tag recognized but not supported Line 863: 2 _STAT</text>
|
||||
Tag recognized but not supported Line 865: 2 _STAT
|
||||
</text>
|
||||
<style name="fontface" value="Monospace">
|
||||
<range start="0" end="146"/>
|
||||
</style>
|
||||
@@ -1612,8 +1620,9 @@ Tag recognized but not supported Line 863:
|
||||
<note handle="_000000d4000000d4" change="1" id="N0022" type="GEDCOM import">
|
||||
<text>Records not imported into FAM (family) Gramps ID F0011:
|
||||
|
||||
Could not import Magnes&Anna_smiths_marr_cert.jpg Line 878: 3 OBJE
|
||||
Could not import Magnes&Anna_smiths_marr_cert.jpg Line 881: 2 OBJE</text>
|
||||
Could not import Magnes&Anna_smiths_marr_cert.jpg Line 880: 3 OBJE
|
||||
Could not import Magnes&Anna_smiths_marr_cert.jpg Line 883: 2 OBJE
|
||||
</text>
|
||||
<style name="fontface" value="Monospace">
|
||||
<range start="0" end="233"/>
|
||||
</style>
|
||||
@@ -1621,7 +1630,8 @@ Could not import Magnes&Anna_smiths_marr_cert.jpg Line 8
|
||||
<note handle="_000000d9000000d9" change="1" id="N0023" type="GEDCOM import">
|
||||
<text>Records not imported into FAM (family) Gramps ID F0012:
|
||||
|
||||
Could not import John&Alice_smiths_marr_cert.jpg Line 905: 1 OBJE</text>
|
||||
Could not import John&Alice_smiths_marr_cert.jpg Line 907: 1 OBJE
|
||||
</text>
|
||||
<style name="fontface" value="Monospace">
|
||||
<range start="0" end="145"/>
|
||||
</style>
|
||||
@@ -1629,7 +1639,8 @@ Could not import John&Alice_smiths_marr_cert.jpg Line 9
|
||||
<note handle="_000000e4000000e4" change="1" id="N0024" type="GEDCOM import">
|
||||
<text>Records not imported into FAM (family) Gramps ID F0008:
|
||||
|
||||
Tag recognized but not supported Line 1005: 1 ADDR 123 Main st, Grantville, Virginia, USA</text>
|
||||
Tag recognized but not supported Line 1007: 1 ADDR 123 Main st, Grantville, Virginia, USA
|
||||
</text>
|
||||
<style name="fontface" value="Monospace">
|
||||
<range start="0" end="183"/>
|
||||
</style>
|
||||
@@ -1652,8 +1663,9 @@ Tag recognized but not supported Line 1005:
|
||||
<note handle="_000000ee000000ee" change="1" id="N0030" type="GEDCOM import">
|
||||
<text>Records not imported into SOUR (source) Gramps ID S0003:
|
||||
|
||||
Tag recognized but not supported Line 1045: 1 DATA
|
||||
Skipped subordinate line Line 1046: 2 AGNC NYC Public Library</text>
|
||||
Tag recognized but not supported Line 1047: 1 DATA
|
||||
Skipped subordinate line Line 1048: 2 AGNC NYC Public Library
|
||||
</text>
|
||||
<style name="fontface" value="Monospace">
|
||||
<range start="0" end="252"/>
|
||||
</style>
|
||||
@@ -1667,9 +1679,10 @@ Skipped subordinate line Line 1046:
|
||||
<note handle="_000000f5000000f5" change="1" id="N0033" type="GEDCOM import">
|
||||
<text>Records not imported into REPO (repository) Gramps ID R0003:
|
||||
|
||||
REFN ignored Line 1075: 3 REFN blah blah
|
||||
Skipped subordinate line Line 1076: 4 TYPE who knows
|
||||
Could not import Attic_photo.jpg Line 1079: 3 OBJE</text>
|
||||
REFN ignored Line 1077: 3 REFN blah blah
|
||||
Skipped subordinate line Line 1078: 4 TYPE who knows
|
||||
Could not import Attic_photo.jpg Line 1081: 3 OBJE
|
||||
</text>
|
||||
<style name="fontface" value="Monospace">
|
||||
<range start="0" end="344"/>
|
||||
</style>
|
||||
@@ -1677,7 +1690,8 @@ Could not import Attic_photo.jpg Line 1079:
|
||||
<note handle="_000000f6000000f6" change="1" id="N0034" type="GEDCOM import">
|
||||
<text>Records not imported into Top Level:
|
||||
|
||||
Unknown tag Line 1106: 0 XXX an unknown token at level 0</text>
|
||||
Unknown tag Line 1108: 0 XXX an unknown token at level 0
|
||||
</text>
|
||||
<style name="fontface" value="Monospace">
|
||||
<range start="0" end="152"/>
|
||||
</style>
|
||||
@@ -1685,12 +1699,13 @@ Unknown tag Line 1106:
|
||||
<note handle="_000000f8000000f8" change="1" id="N0035" type="GEDCOM import">
|
||||
<text>Records not imported into Top Level:
|
||||
|
||||
Unknown tag Line 1109: 1 @X1@ XXX and unknown token xref definition</text>
|
||||
Unknown tag Line 1111: 1 @X1@ XXX and unknown token xref definition
|
||||
</text>
|
||||
<style name="fontface" value="Monospace">
|
||||
<range start="0" end="163"/>
|
||||
</style>
|
||||
</note>
|
||||
<note handle="_000000f9000000f9" change="1477325896" id="N0036" type="General">
|
||||
<note handle="_000000f9000000f9" change="1564950708" id="N0036" type="General">
|
||||
<text>Objects referenced by this note were missing in a file imported on 12/25/1999 12:00:00 AM.</text>
|
||||
</note>
|
||||
</notes>
|
||||
|
||||
+188
-195
File diff suppressed because it is too large.
Load diff
+2
-2
@@ -57,7 +57,7 @@
|
||||
|
||||
<_tip number="29"><b>Show All Checkbutton</b><br/>When adding an existing person as a spouse, the list of people shown is filtered to display only people who could realistically fit the role (based on dates in the database). In case Gramps is wrong in making this choice, you can override the filter by checking the Show All checkbutton.</_tip>
|
||||
|
||||
<_tip number="31"><b>Improving Gramps</b><br/>Users are encouraged to request enhancements to Gramps. Requesting an enhancement can be done either through the gramps-users or gramps-devel mailing lists, or by going to http://bugs.gramps-project.org and creating a Feature Request. Filing a Feature Request is preferred but it can be good to discuss your ideas on the email lists.</_tip>
|
||||
<_tip number="31"><b>Improving Gramps</b><br/>Users are encouraged to request enhancements to Gramps. Requesting an enhancement can be done either through the gramps-users or gramps-devel mailing lists, or by going to https://gramps-project.org/bugs/ and creating a Feature Request. Filing a Feature Request is preferred but it can be good to discuss your ideas on the email lists.</_tip>
|
||||
|
||||
<_tip number="32"><b>Gramps Mailing Lists</b><br/>Want answers to your questions about Gramps? Check out the gramps-users email list. Many helpful people are on the list, so you're likely to get an answer quickly. If you have questions related to the development of Gramps, try the gramps-devel list. You can see the lists by selecting "Help > Gramps Mailing Lists".</_tip>
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
|
||||
<_tip number="49"><b>Making a Genealogy Website</b><br/>You can easily export your family tree to a web page. Select the entire database, family lines or selected individuals to a collection of web pages ready for upload to the World Wide Web.</_tip>
|
||||
|
||||
<_tip number="50"><b>Reporting Bugs in Gramps</b><br/>The best way to report a bug in Gramps is to use the Gramps bug tracking system at http://bugs.gramps-project.org</_tip>
|
||||
<_tip number="50"><b>Reporting Bugs in Gramps</b><br/>The best way to report a bug in Gramps is to use the Gramps bug tracking system at https://gramps-project.org/bugs/</_tip>
|
||||
|
||||
<_tip number="51"><b>The Gramps Homepage</b><br/>The Gramps homepage is at http://gramps-project.org/</_tip>
|
||||
|
||||
|
||||
Vendored
+12
-12
@@ -1,18 +1,18 @@
|
||||
Gramps for Debian
|
||||
----------------------
|
||||
-----------------
|
||||
|
||||
This is the Debian package of the 4.0 series of GRAMPS.
|
||||
Version 5.0 of gramps adds the option of using a new database backend called
|
||||
DB_API, as an alternative to the default BSDDB (Berkeley).
|
||||
|
||||
It is a major update of Gramps to upgrade to GTK 3. A switch was also made to distutils from autotools.
|
||||
Two DB-API SQL engines have been developed, sqlite3 and postgresql. Compared
|
||||
to BSDDB, the alternative backends have beend designed allow some flexibility
|
||||
with respect to using the database with multiple users, or in multiple
|
||||
locations (different computers).
|
||||
|
||||
The 4.0 series of Gramps is being packaged for the experimental distribution until all dependencies are available
|
||||
and it proves stable.
|
||||
For more details, please read the Gramps wiki:
|
||||
https://gramps-project.org/wiki/index.php?title=DB-API_Database_Backend
|
||||
|
||||
Webkit - gir1.2-webkit-3.0 crashes. Gramps has been patched disable the hidden
|
||||
HTML view instead until a solution is found.
|
||||
Please note, this particular version is a pre-release version for testing.
|
||||
Please do not use it on your only copy of important genealogical data.
|
||||
|
||||
Goocanvas2 - The latest Goocanvas is not available in Debian yet. If you miss
|
||||
the Graphview plugin, you could try installing the gir1.2-goocanvas-2.0-9 which
|
||||
is available in Ubuntu.
|
||||
|
||||
-- Ross Gammon <rossgammon@mail.dk> Sat, 25 Jan 2014 18:00:00 +0100
|
||||
-- Ross Gammon <rossgammon@debian.org> Mon, 19 Feb 2018 00:04:00 +0100
|
||||
Vendored
+157
@@ -0,0 +1,157 @@
|
||||
Run gramps -v from the commandline and check dependencies:
|
||||
- From the commandline type $ gramps -v
|
||||
- The gramps version and versions of library dependencies are output
|
||||
- Check that all dependencies have been installed, show their versions, and that there are no error messages
|
||||
- If required, install the dependencies that have not been found (typically icu, osmgpsmap & gexiv)
|
||||
- Type $ gramps -v again
|
||||
- Check that all dependencies have been installed, show their versions, and that there are no error messages
|
||||
|
||||
Open Gramps, create an empty Family Tree, and check the Gramps version, credits & license:
|
||||
- Run gramps
|
||||
- Family Trees window opens
|
||||
- Click "New" to create an empty Family Tree
|
||||
- Type a name for your family tree (e.g. Sample), and press "Enter"
|
||||
- Click "Load Family Tree"
|
||||
- Gramps displays the "Welcome to Gramps!" start screen
|
||||
- Choose Help > About from the menu
|
||||
- The "About gramps" window is displayed with Version information
|
||||
- Click on "Credits"
|
||||
- A list of Authors and Contributors to Gramps is displayed
|
||||
- Click on "License"
|
||||
- The GNU General Public License is displayed
|
||||
- Click on the "X" to close the "About gramps" window
|
||||
- Gramps closes the "About gramps" window and returns to the "Welcome to Gramps!" start screen
|
||||
|
||||
Import a GEDCOM file into Gramps
|
||||
If you do not have one to hand, the provided example can be extracted to your home directory and imported from there.
|
||||
/usr/share/doc/gramps/example/gedcom/sample.ged.gz
|
||||
- From your open and empty Family Tree, choose Family Trees > Import from the menu
|
||||
- The Gramps: Import Family Tree window opens
|
||||
- Locate your GEDCOM file, select it and click on "Import"
|
||||
- The Import Statistics window displays "Results: done"
|
||||
- Click on "Close"
|
||||
- The GEDCOM import report window displays "No errors detected"
|
||||
- CLick on "Close"
|
||||
- The Top Surnames gramplet displays the surnames of the people imported into the Tree
|
||||
|
||||
Test aspects of the People View
|
||||
- Click on the People View
|
||||
- A list of people in "Group View" mode are shown
|
||||
- Click on the arrow for a surname (e.g. Hansdotter)
|
||||
- The people with this surname are revealed
|
||||
- Select a person and click in the "Edit selcted person" icon (or just double click on the person)
|
||||
- The "Person" window opens showing the details of this person
|
||||
- Click on Cancel
|
||||
- The "Person" window closes
|
||||
- Choose the person list view (not grouped) by clicking on the "People" icon
|
||||
- The people are now listed without any grouping by surname
|
||||
- Click on the "+" icon to create a new person
|
||||
- An empty "Person" window opens
|
||||
- Enter some details about the person (e.g. given name, surname, and gender)
|
||||
- Click on the "+" button to create a new event for this person
|
||||
- The "Event Reference Editor" window opens
|
||||
- Create an event (e.g. birth) by entering a date
|
||||
- Click on the "+" button to add a new place
|
||||
- The "New Place" window opens
|
||||
- Type in some details about the place (Name, Type, Latitude & Longitude)
|
||||
- Click on OK
|
||||
- The "New Place" window closes
|
||||
- In the "Event Reference Editor" click OK
|
||||
- In the "Person" window click OK
|
||||
- The "Person" window closes and you can find the person just created in the list of people
|
||||
|
||||
Test aspects of the Relationships View
|
||||
- Click on Anna Hansdotter to select her
|
||||
- Click on the Relationships View
|
||||
- Details of Anna and her family are displayed
|
||||
- Click on one of her children, Hjalmar Smith
|
||||
- Details of Hjalmar and his family are displayed
|
||||
- Click on the "Add existing Child to family" icon just above Halmar's children
|
||||
- The "Select Child" window opens
|
||||
- Find the person you entered previously and select it
|
||||
- Click OK
|
||||
- The "Select Child" window closes and you can see the new person listed as a child in Hjalmar's family
|
||||
|
||||
Test aspects of the Charts View
|
||||
- Click on the Charts View
|
||||
- The Pedigree View is shown
|
||||
- Click somewhere in the Pedigree View and drag the chart around
|
||||
- The mouse pointer changes to a hand and the chart can be move around
|
||||
- Click on the left and right arrows (when going left you need to choose the child to move to)
|
||||
- The chart will move to reveal the next generation in the family
|
||||
- Make sure there are several families in view, then Click on the "Fan Chart" icon
|
||||
- A fan chart showing the ancesters of the main person is shown
|
||||
- Click on the Descendant Fan icon
|
||||
- A fan chart showing the descendants of the same person is shown
|
||||
|
||||
Test aspects of the Geography View
|
||||
- Click on the Geography View
|
||||
- The map may take some time to load, then a pin for the person you entered early should be shown on the map at the coordinates you entered
|
||||
- Click on the pin
|
||||
- A choice of the place, or the person will be offered
|
||||
- Hover over the place name, and choose "Edit Place"
|
||||
- The "Place Selection in a region" opens
|
||||
- Double click on the place
|
||||
- The "Place:" editor opens
|
||||
- Click on Cancel
|
||||
- Click on the pin
|
||||
- A choice of the place, or the person will be offered
|
||||
- Hover over the persons name, and choose "Edit Event"
|
||||
- The "Event:" window opens
|
||||
- Click on Cancel
|
||||
|
||||
Import a Gramps Xml file (*.gramps) into Gramps
|
||||
An existing Gramps *.gramps file with links to media will be needed for this and the next test. If you do not have one to hand, the provided example can be extracted to your home directory and imported from there.
|
||||
/usr/share/doc/gramps/example/gramps/example.gramps.gz
|
||||
- From the "Family Trees" menu, choose "Manage Family Trees"
|
||||
- The Family Trees window opens
|
||||
- Click "New" to create an empty Family Tree
|
||||
- Type a name for your family tree (e.g. Example), and press "Enter"
|
||||
- Click "Load Family Tree"
|
||||
- Gramps opens an empty database
|
||||
- From your open and empty Family Tree, choose Family Trees > Import from the menu
|
||||
- The Gramps: Import Family Tree window opens
|
||||
- Locate your *.gramps file, select it and click on "Import"
|
||||
- The import may take some minutes, then the Import Statistics window displays the number of objects imported.
|
||||
- Click on "Close"
|
||||
- The Import Statistics window closes.
|
||||
|
||||
View Media for a person, and add new media
|
||||
The media for the example file you may have used in the previous test can be found in /usr/share/doc/gramps/example/gramps/. Create a folder in your home directory to store Gramps media, and then copy the media there.
|
||||
You will also need a photo to add to Gramps. Any photo will do (e.g. *.jpg file - but you can use the ones provided with Gramps).
|
||||
You also need to set the base media patch for Gramps.
|
||||
- In the "Edit" menu, choose "Preferences".
|
||||
- The Preferences window opens on the "General" tab.
|
||||
- Click the "Folder" icon to set the "Base path for relative media paths".
|
||||
- The "Select media directory" window opens
|
||||
- Choose the directory where your media is stored and then click "Apply"
|
||||
- The "Select media directory" window closes
|
||||
- Click Close
|
||||
- The "Preferences" window closes
|
||||
- In the "People" View, find a person with media associated (e.g. Eugene Stanley Garner, Jr. in the example database) and select him/her.
|
||||
- Below the Detials tab, a thumbnail image of the person should appear (in the case of Eugene Stanley Garner, Jr. you should see him yawning). It may be necessary to restart Gramps to see the Thumbnail.
|
||||
- Double click on the person's name in the People View.
|
||||
- The "Person:" window opens, and the image is dispayed for the person in the Image square in the top left corner of the "Person:" window.
|
||||
- Double click on the image.
|
||||
- The Media Reference Editor opens showing details about the image.
|
||||
- Double click in the bottom image Preview.
|
||||
- An external viewer opens giving details of the image metadata and allowing some basic manipulation of the image.
|
||||
- Click on the "X" to close the external viewer
|
||||
- Click "Cancel" on the Media Reference Editor
|
||||
- Click "Cancel" on the "Person:" window.
|
||||
- All three windows close.
|
||||
- Click on the "Media View".
|
||||
- A list of available media is shown.
|
||||
- Click on the "+" icon.
|
||||
- The "Select a media object" window opens.
|
||||
- Move to the folder where the media is and select the new photo (if you are using the examples provided with Gramps, I can recommend choosing O3.jpg).
|
||||
- Click on "OK".
|
||||
- The "New Media" window opens.
|
||||
- Click on "OK".
|
||||
- The media is added to the list of media.
|
||||
- Select the new media.
|
||||
- A preview (thumbnail) image is shown.
|
||||
- Close Gramps by choosing "Quit" from the "Family Trees" menu.
|
||||
- Gramps closes.
|
||||
|
||||
TODO: Tagging & Filtering
|
||||
Vendored
+149
-7
@@ -1,16 +1,158 @@
|
||||
Old Changelog:
|
||||
gramps (5.1.1-1) unstable; urgency=medium
|
||||
|
||||
* New release
|
||||
* Add python3-fontconfig to recommends
|
||||
|
||||
-- Ross Gammon <rossgammon@debian.org> Tue, 17 Sep 2019 15:21:43 +0200
|
||||
|
||||
gramps (5.1.0-1) unstable; urgency=medium
|
||||
|
||||
* New release
|
||||
* Update copyrights
|
||||
* Bump gtk+ version to 3.12
|
||||
* Add new geocode-glib dependency
|
||||
|
||||
-- Ross Gammon <rossgammon@debian.org> Sat, 24 Aug 2019 19:49:27 +0200
|
||||
|
||||
gramps (5.0.2-1) unstable; urgency=medium
|
||||
|
||||
* New release
|
||||
* Remove ancient python version field from debian/control
|
||||
* Bump standards version, no changes required
|
||||
|
||||
-- Ross Gammon <rossgammon@debian.org> Sun, 11 Aug 2019 14:11:35 +0200
|
||||
|
||||
gramps (5.0.1-1) unstable; urgency=medium
|
||||
|
||||
* New release
|
||||
* Update copyright file
|
||||
|
||||
-- Ross Gammon <rossgammon@debian.org> Thu, 20 Dec 2018 20:41:23 +0100
|
||||
|
||||
gramps (5.0.0-1) unstable; urgency=medium
|
||||
|
||||
* New Gramps release
|
||||
|
||||
-- Ross Gammon <rossgammon@debian.org> Wed, 25 Jul 2018 21:19:00 +0200
|
||||
|
||||
gramps (5.0.0~rc1-1) unstable; urgency=medium
|
||||
|
||||
* First release candidate for Gramps 5.0
|
||||
* Drop patch applied upstream
|
||||
* Update copyrights
|
||||
|
||||
-- Ross Gammon <rossgammon@debian.org> Sun, 01 Jul 2018 21:57:10 +0200
|
||||
|
||||
gramps (5.0.0~beta1-1) unstable; urgency=medium
|
||||
|
||||
* First beta release of gramps 5.0
|
||||
* Sync debian directory with Debian experimental branch on salsa
|
||||
* Point Vcs URLs at the Gramps Project on Github
|
||||
* Correct spelling in debian/rules, node > nose
|
||||
* Delete gbp.conf, not required as gbp not used to build package
|
||||
* Delete NEWS file, only really applicable in Debian
|
||||
* Fix syntax errors in d/changelog and remove trailing whitespace
|
||||
* Patch person_rules_test.py to remove hard coded build path from
|
||||
import. Fixes FTBFS due to test failure.
|
||||
* Enable extra tests that were failing for alpha3
|
||||
|
||||
-- Ross Gammon <rossgammon@debian.org> Mon, 19 Feb 2018 19:25:25 +0100
|
||||
|
||||
gramps (4.2.8) unstable; urgency=medium
|
||||
|
||||
* Quick bug fix release
|
||||
|
||||
-- Ross Gammon <rossgammon@debian.org> Sat, 10 Feb 2018 08:30:33 +0100
|
||||
|
||||
gramps (5.0.0-alpha3) experimental; urgency=medium
|
||||
|
||||
* New alpha release for Gramps 5.0.0
|
||||
|
||||
-- Ross Gammon <rossgammon@debian.org> Mon, 04 Sep 2017 16:55:41 +0200
|
||||
|
||||
gramps (4.2.6) UNRELEASED; urgency=medium
|
||||
|
||||
* New upstream for Gramps 4.2.6
|
||||
|
||||
-- Jérôme Rapinat <romjerome@yahoo.fr> Tue, 01 Aug 2017 14:10:19 +0200
|
||||
|
||||
gramps (5.0.0-alpha2) experimental; urgency=medium
|
||||
|
||||
* 2nd Alpha release for testing
|
||||
|
||||
-- Ross Gammon <rosco2@ubuntu.com> Mon, 12 Jun 2017 19:42:39 +0200
|
||||
|
||||
gramps (4.2.5) UNRELEASED; urgency=medium
|
||||
|
||||
* New upstream for Gramps 4.2.5
|
||||
|
||||
-- Jérôme Rapinat <romjerome@yahoo.fr> Thu, 15 Dec 2016 18:52:08 +0100
|
||||
|
||||
gramps (4.2.4) UNRELEASED; urgency=medium
|
||||
|
||||
* New upstream for Gramps 4.2.4
|
||||
|
||||
-- Jérôme Rapinat <romjerome@yahoo.fr> Sun, 04 Sep 2016 18:34:49 +0200
|
||||
|
||||
gramps (5.0.0-alpha1) UNRELEASED; urgency=medium
|
||||
|
||||
* Alpha stream for Gramps 5.0.0
|
||||
|
||||
-- système <romjerome@yahoo.fr> Sat, 04 Jun 2016 20:07:14 +0200
|
||||
|
||||
gramps (4.2.3) UNRELEASED; urgency=medium
|
||||
|
||||
* New upstream for Gramps 4.2.3
|
||||
|
||||
-- Jérôme Rapinat <romjerome@yahoo.fr> Sun, 10 Apr 2016 21:09:19 +0200
|
||||
|
||||
gramps (4.2.2) UNRELEASED; urgency=medium
|
||||
|
||||
* New upstream for Gramps 4.2.2
|
||||
|
||||
-- Jérôme Rapinat <romjerome@yahoo.fr> Wed, 06 Jan 2016 19:38:25 +0100
|
||||
|
||||
gramps (4.2.1) UNRELEASED; urgency=medium
|
||||
|
||||
* New upstream for Gramps 4.2.1
|
||||
|
||||
-- Jérôme Rapinat <romjerome@yahoo.fr> Tue, 13 Oct 2015 05:08:30 +0200
|
||||
|
||||
gramps (4.2.0) UNRELEASED; urgency=medium
|
||||
|
||||
* New upstream for Gramps 4.2.0
|
||||
|
||||
-- Jérôme Rapinat <romjerome@yahoo.fr> Sun, 02 Aug 2015 17:03:37 +0200
|
||||
|
||||
gramps (4.1.3) precise; urgency=low
|
||||
|
||||
* New upstream for Gramps 4.1 branch (4.1.3)
|
||||
|
||||
-- Jérôme Rapinat <romjerome@yahoo.fr> Thu, 30 Apr 2015 18:42:34 +0200
|
||||
|
||||
gramps (3.4.9-1) precise; urgency=low
|
||||
|
||||
* New upstream release for 3.4.x branch
|
||||
|
||||
-- Jérôme Rapinat <romjerome@yahoo.fr> Thu, 30 Apr 2015 16:02:44 +0200
|
||||
|
||||
gramps (4.0.4) precise; urgency=low
|
||||
|
||||
* New upsteam for Gramps 4.0.4
|
||||
|
||||
-- Jérôme Rapinat <romjerome@yahoo.fr> Fri, 23 May 2014 17:07:41 +0200
|
||||
|
||||
gramps (4.0.3) precise; urgency=low
|
||||
|
||||
* - 4.0.4-git.f08e40 Experimental stream gramps.git
|
||||
|
||||
-- Jérôme Rapinat <romjerome@yahoo.fr> Tue, 04 Feb 2014 19:49:32 +0100
|
||||
|
||||
|
||||
gramps (4.0.2) precise; urgency=low
|
||||
|
||||
* experimental .deb for gramps 4.0.2
|
||||
|
||||
-- Jérôme Rapinat <romjerome@yahoo.fr> Wed, 04 Dec 2013 10:23:36 +0100
|
||||
|
||||
-- Jérôme Rapinat <romjerome@yahoo.fr> Wed, 04 Dec 2013 10:23:36 +0100
|
||||
|
||||
gramps (4.0.1-2) precise; urgency=low
|
||||
|
||||
@@ -705,7 +847,7 @@ gramps (0.7.3-1) unstable; urgency=low
|
||||
* Added new entry to the upstream NEWS file - it was missing.
|
||||
* Added '#! usr/bin/python -O' line to src/AddMedia.py to make lintian happy.
|
||||
Also removed this line from src/DbPrompter.py for the same reason.
|
||||
* Edited debian/rules to call '$(MAKE) clean' instead of
|
||||
* Edited debian/rules to call '$(MAKE) clean' instead of
|
||||
'$(MAKE) distclean' which did not exist.
|
||||
* Edited src/Makefile.in - 'clean' target should also remove *.so files.
|
||||
* Pre-built static HTMLs since the on-the-fly generation from SGML is buggy.
|
||||
@@ -840,7 +982,7 @@ gramps (0.3.1-2) unstable; urgency=low
|
||||
* The author has finally addressed the issue of a missing help file. Though
|
||||
as of now none have been created the error produced before is gone and the
|
||||
author is working on better documentation.
|
||||
Closes: #99617
|
||||
Closes: #99617
|
||||
|
||||
-- Brandon L. Griffith <brandon@debian.org> Thu, 28 Jun 2001 20:27:30 -0500
|
||||
|
||||
@@ -917,7 +1059,7 @@ gramps (0.1.4-3) unstable; urgency=low
|
||||
This should take care of the startup problem some people have had.
|
||||
Bug Fixed. Closes: #98646
|
||||
|
||||
* Silly me named the menu file wrong so it never got included into the
|
||||
* Silly me named the menu file wrong so it never got included into the
|
||||
Debian Menu system. Gramps should now show up under Apps->Tools. Have
|
||||
no idea how I overlooked this.
|
||||
|
||||
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
9
|
||||
11
|
||||
Vendored
+34
-18
@@ -1,29 +1,37 @@
|
||||
Source: gramps
|
||||
Section: python
|
||||
Section: gnome
|
||||
Priority: optional
|
||||
Maintainer: Ross Gammon <rossgammon@mail.dk>
|
||||
Maintainer: Ross Gammon <rossgammon@debian.org>
|
||||
Build-Depends-Indep:
|
||||
dh-linktree,
|
||||
dh-python,
|
||||
gettext,
|
||||
intltool,
|
||||
libxml-parser-perl,
|
||||
python3-all,
|
||||
python3-setuptools
|
||||
python3-setuptools,
|
||||
python3-nose,
|
||||
gir1.2-gtk-3.0 (>= 3.12.0),
|
||||
python3-gi (>= 3.12.0),
|
||||
python3-gi-cairo,
|
||||
python3-bsddb3,
|
||||
python3-lxml,
|
||||
python3-jsonschema,
|
||||
python3-mock,
|
||||
python3-icu,
|
||||
python3-nose-exclude
|
||||
Build-Depends:
|
||||
dh-python,
|
||||
debhelper (>= 9.0.0)
|
||||
Standards-Version: 3.9.5
|
||||
Vcs-Git: git://anonscm.debian.org/collab-maint/gramps.git
|
||||
Vcs-browser: http://anonscm.debian.org/gitweb/?p=collab-maint/gramps.git
|
||||
Homepage: http://www.gramps-project.org/
|
||||
X-Python-Version: >= 3.2
|
||||
debhelper (>= 11)
|
||||
Standards-Version: 4.4.0
|
||||
Vcs-Git: https://github.com/gramps-project/gramps.git
|
||||
Vcs-browser: https://github.com/gramps-project/gramps/tree/maintenance/gramps50
|
||||
Homepage: https://www.gramps-project.org/
|
||||
|
||||
Package: python3-gramps
|
||||
Package: gramps
|
||||
Architecture: all
|
||||
Depends:
|
||||
gir1.2-gtk-3.0 (>= 3.10.0),
|
||||
librsvg2-2,
|
||||
python3-gi,
|
||||
python3-gi (>= 3.12.0),
|
||||
python3-gi-cairo,
|
||||
python3-bsddb3,
|
||||
xdg-utils,
|
||||
@@ -31,16 +39,24 @@ Depends:
|
||||
${python3:Depends}
|
||||
Recommends:
|
||||
graphviz,
|
||||
gir1.2-goocanvas-2.0,
|
||||
libosmgpsmap-1.0-0,
|
||||
gir1.2-gexiv2-0.10,
|
||||
gir1.2-osmgpsmap-1.0,
|
||||
python3-pyicu
|
||||
python3-icu,
|
||||
gir1.2-geocodeglib-1.0,
|
||||
python3-fontconfig
|
||||
Suggests:
|
||||
fonts-freefont-ttf,
|
||||
gir1.2-gexiv2-0.10,
|
||||
gir1.2-goocanvas-2.0,
|
||||
gir1.2-gtkspell3-3.0,
|
||||
python3-pil,
|
||||
rcs
|
||||
rcs,
|
||||
python3-numpy
|
||||
Conflicts:
|
||||
python-gramps,
|
||||
python3-gramps
|
||||
Replaces:
|
||||
python-gramps,
|
||||
python3-gramps
|
||||
Description: Genealogical research program
|
||||
Gramps is an Open Source genealogy program written in Python, using
|
||||
the GTK/GNOME interface. It is an extremely flexible program fitting
|
||||
|
||||
Vendored
+44
-238
@@ -1,37 +1,37 @@
|
||||
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: Gramps
|
||||
Source: http://gramps-project.org
|
||||
Source: https://gramps-project.org
|
||||
|
||||
Files: *
|
||||
Copyright: 2000-2007, Alex Roitman
|
||||
2000-2002, Bruce J. DeGrasse
|
||||
2000-2008, Donald N. Allingham
|
||||
2000-2007, Martin Hawlisch
|
||||
2001, Andrés Sepúlveda
|
||||
2001, Andrés Sepúlveda
|
||||
2001, David R. Hampton
|
||||
2001-2013, Free Software Foundation, Inc.
|
||||
2001-2017, Free Software Foundation, Inc.
|
||||
2001, Graham J. Williams
|
||||
2001, Jesper Zedlitz
|
||||
2001-2013, The Gramps Project
|
||||
2001-2019, The Gramps Project
|
||||
2002, Gary Shao
|
||||
2003-2006, Josiah Carlson
|
||||
2004-2006, Eero Tamminen
|
||||
2004-2013, Julio Sánchez
|
||||
2004, Toshio Kuratomi
|
||||
2005-2011, Serge Noiraud
|
||||
2006-2011, Brian G. Matherly
|
||||
2004-2013, Julio Sánchez
|
||||
2005-2019, Serge Noiraud
|
||||
2006-2012, Brian G. Matherly
|
||||
2006, 2008-2011, Kees Bakker
|
||||
2006-2008, Steve Hall
|
||||
2007-2012, Benny Malengier
|
||||
2007-2012, Douglas S. Blank
|
||||
2007-2013, Benny Malengier
|
||||
2007-2013, 2015-2016, Douglas S. Blank
|
||||
2007-2012, Gary Burton
|
||||
2007-2011, Jerome Rapinat
|
||||
2007, Johan Gronqvist
|
||||
2007, Robert Cawley
|
||||
2007-2009, Stephane Charette
|
||||
2007-2016, The Gramps Developers
|
||||
2007, Thom Sturgill
|
||||
2007-2008, Zsolt Foldvari
|
||||
2008-2010, 2012, Craig J. Anderson
|
||||
2008-2010, 2012-2015, Craig J. Anderson
|
||||
2008-2009, James Friedmann
|
||||
2008-2009, Jason Simanek
|
||||
2008, Lukasz Rymarczyk
|
||||
@@ -43,133 +43,64 @@ Copyright: 2000-2007, Alex Roitman
|
||||
2008, Stefan Siegel
|
||||
2008-2010, Stephen George
|
||||
2009-2010, Andrew I Baznikin
|
||||
2009, 2011, The Dojo Foundation
|
||||
2009, Florian Heinle
|
||||
2009, Gerald W. Britton
|
||||
2009, Igal Shapira
|
||||
2009, 2011, John Resig
|
||||
2009-2013, Nick Hall
|
||||
2009-2018, Nick Hall
|
||||
2009, Pander Musubi
|
||||
2009, Robert Ham
|
||||
2009, Swoon on bug tracker
|
||||
2009, Yevgeny Zegzda
|
||||
2010, Gramps
|
||||
2010, 2015 Gramps
|
||||
2010, Jakim Friant
|
||||
2010, Josip
|
||||
2010, lcc & Robert Jerome
|
||||
2010-2012, Michiel D. Nauta
|
||||
2010-2013, Tim G L Lyons
|
||||
2010-2011, Vlada Perić
|
||||
2010-2016, Tim G L Lyons
|
||||
2010-2011, 2014, Vlada Perić
|
||||
2011, Adam Stein
|
||||
2011-2012, Harald Rosemann
|
||||
2011, 2013, Heinz Brinker
|
||||
2011, Helge Herz
|
||||
2011, 2013 John Ralls
|
||||
2011, Matt Keenan
|
||||
2011-2013, Paul Franklin
|
||||
2012, Mathieu MD
|
||||
2011, 2016 Matt Keenan
|
||||
2011-2018, Paul Franklin
|
||||
2012, lcc
|
||||
2012, 2014, Mathieu MD
|
||||
2012, Nicolas Adenis-Lamarre
|
||||
2013, Fedir Zinchuk
|
||||
2013, Oleh Petrivk
|
||||
2013, Vassilii Khachaturov
|
||||
2013, Artem Glebov
|
||||
2011-2016, Fedir Zinchuk
|
||||
2013-2017, Alois Poettker
|
||||
2013-2014, Vassilii Khachaturov
|
||||
2013, Zissis Papadopoulos
|
||||
2015, Icelandic translators of Gramps
|
||||
2014, Bastien Jacquet
|
||||
2014, Gerald Kunzmann
|
||||
2015, Fabrice
|
||||
2015, Lajos Nemeséri
|
||||
2015, Detlef Wolz
|
||||
2016, Allen Crider
|
||||
2016, DaAwesomeP
|
||||
2016-2018, Paul Culley
|
||||
2016, QuLogic
|
||||
2016, Tom Samstag
|
||||
2017, Jonathan Biegert
|
||||
2017, Mindaugas Baranauskas
|
||||
2017, Robert Carnell
|
||||
2018, Christophe aka khrys63
|
||||
2018, Paul D.Smith
|
||||
2018, Robin van der Vliet
|
||||
2018, Theo van Rijn
|
||||
2019, Matthias Kemmer
|
||||
License: GPL-2+
|
||||
|
||||
Files: data/javascript/jquery-1.3.2.min.js
|
||||
Copyright: 2009, John Resig
|
||||
License: MIT and GPL
|
||||
|
||||
Files: data/javascript/jquery-1.7.1.js
|
||||
Copyright: 2011, John Resig
|
||||
2011, The Dojo Foundation
|
||||
License: BSD and MIT and GPL-2
|
||||
|
||||
Files: data/javascript/jquery-ui-1.7.2.custom.min.js
|
||||
Copyright: 2009, jQuery UI Team (http://jqueryui.com/about/)
|
||||
License: MIT and GPL-2
|
||||
|
||||
Files: data/javascript/jquery.flexbox*
|
||||
Copyright: 2008-2010, Noah Heldman and Fairway Technologies
|
||||
License: Ms-PL
|
||||
|
||||
Files: data/jhtmlarea/Readme.txt
|
||||
Copyright: 2009, Chris Pietschmann
|
||||
License: Ms-RL
|
||||
|
||||
Files: data/jhtmlarea/scripts/jHtmlArea*
|
||||
Copyright: 2009, Chris Pietschmann
|
||||
License: Ms-RL
|
||||
|
||||
Files: data/jhtmlarea/scripts/jquery-1.3.2*
|
||||
Copyright: 2009, John Resig
|
||||
2009, The Dojo Foundation
|
||||
License: MIT
|
||||
|
||||
Files: data/jhtmlarea/scripts/jquery-ui-*
|
||||
Copyright: 2009, jQuery UI Team (http://jqueryui.com/about)
|
||||
License: MIT and GPL
|
||||
|
||||
Files: debian/*
|
||||
Copyright: 2001-2002, Brandon L. Griffith
|
||||
2002, Alex Roitman
|
||||
2002-2012, James A. Treacy
|
||||
2013, Ross Gammon
|
||||
2013-2018, Ross Gammon
|
||||
License: GPL-2+
|
||||
|
||||
Files: gramps/webapp/grampsdb/view/png.py
|
||||
Copyright: 2006, Johann C. Rocholl
|
||||
2009, David Jones
|
||||
2006, Nicko van Someren
|
||||
License: MIT
|
||||
|
||||
License: BSD
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of the <organization> nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
.
|
||||
THIS SOFTWARE IS PROVIDED BY John Resig ''AS IS'' AND ANY
|
||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
License: GPL
|
||||
This package 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; version 1 only of the License.
|
||||
.
|
||||
On Debian systems, the complete text of the GNU General
|
||||
Public License can be found in `/usr/share/common-licenses/GPL'.
|
||||
|
||||
License: GPL-2
|
||||
This package 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; version 2 only of the License.
|
||||
.
|
||||
This package 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 package; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
.
|
||||
On Debian systems, the complete text of the GNU General
|
||||
Public License can be found in `/usr/share/common-licenses/GPL-2'.
|
||||
|
||||
License: GPL-2+
|
||||
This package is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -187,128 +118,3 @@ License: GPL-2+
|
||||
.
|
||||
On Debian systems, the complete text of the GNU General
|
||||
Public License can be found in `/usr/share/common-licenses/GPL-2'.
|
||||
|
||||
License: MIT
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
to deal in the Software without restriction, including without limitation
|
||||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
and/or sell copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following conditions:
|
||||
.
|
||||
The above copyright notice and this permission notice shall be included
|
||||
in all copies or substantial portions of the Software.
|
||||
.
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
|
||||
License: Ms-PL
|
||||
This license governs use of the accompanying software. If you use the
|
||||
software, you accept this license. If you do not accept the license, do not
|
||||
use the software.
|
||||
.
|
||||
1. Definitions
|
||||
.
|
||||
The terms "reproduce," "reproduction," "derivative works," and "distribution"
|
||||
have the same meaning here as under U.S. copyright law.
|
||||
.
|
||||
A "contribution" is the original software, or any additions or changes to the
|
||||
software.
|
||||
.
|
||||
A "contributor" is any person that distributes its contribution under this
|
||||
license.
|
||||
.
|
||||
"Licensed patents" are a contributor's patent claims that read directly on its
|
||||
contribution.
|
||||
.
|
||||
2. Grant of Rights
|
||||
.
|
||||
(A) Copyright Grant- Subject to the terms of this license, including the
|
||||
license conditions and limitations in section 3, each contributor grants you a
|
||||
non-exclusive, worldwide, royalty-free copyright license to reproduce its
|
||||
contribution, prepare derivative works of its contribution, and distribute its
|
||||
contribution or any derivative works that you create.
|
||||
.
|
||||
(B) Patent Grant- Subject to the terms of this license, including the license
|
||||
conditions and limitations in section 3, each contributor grants you a
|
||||
non-exclusive, worldwide, royalty-free license under its licensed patents to
|
||||
make, have made, use, sell, offer for sale, import, and/or otherwise dispose of
|
||||
its contribution in the software or derivative works of the contribution in the
|
||||
software.
|
||||
.
|
||||
3. Conditions and Limitations
|
||||
.
|
||||
(A) No Trademark License- This license does not grant you rights to use any
|
||||
contributors' name, logo, or trademarks.
|
||||
.
|
||||
(B) If you bring a patent claim against any contributor over patents that you
|
||||
claim are infringed by the software, your patent license from such contributor
|
||||
to the software ends automatically.
|
||||
.
|
||||
(C) If you distribute any portion of the software, you must retain all copyright,
|
||||
patent, trademark, and attribution notices that are present in the software.
|
||||
.
|
||||
(D) If you distribute any portion of the software in source code form, you may do
|
||||
so only under this license by including a complete copy of this license with your
|
||||
distribution. If you distribute any portion of the software in compiled or object
|
||||
code form, you may only do so under a license that complies with this license.
|
||||
.
|
||||
(E) The software is licensed "as-is." You bear the risk of using it. The
|
||||
contributors give no express warranties, guarantees or conditions. You may have
|
||||
additional consumer rights under your local laws which this license cannot change.
|
||||
To the extent permitted under your local laws, the contributors exclude the
|
||||
implied warranties of merchantability, fitness for a particular purpose and
|
||||
non-infringement.
|
||||
|
||||
License: Ms-RL
|
||||
This license governs use of the accompanying software. If you use the software,
|
||||
you accept this license. If you do not accept the license, do not use the software.
|
||||
.
|
||||
1. Definitions
|
||||
The terms "reproduce," "reproduction," "derivative works," and "distribution" have
|
||||
the same meaning here as under U.S. copyright law.
|
||||
A "contribution" is the original software, or any additions or changes to the
|
||||
software.
|
||||
A "contributor" is any person that distributes its contribution under this license.
|
||||
"Licensed patents" are a contributor's patent claims that read directly on its
|
||||
contribution.
|
||||
.
|
||||
2. Grant of Rights
|
||||
(A) Copyright Grant- Subject to the terms of this license, including the license
|
||||
conditions and limitations in section 3, each contributor grants you a
|
||||
non-exclusive, worldwide, royalty-free copyright license to reproduce its
|
||||
contribution, prepare derivative works of its contribution, and distribute its
|
||||
contribution or any derivative works that you create.
|
||||
(B) Patent Grant- Subject to the terms of this license, including the license
|
||||
conditions and limitations in section 3, each contributor grants you a
|
||||
non-exclusive, worldwide, royalty-free license under its licensed patents to make,
|
||||
have made, use, sell, offer for sale, import, and/or otherwise dispose of its
|
||||
contribution in the software or derivative works of the contribution in the software.
|
||||
.
|
||||
3. Conditions and Limitations
|
||||
(A) Reciprocal Grants- For any file you distribute that contains code from the
|
||||
software (in source code or binary format), you must provide recipients the source
|
||||
code to that file along with a copy of this license, which license will govern that
|
||||
file. You may license other files that are entirely your own work and do not contain
|
||||
code from the software under any terms you choose.
|
||||
(B) No Trademark License- This license does not grant you rights to use any
|
||||
contributors' name, logo, or trademarks.
|
||||
(C) If you bring a patent claim against any contributor over patents that you claim
|
||||
are infringed by the software, your patent license from such contributor to the
|
||||
software ends automatically.
|
||||
(D) If you distribute any portion of the software, you must retain all copyright,
|
||||
patent, trademark, and attribution notices that are present in the software.
|
||||
(E) If you distribute any portion of the software in source code form, you may do so
|
||||
only under this license by including a complete copy of this license with your
|
||||
distribution. If you distribute any portion of the software in compiled or object code
|
||||
form, you may only do so under a license that complies with this license.
|
||||
(F) The software is licensed "as-is." You bear the risk of using it. The contributors
|
||||
give no express warranties, guarantees or conditions. You may have additional consumer
|
||||
rights under your local laws which this license cannot change. To the extent permitted
|
||||
under your local laws, the contributors exclude the implied warranties of
|
||||
merchantability, fitness for a particular purpose and non-infringement.
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
RELEASE_NOTES
|
||||
Vendored
+25
-22
@@ -1,35 +1,38 @@
|
||||
#!/usr/bin/make -f
|
||||
|
||||
# Uncomment this to turn on verbose mode.
|
||||
export DH_VERBOSE=1
|
||||
export DH_OPTIONS=-v
|
||||
#export DH_VERBOSE=1
|
||||
#export DH_OPTIONS=-v
|
||||
export PYBUILD_NAME=gramps
|
||||
export PYBUILD_INSTALL_ARGS_python3=--resourcepath=/usr/share --force
|
||||
|
||||
%:
|
||||
dh $@ --with python3 --buildsystem=pybuild
|
||||
|
||||
# Override auto test because upstream do not use the standard unittest discover
|
||||
# Override auto test to enable nose tests
|
||||
override_dh_auto_test:
|
||||
|
||||
# Override of auto_build
|
||||
override_dh_auto_build:
|
||||
python3 setup.py build
|
||||
HOME=$(CURDIR)/build \
|
||||
nosetests3 -vv \
|
||||
--exclude=TestcaseGenerator \
|
||||
--exclude=test4_arbitrary_uncode_path \
|
||||
--exclude-dir=gramps/plugins/test/ \
|
||||
gramps
|
||||
|
||||
# Override of auto_install to remove information from package
|
||||
override_dh_auto_install:
|
||||
#dh_auto_install
|
||||
python3 setup.py install --resourcepath=/usr/share --root=debian/python3-gramps --install-layout=deb
|
||||
# Remove duplicate license/copyright information
|
||||
rm $(CURDIR)/debian/python3-gramps/usr/share/doc/gramps/COPYING
|
||||
dh_installchangelogs NEWS
|
||||
dh_auto_install
|
||||
# Remove install file as it is not needed by package users
|
||||
rm $(CURDIR)/debian/python3-gramps/usr/share/doc/gramps/INSTALL
|
||||
# Link license/copyright information to debians
|
||||
ln -s /usr/share/common-licenses/GPL-2 $(CURDIR)/debian/python3-gramps/usr/share/doc/gramps/COPYING
|
||||
rm $(CURDIR)/debian/gramps/usr/share/doc/gramps/INSTALL
|
||||
# Remove NEWS file as it is now installed as the changelog
|
||||
rm $(CURDIR)/debian/gramps/usr/share/doc/gramps/NEWS
|
||||
#Remove license information in COPYING file & link to system license
|
||||
rm $(CURDIR)/debian/gramps/usr/share/doc/gramps/COPYING
|
||||
ln -s /usr/share/common-licenses/GPL-2 $(CURDIR)/debian/gramps/usr/share/doc/gramps/COPYING
|
||||
|
||||
# Make css style sheets and png icons non-executable
|
||||
override_dh_fixperms:
|
||||
dh_fixperms
|
||||
chmod a-x $(CURDIR)/debian/python3-gramps/usr/share/gramps/css/Web_*.css
|
||||
|
||||
# Avoid compressing COPYING file so that it can appear in the "About" dialog
|
||||
override_dh_compress:
|
||||
dh_compress -X COPYING
|
||||
# Fix clean target
|
||||
override_dh_clean:
|
||||
rm -rf data/tips.xml
|
||||
rm -rf gramps/plugins/lib/holidays.xml
|
||||
rm -rf po/.intltool-merge-cache
|
||||
dh_clean
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
1.8
|
||||
3.0 (quilt)
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
unapply-patches
|
||||
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
Tests: gramps-import-export
|
||||
Depends: gramps, gzip
|
||||
Restrictions: allow-stderr
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Author: Ross Gammon <rossgammon@mail.dk>
|
||||
#
|
||||
# autopkgtest check: Tests that gramps can import the sample gedcom file and
|
||||
# export it in the .gpkg format, and then import the example gramps database
|
||||
# and export it in gedcom format.
|
||||
|
||||
set -e
|
||||
|
||||
echo "--------------------------------"
|
||||
echo "GEDCOM to Gramps conversion test"
|
||||
echo "--------------------------------"
|
||||
echo "Retrieving sample gedcom"
|
||||
cp /usr/share/doc/gramps/example/gedcom/sample.ged.gz .
|
||||
echo "Unzipping sample gedcom"
|
||||
gunzip sample.ged.gz
|
||||
echo "Importing gedcom into gramps and exporting a gramps .gpkg file"
|
||||
gramps -i sample.ged -e sample.gpkg
|
||||
echo "-----------------------------------"
|
||||
echo "GEDCOM to Gramps conversion SUCCESS"
|
||||
echo "-----------------------------------"
|
||||
echo
|
||||
|
||||
echo "--------------------------------"
|
||||
echo "Gramps to GEDCOM conversion test"
|
||||
echo "--------------------------------"
|
||||
echo "Retrieving example gramps file"
|
||||
cp /usr/share/doc/gramps/example/gramps/example.gramps.gz .
|
||||
echo "Unzipping example gramps file"
|
||||
gunzip example.gramps.gz
|
||||
echo "Importing gramps file into gramps and exporting a gedcom"
|
||||
gramps -i example.gramps -e example.ged
|
||||
echo "-----------------------------------"
|
||||
echo "Gramps to GEDCOM conversion SUCCESS"
|
||||
echo "-----------------------------------"
|
||||
echo
|
||||
echo "gramps-import-export: TEST PASSED"
|
||||
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
Bug-Database: https://gramps-project.org/bugs/my_view_page.php
|
||||
Contact: https://lists.sourceforge.net/lists/listinfo/gramps-users
|
||||
Donation: https://sourceforge.net/project/project_donations.php?group_id=25770
|
||||
Name: Gramps
|
||||
Homepage: https://gramps-project.org/
|
||||
Repository: https://github.com/gramps-project/gramps.git
|
||||
Repository-Browse: https://github.com/gramps-project/gramps
|
||||
Vendored
+8
@@ -0,0 +1,8 @@
|
||||
version=3
|
||||
|
||||
opts=\
|
||||
dversionmangle=s/(\~|\+)(debian|dfsg|ds|deb)(\.\d+)?$//,\
|
||||
filenamemangle=s/.+\/v?(\d\S*)\.tar\.gz/$1\.tar\.gz/,\
|
||||
repacksuffix=~dfsg \
|
||||
https://github.com/gramps-project/gramps/tags \
|
||||
.*/archive/v?([\d\.]+).tar.gz
|
||||
+3
-3
@@ -57,7 +57,7 @@ master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = 'Gramps'
|
||||
copyright = '2017, The Gramps Project'
|
||||
copyright = '2001-2019, The Gramps Project'
|
||||
author = 'Donald N. Allingham'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
@@ -65,9 +65,9 @@ author = 'Donald N. Allingham'
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
version = '5.0.0'
|
||||
version = '5.1.0'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '5.0.0-master'
|
||||
release = '5.1.0'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
||||
+1
-1
@@ -46,7 +46,7 @@ Generic
|
||||
|
||||
DummyDb
|
||||
====================================
|
||||
.. automodule:: gramps.plugins.db.dummydb
|
||||
.. automodule:: gramps.gen.db.dummydb
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<resphone>(555)123-4567</resphone>
|
||||
<resemail>anyone@someplace.com</resemail>
|
||||
</researcher>
|
||||
<mediapath>{GRAMPS_RESOURCES}/example/gramps</mediapath>
|
||||
<mediapath>{GRAMPS_RESOURCES}/doc/gramps/example/gramps</mediapath>
|
||||
</header>
|
||||
<tags>
|
||||
<tag handle="_c7642d9389b54417e8b" change="1370206720" name="tag1" color="#000000000000" priority="0"/>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<researcher>
|
||||
<resname>Alex Roitman,,,</resname>
|
||||
</researcher>
|
||||
<mediapath>{GRAMPS_RESOURCES}/example/gramps</mediapath>
|
||||
<mediapath>{GRAMPS_RESOURCES}/doc/gramps/example/gramps</mediapath>
|
||||
</header>
|
||||
<name-formats>
|
||||
<format number="-1" name="SURNAME, Given (Common)" fmt_str="SURNAME, given (common)" active="1"/>
|
||||
@@ -13946,10 +13946,10 @@
|
||||
<place hlink="_VDCKQCZX3MEHKVDR8S"/>
|
||||
<description>Death of Schultz, Rev.Isaac</description>
|
||||
</event>
|
||||
<event handle="_a5af0ed3f64432fb742" change="1284030595" id="E2618">
|
||||
<event handle="_a5af0ed3f64432fb742" change="1520536150" id="E2618">
|
||||
<type>Burial</type>
|
||||
<dateval val="1818" type="about"/>
|
||||
<place hlink="_4ECKQCWCLO5YIHXEXZ"/>
|
||||
<place hlink="_c965872633b600e8b5ca4d5e6db"/>
|
||||
<description>Burial of Schultz, Rev.Isaac</description>
|
||||
</event>
|
||||
<event handle="_a5af0ed3f9b07f938fb" change="1284030602" id="E2619">
|
||||
@@ -59404,10 +59404,6 @@
|
||||
<ptitle>USA</ptitle>
|
||||
<pname value="USA"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_4ECKQCWCLO5YIHXEXZ" change="1234373374" id="P1704" type="Country">
|
||||
<ptitle>Puerto Rico</ptitle>
|
||||
<pname value="Puerto Rico"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_4FUJQCDFTJJJNKKJMH" change="1234390522" id="P0958" type="City">
|
||||
<ptitle>Boone, IA</ptitle>
|
||||
<pname value="Boone"/>
|
||||
@@ -65647,29 +65643,44 @@
|
||||
<pname value="St. Lawrence"/>
|
||||
<placeref hlink="_c96587263cc11e217c35cc9003f"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_d583a5b7ab21971300a" change="1467134436" id="P0435" type="Unknown">
|
||||
<placeobj handle="_d583a5b7ab21971300a" change="1520535854" id="P0435" type="City">
|
||||
<ptitle>Δράμα</ptitle>
|
||||
<pname value="Δράμα"/>
|
||||
<pname value="Δράμα" lang="el"/>
|
||||
<pname value="Drama" lang="en"/>
|
||||
<placeref hlink="_dd445e5bfcc17bd1838"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_d583a5b8614206a939d" change="1467134581" id="P0436" type="Unknown">
|
||||
<placeobj handle="_d583a5b8614206a939d" change="1520535887" id="P0436" type="City">
|
||||
<ptitle>Θεσσαλονίκη</ptitle>
|
||||
<pname value="Θεσσαλονίκη"/>
|
||||
<pname value="Θεσσαλονίκη" lang="el"/>
|
||||
<pname value="Thessaloniki" lang="en"/>
|
||||
<placeref hlink="_dd445e5bfcc17bd1838"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_d583a5b8a8c1474357d" change="1467135440" id="P0437" type="Unknown">
|
||||
<placeobj handle="_d583a5b8a8c1474357d" change="1520535915" id="P0437" type="City">
|
||||
<ptitle>Ιωάννινα</ptitle>
|
||||
<pname value="Ιωάννινα"/>
|
||||
<pname value="Ιωάννινα" lang="el"/>
|
||||
<pname value="Ioannina" lang="en"/>
|
||||
<placeref hlink="_dd445e5bfcc17bd1838"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_d583a5b8b586fb992c8" change="1467135553" id="P0438" type="Unknown">
|
||||
<placeobj handle="_d583a5b8b586fb992c8" change="1520535978" id="P0438" type="City">
|
||||
<ptitle>Σιάτιστα</ptitle>
|
||||
<pname value="Σιάτιστα"/>
|
||||
<pname value="Σιάτιστα" lang="el"/>
|
||||
<pname value="Siatista" lang="en"/>
|
||||
<placeref hlink="_dd445e5bfcc17bd1838"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_d583a5b8c380fb024c9" change="1467136002" id="P0439" type="Unknown">
|
||||
<placeobj handle="_d583a5b8c380fb024c9" change="1520535800" id="P0439" type="City">
|
||||
<ptitle>Άργος</ptitle>
|
||||
<pname value="Άργος"/>
|
||||
<pname value="Άργος" lang="el"/>
|
||||
<pname value="Argos" lang="en"/>
|
||||
<placeref hlink="_dd445e5bfcc17bd1838"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_d583a5b8d1106cda712" change="1467136077" id="P0440" type="Unknown">
|
||||
<placeobj handle="_d583a5b8d1106cda712" change="1520535947" id="P0440" type="City">
|
||||
<ptitle>Μεσολόγγι</ptitle>
|
||||
<pname value="Μεσολόγγι"/>
|
||||
<pname value="Μεσολόγγι" lang="el"/>
|
||||
<pname value="Missolonghi" lang="en"/>
|
||||
<placeref hlink="_dd445e5bfcc17bd1838"/>
|
||||
</placeobj>
|
||||
<placeobj handle="_dd445e5bfcc17bd1838" change="1520535973" id="P0441" type="Country">
|
||||
<pname value="Greece" lang="en"/>
|
||||
</placeobj>
|
||||
</places>
|
||||
<objects>
|
||||
|
||||
@@ -47,6 +47,7 @@ from gramps.gen.recentfiles import recent_files
|
||||
from gramps.gen.utils.file import rm_tempdir, get_empty_tempdir
|
||||
from .clidbman import CLIDbManager, NAME_FILE, find_locker_name
|
||||
from gramps.gen.db.utils import make_database
|
||||
from gramps.gen.db.dbconst import DBBACKEND
|
||||
from gramps.gen.plug import BasePluginManager
|
||||
from gramps.gen.plug.report import CATEGORY_BOOK, CATEGORY_CODE, BookList
|
||||
from .plug import cl_report, cl_book
|
||||
@@ -382,7 +383,7 @@ class ArgHandler:
|
||||
self.open = db_path
|
||||
self.__open_action()
|
||||
else:
|
||||
sys.exit(1)
|
||||
sys.exit(_("Error: cannot open '%s'") % self.open_gui)
|
||||
return db_path
|
||||
|
||||
# if not open_gui, parse any command line args. We can only have one
|
||||
@@ -504,6 +505,9 @@ class ArgHandler:
|
||||
self.imp_db_path = get_empty_tempdir("import_dbdir")
|
||||
dbid = config.get('database.backend')
|
||||
newdb = make_database(dbid)
|
||||
versionpath = os.path.join(self.imp_db_path, str(DBBACKEND))
|
||||
with open(versionpath, "w") as version_file:
|
||||
version_file.write(dbid)
|
||||
|
||||
try:
|
||||
self.smgr.open_activate(self.imp_db_path, self.username, self.password)
|
||||
@@ -554,6 +558,9 @@ class ArgHandler:
|
||||
if self.dbman.needs_recovery(dbpath):
|
||||
self.__error(_("Database needs recovery, cannot open it!"))
|
||||
return False
|
||||
if self.dbman.backend_unavailable(dbpath):
|
||||
self.__error(_("Database backend unavailable, cannot open it!"))
|
||||
return False
|
||||
return True
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@@ -616,8 +623,8 @@ class ArgHandler:
|
||||
#import of plugin failed
|
||||
return
|
||||
category = pdata.category
|
||||
report_class = eval('mod.' + pdata.reportclass)
|
||||
options_class = eval('mod.' + pdata.optionclass)
|
||||
report_class = getattr(mod, pdata.reportclass)
|
||||
options_class = getattr(mod, pdata.optionclass)
|
||||
if category in (CATEGORY_BOOK, CATEGORY_CODE):
|
||||
options_class(self.dbstate.db, name, category,
|
||||
options_str_dict)
|
||||
@@ -665,8 +672,8 @@ class ArgHandler:
|
||||
#import of plugin failed
|
||||
return
|
||||
category = pdata.category
|
||||
tool_class = eval('mod.' + pdata.toolclass)
|
||||
options_class = eval('mod.' + pdata.optionclass)
|
||||
tool_class = getattr(mod, pdata.toolclass)
|
||||
options_class = getattr(mod, pdata.optionclass)
|
||||
tool.cli_tool(dbstate=self.dbstate,
|
||||
name=name,
|
||||
category=category,
|
||||
|
||||
+52
-3
@@ -39,15 +39,16 @@ import sys
|
||||
import os
|
||||
import getopt
|
||||
import logging
|
||||
import shutil
|
||||
from glob import glob
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# gramps modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from gramps.gen.const import LONGOPTS, SHORTOPTS, PLUGINS_DIR, USER_PLUGINS
|
||||
from gramps.gen.plug import BasePluginManager
|
||||
from gramps.gen.config import config
|
||||
from gramps.gen.const import (LONGOPTS, SHORTOPTS, USER_PLUGINS, VERSION_DIR,
|
||||
HOME_DIR, TEMP_DIR, THUMB_DIR, ENV_DIR, USER_CSS)
|
||||
from gramps.gen.utils.cast import get_type_converter
|
||||
from gramps.gen.const import GRAMPS_LOCALE as glocale
|
||||
_ = glocale.translation.gettext
|
||||
@@ -81,6 +82,14 @@ Application options
|
||||
-y, --yes Don't ask to confirm dangerous actions (non-GUI mode only)
|
||||
-q, --quiet Suppress progress indication output (non-GUI mode only)
|
||||
-v, --version Show versions
|
||||
-S, --safe Start Gramps in 'Safe mode'
|
||||
(temporarily use default settings)
|
||||
-D, --default=[APXFE] Reset settings to default;
|
||||
A - addons are cleared
|
||||
P - Preferences to default
|
||||
X - Books are cleared, reports and tool settings to default
|
||||
F - filters are cleared
|
||||
E - Everything is set to default or cleared
|
||||
""")
|
||||
|
||||
_USAGE = _("""
|
||||
@@ -342,6 +351,7 @@ class ArgParser:
|
||||
elif option in ['-t']:
|
||||
self.list_table = True
|
||||
elif option in ['-s', '--show']:
|
||||
from gramps.gen.config import config
|
||||
print(_("Gramps config settings from %s:"
|
||||
) % config.filename)
|
||||
for sect in config.data:
|
||||
@@ -351,6 +361,7 @@ class ArgParser:
|
||||
print()
|
||||
sys.exit(0)
|
||||
elif option in ['-c', '--config']:
|
||||
from gramps.gen.config import config
|
||||
cfg_name = value
|
||||
set_value = False
|
||||
if cfg_name:
|
||||
@@ -396,6 +407,44 @@ class ArgParser:
|
||||
self.auto_accept = True
|
||||
elif option in ['-q', '--quiet']:
|
||||
self.quiet = True
|
||||
elif option in ['-S', '--safe']:
|
||||
cleandbg += [opt_ix]
|
||||
elif option in ['-D', '--default']:
|
||||
def rmtree(path):
|
||||
if os.path.isdir(path):
|
||||
shutil.rmtree(path, ignore_errors=True)
|
||||
|
||||
if 'E' in value or 'A' in value: # clear addons
|
||||
rmtree(USER_PLUGINS)
|
||||
if 'E' in value or 'P' in value: # clear ini preferences
|
||||
for fil in glob(os.path.join(VERSION_DIR, "*.*")):
|
||||
if "custom_filters.xml" in fil:
|
||||
continue
|
||||
os.remove(fil)
|
||||
# create gramps.ini so config won't load the one from an
|
||||
# older version of Gramps.
|
||||
with open(os.path.join(VERSION_DIR, 'gramps.ini'), 'w'):
|
||||
pass
|
||||
if 'E' in value or 'F' in value: # clear filters
|
||||
fil = os.path.join(VERSION_DIR, "custom_filters.xml")
|
||||
if os.path.isfile(fil):
|
||||
os.remove(fil)
|
||||
if 'E' in value or 'X' in value: # clear xml reports/tools
|
||||
for fil in glob(os.path.join(HOME_DIR, "*.xml")):
|
||||
os.remove(fil)
|
||||
if 'E' in value or 'Z' in value: # clear upgrade zips
|
||||
for fil in glob(os.path.join(HOME_DIR, "*.zip")):
|
||||
os.remove(fil)
|
||||
if 'E' in value: # Everything else
|
||||
rmtree(TEMP_DIR)
|
||||
rmtree(THUMB_DIR)
|
||||
rmtree(USER_CSS)
|
||||
rmtree(ENV_DIR)
|
||||
rmtree(os.path.join(HOME_DIR, "maps"))
|
||||
for fil in glob(os.path.join(HOME_DIR, "*")):
|
||||
if os.path.isfile(fil):
|
||||
os.remove(fil)
|
||||
sys.exit(0) # Done with Default
|
||||
|
||||
#clean options list
|
||||
cleandbg.reverse()
|
||||
|
||||
+14
-15
@@ -48,8 +48,8 @@ import logging
|
||||
from gramps.gen.plug import BasePluginManager
|
||||
from gramps.gen.config import config
|
||||
from gramps.gen.constfunc import win
|
||||
from gramps.gen.db.dbconst import DBLOGNAME
|
||||
from gramps.gen.db.utils import make_database
|
||||
from gramps.gen.db.dbconst import DBLOGNAME, DBBACKEND
|
||||
from gramps.gen.db.utils import make_database, get_dbid_from_path
|
||||
from gramps.gen.const import GRAMPS_LOCALE as glocale
|
||||
_ = glocale.translation.gettext
|
||||
|
||||
@@ -68,8 +68,8 @@ _LOG = logging.getLogger(DBLOGNAME)
|
||||
#-------------------------------------------------------------------------
|
||||
DEFAULT_TITLE = _("Family Tree")
|
||||
NAME_FILE = "name.txt"
|
||||
BACKEND_FILE = "database.txt"
|
||||
META_NAME = "meta_data.db"
|
||||
UNAVAILABLE = _('Unavailable')
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -155,11 +155,7 @@ class CLIDbManager:
|
||||
_("Version")
|
||||
_("Schema version")
|
||||
"""
|
||||
dbid = "bsddb"
|
||||
dbid_path = os.path.join(dirpath, "database.txt")
|
||||
if os.path.isfile(dbid_path):
|
||||
with open(dbid_path) as file:
|
||||
dbid = file.read().strip()
|
||||
dbid = get_dbid_from_path(dirpath)
|
||||
if not self.is_locked(dirpath):
|
||||
try:
|
||||
database = make_database(dbid)
|
||||
@@ -183,7 +179,7 @@ class CLIDbManager:
|
||||
for plugin in pmgr.get_reg_databases():
|
||||
if plugin.id == dbid:
|
||||
return plugin._name
|
||||
return _("Unknown")
|
||||
return UNAVAILABLE
|
||||
|
||||
def print_family_tree_summaries(self, database_names=None):
|
||||
"""
|
||||
@@ -236,11 +232,7 @@ class CLIDbManager:
|
||||
for dpath in os.listdir(dbdir):
|
||||
dirpath = os.path.join(dbdir, dpath)
|
||||
path_name = os.path.join(dirpath, NAME_FILE)
|
||||
try:
|
||||
with open(os.path.join(dirpath, "database.txt")) as file:
|
||||
backend_type = file.read()
|
||||
except:
|
||||
backend_type = "bsddb"
|
||||
backend_type = get_dbid_from_path(dirpath)
|
||||
if os.path.isfile(path_name):
|
||||
with open(path_name, 'r', encoding='utf8') as file:
|
||||
name = file.readline().strip()
|
||||
@@ -308,7 +300,7 @@ class CLIDbManager:
|
||||
dbid = config.get('database.backend')
|
||||
newdb = make_database(dbid)
|
||||
|
||||
backend_path = os.path.join(new_path, BACKEND_FILE)
|
||||
backend_path = os.path.join(new_path, DBBACKEND)
|
||||
with open(backend_path, "w", encoding='utf8') as backend_file:
|
||||
backend_file.write(dbid)
|
||||
|
||||
@@ -402,6 +394,13 @@ class CLIDbManager:
|
||||
return True
|
||||
return False
|
||||
|
||||
def backend_unavailable(self, dbpath):
|
||||
"""
|
||||
Returns True if the database in dirpath has an unavailable backend
|
||||
"""
|
||||
dbid = get_dbid_from_path(dbpath)
|
||||
return self.get_backend_name_from_dbid(dbid) == UNAVAILABLE
|
||||
|
||||
def remove_database(self, dbname, user=None):
|
||||
"""
|
||||
Deletes a database folder given a pattenr that matches
|
||||
|
||||
@@ -64,6 +64,7 @@ from gramps.gen.db.exceptions import (DbUpgradeRequiredError,
|
||||
from gramps.gen.plug import BasePluginManager
|
||||
from gramps.gen.utils.config import get_researcher
|
||||
from gramps.gen.recentfiles import recent_files
|
||||
from gramps.gen.filters import reload_custom_filters
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -279,7 +280,7 @@ class CLIManager:
|
||||
# Attempt to figure out the database title
|
||||
path = os.path.join(filename, "name.txt")
|
||||
try:
|
||||
with open(path) as ifile:
|
||||
with open(path, encoding='utf8') as ifile:
|
||||
title = ifile.readline().strip()
|
||||
except:
|
||||
title = filename
|
||||
@@ -318,6 +319,7 @@ class CLIManager:
|
||||
and self.dbstate.db.get_total() == 0):
|
||||
self.dbstate.db.set_researcher(owner)
|
||||
|
||||
name_displayer.clear_custom_formats()
|
||||
name_displayer.set_name_format(self.dbstate.db.name_formats)
|
||||
fmt_default = config.get('preferences.name-format')
|
||||
name_displayer.set_default_format(fmt_default)
|
||||
@@ -372,6 +374,7 @@ def startcli(errors, argparser):
|
||||
|
||||
#load the plugins
|
||||
climanager.do_reg_plugins(dbstate, uistate=None)
|
||||
reload_custom_filters()
|
||||
# handle the arguments
|
||||
from .arghandler import ArgHandler
|
||||
handler = ArgHandler(dbstate, argparser, climanager)
|
||||
|
||||
@@ -47,7 +47,8 @@ LOG = logging.getLogger(".")
|
||||
#-------------------------------------------------------------------------
|
||||
from gramps.gen.plug import BasePluginManager
|
||||
from gramps.gen.plug.docgen import (StyleSheet, StyleSheetList, PaperStyle,
|
||||
PAPER_PORTRAIT, PAPER_LANDSCAPE, graphdoc)
|
||||
PAPER_PORTRAIT, PAPER_LANDSCAPE, graphdoc,
|
||||
treedoc)
|
||||
from gramps.gen.plug.menu import (FamilyOption, PersonOption, NoteOption,
|
||||
MediaOption, PersonListOption, NumberOption,
|
||||
BooleanOption, DestinationOption, Option,
|
||||
@@ -56,8 +57,8 @@ from gramps.gen.plug.menu import (FamilyOption, PersonOption, NoteOption,
|
||||
from gramps.gen.display.name import displayer as name_displayer
|
||||
from gramps.gen.errors import ReportError, FilterError
|
||||
from gramps.gen.plug.report import (CATEGORY_TEXT, CATEGORY_DRAW, CATEGORY_BOOK,
|
||||
CATEGORY_GRAPHVIZ, CATEGORY_CODE,
|
||||
ReportOptions, append_styles)
|
||||
CATEGORY_GRAPHVIZ, CATEGORY_TREE,
|
||||
CATEGORY_CODE, ReportOptions, append_styles)
|
||||
from gramps.gen.plug.report._paper import paper_sizes
|
||||
from gramps.gen.const import USER_HOME, DOCGEN_OPTIONS
|
||||
from gramps.gen.dbstate import DbState
|
||||
@@ -87,9 +88,9 @@ def _convert_str_to_match_type(str_val, type_val):
|
||||
return str(str_val)
|
||||
|
||||
elif ret_type == int:
|
||||
if str_val.isdigit():
|
||||
try:
|
||||
return int(str_val)
|
||||
else:
|
||||
except ValueError:
|
||||
print("'%s' is not an integer number" % str_val)
|
||||
return 0
|
||||
|
||||
@@ -250,6 +251,15 @@ class CommandLineReport:
|
||||
if name not in self.option_class.options_dict:
|
||||
self.option_class.options_dict[
|
||||
name] = menu.get_option_by_name(name).get_value()
|
||||
if category == CATEGORY_TREE:
|
||||
# Need to include Genealogy Tree options
|
||||
self.__toptions = treedoc.TreeOptions()
|
||||
menu = self.option_class.menu
|
||||
self.__toptions.add_menu_options(menu)
|
||||
for name in menu.get_all_option_names():
|
||||
if name not in self.option_class.options_dict:
|
||||
self.option_class.options_dict[
|
||||
name] = menu.get_option_by_name(name).get_value()
|
||||
self.option_class.load_previous_values()
|
||||
_validate_options(self.option_class, database)
|
||||
self.show = options_str_dict.pop('show', None)
|
||||
@@ -320,6 +330,10 @@ class CommandLineReport:
|
||||
for graph_format in graphdoc.FORMATS:
|
||||
self.options_help['off'][2].append(
|
||||
graph_format["type"] + "\t" + graph_format["descr"])
|
||||
elif self.category == CATEGORY_TREE:
|
||||
for tree_format in treedoc.FORMATS:
|
||||
self.options_help['off'][2].append(
|
||||
tree_format["type"] + "\t" + tree_format["descr"])
|
||||
else:
|
||||
self.options_help['off'][2] = "NA"
|
||||
|
||||
@@ -498,6 +512,15 @@ class CommandLineReport:
|
||||
# Pick the first one as the default.
|
||||
self.format = graphdoc.FORMATS[0]["class"]
|
||||
_chosen_format = graphdoc.FORMATS[0]["type"]
|
||||
elif self.category == CATEGORY_TREE:
|
||||
for tree_format in treedoc.FORMATS:
|
||||
if tree_format['type'] == self.options_dict['off']:
|
||||
if not self.format: # choose the first one, not the last
|
||||
self.format = tree_format["class"]
|
||||
if self.format is None:
|
||||
# Pick the first one as the default.
|
||||
self.format = tree_format.FORMATS[0]["class"]
|
||||
_chosen_format = tree_format.FORMATS[0]["type"]
|
||||
else:
|
||||
self.format = None
|
||||
if _chosen_format and _format_str:
|
||||
@@ -665,7 +688,7 @@ def cl_report(database, name, category, report_class, options_class,
|
||||
clr.selected_style,
|
||||
PaperStyle(clr.paper, clr.orien, clr.marginl,
|
||||
clr.marginr, clr.margint, clr.marginb))
|
||||
elif category == CATEGORY_GRAPHVIZ:
|
||||
elif category in [CATEGORY_GRAPHVIZ, CATEGORY_TREE]:
|
||||
clr.option_class.handler.doc = clr.format(
|
||||
clr.option_class,
|
||||
PaperStyle(clr.paper, clr.orien, clr.marginl,
|
||||
|
||||
+36
-25
@@ -6,6 +6,7 @@
|
||||
# Copyright (C) 2008-2009 Gary Burton
|
||||
# Copyright (C) 2009-2012 Doug Blank <doug.blank@gmail.com>
|
||||
# Copyright (C) 2011 Tim G L Lyons
|
||||
# Copyright (C) 2015- Serge Noiraud
|
||||
#
|
||||
# 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
|
||||
@@ -148,6 +149,7 @@ register('behavior.min-generation-years', 13)
|
||||
register('behavior.owner-warn', False)
|
||||
register('behavior.pop-plugin-status', False)
|
||||
register('behavior.recent-export-type', 3)
|
||||
register('behavior.runcheck', False)
|
||||
register('behavior.spellcheck', False)
|
||||
register('behavior.startup', 0)
|
||||
register('behavior.surname-guessing', 0)
|
||||
@@ -157,7 +159,7 @@ register('behavior.welcome', 100)
|
||||
register('behavior.web-search-url', 'http://google.com/#&q=%(text)s')
|
||||
register('behavior.addons-url', "https://raw.githubusercontent.com/gramps-project/addons/master/gramps51")
|
||||
|
||||
register('database.backend', 'bsddb')
|
||||
register('database.backend', 'sqlite')
|
||||
register('database.compress-backup', True)
|
||||
register('database.backup-path', USER_HOME)
|
||||
register('database.backup-on-exit', True)
|
||||
@@ -217,13 +219,14 @@ register('interface.sidebar-text', True)
|
||||
register('interface.size-checked', False)
|
||||
register('interface.statusbar', 1)
|
||||
register('interface.toolbar-on', True)
|
||||
register('interface.toolbar-text', False)
|
||||
register('interface.view', True)
|
||||
register('interface.surname-box-height', 150)
|
||||
register('interface.treemodel-cache-size', 1000)
|
||||
|
||||
register('paths.recent-export-dir', '')
|
||||
register('paths.recent-export-dir', USER_HOME)
|
||||
register('paths.recent-file', '')
|
||||
register('paths.recent-import-dir', '')
|
||||
register('paths.recent-import-dir', USER_HOME)
|
||||
register('paths.report-directory', USER_HOME)
|
||||
register('paths.website-directory', USER_HOME)
|
||||
register('paths.website-cms-uri', '')
|
||||
@@ -238,7 +241,6 @@ register('preferences.quick-backup-include-mode', False)
|
||||
register('preferences.date-format', 0)
|
||||
register('preferences.calendar-format-report', 0)
|
||||
register('preferences.cprefix', 'C%04d')
|
||||
register('preferences.alternate-fonthandler', False)
|
||||
register('preferences.default-source', False)
|
||||
register('preferences.tag-on-import', False)
|
||||
register('preferences.tag-on-import-format', _("Imported %Y/%m/%d %H:%M:%S"))
|
||||
@@ -249,11 +251,8 @@ register('preferences.hide-ep-msg', False)
|
||||
register('preferences.invalid-date-format', "<b>%s</b>")
|
||||
register('preferences.iprefix', 'I%04d')
|
||||
register('preferences.name-format', 1)
|
||||
register('preferences.place-format', 0)
|
||||
register('preferences.place-auto', True)
|
||||
register('preferences.place-number', False)
|
||||
register('preferences.place-reverse', False)
|
||||
register('preferences.place-restrict', 0)
|
||||
register('preferences.place-lang', '')
|
||||
register('preferences.patronimic-surname', False)
|
||||
register('preferences.no-given-text', "[%s]" % _("Missing Given Name"))
|
||||
register('preferences.no-record-text', "[%s]" % _("Missing Record"))
|
||||
@@ -274,22 +273,29 @@ register('preferences.last-view', '')
|
||||
register('preferences.last-views', [])
|
||||
register('preferences.family-relation-type', 3) # UNKNOWN
|
||||
register('preferences.age-display-precision', 1)
|
||||
register('preferences.color-gender-male-alive', '#b8cee6')
|
||||
register('preferences.color-gender-male-death', '#b8cee6')
|
||||
register('preferences.color-gender-female-alive', '#feccf0')
|
||||
register('preferences.color-gender-female-death', '#feccf0')
|
||||
register('preferences.color-gender-unknown-alive', '#f3dbb6')
|
||||
register('preferences.color-gender-unknown-death', '#f3dbb6')
|
||||
#register('preferences.color-gender-other-alive', '#fcaf3e')
|
||||
#register('preferences.color-gender-other-death', '#fcaf3e')
|
||||
register('preferences.bordercolor-gender-male-alive', '#1f4986')
|
||||
register('preferences.bordercolor-gender-male-death', '#000000')
|
||||
register('preferences.bordercolor-gender-female-alive', '#861f69')
|
||||
register('preferences.bordercolor-gender-female-death', '#000000')
|
||||
register('preferences.bordercolor-gender-unknown-alive', '#8e5801')
|
||||
register('preferences.bordercolor-gender-unknown-death', '#000000')
|
||||
#register('preferences.bordercolor-gender-other-alive', '#f57900')
|
||||
#register('preferences.bordercolor-gender-other-death', '#000000')
|
||||
|
||||
register('colors.scheme', 0)
|
||||
register('colors.male-alive', ['#b8cee6', '#1f344a'])
|
||||
register('colors.male-dead', ['#b8cee6', '#2d3039'])
|
||||
register('colors.female-alive', ['#feccf0', '#62242D'])
|
||||
register('colors.female-dead', ['#feccf0', '#3a292b'])
|
||||
register('colors.unknown-alive', ['#f3dbb6', '#75507B'])
|
||||
register('colors.unknown-dead', ['#f3dbb6', '#35103b'])
|
||||
register('colors.family', ['#eeeeee', '#454545'])
|
||||
register('colors.family-married', ['#eeeeee', '#454545'])
|
||||
register('colors.family-unmarried', ['#eeeeee', '#454545'])
|
||||
register('colors.family-civil-union', ['#eeeeee', '#454545'])
|
||||
register('colors.family-unknown', ['#eeeeee', '#454545'])
|
||||
register('colors.family-divorced', ['#ffdede', '#5c3636'])
|
||||
register('colors.home-person', ['#bbe68a', '#304918'])
|
||||
register('colors.border-male-alive', ['#1f4986', '#171d26'])
|
||||
register('colors.border-male-dead', ['#000000', '#000000'])
|
||||
register('colors.border-female-alive', ['#861f69', '#261111'])
|
||||
register('colors.border-female-dead', ['#000000', '#000000'])
|
||||
register('colors.border-unknown-alive', ['#8e5801', '#8e5801'])
|
||||
register('colors.border-unknown-dead', ['#000000', '#000000'])
|
||||
register('colors.border-family', ['#cccccc', '#252525'])
|
||||
register('colors.border-family-divorced', ['#ff7373', '#720b0b'])
|
||||
|
||||
register('researcher.researcher-addr', '')
|
||||
register('researcher.researcher-locality', '')
|
||||
@@ -304,6 +310,11 @@ register('researcher.researcher-state', '')
|
||||
register('plugin.hiddenplugins', [])
|
||||
register('plugin.addonplugins', [])
|
||||
|
||||
register('utf8.in-use', False)
|
||||
register('utf8.available-fonts', [])
|
||||
register('utf8.selected-font', "")
|
||||
register('utf8.death-symbol', 13)
|
||||
|
||||
if __debug__: # enable a simple CLI test to see if the datestrings exist
|
||||
register('test.january', _("localized lexeme inflections||January"))
|
||||
|
||||
@@ -327,7 +338,7 @@ if not os.path.exists(CONFIGMAN.filename):
|
||||
# check previous version of gramps:
|
||||
fullpath, filename = os.path.split(CONFIGMAN.filename)
|
||||
fullpath, previous = os.path.split(fullpath)
|
||||
match = re.match('gramps(\d*)', previous)
|
||||
match = re.match(r'gramps(\d*)', previous)
|
||||
if match:
|
||||
# cycle back looking for previous versions of gramps
|
||||
for i in range(1, 20): # check back 2 gramps versions
|
||||
|
||||
+12
-2
@@ -104,6 +104,13 @@ elif 'USERPROFILE' in os.environ:
|
||||
else:
|
||||
USER_HOME = get_env_var('HOME')
|
||||
HOME_DIR = os.path.join(USER_HOME, '.gramps')
|
||||
ORIG_HOME_DIR = HOME_DIR
|
||||
if 'SAFEMODE' in os.environ:
|
||||
if 'USERPROFILE' in os.environ:
|
||||
USER_HOME = get_env_var('USERPROFILE')
|
||||
else:
|
||||
USER_HOME = get_env_var('HOME')
|
||||
HOME_DIR = get_env_var('SAFEMODE')
|
||||
|
||||
|
||||
VERSION_DIR = os.path.join(
|
||||
@@ -112,6 +119,7 @@ VERSION_DIR = os.path.join(
|
||||
CUSTOM_FILTERS = os.path.join(VERSION_DIR, "custom_filters.xml")
|
||||
REPORT_OPTIONS = os.path.join(HOME_DIR, "report_options.xml")
|
||||
TOOL_OPTIONS = os.path.join(HOME_DIR, "tool_options.xml")
|
||||
PLACE_FORMATS = os.path.join(HOME_DIR, "place_formats.xml")
|
||||
|
||||
ENV_DIR = os.path.join(HOME_DIR, "env")
|
||||
TEMP_DIR = os.path.join(HOME_DIR, "temp")
|
||||
@@ -217,7 +225,7 @@ GTK_GETTEXT_DOMAIN = 'gtk30'
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
COPYRIGHT_MSG = "© 2001-2006 Donald N. Allingham\n" \
|
||||
"© 2007-2017 The Gramps Developers"
|
||||
"© 2007-2019 The Gramps Developers"
|
||||
COMMENTS = _("Gramps\n (Genealogical Research and Analysis "
|
||||
"Management Programming System)\n"
|
||||
"is a personal genealogy program.")
|
||||
@@ -266,6 +274,7 @@ LONGOPTS = [
|
||||
"class=",
|
||||
"config=",
|
||||
"debug=",
|
||||
"default=",
|
||||
"display=",
|
||||
"disable-sound",
|
||||
"disable-crash-dialog",
|
||||
@@ -293,6 +302,7 @@ LONGOPTS = [
|
||||
"password=",
|
||||
"create=",
|
||||
"options=",
|
||||
"safe",
|
||||
"screen=",
|
||||
"show",
|
||||
"sm-client-id=",
|
||||
@@ -306,7 +316,7 @@ LONGOPTS = [
|
||||
"quiet",
|
||||
]
|
||||
|
||||
SHORTOPTS = "O:U:P:C:i:e:f:a:p:d:c:r:lLthuv?syq"
|
||||
SHORTOPTS = "O:U:P:C:i:e:f:a:p:d:c:r:lLthuv?syqSD:"
|
||||
|
||||
GRAMPS_UUID = uuid.UUID('516cd010-5a41-470f-99f8-eb22f1098ad6')
|
||||
|
||||
|
||||
@@ -124,12 +124,12 @@ class DateParserAR(DateParser):
|
||||
_span_2 = ['إلى']
|
||||
_range_1 = ['بين']
|
||||
_range_2 = ['و']
|
||||
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_range_1), '|'.join(_range_2)),
|
||||
re.IGNORECASE)
|
||||
self._span = re.compile(
|
||||
r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)), re.IGNORECASE)
|
||||
self._range = re.compile(
|
||||
r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_range_1), '|'.join(_range_2)), re.IGNORECASE)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
|
||||
@@ -166,12 +166,12 @@ class DateParserBG(DateParser):
|
||||
_span_2 = ['до']
|
||||
_range_1 = ['между']
|
||||
_range_2 = ['и']
|
||||
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_range_1), '|'.join(_range_2)),
|
||||
re.IGNORECASE)
|
||||
self._span = re.compile(
|
||||
r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)), re.IGNORECASE)
|
||||
self._range = re.compile(
|
||||
r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_range_1), '|'.join(_range_2)), re.IGNORECASE)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
|
||||
@@ -98,14 +98,14 @@ class DateParserCA(DateParser):
|
||||
DateParser.init_strings(self)
|
||||
_span_1 = ['des de']
|
||||
_span_2 = ['fins a']
|
||||
_range_1 = ['entre', 'ent\.', 'ent']
|
||||
_range_1 = ['entre', r'ent\.', 'ent']
|
||||
_range_2 = ['i']
|
||||
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_range_1), '|'.join(_range_2)),
|
||||
re.IGNORECASE)
|
||||
self._span = re.compile(
|
||||
r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)), re.IGNORECASE)
|
||||
self._range = re.compile(
|
||||
r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_range_1), '|'.join(_range_2)), re.IGNORECASE)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
|
||||
@@ -89,10 +89,11 @@ class DateParserDa(DateParser):
|
||||
|
||||
def init_strings(self):
|
||||
DateParser.init_strings(self)
|
||||
self._span = re.compile("(fra)?\s*(?P<start>.+)\s*(til|--|–)\s*(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile("(mellem)\s+(?P<start>.+)\s+og\s+(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._span = re.compile(
|
||||
r"(fra)?\s*(?P<start>.+)\s*(til|--|–)\s*(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile(
|
||||
r"(mellem)\s+(?P<start>.+)\s+og\s+(?P<stop>.+)", re.IGNORECASE)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
|
||||
@@ -51,9 +51,9 @@ class DateParserDE(DateParser):
|
||||
# Always add german and austrian name variants no matter what the current
|
||||
# locale is
|
||||
month_to_int["januar"] = 1
|
||||
month_to_int["jan"] = 1
|
||||
month_to_int["jan"] = 1
|
||||
month_to_int["jänner"] = 1
|
||||
month_to_int["jän"] = 1
|
||||
month_to_int["jän"] = 1
|
||||
|
||||
# Add other common latin,
|
||||
|
||||
@@ -121,14 +121,14 @@ class DateParserDE(DateParser):
|
||||
# local and historical variants
|
||||
|
||||
month_to_int["jenner"] = 1
|
||||
month_to_int["feber"] = 2
|
||||
month_to_int["merz"] = 3
|
||||
month_to_int["augst"] = 8
|
||||
month_to_int["7ber"] = 9
|
||||
month_to_int["8ber"] = 10
|
||||
month_to_int["9ber"] = 11
|
||||
month_to_int["10ber"] = 12
|
||||
month_to_int["xber"] = 12
|
||||
month_to_int["feber"] = 2
|
||||
month_to_int["merz"] = 3
|
||||
month_to_int["augst"] = 8
|
||||
month_to_int["7ber"] = 9
|
||||
month_to_int["8ber"] = 10
|
||||
month_to_int["9ber"] = 11
|
||||
month_to_int["10ber"] = 12
|
||||
month_to_int["xber"] = 12
|
||||
|
||||
# old german names
|
||||
|
||||
@@ -248,14 +248,16 @@ class DateParserDE(DateParser):
|
||||
|
||||
def init_strings(self):
|
||||
DateParser.init_strings(self)
|
||||
self._span = re.compile("(von|vom)\s+(?P<start>.+)\s+(bis)\s+(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile("zwischen\s+(?P<start>.+)\s+und\s+(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._text2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._mon_str,
|
||||
re.IGNORECASE)
|
||||
self._jtext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._jmon_str,
|
||||
re.IGNORECASE)
|
||||
self._span = re.compile(
|
||||
r"(von|vom)\s+(?P<start>.+)\s+(bis)\s+(?P<stop>.+)", re.IGNORECASE)
|
||||
self._range = re.compile(
|
||||
r"zwischen\s+(?P<start>.+)\s+und\s+(?P<stop>.+)", re.IGNORECASE)
|
||||
self._text2 = re.compile(
|
||||
r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._mon_str,
|
||||
re.IGNORECASE)
|
||||
self._jtext2 = re.compile(
|
||||
r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._jmon_str,
|
||||
re.IGNORECASE)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -288,11 +290,12 @@ class DateDisplayDE(DateDisplay):
|
||||
|
||||
formats = (
|
||||
"JJJJ-MM-DD (ISO)", "Numerisch", "Monat Tag Jahr",
|
||||
"MONAT Tag Jahr", "Tag. Monat Jahr", "Tag. MONAT Jahr"
|
||||
"MONAT Tag Jahr", "Tag. Monat Jahr", "Tag. MONAT Jahr",
|
||||
"Numerisch mit führenden Nullen"
|
||||
)
|
||||
# this definition must agree with its "_display_gregorian" method
|
||||
|
||||
def _display_gregorian(self, date_val):
|
||||
def _display_gregorian(self, date_val, **kwargs):
|
||||
"""
|
||||
display gregorian calendar date in different format
|
||||
"""
|
||||
@@ -341,6 +344,18 @@ class DateDisplayDE(DateDisplay):
|
||||
else:
|
||||
value = "%d. %s %s" % (date_val[0],
|
||||
self.long_months[date_val[1]], year)
|
||||
elif self.format == 6:
|
||||
# day.month_number.year with leading zeros
|
||||
if date_val[3]:
|
||||
return self.display_iso(date_val)
|
||||
else:
|
||||
if date_val[0] == date_val[1] == 0:
|
||||
value = str(date_val[2])
|
||||
else:
|
||||
value = self.dhformat.replace('%m', str(date_val[1])
|
||||
.zfill(2))
|
||||
value = value.replace('%d', str(date_val[0]).zfill(2))
|
||||
value = value.replace('%Y', str(date_val[2]))
|
||||
else:
|
||||
# day. month_abbreviation year
|
||||
if date_val[0] == 0:
|
||||
|
||||
@@ -116,14 +116,14 @@ class DateParserEL(DateParser):
|
||||
DateParser.init_strings(self)
|
||||
_span_1 = ['από']
|
||||
_span_2 = ['έως']
|
||||
_range_1 = ['μετ', 'μετ\.', 'μεταξύ']
|
||||
_range_1 = ['μετ', r'μετ\.', 'μεταξύ']
|
||||
_range_2 = ['και']
|
||||
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_range_1), '|'.join(_range_2)),
|
||||
re.IGNORECASE)
|
||||
self._span = re.compile(
|
||||
r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)), re.IGNORECASE)
|
||||
self._range = re.compile(
|
||||
r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_range_1), '|'.join(_range_2)), re.IGNORECASE)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -155,7 +155,7 @@ class DateDisplayEL(DateDisplay):
|
||||
)
|
||||
# this definition must agree with its "_display_gregorian" method
|
||||
|
||||
def _display_gregorian(self, date_val):
|
||||
def _display_gregorian(self, date_val, **kwargs):
|
||||
"""
|
||||
display gregorian calendar date in different format
|
||||
"""
|
||||
|
||||
@@ -97,14 +97,14 @@ class DateParserES(DateParser):
|
||||
DateParser.init_strings(self)
|
||||
_span_1 = ['de']
|
||||
_span_2 = ['a']
|
||||
_range_1 = ['entre', 'ent\.', 'ent']
|
||||
_range_1 = ['entre', r'ent\.', 'ent']
|
||||
_range_2 = ['y']
|
||||
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_range_1), '|'.join(_range_2)),
|
||||
re.IGNORECASE)
|
||||
self._span = re.compile(
|
||||
r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)), re.IGNORECASE)
|
||||
self._range = re.compile(
|
||||
r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_range_1), '|'.join(_range_2)), re.IGNORECASE)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
|
||||
@@ -98,12 +98,12 @@ class DateParserFI(DateParser):
|
||||
|
||||
def init_strings(self):
|
||||
DateParser.init_strings(self)
|
||||
self._text2 = re.compile('(\d+)?\.?\s+?%s\.?\s*((\d+)(/\d+)?)?\s*$'
|
||||
% self._mon_str, re.IGNORECASE)
|
||||
self._span = re.compile("(?P<start>.+)\s+(-)\s+(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._text2 = re.compile(r'(\d+)?\.?\s+?%s\.?\s*((\d+)(/\d+)?)?\s*$'
|
||||
% self._mon_str, re.IGNORECASE)
|
||||
self._span = re.compile(r"(?P<start>.+)\s+(-)\s+(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile(
|
||||
"(vuosien\s*)?(?P<start>.+)\s+ja\s+(?P<stop>.+)\s+välillä",
|
||||
r"(vuosien\s*)?(?P<start>.+)\s+ja\s+(?P<stop>.+)\s+välillä",
|
||||
re.IGNORECASE)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#
|
||||
|
||||
# Croatian version 2008 by Josip
|
||||
# Croatian version 2018 by Milo
|
||||
|
||||
"""
|
||||
Croatian-specific classes for parsing and displaying dates.
|
||||
@@ -51,13 +52,15 @@ from ._datehandler import register_datehandler
|
||||
#-------------------------------------------------------------------------
|
||||
class DateParserHR(DateParser):
|
||||
modifier_to_int = {
|
||||
'prije' : Date.MOD_BEFORE,
|
||||
'prije' : Date.MOD_BEFORE,
|
||||
'pr. ' : Date.MOD_BEFORE,
|
||||
'poslije' : Date.MOD_AFTER,
|
||||
'po. ' : Date.MOD_AFTER,
|
||||
'okolo' : Date.MOD_ABOUT,
|
||||
'ok. ' : Date.MOD_ABOUT,
|
||||
|
||||
'poslije' : Date.MOD_AFTER,
|
||||
'po. ' : Date.MOD_AFTER,
|
||||
'nakon' : Date.MOD_AFTER,
|
||||
'na. ' : Date.MOD_AFTER,
|
||||
'oko' : Date.MOD_ABOUT,
|
||||
'okolo' : Date.MOD_ABOUT,
|
||||
'ok. ' : Date.MOD_ABOUT,
|
||||
}
|
||||
|
||||
quality_to_int = {
|
||||
@@ -75,19 +78,27 @@ class DateParserHR(DateParser):
|
||||
compiles regular expression strings for matching dates
|
||||
"""
|
||||
DateParser.init_strings(self)
|
||||
#~ DateParser.calendar_to_int.update({
|
||||
#~ 'персидский' : Date.CAL_PERSIAN,
|
||||
#~ 'п' : Date.CAL_PERSIAN,
|
||||
#~ })
|
||||
|
||||
# match 'Day. MONTH year.' format with or without dots
|
||||
self._text2 = re.compile(r'(\d+)?\.?\s*?%s\.?\s*((\d+)(/\d+)?)?\s*\.?$'
|
||||
% self._mon_str, re.IGNORECASE)
|
||||
|
||||
# match Day.Month.Year.
|
||||
self._numeric = re.compile(
|
||||
r"((\d+)[/\. ])?\s*((\d+)[/\.])?\s*(\d+)\.?$")
|
||||
|
||||
self._jtext2 = re.compile(r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?'
|
||||
% self._jmon_str, re.IGNORECASE)
|
||||
|
||||
_span_1 = ['od']
|
||||
_span_2 = ['do']
|
||||
_range_1 = ['između']
|
||||
_range_2 = ['i']
|
||||
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_range_1), '|'.join(_range_2)),
|
||||
self._span = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)"
|
||||
% ('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)"
|
||||
% ('|'.join(_range_1), '|'.join(_range_2)),
|
||||
re.IGNORECASE)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@@ -105,11 +116,35 @@ class DateDisplayHR(DateDisplay):
|
||||
|
||||
display = DateDisplay.display_formatted
|
||||
|
||||
def format_short_month_year(self, month, year, inflect, short_months):
|
||||
""" Allow a subclass to modify the year, e.g. add a period """
|
||||
if not hasattr(short_months[1], 'f'): # not a Lexeme: no inflection
|
||||
return "{short_month} {year}.".format(
|
||||
short_month = short_months[month], year = year)
|
||||
return self.FORMATS_short_month_year[inflect].format(
|
||||
short_month = short_months[month], year = year)
|
||||
|
||||
def _get_localized_year(self, year):
|
||||
""" Allow a subclass to modify the year, e.g. add a period """
|
||||
return year + '.'
|
||||
|
||||
# FIXME probably there should be a Croatian-specific "formats" (and this
|
||||
# ("American comma") format (and dd_dformat03 too) should be eliminated)
|
||||
def dd_dformat02(self, date_val, inflect, long_months):
|
||||
""" month_name day, year """
|
||||
return DateDisplay.dd_dformat02(
|
||||
self, date_val, inflect, long_months).replace(' .', '')
|
||||
|
||||
def dd_dformat04(self, date_val, inflect, long_months):
|
||||
""" day month_name year """
|
||||
return DateDisplay.dd_dformat04(
|
||||
self, date_val, inflect, long_months).replace(' .', '')
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Register classes
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
register_datehandler(
|
||||
('hr_HR', 'hr', 'HR', 'croatian', 'Croatian', 'hrvatski', ('%d.%m.%Y',)),
|
||||
('hr_HR', 'hr', 'HR', 'croatian', 'Croatian', 'hrvatski', ('%d. %m. %Y.',)),
|
||||
DateParserHR, DateDisplayHR)
|
||||
@@ -55,7 +55,7 @@ class DateParserHU(DateParser):
|
||||
month_to_int["-"]=0 #to make the Zero month to work
|
||||
|
||||
month_to_int["január"] = 1
|
||||
month_to_int["jan"] = 1
|
||||
month_to_int["jan"] = 1
|
||||
month_to_int["jan."] = 1
|
||||
month_to_int["I"] = 1
|
||||
# month_to_int["i"] = 1
|
||||
@@ -64,67 +64,67 @@ class DateParserHU(DateParser):
|
||||
month_to_int["feb"] = 2
|
||||
month_to_int["feb."] = 2
|
||||
month_to_int["II"] = 2
|
||||
# month_to_int["ii"] = 2
|
||||
# month_to_int["ii"] = 2
|
||||
|
||||
month_to_int["március"] = 3
|
||||
month_to_int["márc"] = 3
|
||||
month_to_int["márc."] = 3
|
||||
month_to_int["III"] = 3
|
||||
# month_to_int["iii"] = 3
|
||||
# month_to_int["iii"] = 3
|
||||
|
||||
month_to_int["április"] = 4
|
||||
month_to_int["ápr"] = 4
|
||||
month_to_int["ápr."] = 4
|
||||
month_to_int["IV"] = 4
|
||||
# month_to_int["iv"] = 4
|
||||
month_to_int["IV"] = 4
|
||||
# month_to_int["iv"] = 4
|
||||
|
||||
month_to_int["május"] = 5
|
||||
month_to_int["máj"] = 5
|
||||
month_to_int["máj."] = 5
|
||||
month_to_int["V"] = 5
|
||||
# month_to_int["v"] = 5
|
||||
month_to_int["V"] = 5
|
||||
# month_to_int["v"] = 5
|
||||
|
||||
month_to_int["június"] = 6
|
||||
month_to_int["jún"] = 6
|
||||
month_to_int["jún."] = 6
|
||||
month_to_int["VI"] = 6
|
||||
# month_to_int["vi"] = 6
|
||||
month_to_int["VI"] = 6
|
||||
# month_to_int["vi"] = 6
|
||||
|
||||
month_to_int["július"] = 7
|
||||
month_to_int["júl"] = 7
|
||||
month_to_int["júl."] = 7
|
||||
month_to_int["VII"] = 7
|
||||
# month_to_int["vii"] = 7
|
||||
month_to_int["július"] = 7
|
||||
month_to_int["júl"] = 7
|
||||
month_to_int["júl."] = 7
|
||||
month_to_int["VII"] = 7
|
||||
# month_to_int["vii"] = 7
|
||||
|
||||
month_to_int["augusztus"] = 8
|
||||
month_to_int["aug"] = 8
|
||||
month_to_int["aug."] = 8
|
||||
month_to_int["VIII"] = 8
|
||||
# month_to_int["viii"] = 8
|
||||
month_to_int["augusztus"] = 8
|
||||
month_to_int["aug"] = 8
|
||||
month_to_int["aug."] = 8
|
||||
month_to_int["VIII"] = 8
|
||||
# month_to_int["viii"] = 8
|
||||
|
||||
month_to_int["szeptember"] = 9
|
||||
month_to_int["szept"] = 9
|
||||
month_to_int["szeptember"] = 9
|
||||
month_to_int["szept"] = 9
|
||||
month_to_int["szept."] = 9
|
||||
month_to_int["IX"] = 9
|
||||
# month_to_int["ix"] = 9
|
||||
month_to_int["IX"] = 9
|
||||
# month_to_int["ix"] = 9
|
||||
|
||||
month_to_int["október"] = 10
|
||||
month_to_int["okt"] = 10
|
||||
month_to_int["okt."] = 10
|
||||
month_to_int["X"] = 10
|
||||
# month_to_int["x"] = 10
|
||||
month_to_int["október"] = 10
|
||||
month_to_int["okt"] = 10
|
||||
month_to_int["okt."] = 10
|
||||
month_to_int["X"] = 10
|
||||
# month_to_int["x"] = 10
|
||||
|
||||
month_to_int["november"] = 11
|
||||
month_to_int["nov"] = 11
|
||||
month_to_int["november"] = 11
|
||||
month_to_int["nov"] = 11
|
||||
month_to_int["nov."] = 11
|
||||
month_to_int["XI"] = 11
|
||||
# month_to_int["xi"] = 11
|
||||
month_to_int["XI"] = 11
|
||||
# month_to_int["xi"] = 11
|
||||
|
||||
month_to_int["december"] = 12
|
||||
month_to_int["dec"] = 12
|
||||
month_to_int["dec."] = 12
|
||||
month_to_int["XII"] = 12
|
||||
# month_to_int["xii"] = 12
|
||||
month_to_int["december"] = 12
|
||||
month_to_int["dec"] = 12
|
||||
month_to_int["dec."] = 12
|
||||
month_to_int["XII"] = 12
|
||||
# month_to_int["xii"] = 12
|
||||
|
||||
|
||||
#-----------------------------------------------------------------------
|
||||
@@ -228,19 +228,19 @@ class DateParserHU(DateParser):
|
||||
DateParser.init_strings(self)
|
||||
|
||||
self._numeric = re.compile(
|
||||
"((\d+)[/\.])?\s*((\d+)[/\.])?\s*(\d+)[/\. ]?$")
|
||||
r"((\d+)[/\.])?\s*((\d+)[/\.])?\s*(\d+)[/\. ]?$")
|
||||
# this next RE has the (possibly-slashed) year at the string's start
|
||||
self._text2 = re.compile('((\d+)(/\d+)?\.)?\s+?%s\.?\s*(\d+\.)?\s*$'
|
||||
% self._mon_str, re.IGNORECASE)
|
||||
_span_1 = ['-tó\(ő\)l', '-tól', '-től']
|
||||
self._text2 = re.compile(r'((\d+)(/\d+)?\.)?\s+?%s\.?\s*(\d+\.)?\s*$'
|
||||
% self._mon_str, re.IGNORECASE)
|
||||
_span_1 = [r'-tó\(ő\)l', '-tól', '-től']
|
||||
_span_2 = ['-ig']
|
||||
_range_1 = ['és']
|
||||
_range_2 = ['között']
|
||||
self._span = re.compile("(?P<start>.+)(%s)\s+(?P<stop>.+)(%s)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile("(?P<start>.+)\s+(%s)\s+(?P<stop>.+)\s+(%s)" %
|
||||
('|'.join(_range_1), '|'.join(_range_2)),
|
||||
self._span = re.compile(r"(?P<start>.+)(%s)\s+(?P<stop>.+)(%s)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile(r"(?P<start>.+)\s+(%s)\s+(?P<stop>.+)\s+(%s)"
|
||||
% ('|'.join(_range_1), '|'.join(_range_2)),
|
||||
re.IGNORECASE)
|
||||
|
||||
|
||||
|
||||
@@ -90,22 +90,23 @@ class DateParserIs(DateParser):
|
||||
}
|
||||
|
||||
def dhformat_changed(self):
|
||||
self._dhformat_parse = re.compile(".*%(\S).*%(\S).*%(\S).*%(\S).*")
|
||||
self._dhformat_parse = re.compile(r".*%(\S).*%(\S).*%(\S).*%(\S).*")
|
||||
|
||||
def init_strings(self):
|
||||
DateParser.init_strings(self)
|
||||
|
||||
# match 'day. month year' format
|
||||
self._text2 = re.compile('(\d+)?\.?\s*?%s\.?\s*((\d+)(/\d+)?)?\s*$'
|
||||
self._text2 = re.compile(r'(\d+)?\.?\s*?%s\.?\s*((\d+)(/\d+)?)?\s*$'
|
||||
% self._mon_str, re.IGNORECASE)
|
||||
# match 'short-day day.month year' format
|
||||
short_day_str = '(' + '|'.join(self._ds.short_days[1:]) + ')'
|
||||
self._numeric = re.compile("%s\s*((\d+)[\.]\s*)?((\d+)\s*)?(\d+)\s*$"
|
||||
self._numeric = re.compile(r"%s\s*((\d+)[\.]\s*)?((\d+)\s*)?(\d+)\s*$"
|
||||
% short_day_str, re.IGNORECASE)
|
||||
self._span = re.compile("(frá)?\s*(?P<start>.+)\s*(til|--|–)\s*(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile("(milli)\s+(?P<start>.+)\s+og\s+(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._span = re.compile(
|
||||
r"(frá)?\s*(?P<start>.+)\s*(til|--|–)\s*(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile(
|
||||
r"(milli)\s+(?P<start>.+)\s+og\s+(?P<stop>.+)", re.IGNORECASE)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -185,7 +186,8 @@ class DateDisplayIs(DateDisplay):
|
||||
text, scal)
|
||||
|
||||
def _get_weekday(self, date_val):
|
||||
if date_val[0] == 0 or date_val[1] == 0: # no day or no month or both
|
||||
if (date_val[0] == 0 or date_val[1] == 0 # no day or no month or both
|
||||
or date_val[2] > datetime.MAXYEAR): # bug 10815
|
||||
return ''
|
||||
w_day = datetime.date(date_val[2], date_val[1], date_val[0]) # y, m, d
|
||||
return self.short_days[((w_day.weekday() + 1) % 7) + 1]
|
||||
|
||||
@@ -96,12 +96,12 @@ class DateParserIT(DateParser):
|
||||
_span_2 = ['al', 'a']
|
||||
_range_1 = ['tra', 'fra']
|
||||
_range_2 = ['e']
|
||||
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_range_1), '|'.join(_range_2)),
|
||||
self._span = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile(
|
||||
r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_range_1), '|'.join(_range_2)), re.IGNORECASE)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
|
||||
@@ -166,13 +166,13 @@ class DateParserJA(DateParser):
|
||||
_span_2 = ['まで', '']
|
||||
_range_1 = ['から', 'と', '~', '〜']
|
||||
_range_2 = ['までの間', 'の間']
|
||||
self._span = re.compile("(?P<start>.+)(%s)(?P<stop>\d+)(%s)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile("(?P<start>.+)(%s)(?P<stop>.+)(%s)" %
|
||||
self._span = re.compile(r"(?P<start>.+)(%s)(?P<stop>\d+)(%s)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile(r"(?P<start>.+)(%s)(?P<stop>.+)(%s)" %
|
||||
('|'.join(_range_1), '|'.join(_range_2)),
|
||||
re.IGNORECASE)
|
||||
self._numeric = re.compile("((\d+)年\s*)?((\d+)月\s*)?(\d+)?日?\s*$")
|
||||
self._numeric = re.compile(r"((\d+)年\s*)?((\d+)月\s*)?(\d+)?日?\s*$")
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
|
||||
@@ -131,18 +131,19 @@ class DateParserLT(DateParser):
|
||||
def init_strings(self):
|
||||
DateParser.init_strings(self)
|
||||
# this next RE has the (possibly-slashed) year at the string's start
|
||||
self._text2 = re.compile('((\d+)(/\d+)?)?\s+?m\.\s+%s\s*(\d+)?\s*d?\.?$'
|
||||
% self._mon_str, re.IGNORECASE)
|
||||
self._text2 = re.compile(
|
||||
r'((\d+)(/\d+)?)?\s+?m\.\s+%s\s*(\d+)?\s*d?\.?$'
|
||||
% self._mon_str, re.IGNORECASE)
|
||||
_span_1 = ['nuo']
|
||||
_span_2 = ['iki']
|
||||
_range_1 = ['tarp']
|
||||
_range_2 = ['ir']
|
||||
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_range_1), '|'.join(_range_2)),
|
||||
re.IGNORECASE)
|
||||
self._span = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile(
|
||||
r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_range_1), '|'.join(_range_2)), re.IGNORECASE)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -187,7 +188,7 @@ class DateDisplayLT(DateDisplay):
|
||||
"mmmm m. mėnesio diena d.", "Mėn diena, metai")
|
||||
# this definition must agree with its "_display_gregorian" method
|
||||
|
||||
def _display_gregorian(self, date_val):
|
||||
def _display_gregorian(self, date_val, **kwargs):
|
||||
"""
|
||||
display gregorian calendar date in different format
|
||||
"""
|
||||
|
||||
@@ -58,6 +58,7 @@ class DateParserNb(DateParser):
|
||||
'innen' : Date.MOD_BEFORE,
|
||||
'etter' : Date.MOD_AFTER,
|
||||
'omkring' : Date.MOD_ABOUT,
|
||||
'omtrent' : Date.MOD_ABOUT,
|
||||
'ca' : Date.MOD_ABOUT
|
||||
}
|
||||
|
||||
@@ -89,12 +90,13 @@ class DateParserNb(DateParser):
|
||||
|
||||
def init_strings(self):
|
||||
DateParser.init_strings(self)
|
||||
# match day. month year
|
||||
self._numeric = re.compile("((\d+)[\.])?\s*((\d+))?\s*(\d+)$")
|
||||
self._span = re.compile("(fra)?\s*(?P<start>.+)\s*(til|--|–)\s*(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile("(mellom)\s+(?P<start>.+)\s+og\s+(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._numeric = re.compile(
|
||||
r"((\d+)[/\.\s]\s*)?((\d+)[/\.\-\s]\s*)?(\d+)\s*$")
|
||||
self._span = re.compile(
|
||||
r"(fra)?\s*(?P<start>.+)\s*(til|--|–)\s*(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile(
|
||||
r"(mellom)\s+(?P<start>.+)\s+og\s+(?P<stop>.+)", re.IGNORECASE)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -173,6 +175,10 @@ class DateDisplayNb(DateDisplay):
|
||||
return "%s%s%s%s" % (qual_str, self._mod_str[mod],
|
||||
text, scal)
|
||||
|
||||
def dd_dformat01(self, date_val):
|
||||
""" numerical -- for Norwegian dates """
|
||||
return DateDisplay.dd_dformat01(self, date_val).lstrip()
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Register classes
|
||||
|
||||
@@ -57,30 +57,30 @@ class DateParserNL(DateParser):
|
||||
# Always add dutch and flemish name variants
|
||||
# no matter what the current locale is
|
||||
month_to_int["januari"] = 1
|
||||
month_to_int["jan"] = 1
|
||||
month_to_int["jan"] = 1
|
||||
# Add other common latin, local and historical variants
|
||||
month_to_int["januaris"] = 1
|
||||
month_to_int["feber"] = 2
|
||||
month_to_int["februaris"] = 2
|
||||
month_to_int["merz"] = 3
|
||||
month_to_int["feber"] = 2
|
||||
month_to_int["februaris"] = 2
|
||||
month_to_int["merz"] = 3
|
||||
#make sure on all distro mrt and maa are accepted
|
||||
month_to_int["maa"] = 3
|
||||
month_to_int["mrt"] = 3
|
||||
month_to_int["aprilis"] = 4
|
||||
month_to_int["maius"] = 5
|
||||
month_to_int["junius"] = 6
|
||||
month_to_int["julius"] = 7
|
||||
month_to_int["augst"] = 8
|
||||
month_to_int["7ber"] = 9
|
||||
month_to_int["7bris"] = 9
|
||||
month_to_int["8ber"] = 10
|
||||
month_to_int["8bris"] = 10
|
||||
month_to_int["9ber"] = 11
|
||||
month_to_int["9bris"] = 11
|
||||
month_to_int["10ber"] = 12
|
||||
month_to_int["10bris"] = 12
|
||||
month_to_int["xber"] = 12
|
||||
month_to_int["xbris"] = 12
|
||||
month_to_int["maa"] = 3
|
||||
month_to_int["mrt"] = 3
|
||||
month_to_int["aprilis"] = 4
|
||||
month_to_int["maius"] = 5
|
||||
month_to_int["junius"] = 6
|
||||
month_to_int["julius"] = 7
|
||||
month_to_int["augst"] = 8
|
||||
month_to_int["7ber"] = 9
|
||||
month_to_int["7bris"] = 9
|
||||
month_to_int["8ber"] = 10
|
||||
month_to_int["8bris"] = 10
|
||||
month_to_int["9ber"] = 11
|
||||
month_to_int["9bris"] = 11
|
||||
month_to_int["10ber"] = 12
|
||||
month_to_int["10bris"] = 12
|
||||
month_to_int["xber"] = 12
|
||||
month_to_int["xbris"] = 12
|
||||
|
||||
modifier_to_int = {
|
||||
'voor' : Date.MOD_BEFORE,
|
||||
@@ -119,16 +119,14 @@ class DateParserNL(DateParser):
|
||||
|
||||
def init_strings(self):
|
||||
DateParser.init_strings(self)
|
||||
self._span = re.compile("(van)\s+(?P<start>.+)\s+(tot)\s+(?P<stop>.+)",
|
||||
self._span = re.compile(
|
||||
r"(van)\s+(?P<start>.+)\s+(tot)\s+(?P<stop>.+)", re.IGNORECASE)
|
||||
self._range = re.compile(r"tussen\s+(?P<start>.+)\s+en\s+(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile("tussen\s+(?P<start>.+)\s+en\s+(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._text2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?'
|
||||
% self._mon_str,
|
||||
re.IGNORECASE)
|
||||
self._jtext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?'
|
||||
% self._jmon_str,
|
||||
re.IGNORECASE)
|
||||
self._text2 = re.compile(r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?'
|
||||
% self._mon_str, re.IGNORECASE)
|
||||
self._jtext2 = re.compile(r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?'
|
||||
% self._jmon_str, re.IGNORECASE)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -164,7 +162,7 @@ class DateDisplayNL(DateDisplay):
|
||||
)
|
||||
# this definition must agree with its "_display_gregorian" method
|
||||
|
||||
def _display_gregorian(self, date_val):
|
||||
def _display_gregorian(self, date_val, **kwargs):
|
||||
"""
|
||||
display gregorian calendar date in different format
|
||||
"""
|
||||
|
||||
@@ -54,38 +54,38 @@ class DateParserPL(DateParser):
|
||||
month_to_int["styczeń"] = 1
|
||||
month_to_int["sty"] = 1
|
||||
month_to_int["I"] = 1
|
||||
month_to_int["luty"] = 2
|
||||
month_to_int["lut"] = 2
|
||||
month_to_int["II"] = 2
|
||||
month_to_int["marzec"] = 3
|
||||
month_to_int["mar"] = 3
|
||||
month_to_int["III"] = 3
|
||||
month_to_int["kwiecień"] = 4
|
||||
month_to_int["kwi"] = 4
|
||||
month_to_int["IV"] = 4
|
||||
month_to_int["maj"] = 5
|
||||
month_to_int["V"] = 5
|
||||
month_to_int["czerwiec"] = 6
|
||||
month_to_int["cze"] = 6
|
||||
month_to_int["VI"] = 6
|
||||
month_to_int["lipiec"] = 7
|
||||
month_to_int["lip"] = 7
|
||||
month_to_int["VII"] = 7
|
||||
month_to_int["sierpień"] = 8
|
||||
month_to_int["sie"] = 8
|
||||
month_to_int["VIII"] = 8
|
||||
month_to_int["wrzesień"] = 9
|
||||
month_to_int["wrz"] = 9
|
||||
month_to_int["IX"] = 9
|
||||
month_to_int["październik"] = 10
|
||||
month_to_int["paź"] = 10
|
||||
month_to_int["X"] = 10
|
||||
month_to_int["listopad"] = 11
|
||||
month_to_int["lis"] = 11
|
||||
month_to_int["XI"] = 11
|
||||
month_to_int["grudzień"] = 12
|
||||
month_to_int["gru"] = 12
|
||||
month_to_int["XII"] = 12
|
||||
month_to_int["luty"] = 2
|
||||
month_to_int["lut"] = 2
|
||||
month_to_int["II"] = 2
|
||||
month_to_int["marzec"] = 3
|
||||
month_to_int["mar"] = 3
|
||||
month_to_int["III"] = 3
|
||||
month_to_int["kwiecień"] = 4
|
||||
month_to_int["kwi"] = 4
|
||||
month_to_int["IV"] = 4
|
||||
month_to_int["maj"] = 5
|
||||
month_to_int["V"] = 5
|
||||
month_to_int["czerwiec"] = 6
|
||||
month_to_int["cze"] = 6
|
||||
month_to_int["VI"] = 6
|
||||
month_to_int["lipiec"] = 7
|
||||
month_to_int["lip"] = 7
|
||||
month_to_int["VII"] = 7
|
||||
month_to_int["sierpień"] = 8
|
||||
month_to_int["sie"] = 8
|
||||
month_to_int["VIII"] = 8
|
||||
month_to_int["wrzesień"] = 9
|
||||
month_to_int["wrz"] = 9
|
||||
month_to_int["IX"] = 9
|
||||
month_to_int["październik"] = 10
|
||||
month_to_int["paź"] = 10
|
||||
month_to_int["X"] = 10
|
||||
month_to_int["listopad"] = 11
|
||||
month_to_int["lis"] = 11
|
||||
month_to_int["XI"] = 11
|
||||
month_to_int["grudzień"] = 12
|
||||
month_to_int["gru"] = 12
|
||||
month_to_int["XII"] = 12
|
||||
# Alternative forms: declined nouns
|
||||
month_to_int["stycznia"] = 1
|
||||
month_to_int["lutego"] = 2
|
||||
@@ -156,13 +156,16 @@ class DateParserPL(DateParser):
|
||||
|
||||
def init_strings(self):
|
||||
DateParser.init_strings(self)
|
||||
self._span = re.compile("(od)\s+(?P<start>.+)\s+(do)\s+(?P<stop>.+)", re.IGNORECASE)
|
||||
self._span = re.compile(
|
||||
r"(od)\s+(?P<start>.+)\s+(do)\s+(?P<stop>.+)", re.IGNORECASE)
|
||||
# Also handle a common mistakes
|
||||
self._range = re.compile("((?:po)?mi(?:ę|e)dzy)\s+(?P<start>.+)\s+(a)\s+(?P<stop>.+)", re.IGNORECASE)
|
||||
self._text2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._mon_str,
|
||||
re.IGNORECASE)
|
||||
self._jtext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?' % self._jmon_str,
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile(
|
||||
r"((?:po)?mi(?:ę|e)dzy)\s+(?P<start>.+)\s+(a)\s+(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._text2 = re.compile(r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?'
|
||||
% self._mon_str, re.IGNORECASE)
|
||||
self._jtext2 = re.compile(r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?'
|
||||
% self._jmon_str, re.IGNORECASE)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -215,7 +218,7 @@ class DateDisplayPL(DateDisplay):
|
||||
"XII"
|
||||
)
|
||||
|
||||
def _display_gregorian(self, date_val):
|
||||
def _display_gregorian(self, date_val, **kwargs):
|
||||
"""
|
||||
display gregorian calendar date in different format
|
||||
"""
|
||||
|
||||
@@ -102,13 +102,13 @@ class DateParserPT(DateParser):
|
||||
DateParser.init_strings(self)
|
||||
_span_1 = ['de']
|
||||
_span_2 = ['a']
|
||||
_range_1 = ['entre','ent\.','ent']
|
||||
_range_1 = ['entre', r'ent\.', 'ent']
|
||||
_range_2 = ['e']
|
||||
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_range_1), '|'.join(_range_2)),
|
||||
self._span = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)"
|
||||
% ('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)"
|
||||
% ('|'.join(_range_1), '|'.join(_range_2)),
|
||||
re.IGNORECASE)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
@@ -94,13 +94,13 @@ class DateParserRU(DateParser):
|
||||
_span_1 = ['с', 'от']
|
||||
#_span_2 = ['по', 'до'] # <-- clashes with bce parsing :-(
|
||||
_span_2 = ['по']
|
||||
_range_1 = ['между', 'меж\.', 'меж']
|
||||
_range_1 = ['между', r'меж\.', 'меж']
|
||||
_range_2 = ['и']
|
||||
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_range_1), '|'.join(_range_2)),
|
||||
self._span = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)"
|
||||
% ('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)"
|
||||
% ('|'.join(_range_1), '|'.join(_range_2)),
|
||||
re.IGNORECASE)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@@ -132,6 +132,11 @@ class DateDisplayRU(DateDisplay):
|
||||
inflect, long_months)
|
||||
elif date_val[1] == 0: # month is zero but day is not (see 8477)
|
||||
return self.display_iso(date_val)
|
||||
elif not hasattr(long_months[date_val[1]], 'f'): # not a Lexeme
|
||||
return "{day:d} {long_month} {year}".format(
|
||||
day = date_val[0],
|
||||
long_month = long_months[date_val[1]],
|
||||
year = year)
|
||||
else:
|
||||
return "{day:d} {long_month.f[Р]} {year}".format(
|
||||
day = date_val[0],
|
||||
@@ -151,6 +156,11 @@ class DateDisplayRU(DateDisplay):
|
||||
inflect, short_months)
|
||||
elif date_val[1] == 0: # month is zero but day is not (see 8477)
|
||||
return self.display_iso(date_val)
|
||||
elif not hasattr(short_months[date_val[1]], 'f'): # not a Lexeme
|
||||
return "{day:d} {short_month} {year}".format(
|
||||
day = date_val[0],
|
||||
short_month = short_months[date_val[1]],
|
||||
year = year)
|
||||
else:
|
||||
return "{day:d} {short_month.f[Р]} {year}".format(
|
||||
day = date_val[0],
|
||||
|
||||
@@ -86,11 +86,11 @@ class DateParserSK(DateParser):
|
||||
_span_2 = ['do']
|
||||
_range_1 = ['medzi']
|
||||
_range_2 = ['a']
|
||||
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_range_1), '|'.join(_range_2)),
|
||||
self._span = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)"
|
||||
% ('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)"
|
||||
% ('|'.join(_range_1), '|'.join(_range_2)),
|
||||
re.IGNORECASE)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
@@ -88,18 +88,18 @@ class DateParserSL(DateParser):
|
||||
|
||||
DateParser.init_strings(self)
|
||||
# match 'Day. MONTH year.' format with or without dots
|
||||
self._text2 = re.compile('(\d+)?\.?\s*?%s\.?\s*((\d+)(/\d+)?)?\s*\.?$'
|
||||
% self._mon_str, re.IGNORECASE)
|
||||
self._text2 = re.compile(r'(\d+)?\.?\s*?%s\.?\s*((\d+)(/\d+)?)?\s*\.?$'
|
||||
% self._mon_str, re.IGNORECASE)
|
||||
# match Day.Month.Year.
|
||||
self._numeric = re.compile("((\d+)[/\.-])?\s*((\d+)[/\.-])?\s*(\d+)\.?$")
|
||||
self._numeric = re.compile(
|
||||
r"((\d+)[/\.-])?\s*((\d+)[/\.-])?\s*(\d+)\.?$")
|
||||
|
||||
self._span = re.compile("od\s+(?P<start>.+)\s+do\s+(?P<stop>.+)",
|
||||
self._span = re.compile(r"od\s+(?P<start>.+)\s+do\s+(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile(
|
||||
"med\s+(?P<start>.+)\s+in\s+(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._jtext2 = re.compile('(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?'\
|
||||
% self._jmon_str, re.IGNORECASE)
|
||||
r"med\s+(?P<start>.+)\s+in\s+(?P<stop>.+)", re.IGNORECASE)
|
||||
self._jtext2 = re.compile(r'(\d+)?.?\s+?%s\s*((\d+)(/\d+)?)?'
|
||||
% self._jmon_str, re.IGNORECASE)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
|
||||
@@ -54,95 +54,95 @@ class DateParserSR(DateParser):
|
||||
"""
|
||||
month_to_int = DateParser.month_to_int
|
||||
|
||||
month_to_int["januar"] = 1
|
||||
month_to_int["januar"] = 1
|
||||
month_to_int["januara"] = 1
|
||||
month_to_int["jan"] = 1
|
||||
month_to_int["јан"] = 1
|
||||
month_to_int["jan"] = 1
|
||||
month_to_int["јан"] = 1
|
||||
month_to_int["јануара"] = 1
|
||||
month_to_int["јануар"] = 1
|
||||
month_to_int["i"] = 1
|
||||
month_to_int["јануар"] = 1
|
||||
month_to_int["i"] = 1
|
||||
|
||||
month_to_int["februar"] = 2
|
||||
month_to_int["februar"] = 2
|
||||
month_to_int["februara"] = 2
|
||||
month_to_int["feb"] = 2
|
||||
month_to_int["феб"] = 2
|
||||
month_to_int["фебруар"] = 2
|
||||
month_to_int["feb"] = 2
|
||||
month_to_int["феб"] = 2
|
||||
month_to_int["фебруар"] = 2
|
||||
month_to_int["фебруара"] = 2
|
||||
month_to_int["ii"] = 2
|
||||
month_to_int["ii"] = 2
|
||||
|
||||
month_to_int["mart"] = 3
|
||||
month_to_int["mart"] = 3
|
||||
month_to_int["marta"] = 3
|
||||
month_to_int["mar"] = 3
|
||||
month_to_int["мар"] = 3
|
||||
month_to_int["март"] = 3
|
||||
month_to_int["mar"] = 3
|
||||
month_to_int["мар"] = 3
|
||||
month_to_int["март"] = 3
|
||||
month_to_int["марта"] = 3
|
||||
month_to_int["iii"] = 3
|
||||
month_to_int["iii"] = 3
|
||||
|
||||
month_to_int["april"] = 4
|
||||
month_to_int["april"] = 4
|
||||
month_to_int["aprila"] = 4
|
||||
month_to_int["apr"] = 4
|
||||
month_to_int["апр"] = 4
|
||||
month_to_int["април"] = 4
|
||||
month_to_int["apr"] = 4
|
||||
month_to_int["апр"] = 4
|
||||
month_to_int["април"] = 4
|
||||
month_to_int["априла"] = 4
|
||||
month_to_int["iv"] = 4
|
||||
month_to_int["iv"] = 4
|
||||
|
||||
month_to_int["maj"] = 5
|
||||
month_to_int["maj"] = 5
|
||||
month_to_int["maja"] = 5
|
||||
month_to_int["мај"] = 5
|
||||
month_to_int["мај"] = 5
|
||||
month_to_int["маја"] = 5
|
||||
month_to_int["v"] = 5
|
||||
month_to_int["v"] = 5
|
||||
|
||||
month_to_int["jun"] = 6
|
||||
month_to_int["jun"] = 6
|
||||
month_to_int["juna"] = 6
|
||||
month_to_int["јун"] = 6
|
||||
month_to_int["јун"] = 6
|
||||
month_to_int["јуна"] = 6
|
||||
month_to_int["vi"] = 6
|
||||
month_to_int["vi"] = 6
|
||||
|
||||
month_to_int["jul"] = 7
|
||||
month_to_int["jul"] = 7
|
||||
month_to_int["jula"] = 7
|
||||
month_to_int["јул"] = 7
|
||||
month_to_int["јул"] = 7
|
||||
month_to_int["јула"] = 7
|
||||
month_to_int["vii"] = 7
|
||||
month_to_int["vii"] = 7
|
||||
|
||||
month_to_int["avgust"] = 8
|
||||
month_to_int["avgust"] = 8
|
||||
month_to_int["avgusta"] = 8
|
||||
month_to_int["avg"] = 8
|
||||
month_to_int["авг"] = 8
|
||||
month_to_int["август"] = 8
|
||||
month_to_int["avg"] = 8
|
||||
month_to_int["авг"] = 8
|
||||
month_to_int["август"] = 8
|
||||
month_to_int["августа"] = 8
|
||||
month_to_int["viii"] = 8
|
||||
month_to_int["viii"] = 8
|
||||
|
||||
month_to_int["septembar"] = 9
|
||||
month_to_int["septembra"] = 9
|
||||
month_to_int["sep"] = 9
|
||||
month_to_int["сеп"] = 9
|
||||
month_to_int["sep"] = 9
|
||||
month_to_int["сеп"] = 9
|
||||
month_to_int["септембар"] = 9
|
||||
month_to_int["септембра"] = 9
|
||||
month_to_int["ix"] = 9
|
||||
month_to_int["ix"] = 9
|
||||
|
||||
month_to_int["oktobar"] = 10
|
||||
month_to_int["oktobra"] = 10
|
||||
month_to_int["okt"] = 10
|
||||
month_to_int["окт"] = 10
|
||||
month_to_int["октобар"] = 10
|
||||
month_to_int["октобра"] = 10
|
||||
month_to_int["x"] = 10
|
||||
month_to_int["oktobar"] = 10
|
||||
month_to_int["oktobra"] = 10
|
||||
month_to_int["okt"] = 10
|
||||
month_to_int["окт"] = 10
|
||||
month_to_int["октобар"] = 10
|
||||
month_to_int["октобра"] = 10
|
||||
month_to_int["x"] = 10
|
||||
|
||||
month_to_int["novembar"] = 11
|
||||
month_to_int["novembra"] = 11
|
||||
month_to_int["nov"] = 11
|
||||
month_to_int["нов"] = 11
|
||||
month_to_int["новембар"] = 11
|
||||
month_to_int["новембра"] = 11
|
||||
month_to_int["xi"] = 11
|
||||
month_to_int["novembar"] = 11
|
||||
month_to_int["novembra"] = 11
|
||||
month_to_int["nov"] = 11
|
||||
month_to_int["нов"] = 11
|
||||
month_to_int["новембар"] = 11
|
||||
month_to_int["новембра"] = 11
|
||||
month_to_int["xi"] = 11
|
||||
|
||||
month_to_int["decembar"] = 12
|
||||
month_to_int["decembra"] = 12
|
||||
month_to_int["dec"] = 12
|
||||
month_to_int["дец"] = 12
|
||||
month_to_int["децембар"] = 12
|
||||
month_to_int["децембра"] = 12
|
||||
month_to_int["xii"] = 12
|
||||
month_to_int["decembar"] = 12
|
||||
month_to_int["decembra"] = 12
|
||||
month_to_int["dec"] = 12
|
||||
month_to_int["дец"] = 12
|
||||
month_to_int["децембар"] = 12
|
||||
month_to_int["децембра"] = 12
|
||||
month_to_int["xii"] = 12
|
||||
|
||||
modifier_to_int = {
|
||||
'pre' : Date.MOD_BEFORE,
|
||||
@@ -208,21 +208,22 @@ class DateParserSR(DateParser):
|
||||
"""
|
||||
DateParser.init_strings(self)
|
||||
# match 'Day. MONTH year.' format with or without dots
|
||||
self._text2 = re.compile('(\d+)?\.?\s*?%s\s*((\d+)(/\d+)?)?\.?\s*$'
|
||||
% self._mon_str, re.IGNORECASE)
|
||||
self._text2 = re.compile(r'(\d+)?\.?\s*?%s\s*((\d+)(/\d+)?)?\.?\s*$'
|
||||
% self._mon_str, re.IGNORECASE)
|
||||
|
||||
# match Day.Month.Year.
|
||||
self._numeric = re.compile("((\d+)[/\. ])?\s*((\d+)[/\.])?\s*(\d+)\.?$")
|
||||
self._numeric = re.compile(
|
||||
r"((\d+)[/\. ])?\s*((\d+)[/\.])?\s*(\d+)\.?$")
|
||||
|
||||
_span_1 = ['od', 'од']
|
||||
_span_2 = ['do', 'до']
|
||||
_range_1 = ['između', 'између']
|
||||
_range_2 = ['i', 'и']
|
||||
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_range_1), '|'.join(_range_2)),
|
||||
self._span = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)"
|
||||
% ('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)"
|
||||
% ('|'.join(_range_1), '|'.join(_range_2)),
|
||||
re.IGNORECASE)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@@ -240,7 +241,7 @@ class DateDisplaySR_Base(DateDisplay):
|
||||
"VII", "VIII", "IX", "X", "XI", "XII"
|
||||
)
|
||||
|
||||
def _display_gregorian(self, date_val):
|
||||
def _display_gregorian(self, date_val, **kwargs):
|
||||
"""
|
||||
display gregorian calendar date in different format
|
||||
"""
|
||||
|
||||
@@ -95,14 +95,16 @@ class DateParserSv(DateParser):
|
||||
def init_strings(self):
|
||||
""" Define, in Swedish, span and range regular expressions"""
|
||||
DateParser.init_strings(self)
|
||||
self._numeric = re.compile("((\d+)/)?\s*((\d+)/)?\s*(\d+)[/ ]?$")
|
||||
self._numeric = re.compile(r"((\d+)/)?\s*((\d+)/)?\s*(\d+)[/ ]?$")
|
||||
# this next RE has the (possibly-slashed) year at the string's start
|
||||
self._text2 = re.compile('((\d+)(/\d+)?)?\s+?%s\s*(\d+)?\s*$'
|
||||
% self._mon_str, re.IGNORECASE)
|
||||
self._span = re.compile("(från)?\s*(?P<start>.+)\s*(till|--|–)\s*(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile("(mellan)\s+(?P<start>.+)\s+och\s+(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._text2 = re.compile(r'((\d+)(/\d+)?)?\s+?%s\s*(\d+)?\s*$'
|
||||
% self._mon_str, re.IGNORECASE)
|
||||
self._span = re.compile(
|
||||
r"(från)?\s*(?P<start>.+)\s*(till|--|–)\s*(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile(
|
||||
r"(mellan)\s+(?P<start>.+)\s+och\s+(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
|
||||
@@ -108,14 +108,14 @@ class DateParserUK(DateParser):
|
||||
|
||||
_span_1 = ['з', 'від']
|
||||
# b.c.e. pattern also have "до" so skip "до н."
|
||||
_span_2 = ['по', 'до(?!\s+н)']
|
||||
_span_2 = ['по', r'до(?!\s+н)']
|
||||
_range_1 = ['між']
|
||||
_range_2 = ['і', 'та']
|
||||
self._span = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile("(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_range_1), '|'.join(_range_2)),
|
||||
self._span = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile(r"(%s)\s+(?P<start>.+)\s+(%s)\s+(?P<stop>.+)"
|
||||
% ('|'.join(_range_1), '|'.join(_range_2)),
|
||||
re.IGNORECASE)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
@@ -124,13 +124,13 @@ class DateParserZH_CN(DateParser):
|
||||
_span_2 = ['至']
|
||||
_range_1 = ['介于']
|
||||
_range_2 = ['与']
|
||||
self._span = re.compile("(%s)(?P<start>.+)(%s)(?P<stop>\d+)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile("(%s)(?P<start>.+)(%s)(?P<stop>\d+)" %
|
||||
self._span = re.compile(r"(%s)(?P<start>.+)(%s)(?P<stop>\d+)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile(r"(%s)(?P<start>.+)(%s)(?P<stop>\d+)" %
|
||||
('|'.join(_range_1), '|'.join(_range_2)),
|
||||
re.IGNORECASE)
|
||||
self._numeric = re.compile("((\d+)年\s*)?((\d+)月\s*)?(\d+)?日?\s*$")
|
||||
self._numeric = re.compile(r"((\d+)年\s*)?((\d+)月\s*)?(\d+)?日?\s*$")
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
|
||||
@@ -124,13 +124,13 @@ class DateParserZH_TW(DateParser):
|
||||
_span_2 = ['至']
|
||||
_range_1 = ['介於']
|
||||
_range_2 = ['與']
|
||||
self._span = re.compile("(%s)(?P<start>.+)(%s)(?P<stop>\d+)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile("(%s)(?P<start>.+)(%s)(?P<stop>\d+)" %
|
||||
self._span = re.compile(r"(%s)(?P<start>.+)(%s)(?P<stop>\d+)" %
|
||||
('|'.join(_span_1), '|'.join(_span_2)),
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile(r"(%s)(?P<start>.+)(%s)(?P<stop>\d+)" %
|
||||
('|'.join(_range_1), '|'.join(_range_2)),
|
||||
re.IGNORECASE)
|
||||
self._numeric = re.compile("((\d+)年\s*)?((\d+)月\s*)?(\d+)?日?\s*$")
|
||||
self._numeric = re.compile(r"((\d+)年\s*)?((\d+)月\s*)?(\d+)?日?\s*$")
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
# Copyright (C) 2004-2006 Donald N. Allingham
|
||||
# Copyright (C) 2013 Vassilii Khachaturov
|
||||
# Copyright (C) 2014-2017 Paul Franklin
|
||||
# Copyright (C) 2014-2018 Paul Franklin
|
||||
#
|
||||
# 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
|
||||
@@ -570,6 +570,7 @@ class DateDisplay:
|
||||
def _get_short_weekday(self, date_val):
|
||||
if (date_val[0] == 0 or date_val[1] == 0 # no day or no month or both
|
||||
or date_val[1] == 13 # Hebrew has 13 months
|
||||
or date_val[2] > datetime.MAXYEAR # bug 10815
|
||||
or date_val[2] < 0): # B.C.E. date
|
||||
return ''
|
||||
w_day = datetime.date(date_val[2], date_val[1], date_val[0]) # y, m, d
|
||||
@@ -578,11 +579,16 @@ class DateDisplay:
|
||||
def _get_long_weekday(self, date_val):
|
||||
if (date_val[0] == 0 or date_val[1] == 0 # no day or no month or both
|
||||
or date_val[1] == 13 # Hebrew has 13 months
|
||||
or date_val[2] > datetime.MAXYEAR # bug 10815
|
||||
or date_val[2] < 0): # B.C.E. date
|
||||
return ''
|
||||
w_day = datetime.date(date_val[2], date_val[1], date_val[0]) # y, m, d
|
||||
return self.long_days[((w_day.weekday() + 1) % 7) + 1]
|
||||
|
||||
def _get_localized_year(self, year):
|
||||
""" Allow a subclass to modify the year, e.g. add a period """
|
||||
return year
|
||||
|
||||
def dd_dformat01(self, date_val):
|
||||
"""
|
||||
numerical
|
||||
@@ -594,19 +600,23 @@ class DateDisplay:
|
||||
return self.display_iso(date_val)
|
||||
else:
|
||||
if date_val[0] == date_val[1] == 0:
|
||||
return str(date_val[2])
|
||||
return self._get_localized_year(str(date_val[2]))
|
||||
else:
|
||||
value = self.dhformat.replace('%m', str(date_val[1]))
|
||||
# some locales have %b for the month, e.g. ar_EG, is_IS, nb_NO
|
||||
# so it would be "Jan" but as it's "numeric" I'll make it "1"
|
||||
value = value.replace('%b', str(date_val[1]))
|
||||
# some locales have %B for the month, e.g. ta_IN
|
||||
# so it would be "January" but as it's "numeric" I'll make it 1
|
||||
value = value.replace('%B', str(date_val[1]))
|
||||
# some locales have %a for the abbreviated day, e.g. is_IS
|
||||
value = value.replace('%a', self._get_short_weekday(date_val))
|
||||
# some locales have %A for the long/full day, e.g. ta_IN
|
||||
value = value.replace('%A', self._get_long_weekday(date_val))
|
||||
if '%b' in value or '%B' in value:
|
||||
# some locales have %b for the month (ar_EG, is_IS, nb_NO)
|
||||
# so it would be "Jan" but as it's "numeric" make it "1"
|
||||
value = value.replace('%b', str(date_val[1]))
|
||||
# some locales have %B for the month, e.g. ta_IN
|
||||
# so it would be "January" but as it's "numeric" make it 1
|
||||
value = value.replace('%B', str(date_val[1]))
|
||||
if '%a' in value or '%A' in value:
|
||||
# some locales have %a for the abbreviated day, e.g. is_IS
|
||||
value = value.replace('%a',
|
||||
self._get_short_weekday(date_val))
|
||||
# some locales have %A for the long/full day, e.g. ta_IN
|
||||
value = value.replace('%A',
|
||||
self._get_long_weekday(date_val))
|
||||
if date_val[0] == 0: # ignore the zero day and its delimiter
|
||||
i_day = value.find('%d')
|
||||
if len(value) == i_day + 2: # delimiter is left of the day
|
||||
@@ -628,7 +638,7 @@ class DateDisplay:
|
||||
year = self._slash_year(date_val[2], date_val[3])
|
||||
if date_val[0] == 0:
|
||||
if date_val[1] == 0:
|
||||
return year
|
||||
return self._get_localized_year(year)
|
||||
else:
|
||||
return self.format_long_month_year(date_val[1], year,
|
||||
inflect, long_months)
|
||||
@@ -654,7 +664,7 @@ class DateDisplay:
|
||||
year = self._slash_year(date_val[2], date_val[3])
|
||||
if date_val[0] == 0:
|
||||
if date_val[1] == 0:
|
||||
return year
|
||||
return self._get_localized_year(year)
|
||||
else:
|
||||
return self.format_short_month_year(date_val[1], year,
|
||||
inflect, short_months)
|
||||
@@ -680,7 +690,7 @@ class DateDisplay:
|
||||
year = self._slash_year(date_val[2], date_val[3])
|
||||
if date_val[0] == 0:
|
||||
if date_val[1] == 0:
|
||||
return year
|
||||
return self._get_localized_year(year)
|
||||
else:
|
||||
return self.format_long_month_year(date_val[1], year,
|
||||
inflect, long_months)
|
||||
@@ -706,7 +716,7 @@ class DateDisplay:
|
||||
year = self._slash_year(date_val[2], date_val[3])
|
||||
if date_val[0] == 0:
|
||||
if date_val[1] == 0:
|
||||
return year
|
||||
return self._get_localized_year(year)
|
||||
else:
|
||||
return self.format_short_month_year(date_val[1], year,
|
||||
inflect, short_months)
|
||||
|
||||
@@ -56,7 +56,7 @@ from ._datestrings import DateStrings
|
||||
# Top-level module functions
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
_max_days = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]
|
||||
_max_days = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]
|
||||
_leap_days = [ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]
|
||||
|
||||
def gregorian_valid(date_tuple):
|
||||
@@ -193,7 +193,7 @@ class DateParser:
|
||||
converted, the text string is assigned.
|
||||
"""
|
||||
|
||||
_dhformat_parse = re.compile(".*%(\S).*%(\S).*%(\S).*")
|
||||
_dhformat_parse = re.compile(r".*%(\S).*%(\S).*%(\S).*")
|
||||
|
||||
# RFC-2822 only uses capitalized English abbreviated names, no locales.
|
||||
_rfc_days = ('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat')
|
||||
@@ -400,8 +400,8 @@ class DateParser:
|
||||
_ = self._locale.translation.gettext
|
||||
self.__init_prefix_tables()
|
||||
|
||||
self._rfc_mon_str = '(' + '|'.join(list(self._rfc_mons_to_int.keys())) + ')'
|
||||
self._rfc_day_str = '(' + '|'.join(self._rfc_days) + ')'
|
||||
self._rfc_mon_str = '(' + '|'.join(list(self._rfc_mons_to_int.keys())) + ')'
|
||||
self._rfc_day_str = '(' + '|'.join(self._rfc_days) + ')'
|
||||
|
||||
self._bce_str = self.re_longest_first(self.bce)
|
||||
self._qual_str = self.re_longest_first(list(self.quality_to_int.keys()))
|
||||
@@ -409,77 +409,83 @@ class DateParser:
|
||||
self._mod_after_str = self.re_longest_first(
|
||||
list(self.modifier_after_to_int.keys()))
|
||||
|
||||
self._mon_str = self.re_longest_first(list(self.month_to_int.keys()))
|
||||
self._mon_str = self.re_longest_first(list(self.month_to_int.keys()))
|
||||
self._jmon_str = self.re_longest_first(list(self.hebrew_to_int.keys()))
|
||||
self._fmon_str = self.re_longest_first(list(self.french_to_int.keys()))
|
||||
self._pmon_str = self.re_longest_first(list(self.persian_to_int.keys()))
|
||||
self._imon_str = self.re_longest_first(list(self.islamic_to_int.keys()))
|
||||
self._smon_str = self.re_longest_first(list(self.swedish_to_int.keys()))
|
||||
self._cal_str = self.re_longest_first(list(self.calendar_to_int.keys()))
|
||||
self._ny_str = self.re_longest_first(list(self.newyear_to_int.keys()))
|
||||
self._cal_str = self.re_longest_first(list(self.calendar_to_int.keys()))
|
||||
self._ny_str = self.re_longest_first(list(self.newyear_to_int.keys()))
|
||||
|
||||
self._today_str = self.re_longest_first(self.today + [_("today"),])
|
||||
|
||||
# bce, calendar type and quality may be either at the end or at
|
||||
# the beginning of the given date string, therefore they will
|
||||
# be parsed from the middle and will be in match.group(2).
|
||||
self._bce_re = re.compile("(.*)\s+%s( ?.*)" % self._bce_str)
|
||||
self._bce_re = re.compile(r"(.*)\s+%s( ?.*)" % self._bce_str)
|
||||
|
||||
self._cal = re.compile("(.*)\s+\(%s\)( ?.*)" % self._cal_str,
|
||||
re.IGNORECASE)
|
||||
self._calny = re.compile("(.*)\s+\(%s,\s*%s\)( ?.*)" % (self._cal_str,
|
||||
self._ny_str),
|
||||
re.IGNORECASE)
|
||||
self._calny_iso = re.compile("(.*)\s+\(%s,\s*(\d{1,2}-\d{1,2})\)( ?.*)" % self._cal_str,
|
||||
re.IGNORECASE)
|
||||
self._cal = re.compile(r"(.*)\s+\(%s\)( ?.*)" % self._cal_str,
|
||||
re.IGNORECASE)
|
||||
self._calny = re.compile(r"(.*)\s+\(%s,\s*%s\)( ?.*)" %
|
||||
(self._cal_str, self._ny_str), re.IGNORECASE)
|
||||
self._calny_iso = re.compile(
|
||||
r"(.*)\s+\(%s,\s*(\d{1,2}-\d{1,2})\)( ?.*)" % self._cal_str,
|
||||
re.IGNORECASE)
|
||||
|
||||
self._ny = re.compile("(.*)\s+\(%s\)( ?.*)" % self._ny_str,
|
||||
re.IGNORECASE)
|
||||
self._ny_iso = re.compile("(.*)\s+\((\d{1,2}-\d{1,2})\)( ?.*)")
|
||||
self._ny = re.compile(r"(.*)\s+\(%s\)( ?.*)" % self._ny_str,
|
||||
re.IGNORECASE)
|
||||
self._ny_iso = re.compile(r"(.*)\s+\((\d{1,2}-\d{1,2})\)( ?.*)")
|
||||
|
||||
self._qual = re.compile("(.* ?)%s\s+(.+)" % self._qual_str,
|
||||
re.IGNORECASE)
|
||||
self._qual = re.compile(r"(.* ?)%s\s+(.+)" % self._qual_str,
|
||||
re.IGNORECASE)
|
||||
|
||||
self._span = re.compile("(from)\s+(?P<start>.+)\s+to\s+(?P<stop>.+)",
|
||||
self._span = re.compile(r"(from)\s+(?P<start>.+)\s+to\s+(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._range = re.compile(
|
||||
r"(bet|bet.|between)\s+(?P<start>.+)\s+and\s+(?P<stop>.+)",
|
||||
re.IGNORECASE)
|
||||
self._modifier = re.compile(r'%s\s+(.*)' % self._mod_str,
|
||||
re.IGNORECASE)
|
||||
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._modifier_after = re.compile('(.*)\s+%s' % self._mod_after_str,
|
||||
self._modifier_after = re.compile(r'(.*)\s+%s' % self._mod_after_str,
|
||||
re.IGNORECASE)
|
||||
self._abt2 = re.compile('<(.*)>', re.IGNORECASE)
|
||||
self._text = re.compile('%s\.?(\s+\d+)?\s*,?\s+((\d+)(/\d+)?)?\s*$'
|
||||
% self._mon_str, re.IGNORECASE)
|
||||
self._abt2 = re.compile('<(.*)>', re.IGNORECASE)
|
||||
self._text = re.compile(r'%s\.?(\s+\d+)?\s*,?\s+((\d+)(/\d+)?)?\s*$'
|
||||
% self._mon_str, re.IGNORECASE)
|
||||
# this next RE has the (possibly-slashed) year at the string's end
|
||||
self._text2 = re.compile('(\d+)?\s+?%s\.?\s*((\d+)(/\d+)?)?\s*$' % self._mon_str,
|
||||
re.IGNORECASE)
|
||||
self._jtext = re.compile('%s\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?\s*$' % self._jmon_str,
|
||||
re.IGNORECASE)
|
||||
self._jtext2 = re.compile('(\d+)?\s+?%s\s*((\d+)(/\d+)?)?\s*$' % self._jmon_str,
|
||||
re.IGNORECASE)
|
||||
self._ftext = re.compile('%s\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?\s*$' % self._fmon_str,
|
||||
re.IGNORECASE)
|
||||
self._ftext2 = re.compile('(\d+)?\s+?%s\s*((\d+)(/\d+)?)?\s*$' % self._fmon_str,
|
||||
re.IGNORECASE)
|
||||
self._ptext = re.compile('%s\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?\s*$' % self._pmon_str,
|
||||
re.IGNORECASE)
|
||||
self._ptext2 = re.compile('(\d+)?\s+?%s\s*((\d+)(/\d+)?)?\s*$' % self._pmon_str,
|
||||
re.IGNORECASE)
|
||||
self._itext = re.compile('%s\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?\s*$' % self._imon_str,
|
||||
re.IGNORECASE)
|
||||
self._itext2 = re.compile('(\d+)?\s+?%s\s*((\d+)(/\d+)?)?\s*$' % self._imon_str,
|
||||
re.IGNORECASE)
|
||||
self._stext = re.compile('%s\.?\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?\s*$' % self._smon_str,
|
||||
re.IGNORECASE)
|
||||
self._stext2 = re.compile('(\d+)?\s+?%s\.?\s*((\d+)(/\d+)?)?\s*$' % self._smon_str,
|
||||
re.IGNORECASE)
|
||||
self._numeric = re.compile("((\d+)[/\.]\s*)?((\d+)[/\.]\s*)?(\d+)\s*$")
|
||||
self._iso = re.compile("(\d+)(/(\d+))?-(\d+)-(\d+)\s*$")
|
||||
self._isotimestamp = re.compile("^\s*?(\d{4})([01]\d)([0123]\d)(?:(?:[012]\d[0-5]\d[0-5]\d)|(?:\s+[012]\d:[0-5]\d(?::[0-5]\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))
|
||||
self._today = re.compile("^\s*%s\s*$" % self._today_str, re.IGNORECASE)
|
||||
self._text2 = re.compile(r'(\d+)?\s+?%s\.?\s*((\d+)(/\d+)?)?\s*$'
|
||||
% self._mon_str, re.IGNORECASE)
|
||||
self._jtext = re.compile(r'%s\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?\s*$'
|
||||
% self._jmon_str, re.IGNORECASE)
|
||||
self._jtext2 = re.compile(r'(\d+)?\s+?%s\s*((\d+)(/\d+)?)?\s*$'
|
||||
% self._jmon_str, re.IGNORECASE)
|
||||
self._ftext = re.compile(r'%s\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?\s*$'
|
||||
% self._fmon_str, re.IGNORECASE)
|
||||
self._ftext2 = re.compile(r'(\d+)?\s+?%s\s*((\d+)(/\d+)?)?\s*$'
|
||||
% self._fmon_str, re.IGNORECASE)
|
||||
self._ptext = re.compile(r'%s\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?\s*$'
|
||||
% self._pmon_str, re.IGNORECASE)
|
||||
self._ptext2 = re.compile(r'(\d+)?\s+?%s\s*((\d+)(/\d+)?)?\s*$'
|
||||
% self._pmon_str, re.IGNORECASE)
|
||||
self._itext = re.compile(r'%s\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?\s*$'
|
||||
% self._imon_str, re.IGNORECASE)
|
||||
self._itext2 = re.compile(r'(\d+)?\s+?%s\s*((\d+)(/\d+)?)?\s*$'
|
||||
% self._imon_str, re.IGNORECASE)
|
||||
self._stext = re.compile(r'%s\.?\s+(\d+)?\s*,?\s*((\d+)(/\d+)?)?\s*$'
|
||||
% self._smon_str, re.IGNORECASE)
|
||||
self._stext2 = re.compile(r'(\d+)?\s+?%s\.?\s*((\d+)(/\d+)?)?\s*$'
|
||||
% self._smon_str, re.IGNORECASE)
|
||||
self._numeric = re.compile(
|
||||
r"((\d+)[/\.]\s*)?((\d+)[/\.]\s*)?(\d+)\s*$")
|
||||
self._iso = re.compile(r"(\d+)(/(\d+))?-(\d+)-(\d+)\s*$")
|
||||
self._isotimestamp = re.compile(
|
||||
r"^\s*?(\d{4})([01]\d)([0123]\d)(?:(?:[012]\d[0-5]\d[0-5]\d)|"
|
||||
r"(?:\s+[012]\d:[0-5]\d(?::[0-5]\d)?))?\s*?$")
|
||||
self._rfc = re.compile(
|
||||
r"(%s,)?\s+(\d|\d\d)\s+%s\s+(\d+)\s+\d\d:\d\d(:\d\d)?\s+"
|
||||
r"(\+|-)\d\d\d\d" % (self._rfc_day_str, self._rfc_mon_str))
|
||||
self._today = re.compile(r"^\s*%s\s*$" % self._today_str,
|
||||
re.IGNORECASE)
|
||||
|
||||
def _get_int(self, val):
|
||||
"""
|
||||
@@ -905,7 +911,7 @@ class DateParser:
|
||||
text = text.strip() # otherwise spaces can make it a bad date
|
||||
date.set_text_value(text)
|
||||
qual = Date.QUAL_NONE
|
||||
cal = Date.CAL_GREGORIAN
|
||||
cal = Date.CAL_GREGORIAN
|
||||
newyear = Date.NEWYEAR_JAN1
|
||||
|
||||
(text, cal, newyear) = self.match_calendar_newyear(text, cal, newyear)
|
||||
|
||||
@@ -66,7 +66,7 @@ def set_format(value):
|
||||
except:
|
||||
pass
|
||||
|
||||
def set_date(date_base, text) :
|
||||
def set_date(date_base, text):
|
||||
"""
|
||||
Set the date of the :class:`.DateBase` instance.
|
||||
|
||||
@@ -79,7 +79,7 @@ def set_date(date_base, text) :
|
||||
"""
|
||||
parser.set_date(date_base.get_date_object(), text)
|
||||
|
||||
def get_date(date_base) :
|
||||
def get_date(date_base):
|
||||
"""
|
||||
Return a string representation of the date of the :class:`.DateBase`
|
||||
instance.
|
||||
|
||||
+20
-20
@@ -39,36 +39,36 @@ __all__ = ( 'DBPAGE', 'DBMODE', 'DBCACHE', 'DBLOCKS', 'DBOBJECTS', 'DBUNDO',
|
||||
"CLASS_TO_KEY_MAP", "KEY_TO_CLASS_MAP", "KEY_TO_NAME_MAP"
|
||||
)
|
||||
|
||||
DBEXT = ".db" # File extension to be used for database files
|
||||
DBUNDOFN = "undo.db" # File name of 'undo' database
|
||||
DBLOCKFN = "lock" # File name of lock file
|
||||
DBEXT = ".db" # File extension to be used for database files
|
||||
DBUNDOFN = "undo.db" # File name of 'undo' database
|
||||
DBLOCKFN = "lock" # File name of lock file
|
||||
DBRECOVFN = "need_recover" # File name of recovery file
|
||||
BDBVERSFN = "bdbversion.txt"# File name of Berkeley DB version file
|
||||
DBBACKEND = "database.txt" # File name of Database backend file
|
||||
SCHVERSFN = "schemaversion.txt"# File name of schema version file
|
||||
PCKVERSFN = "pickleupgrade.txt" # Indicator that pickle has been upgrade t Python3
|
||||
DBLOGNAME = ".Db" # Name of logger
|
||||
DBMODE_R = "r" # Read-only access
|
||||
DBMODE_W = "w" # Full Read/Write access
|
||||
DBPAGE = 16384 # Size of the pages used to hold items in the database
|
||||
DBMODE = 0o666 # Unix mode for database creation
|
||||
DBCACHE = 0x4000000 # Size of the shared memory buffer pool
|
||||
DBLOCKS = 100000 # Maximum number of locks supported
|
||||
DBMODE_R = "r" # Read-only access
|
||||
DBMODE_W = "w" # Full Read/Write access
|
||||
DBPAGE = 16384 # Size of the pages used to hold items in the database
|
||||
DBMODE = 0o666 # Unix mode for database creation
|
||||
DBCACHE = 0x4000000 # Size of the shared memory buffer pool
|
||||
DBLOCKS = 100000 # Maximum number of locks supported
|
||||
DBOBJECTS = 100000 # Maximum number of simultaneously locked objects
|
||||
DBUNDO = 1000 # Maximum size of undo buffer
|
||||
DBUNDO = 1000 # Maximum size of undo buffer
|
||||
ARRAYSIZE = 1000 # The arraysize for a SQL cursor
|
||||
|
||||
PERSON_KEY = 0
|
||||
FAMILY_KEY = 1
|
||||
SOURCE_KEY = 2
|
||||
EVENT_KEY = 3
|
||||
MEDIA_KEY = 4
|
||||
PLACE_KEY = 5
|
||||
PERSON_KEY = 0
|
||||
FAMILY_KEY = 1
|
||||
SOURCE_KEY = 2
|
||||
EVENT_KEY = 3
|
||||
MEDIA_KEY = 4
|
||||
PLACE_KEY = 5
|
||||
REPOSITORY_KEY = 6
|
||||
REFERENCE_KEY = 7
|
||||
NOTE_KEY = 8
|
||||
TAG_KEY = 9
|
||||
CITATION_KEY = 10
|
||||
REFERENCE_KEY = 7
|
||||
NOTE_KEY = 8
|
||||
TAG_KEY = 9
|
||||
CITATION_KEY = 10
|
||||
|
||||
TXNADD, TXNUPD, TXNDEL = 0, 1, 2
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ database to fetch data from). Thus, dbstate.db cannot be left as 'None' because
|
||||
None has no 'is_open' attribute. Therefore this database class is provided so
|
||||
that it can be instantiated for dbstate.db.
|
||||
|
||||
FIXME: Ideally, only is_open() needs to be implemented here, bacause that is the
|
||||
FIXME: Ideally, only is_open() needs to be implemented here, because that is the
|
||||
only method that should really be called, but the Gramps code is not perfect,
|
||||
and many other methods are called. Calls of other methods could be considered
|
||||
bugs, so when these are fixed, this class could be reduced.
|
||||
@@ -757,6 +757,14 @@ class DummyDb(M_A_M_B("NewBaseClass", (DbReadBase, Callback, object,), {})):
|
||||
LOG.warning("database is closed")
|
||||
return 0
|
||||
|
||||
def get_number_of_citations(self):
|
||||
"""
|
||||
Return the number of citations currently in the database.
|
||||
"""
|
||||
if not self.db_is_open:
|
||||
LOG.warning("database is closed")
|
||||
return 0
|
||||
|
||||
def get_number_of_tags(self):
|
||||
"""
|
||||
Return the number of tags currently in the database.
|
||||
|
||||
@@ -42,7 +42,7 @@ import glob
|
||||
#
|
||||
#------------------------------------------------------------------------
|
||||
from . import (DbReadBase, DbWriteBase, DbUndo, DBLOGNAME, DBUNDOFN,
|
||||
KEY_TO_CLASS_MAP, REFERENCE_KEY, PERSON_KEY, FAMILY_KEY,
|
||||
REFERENCE_KEY, PERSON_KEY, FAMILY_KEY,
|
||||
CITATION_KEY, SOURCE_KEY, EVENT_KEY, MEDIA_KEY, PLACE_KEY,
|
||||
REPOSITORY_KEY, NOTE_KEY, TAG_KEY, TXNADD, TXNUPD, TXNDEL,
|
||||
KEY_TO_NAME_MAP, DBMODE_R, DBMODE_W)
|
||||
@@ -144,9 +144,9 @@ class DbGenericUndo(DbUndo):
|
||||
pickle.loads(self.undodb[record_id])
|
||||
|
||||
if key == REFERENCE_KEY:
|
||||
self.undo_reference(new_data, handle)
|
||||
self.db.undo_reference(new_data, handle)
|
||||
else:
|
||||
self.undo_data(new_data, handle, key)
|
||||
self.db.undo_data(new_data, handle, key)
|
||||
sigs[key][trans_type].append(handle)
|
||||
# now emit the signals
|
||||
self.undo_sigs(sigs, False)
|
||||
@@ -193,9 +193,9 @@ class DbGenericUndo(DbUndo):
|
||||
pickle.loads(self.undodb[record_id])
|
||||
|
||||
if key == REFERENCE_KEY:
|
||||
self.undo_reference(old_data, handle)
|
||||
self.db.undo_reference(old_data, handle)
|
||||
else:
|
||||
self.undo_data(old_data, handle, key)
|
||||
self.db.undo_data(old_data, handle, key)
|
||||
sigs[key][trans_type].append(handle)
|
||||
# now emit the signals
|
||||
self.undo_sigs(sigs, True)
|
||||
@@ -221,39 +221,6 @@ class DbGenericUndo(DbUndo):
|
||||
db.undo_history_callback()
|
||||
return True
|
||||
|
||||
def undo_reference(self, data, handle):
|
||||
"""
|
||||
Helper method to undo a reference map entry
|
||||
"""
|
||||
if data is None:
|
||||
sql = ("DELETE FROM reference " +
|
||||
"WHERE obj_handle = ? AND ref_handle = ?")
|
||||
self.db.dbapi.execute(sql, [handle[0], handle[1]])
|
||||
else:
|
||||
sql = ("INSERT INTO reference " +
|
||||
"(obj_handle, obj_class, ref_handle, ref_class) " +
|
||||
"VALUES(?, ?, ?, ?)")
|
||||
self.db.dbapi.execute(sql, data)
|
||||
|
||||
def undo_data(self, data, handle, obj_key):
|
||||
"""
|
||||
Helper method to undo/redo the changes made
|
||||
"""
|
||||
cls = KEY_TO_CLASS_MAP[obj_key]
|
||||
table = cls.lower()
|
||||
if data is None:
|
||||
sql = "DELETE FROM %s WHERE handle = ?" % table
|
||||
self.db.dbapi.execute(sql, [handle])
|
||||
else:
|
||||
if self.db._has_handle(obj_key, handle):
|
||||
sql = "UPDATE %s SET blob_data = ? WHERE handle = ?" % table
|
||||
self.db.dbapi.execute(sql, [pickle.dumps(data), handle])
|
||||
else:
|
||||
sql = "INSERT INTO %s (handle, blob_data) VALUES (?, ?)" % table
|
||||
self.db.dbapi.execute(sql, [handle, pickle.dumps(data)])
|
||||
obj = self.db._get_table_func(cls)["class_func"].create(data)
|
||||
self.db._update_secondary_values(obj)
|
||||
|
||||
def undo_sigs(self, sigs, undo):
|
||||
"""
|
||||
Helper method to undo/redo the signals for changes made
|
||||
@@ -625,9 +592,7 @@ class DbGeneric(DbWriteBase, DbReadBase, UpdateCallback, Callback):
|
||||
# run backend-specific code:
|
||||
self._initialize(directory, username, password)
|
||||
|
||||
# We use the existence of the person table as a proxy for the database
|
||||
# being new
|
||||
if not self.dbapi.table_exists("person"):
|
||||
if not self._schema_exists():
|
||||
self._create_schema()
|
||||
self._set_metadata('version', str(self.VERSION[0]))
|
||||
|
||||
@@ -706,7 +671,7 @@ class DbGeneric(DbWriteBase, DbReadBase, UpdateCallback, Callback):
|
||||
if update is False, don't change access times, etc.
|
||||
"""
|
||||
if self._directory != ":memory:":
|
||||
if update:
|
||||
if update and not self.readonly:
|
||||
# This is just a dummy file to indicate last modified time of
|
||||
# the database for gramps.cli.clidbman:
|
||||
filename = os.path.join(self._directory, "meta_data.db")
|
||||
@@ -792,7 +757,7 @@ class DbGeneric(DbWriteBase, DbReadBase, UpdateCallback, Callback):
|
||||
if self._directory:
|
||||
filepath = os.path.join(self._directory, "name.txt")
|
||||
try:
|
||||
with open(filepath, "r") as name_file:
|
||||
with open(filepath, "r", encoding='utf8') as name_file:
|
||||
name = name_file.readline().strip()
|
||||
except (OSError, IOError) as msg:
|
||||
LOG.error(str(msg))
|
||||
@@ -2496,4 +2461,5 @@ class DbGeneric(DbWriteBase, DbReadBase, UpdateCallback, Callback):
|
||||
enclosed_by = ""
|
||||
for placeref in place.get_placeref_list():
|
||||
enclosed_by = placeref.ref
|
||||
break
|
||||
return enclosed_by
|
||||
@@ -120,7 +120,7 @@ class DbTxn(defaultdict):
|
||||
data = Python list where:
|
||||
list element = (handle, data) where:
|
||||
handle = handle (database key) of the object in the transaction
|
||||
data = pickled representation of the object
|
||||
data = pickled representation of the object
|
||||
"""
|
||||
|
||||
# Conditional on __debug__ because all that frame stuff may be slow
|
||||
|
||||
+23
-8
@@ -41,7 +41,7 @@ from ..plug import BasePluginManager
|
||||
from ..const import PLUGINS_DIR, USER_PLUGINS
|
||||
from ..constfunc import win, get_env_var
|
||||
from ..config import config
|
||||
from .dbconst import DBLOGNAME, DBLOCKFN
|
||||
from .dbconst import DBLOGNAME, DBLOCKFN, DBBACKEND
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -109,13 +109,7 @@ def lookup_family_tree(dbname):
|
||||
if dbname == name:
|
||||
locked = False
|
||||
locked_by = None
|
||||
backend = None
|
||||
fname = os.path.join(dirpath, "database.txt")
|
||||
if os.path.isfile(fname):
|
||||
with open(fname, 'r', encoding='utf8') as ifile:
|
||||
backend = ifile.read().strip()
|
||||
else:
|
||||
backend = "bsddb"
|
||||
backend = get_dbid_from_path(dirpath)
|
||||
try:
|
||||
fname = os.path.join(dirpath, "lock")
|
||||
with open(fname, 'r', encoding='utf8') as ifile:
|
||||
@@ -126,6 +120,17 @@ def lookup_family_tree(dbname):
|
||||
return (dirpath, locked, locked_by, backend)
|
||||
return None
|
||||
|
||||
def get_dbid_from_path(dirpath):
|
||||
"""
|
||||
Return a database backend from a directory path.
|
||||
"""
|
||||
dbid = "bsddb"
|
||||
dbid_path = os.path.join(dirpath, DBBACKEND)
|
||||
if os.path.isfile(dbid_path):
|
||||
with open(dbid_path) as file:
|
||||
dbid = file.read().strip()
|
||||
return dbid
|
||||
|
||||
def import_as_dict(filename, user, skp_imp_adds=True):
|
||||
"""
|
||||
Import the filename into a InMemoryDB and return it.
|
||||
@@ -133,6 +138,16 @@ def import_as_dict(filename, user, skp_imp_adds=True):
|
||||
db = make_database("sqlite")
|
||||
db.load(":memory:")
|
||||
db.set_feature("skip-import-additions", skp_imp_adds)
|
||||
db.set_prefixes(
|
||||
config.get('preferences.iprefix'),
|
||||
config.get('preferences.oprefix'),
|
||||
config.get('preferences.fprefix'),
|
||||
config.get('preferences.sprefix'),
|
||||
config.get('preferences.cprefix'),
|
||||
config.get('preferences.pprefix'),
|
||||
config.get('preferences.eprefix'),
|
||||
config.get('preferences.rprefix'),
|
||||
config.get('preferences.nprefix'))
|
||||
status = import_from_filename(db, filename, user)
|
||||
return db if status else None
|
||||
|
||||
|
||||
+48
-43
@@ -83,21 +83,21 @@ except ImportError:
|
||||
# Constants
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
_FIRSTNAME = 4
|
||||
_FIRSTNAME = 4
|
||||
_SURNAME_LIST = 5
|
||||
_SUFFIX = 6
|
||||
_TITLE = 7
|
||||
_TYPE = 8
|
||||
_GROUP = 9
|
||||
_SORT = 10
|
||||
_DISPLAY = 11
|
||||
_CALL = 12
|
||||
_NICK = 13
|
||||
_FAMNICK = 14
|
||||
_SURNAME_IN_LIST = 0
|
||||
_PREFIX_IN_LIST = 1
|
||||
_PRIMARY_IN_LIST = 2
|
||||
_TYPE_IN_LIST = 3
|
||||
_SUFFIX = 6
|
||||
_TITLE = 7
|
||||
_TYPE = 8
|
||||
_GROUP = 9
|
||||
_SORT = 10
|
||||
_DISPLAY = 11
|
||||
_CALL = 12
|
||||
_NICK = 13
|
||||
_FAMNICK = 14
|
||||
_SURNAME_IN_LIST = 0
|
||||
_PREFIX_IN_LIST = 1
|
||||
_PRIMARY_IN_LIST = 2
|
||||
_TYPE_IN_LIST = 3
|
||||
_CONNECTOR_IN_LIST = 4
|
||||
_ORIGINPATRO = NameOriginType.PATRONYMIC
|
||||
_ORIGINMATRO = NameOriginType.MATRONYMIC
|
||||
@@ -418,6 +418,11 @@ class NameDisplay:
|
||||
result = raw_data[_FIRSTNAME]
|
||||
return ' '.join(result.split())
|
||||
|
||||
def clear_custom_formats(self):
|
||||
self.name_formats = {num: value
|
||||
for num, value in self.name_formats.items()
|
||||
if num >= 0}
|
||||
|
||||
def set_name_format(self, formats):
|
||||
|
||||
raw_func_dict = {
|
||||
@@ -565,13 +570,13 @@ class NameDisplay:
|
||||
raw_data[_SUFFIX])
|
||||
|
||||
Specific symbols for parts of a name are defined (keywords given):
|
||||
't' : title = title
|
||||
'f' : given = given (first names)
|
||||
'l' : surname = full surname (lastname)
|
||||
'c' : call = callname
|
||||
'x' : common = nick name, call, otherwise first first name (common name)
|
||||
'i' : initials = initials of the first names
|
||||
'm' : primary = primary surname (main)
|
||||
't' : title = title
|
||||
'f' : given = given (first names)
|
||||
'l' : surname = full surname (lastname)
|
||||
'c' : call = callname
|
||||
'x' : common = nick name, call, otherwise first first name (common name)
|
||||
'i' : initials = initials of the first names
|
||||
'm' : primary = primary surname (main)
|
||||
'0m': primary[pre]= prefix primary surname (main)
|
||||
'1m': primary[sur]= surname primary surname (main)
|
||||
'2m': primary[con]= connector primary surname (main)
|
||||
@@ -580,11 +585,11 @@ class NameDisplay:
|
||||
'1y': patronymic[sur] = surname "
|
||||
'2y': patronymic[con] = connector "
|
||||
'o' : notpatronymic = surnames without pa/matronymic and primary
|
||||
'r' : rest = non primary surnames
|
||||
'p' : prefix = list of all prefixes
|
||||
'r' : rest = non primary surnames
|
||||
'p' : prefix = list of all prefixes
|
||||
'q' : rawsurnames = surnames without prefixes and connectors
|
||||
's' : suffix = suffix
|
||||
'n' : nickname = nick name
|
||||
's' : suffix = suffix
|
||||
'n' : nickname = nick name
|
||||
'g' : familynick = family nick name
|
||||
|
||||
|
||||
@@ -666,13 +671,13 @@ class NameDisplay:
|
||||
return "%s %s" % (first,suffix)
|
||||
|
||||
Specific symbols for parts of a name are defined (keywords given):
|
||||
't' : title = title
|
||||
'f' : given = given (first names)
|
||||
'l' : surname = full surname (lastname)
|
||||
'c' : call = callname
|
||||
'x' : common = nick name, call, or otherwise first first name (common name)
|
||||
'i' : initials = initials of the first names
|
||||
'm' : primary = primary surname (main)
|
||||
't' : title = title
|
||||
'f' : given = given (first names)
|
||||
'l' : surname = full surname (lastname)
|
||||
'c' : call = callname
|
||||
'x' : common = nick name, call, or otherwise first first name (common name)
|
||||
'i' : initials = initials of the first names
|
||||
'm' : primary = primary surname (main)
|
||||
'0m': primary[pre]= prefix primary surname (main)
|
||||
'1m': primary[sur]= surname primary surname (main)
|
||||
'2m': primary[con]= connector primary surname (main)
|
||||
@@ -681,11 +686,11 @@ class NameDisplay:
|
||||
'1y': patronymic[sur] = surname "
|
||||
'2y': patronymic[con] = connector "
|
||||
'o' : notpatronymic = surnames without pa/matronymic and primary
|
||||
'r' : rest = non primary surnames
|
||||
'p' : prefix = list of all prefixes
|
||||
'r' : rest = non primary surnames
|
||||
'p' : prefix = list of all prefixes
|
||||
'q' : rawsurnames = surnames without prefixes and connectors
|
||||
's' : suffix = suffix
|
||||
'n' : nickname = nick name
|
||||
's' : suffix = suffix
|
||||
'n' : nickname = nick name
|
||||
'g' : familynick = family nick name
|
||||
|
||||
"""
|
||||
@@ -1054,13 +1059,13 @@ class NameDisplay:
|
||||
format_str = format_str[1:]
|
||||
else:
|
||||
patterns = [
|
||||
",\W*\"%(" + ("|".join(codes)) + ")\"", # ,\W*"%s"
|
||||
",\W*\(%(" + ("|".join(codes)) + ")\)", # ,\W*(%s)
|
||||
",\W*%(" + ("|".join(codes)) + ")", # ,\W*%s
|
||||
"\"%(" + ("|".join(codes)) + ")\"", # "%s"
|
||||
"_%(" + ("|".join(codes)) + ")_", # _%s_
|
||||
"\(%(" + ("|".join(codes)) + ")\)", # (%s)
|
||||
"%(" + ("|".join(codes)) + ")", # %s
|
||||
",\\W*\"%(" + ("|".join(codes)) + ")\"", # ,\W*"%s"
|
||||
",\\W*\\(%(" + ("|".join(codes)) + ")\\)", # ,\W*(%s)
|
||||
",\\W*%(" + ("|".join(codes)) + ")", # ,\W*%s
|
||||
"\"%(" + ("|".join(codes)) + ")\"", # "%s"
|
||||
"_%(" + ("|".join(codes)) + ")_", # _%s_
|
||||
"\\(%(" + ("|".join(codes)) + ")\\)", # (%s)
|
||||
"%(" + ("|".join(codes)) + ")", # %s
|
||||
]
|
||||
new_fmt = format_str
|
||||
|
||||
|
||||
+124
-16
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2014-2015 Nick Hall
|
||||
# Copyright (C) 2014-2017 Nick Hall
|
||||
#
|
||||
# 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
|
||||
@@ -22,15 +22,39 @@
|
||||
Class handling displaying of places.
|
||||
"""
|
||||
|
||||
#---------------------------------------------------------------
|
||||
#
|
||||
# Python imports
|
||||
#
|
||||
#---------------------------------------------------------------
|
||||
import os
|
||||
import xml.dom.minidom
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# Gramps modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from ..const import PLACE_FORMATS, GRAMPS_LOCALE as glocale
|
||||
_ = glocale.translation.gettext
|
||||
from ..config import config
|
||||
from ..utils.location import get_location_list
|
||||
from ..lib import PlaceType
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# PlaceFormat class
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class PlaceFormat:
|
||||
def __init__(self, name, levels, language, street, reverse):
|
||||
self.name = name
|
||||
self.levels = levels
|
||||
self.language = language
|
||||
self.street = street
|
||||
self.reverse = reverse
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
# PlaceDisplay class
|
||||
@@ -38,51 +62,135 @@ from ..lib import PlaceType
|
||||
#-------------------------------------------------------------------------
|
||||
class PlaceDisplay:
|
||||
|
||||
def display_event(self, db, event):
|
||||
def __init__(self):
|
||||
self.place_formats = []
|
||||
self.default_format = config.get('preferences.place-format')
|
||||
if os.path.exists(PLACE_FORMATS):
|
||||
try:
|
||||
self.load_formats()
|
||||
return
|
||||
except BaseException:
|
||||
print(_("Error in '%s' file: cannot load.") % PLACE_FORMATS)
|
||||
pf = PlaceFormat(_('Full'), ':', '', 0, False)
|
||||
self.place_formats.append(pf)
|
||||
|
||||
def display_event(self, db, event, fmt=-1):
|
||||
if not event:
|
||||
return ""
|
||||
place_handle = event.get_place_handle()
|
||||
if place_handle:
|
||||
place = db.get_place_from_handle(place_handle)
|
||||
return self.display(db, place, event.get_date_object())
|
||||
return self.display(db, place, event.get_date_object(), fmt)
|
||||
else:
|
||||
return ""
|
||||
|
||||
def display(self, db, place, date=None):
|
||||
def display(self, db, place, date=None, fmt=-1):
|
||||
if not place:
|
||||
return ""
|
||||
if not config.get('preferences.place-auto'):
|
||||
return place.title
|
||||
else:
|
||||
lang = config.get('preferences.place-lang')
|
||||
places = get_location_list(db, place, date, lang)
|
||||
if fmt == -1:
|
||||
fmt = config.get('preferences.place-format')
|
||||
pf = self.place_formats[fmt]
|
||||
lang = pf.language
|
||||
all_places = get_location_list(db, place, date, lang)
|
||||
|
||||
if config.get('preferences.place-restrict') > 0:
|
||||
index = _find_populated_place(places)
|
||||
if index is not None:
|
||||
if config.get('preferences.place-restrict') == 1:
|
||||
places = places[:index+1]
|
||||
# Apply format string to place list
|
||||
index = _find_populated_place(all_places)
|
||||
places = []
|
||||
for slice in pf.levels.split(','):
|
||||
parts = slice.split(':')
|
||||
if len(parts) == 1:
|
||||
offset = _get_offset(parts[0], index)
|
||||
if offset is not None:
|
||||
try:
|
||||
places.append(all_places[offset])
|
||||
except IndexError:
|
||||
pass
|
||||
elif len(parts) == 2:
|
||||
start = _get_offset(parts[0], index)
|
||||
end = _get_offset(parts[1], index)
|
||||
if start is None:
|
||||
places.extend(all_places[:end])
|
||||
elif end is None:
|
||||
places.extend(all_places[start:])
|
||||
else:
|
||||
places = places[index:]
|
||||
places.extend(all_places[start:end])
|
||||
|
||||
if config.get('preferences.place-number'):
|
||||
if pf.street:
|
||||
types = [item[1] for item in places]
|
||||
try:
|
||||
idx = types.index(PlaceType.NUMBER)
|
||||
except ValueError:
|
||||
idx = None
|
||||
if idx is not None and len(places) > idx+1:
|
||||
combined = (places[idx][0] + ' ' + places[idx+1][0],
|
||||
places[idx+1][1])
|
||||
if pf.street == 1:
|
||||
combined = (places[idx][0] + ' ' + places[idx+1][0],
|
||||
places[idx+1][1])
|
||||
else:
|
||||
combined = (places[idx+1][0] + ' ' + places[idx][0],
|
||||
places[idx+1][1])
|
||||
places = places[:idx] + [combined] + places[idx+2:]
|
||||
|
||||
names = [item[0] for item in places]
|
||||
if config.get('preferences.place-reverse'):
|
||||
if pf.reverse:
|
||||
names.reverse()
|
||||
|
||||
# TODO for Arabic, should the next line's comma be translated?
|
||||
return ", ".join(names)
|
||||
|
||||
def get_formats(self):
|
||||
return self.place_formats
|
||||
|
||||
def set_formats(self, formats):
|
||||
self.place_formats = formats
|
||||
|
||||
def load_formats(self):
|
||||
dom = xml.dom.minidom.parse(PLACE_FORMATS)
|
||||
top = dom.getElementsByTagName('place_formats')
|
||||
|
||||
for fmt in top[0].getElementsByTagName('format'):
|
||||
name = fmt.attributes['name'].value
|
||||
levels = fmt.attributes['levels'].value
|
||||
language = fmt.attributes['language'].value
|
||||
street = int(fmt.attributes['street'].value)
|
||||
reverse = fmt.attributes['reverse'].value == 'True'
|
||||
pf = PlaceFormat(name, levels, language, street, reverse)
|
||||
self.place_formats.append(pf)
|
||||
|
||||
dom.unlink()
|
||||
|
||||
def save_formats(self):
|
||||
doc = xml.dom.minidom.Document()
|
||||
place_formats = doc.createElement('place_formats')
|
||||
doc.appendChild(place_formats)
|
||||
for fmt in self.place_formats:
|
||||
node = doc.createElement('format')
|
||||
place_formats.appendChild(node)
|
||||
node.setAttribute('name', fmt.name)
|
||||
node.setAttribute('levels', fmt.levels)
|
||||
node.setAttribute('language', fmt.language)
|
||||
node.setAttribute('street', str(fmt.street))
|
||||
node.setAttribute('reverse', str(fmt.reverse))
|
||||
with open(PLACE_FORMATS, 'w', encoding='utf-8') as f_d:
|
||||
doc.writexml(f_d, addindent=' ', newl='\n', encoding='utf-8')
|
||||
|
||||
|
||||
def _get_offset(value, index):
|
||||
if index is not None and value.startswith('p'):
|
||||
try:
|
||||
offset = int(value[1:])
|
||||
except ValueError:
|
||||
offset = 0
|
||||
offset += index
|
||||
else:
|
||||
try:
|
||||
offset = int(value)
|
||||
except ValueError:
|
||||
offset = None
|
||||
return offset
|
||||
|
||||
def _find_populated_place(places):
|
||||
populated_place = None
|
||||
for index, item in enumerate(places):
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
Package providing filtering framework for Gramps.
|
||||
"""
|
||||
|
||||
#SystemFilters = None
|
||||
CustomFilters = None
|
||||
|
||||
from ..const import CUSTOM_FILTERS
|
||||
@@ -32,18 +31,10 @@ from ._genericfilter import (GenericFilter, GenericFilterFactory,
|
||||
from ._paramfilter import ParamFilter
|
||||
from ._searchfilter import SearchFilter, ExactSearchFilter
|
||||
|
||||
#def reload_system_filters():
|
||||
#global SystemFilters
|
||||
#SystemFilters = FilterList(SYSTEM_FILTERS)
|
||||
#SystemFilters.load()
|
||||
|
||||
def reload_custom_filters():
|
||||
global CustomFilters
|
||||
CustomFilters = FilterList(CUSTOM_FILTERS)
|
||||
CustomFilters.load()
|
||||
|
||||
#if not SystemFilters:
|
||||
#reload_system_filters()
|
||||
|
||||
if not CustomFilters:
|
||||
reload_custom_filters()
|
||||
# if not CustomFilters: # moved to viewmanager
|
||||
# reload_custom_filters()
|
||||
@@ -27,7 +27,7 @@
|
||||
#-------------------------------------------------------------------------
|
||||
from xml.sax import make_parser, SAXParseException
|
||||
import os
|
||||
import collections
|
||||
from collections import abc
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@@ -78,7 +78,7 @@ class FilterList:
|
||||
plugin_filters = []
|
||||
try:
|
||||
for plug in plugins:
|
||||
if isinstance(plug, collections.Callable):
|
||||
if isinstance(plug, abc.Callable):
|
||||
plug = plug(namespace)
|
||||
if plug:
|
||||
if isinstance(plug, (list, tuple)):
|
||||
|
||||
@@ -62,6 +62,9 @@ class FilterParser(handler.ContentHandler):
|
||||
self.namespace = attrs['type']
|
||||
else:
|
||||
self.namespace = "generic"
|
||||
if self.namespace == 'MediaObject':
|
||||
# deals with older custom filters
|
||||
self.namespace = 'Media'
|
||||
elif tag == "filter":
|
||||
self.f = GenericFilterFactory(self.namespace)()
|
||||
self.f.set_name(attrs['name'])
|
||||
|
||||
@@ -124,6 +124,9 @@ class GenericFilter:
|
||||
def get_cursor(self, db):
|
||||
return db.get_person_cursor()
|
||||
|
||||
def get_tree_cursor(self, db):
|
||||
return db.get_person_cursor()
|
||||
|
||||
def make_obj(self):
|
||||
return Person()
|
||||
|
||||
@@ -133,13 +136,15 @@ class GenericFilter:
|
||||
def get_number(self, db):
|
||||
return db.get_number_of_people()
|
||||
|
||||
def check_func(self, db, id_list, task, user=None, tupleind=None):
|
||||
def check_func(self, db, id_list, task, user=None, tupleind=None,
|
||||
tree=False):
|
||||
final_list = []
|
||||
if user:
|
||||
user.begin_progress(_('Filter'), _('Applying ...'),
|
||||
self.get_number(db))
|
||||
if id_list is None:
|
||||
with self.get_cursor(db) as cursor:
|
||||
with (self.get_tree_cursor(db) if tree else
|
||||
self.get_cursor(db)) as cursor:
|
||||
for handle, data in cursor:
|
||||
person = self.make_obj()
|
||||
person.unserialize(data)
|
||||
@@ -162,14 +167,15 @@ class GenericFilter:
|
||||
user.end_progress()
|
||||
return final_list
|
||||
|
||||
def check_and(self, db, id_list, user=None, tupleind=None):
|
||||
def check_and(self, db, id_list, user=None, tupleind=None, tree=False):
|
||||
final_list = []
|
||||
flist = self.flist
|
||||
if user:
|
||||
user.begin_progress(_('Filter'), _('Applying ...'),
|
||||
self.get_number(db))
|
||||
if id_list is None:
|
||||
with self.get_cursor(db) as cursor:
|
||||
with (self.get_tree_cursor(db) if tree else
|
||||
self.get_cursor(db)) as cursor:
|
||||
for handle, data in cursor:
|
||||
person = self.make_obj()
|
||||
person.unserialize(data)
|
||||
@@ -194,14 +200,17 @@ class GenericFilter:
|
||||
user.end_progress()
|
||||
return final_list
|
||||
|
||||
def check_or(self, db, id_list, user=None, tupleind=None):
|
||||
return self.check_func(db, id_list, self.or_test, user, tupleind)
|
||||
def check_or(self, db, id_list, user=None, tupleind=None, tree=False):
|
||||
return self.check_func(db, id_list, self.or_test, user, tupleind,
|
||||
tree=False)
|
||||
|
||||
def check_one(self, db, id_list, user=None, tupleind=None):
|
||||
return self.check_func(db, id_list, self.one_test, user, tupleind)
|
||||
def check_one(self, db, id_list, user=None, tupleind=None, tree=False):
|
||||
return self.check_func(db, id_list, self.one_test, user, tupleind,
|
||||
tree=False)
|
||||
|
||||
def check_xor(self, db, id_list, user=None, tupleind=None):
|
||||
return self.check_func(db, id_list, self.xor_test, user, tupleind)
|
||||
def check_xor(self, db, id_list, user=None, tupleind=None, tree=False):
|
||||
return self.check_func(db, id_list, self.xor_test, user, tupleind,
|
||||
tree=False)
|
||||
|
||||
def xor_test(self, db, person):
|
||||
test = False
|
||||
@@ -231,7 +240,7 @@ class GenericFilter:
|
||||
def check(self, db, handle):
|
||||
return self.get_check_func()(db, [handle])
|
||||
|
||||
def apply(self, db, id_list=None, tupleind=None, user=None):
|
||||
def apply(self, db, id_list=None, tupleind=None, user=None, tree=False):
|
||||
"""
|
||||
Apply the filter using db.
|
||||
If id_list given, the handles in id_list are used. If not given
|
||||
@@ -251,7 +260,7 @@ class GenericFilter:
|
||||
m = self.get_check_func()
|
||||
for rule in self.flist:
|
||||
rule.requestprepare(db, user)
|
||||
res = m(db, id_list, user, tupleind)
|
||||
res = m(db, id_list, user, tupleind, tree)
|
||||
for rule in self.flist:
|
||||
rule.requestreset()
|
||||
return res
|
||||
@@ -315,6 +324,9 @@ class GenericCitationFilter(GenericFilter):
|
||||
def get_cursor(self, db):
|
||||
return db.get_citation_cursor()
|
||||
|
||||
def get_tree_cursor(self, db):
|
||||
return db.get_citation_cursor()
|
||||
|
||||
def make_obj(self):
|
||||
return Citation()
|
||||
|
||||
@@ -332,6 +344,9 @@ class GenericPlaceFilter(GenericFilter):
|
||||
def get_cursor(self, db):
|
||||
return db.get_place_cursor()
|
||||
|
||||
def get_tree_cursor(self, db):
|
||||
return db.get_place_tree_cursor()
|
||||
|
||||
def make_obj(self):
|
||||
return Place()
|
||||
|
||||
|
||||
@@ -48,25 +48,25 @@ class ChangedSinceBase(Rule):
|
||||
Rule that checks for primary objects changed since a specific time.
|
||||
"""
|
||||
|
||||
labels = [ 'Changed after:', 'but before:' ]
|
||||
name = 'Objects changed after <date time>'
|
||||
labels = [ 'Changed after:', 'but before:' ]
|
||||
name = 'Objects changed after <date time>'
|
||||
description = "Matches object records changed after a specified " \
|
||||
"date/time (yyyy-mm-dd hh:mm:ss) or in range, if a second " \
|
||||
"date/time is given."
|
||||
category = _('General filters')
|
||||
category = _('General filters')
|
||||
|
||||
def add_time(self, date):
|
||||
if re.search("\d.*\s+\d{1,2}:\d{2}:\d{2}", date):
|
||||
if re.search(r"\d.*\s+\d{1,2}:\d{2}:\d{2}", date):
|
||||
return date
|
||||
elif re.search("\d.*\s+\d{1,2}:\d{2}", date):
|
||||
elif re.search(r"\d.*\s+\d{1,2}:\d{2}", date):
|
||||
return date + ":00"
|
||||
elif re.search("\d.*\s+\d{1,2}", date):
|
||||
elif re.search(r"\d.*\s+\d{1,2}", date):
|
||||
return date + ":00:00"
|
||||
elif re.search("\d{4}-\d{1,2}-\d{1,2}", date):
|
||||
elif re.search(r"\d{4}-\d{1,2}-\d{1,2}", date):
|
||||
return date + " 00:00:00"
|
||||
elif re.search("\d{4}-\d{1,2}", date):
|
||||
elif re.search(r"\d{4}-\d{1,2}", date):
|
||||
return date + "-01 00:00:00"
|
||||
elif re.search("\d{4}", date):
|
||||
elif re.search(r"\d{4}", date):
|
||||
return date + "-01-01 00:00:00"
|
||||
else:
|
||||
return date
|
||||
|
||||
@@ -41,8 +41,8 @@ from . import Rule
|
||||
class Everything(Rule):
|
||||
"""Match Everyone."""
|
||||
|
||||
name = 'Every object'
|
||||
category = _('General filters')
|
||||
name = 'Every object'
|
||||
category = _('General filters')
|
||||
description = 'Matches every object in the database'
|
||||
|
||||
def is_empty(self):
|
||||
|
||||
Loaded 100 of 811 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user